創(chuàng)建反向互補(bǔ)序列函數(shù)
小云今天給大家分享一個可以對序列進(jìn)行反向互補(bǔ)的函數(shù),在堿基編輯二代測序數(shù)據(jù)分析中常常涉及到序列反向互補(bǔ)的問題,大家一般的方法為去網(wǎng)頁搜索·在線的反向互補(bǔ)工具,首先在沒有網(wǎng)絡(luò)的情況下就無法使用這種在線工具,其次這種工具一般需要我們一條一條的數(shù)據(jù)進(jìn)行復(fù)制粘貼,不利于批量的操作,所以小云就想到用python寫一個可以在本地運行的函數(shù),可以去實現(xiàn)批量的反向互補(bǔ)的操作。
#創(chuàng)建互補(bǔ)函數(shù)
def complement(sequence):
????sequence = sequence.upper()
????sequence = sequence.replace('A', 't')
????sequence = sequence.replace('T', 'a')
????sequence = sequence.replace('C', 'g')
????sequence = sequence.replace('G', 'c')
????return sequence.upper()
#創(chuàng)建反向函數(shù)
def reverse(sequence):
????sequence = sequence.upper()
????return sequence[::-1]
#創(chuàng)建反向互補(bǔ)函數(shù)
def complement_reverse(sequence): ??#反向互補(bǔ)函數(shù)
return complement(reverse(sequence))
?
這樣小云的反向互補(bǔ)函數(shù)就創(chuàng)建出來了,當(dāng)我們只有幾條序列想要進(jìn)行反向互補(bǔ)操作時就可以直接print。
print(complement_reverse('CCATCAATGCC') ,complement_reverse('CGATGGCGATA'),complement_reverse('ACACAAGCACC'),complement_reverse('CCGTTTCGACG'),complement_reverse('GGAAGTAGACC'))
輸出結(jié)果:
GGCATTGATGG TATCGCCATCG GGTGCTTGTGT CGTCGAAACGG GGTCTACTTCC
?
當(dāng)我們想要批量實現(xiàn)反向互補(bǔ)操作時就可以把序列復(fù)制粘貼到一個txt文件下,用遍歷的方式完成。
fxhb = open("./fxhb.txt") ##改成自己二代測序的fq文件
for i in fxhb:
print(complement_reverse(i))
輸入序列:? ? ? ?

輸出結(jié)果:

這樣一個小函數(shù)就輕松解決了我們在沒有網(wǎng)絡(luò)時無法使用反向互補(bǔ)在線工具的尷尬窘境,也解決了批量操作的問題,大大減少了我們的工作量。好了,今天小云的函數(shù)分享就到這里啦,小伙伴們有什么問題歡迎來和小云討論分享呀。

