@@ -283,7 +283,8 @@ def get_random_seq(ins_range):
283283 '''
284284 Generate random insertion sequence
285285 '''
286- ins_size = np .random .randint (ins_range [0 ], ins_range [1 ])
286+ ins_min , ins_max = ins_range
287+ ins_size = np .random .randint (ins_min , ins_max ) if ins_min < ins_max else ins_min
287288 ins = np .random .choice (BASES , ins_size )
288289 ins = '' .join (ins )
289290 return ins
@@ -433,7 +434,7 @@ def get_exon_for_deletion(seq, indel_range):
433434 max_delsize = len (seq [select ]) - (MAX_BP_FROM_BOUNDARY * 2 )
434435 # ^ max possible variant size including padding from boundary
435436 varmax = min (indel_range [1 ], max_delsize )
436- if varmin < varmax :
437+ if varmin <= varmax :
437438 break
438439 assert varmin <= varmax # bad transcript if assert fails
439440
@@ -657,9 +658,10 @@ def write_indel(tx, all_exons, genome_fasta, indel_range, out_prefix, vartype='D
657658 select , varmin , varmax = get_exon_for_deletion (seq , indel_range )
658659
659660 # make ITD sequence
660- select_seq , varsize = seq [select ], np .random .randint (varmin , varmax )
661+ varsize = np .random .randint (varmin , varmax ) if varmin < varmax else varmin
662+ select_seq = seq [select ]
661663 maxpos = len (select_seq ) - varsize - MAX_BP_FROM_BOUNDARY
662- itd_pos = np .random .randint (MAX_BP_FROM_BOUNDARY , maxpos )
664+ itd_pos = np .random .randint (MAX_BP_FROM_BOUNDARY , maxpos ) if MAX_BP_FROM_BOUNDARY < maxpos else MAX_BP_FROM_BOUNDARY
663665
664666 itd_seq = select_seq [itd_pos :(itd_pos + varsize )]
665667 seq [select ] = select_seq [:itd_pos ] + itd_seq + select_seq [itd_pos :]
0 commit comments