Skip to content

Commit 5561da5

Browse files
committed
Fix for INDEL simulation when using constant size
1 parent 9c58e1b commit 5561da5

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

simu/simu.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)