统计一条染色体上可能的酶切位点片段大小及数量

       想统计一下某个酶在染色体上作用后产生的酶切片段大小以及各个片段的数量,因为这个酶比较特殊,在实际切割时会有很多种不同的情况,但是我们不考虑那些,只需要分别读两条reads并记录切割位点,最后算出片段大小。一下是这个酶的识别序列。

统计一条染色体上可能的酶切位点片段大小及数量_第1张图片
mspj.PNG

       注意,虽然这个酶的识别序列是CNNR但是在实际情况中,只有当C是甲基化后的C时才会切割,一般来说只有当C后面跟了一个G时才会甲基化,因此,实际的识别序列应该是CGNR。代码如下:

f1 = open("./chr21.fasta", "r")
f2 = open("./rechr21.fasta", "r")
f3 = open("./pos_cut", "w")
f4 = open("./neg_cut", "w")
SEQ_POS = f1.read().replace('\n', '')
SEQ_NEG = f2.read().replace('\n', '')
pos = []
neg = []
tip_pos = 0
tip_neg = 0
length = len(SEQ_POS)
while (tip_pos + 3) < length:
    if SEQ_POS[tip_pos] == 'C' and SEQ_POS[tip_pos+1] == 'G' and (SEQ_POS[tip_pos + 3] == 'A' or SEQ_POS[tip_pos + 3] == 'G'):
        pos.append(tip_pos + 13)
        neg.append(length - (tip_pos + 17))
        tip_pos += 13
    else:
        tip_pos += 1


while (tip_neg + 3) < length:
    if SEQ_NEG[tip_neg] == 'C' and SEQ_POS[tip_pos+1] == 'G' and (SEQ_NEG[tip_neg + 3] == 'A' or SEQ_NEG[tip_neg + 3] == 'G'):
        neg.append(tip_neg + 13)
        pos.append(length - (tip_neg + 17))
        tip_neg += 13
    else:
        tip_neg += 1

save3 = str(pos).replace('[', '').replace(']', '').replace(',', '\n')
save4 = str(neg).replace('[', '').replace(']', '').replace(',', '\n')
f3.write(save3)
f4.write(save4)
f4.close()
f3.close()
f2.close()
f1.close()

       

你可能感兴趣的:(统计一条染色体上可能的酶切位点片段大小及数量)