diff --git a/build_pop.py b/build_pop.py
index b735b8f1d9ea53b574a34418b742092b5f1a2698..415e37c2ea76062a17b5ba8add60c0a7717659e0 100755
--- a/build_pop.py
+++ b/build_pop.py
@@ -14,6 +14,7 @@ from pysam import tabix_compress, tabix_index
 from variants_simulator import VariantsSimulator
 from exceptions import InputException
 import multiprocessing
+import subprocess
 
 def parse_args():
     """
@@ -269,24 +270,23 @@ def generate_samples_fastq(haploid, nb_inds, output_dir, coverage, read_len, ins
     print("GENERATE RANDOM READS FOR EACH INDIVIDUAL FROM GENOME...\n")
 
     # Generate reads for all individuals:
-    if not haploid:
-        cmd = str("{4}pirs/pirs simulate -z -x {3} -d -B {4}pirs/Profiles/Base-Calling_Profiles/humNew.PE100.matrix.gz "
-                  "-I {4}pirs/Profiles/InDel_Profiles/phixv2.InDel.matrix -l {5} -m {6} -v {7} "
-                  "-G {4}pirs/Profiles/GC-depth_Profiles/humNew.gcdep_100.dat -o {0} -t {8} {1} {2}")
-    else:
-        cmd = str("{4}pirs/pirs simulate -z -x {3} -B {4}pirs/Profiles/Base-Calling_Profiles/humNew.PE100.matrix.gz "
-                  "-I {4}pirs/Profiles/InDel_Profiles/phixv2.InDel.matrix -l {5} -m {6} -v {7} "
-                  "-G {4}pirs/Profiles/GC-depth_Profiles/humNew.gcdep_100.dat -o {0} -t {8} {1}")
+    cmd = [prg_path + "/pirs/pirs", "simulate", "-z", "-x", str(coverage), "-d", "-B",
+           prg_path + "/pirs/Profiles/Base-Calling_Profiles/humNew.PE100.matrix.gz", "-I",
+           prg_path + "/pirs/Profiles/InDel_Profiles/phixv2.InDel.matrix", "-l", str(read_len), "-m",
+           str(insert_len_mean), "-v", str(insert_len_sd),
+           "-G", prg_path + "/pirs/Profiles/GC-depth_Profiles/humNew.gcdep_100.dat", "-t", str(threads), "-o"]
+    if haploid:
+        cmd.remove("-d")
     for i in range(1, nb_inds+1):
         prefix = os.path.join(output_dir, "INDIV_" + str(i))
+        cmd_full = cmd + [prefix]
         chr0 = prefix + "_chr_0.fasta"
-        chr1 = prefix + "_chr_1.fasta"
         if not haploid:
-            os.system(cmd.format(prefix, chr0, chr1, coverage, prg_path + os.path.sep, read_len,
-                                 insert_len_mean, insert_len_sd, threads))
+            chr1 = prefix + "_chr_1.fasta"
+            cmd_full += [chr0, chr1]
         else:
-            os.system(cmd.format(prefix, chr0, "", coverage, prg_path + os.path.sep, read_len,
-                                 insert_len_mean, insert_len_sd, threads))
+            cmd_full.append(chr0)
+        subprocess.call(cmd_full, stdout=sys.stdout, stderr=sys.stderr)
 
 
 def confirm(deletions: dict, variants: dict):