Skip to content
Snippets Groups Projects
Commit 98062ab5 authored by Floreal Cabanettes's avatar Floreal Cabanettes
Browse files

Add max try parameter + show max of variants when tries failed

parent eae222fb
No related branches found
No related tags found
No related merge requests found
......@@ -60,7 +60,7 @@ def parse_args():
parser.add_argument("-ns", "--nstretches", help="N-stretches positions bed file", required=False)
parser.add_argument("-s", "--sv-list", help="File containing the SVs", required=False)
parser.add_argument("-c", "--coverage", help="Coverage of reads", default=15, type=int)
parser.add_argument("-o", "--output-directory", help="Output directory", default="res")
parser.add_argument("-o", "--output-dir", help="Output directory", default="res")
parser.add_argument("-e", "--force-outputdir", help="Delete output directory before start, if already exists",
action='store_const', const=True, default=False)
parser.add_argument("-f", "--force-polymorphism", help="Force polymorphism for each SV", action='store_const',
......@@ -80,6 +80,7 @@ def parse_args():
type=check_min_size)
parser.add_argument("-mi", "--min-inversions", help="Minimum of inversions to generate (>=1)", default=0,
type=check_min_size)
parser.add_argument("--max-try", help="Maximum of tries", default=10, type=check_min_size)
parser.add_argument("-t", "--threads", help="Number of threads", default=multiprocessing.cpu_count(), type=int)
parser.add_argument("-g", "--genotypes", help="Position of SV with genotypes of individuals")
......@@ -527,7 +528,7 @@ def confirm(deletions: dict, inversions: dict, variants: dict, printer: Print, a
def init(output_dir, force_outputdir, sv_list, nstretches, nb_inds, reference, proba_del, proba_inv, haploid,
force_polymorphism, coverage, read_len, insert_len_mean, insert_len_sd, threads, genotypes=None,
min_deletions=1, min_inversions=1, quiet=True, stdout=None, stderr=None):
min_deletions=1, min_inversions=1, max_try=10, quiet=True, stdout=None, stderr=None):
printer = Print(stdout=stdout, stderr=stderr)
......@@ -575,16 +576,20 @@ def init(output_dir, force_outputdir, sv_list, nstretches, nb_inds, reference, p
nb_try = 0
sv_sim = VariantsSimulator(sv_list, nstretches, threads, stdout, stderr)
printer.out("Try to generate at least %s deletions and %s inversions..." % (min_deletions, min_inversions))
max_try = 10
max_del = 0
max_inv = 0
while (nb_deletions < min_deletions or nb_inversions < min_inversions) and nb_try < max_try:
printer.out("\nTry {0} / {1}...".format(nb_try + 1, max_try))
nb_deletions, deletions, nb_inversions, inversions = sv_sim.get_random_variants(proba_del, proba_inv,
reference)
max_del = max(max_del, deletions)
max_inv = max(max_inv, inversions)
sv_sim.print_flush()
nb_try += 1
if nb_deletions < min_deletions:
printer.err("\nUnable to generate %s deletions. Try to reduce size of deletions or increase "
"general probability to have a deletion." % min_deletions)
printer.out("\nMaximum of each event: %d deletions, %d inversions." % (max_del, max_inv))
return 1
if nb_inversions < min_inversions:
printer.err("\nUnable to generate %s inversions. Try to reduce size of inversions or increase "
......@@ -639,29 +644,8 @@ def init(output_dir, force_outputdir, sv_list, nstretches, nb_inds, reference, p
def main():
args = parse_args()
reference = args.reference
sv_list = args.sv_list
nstretches = args.nstretches
output_dir = args.output_directory
haploid = args.haploid
nb_inds = args.nb_inds
force_outputdir = args.force_outputdir
proba_del = args.proba_del
proba_inv = args.proba_inv
threads = args.threads
force_polymorphism = args.force_polymorphism
coverage = args.coverage
read_len = args.read_len
insert_len_mean = args.insert_len_mean
insert_len_sd = args.insert_len_sd
quiet = args.quiet
min_deletions = args.min_deletions
min_inversions = args.min_inversions
genotypes = args.genotypes
return init(output_dir, force_outputdir, sv_list, nstretches, nb_inds, reference, proba_del, proba_inv, haploid,
force_polymorphism, coverage, read_len, insert_len_mean, insert_len_sd, threads, genotypes,
min_deletions, min_inversions, quiet)
init(**{k: v for k, v in vars(args).items() if k in init.__code__.co_varnames})
if __name__ == '__main__':
sys.exit(main())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment