【发布时间】:2020-12-16 06:09:11
【问题描述】:
我有一个脚本可以返回 DNA 序列中的回文子串。
sequence="GATCTCTATACCAACTCAAAATGAAGACTCTTCTTTACACTTTCGAGCTCAGCAGGCTTACCGAGAAGAGTCGTCGTTCACATCCCCCCCTGTGCGAGATCAAGAAATTTGGCGACGTCGGCTTATTATCCTCCGCTGTCAATCAGTTGGACACATCTCTCCGGTCACTGCCGGACAAGCCAACCGAAGATTCGATTCTTCAGCAGCTTATCGACATTGCTGGTGGTGAAAAGCCAAGGCACAGCATCATAGTTGCGACCAATACGTCATACGACCGAGAGACATTGGTAAAGATCCTTCAACGATTCCCATACACCATACCTGGTCTGTCAGATTCAGGCTTGGAATCAGAAACACTCGAGGCTCTTGAGCACATCGCTTTTGCATTAGCCGGGCGATTAGCTCATAGATTTGACTACGGGTTCAATCCAGAGGCCAGTATCGTTCAACACCTCGAGATGTTCACCACCCTTTGGCACCAAAGATCTGCATTACCACCTGCGCCTGCCCCGTATCGACTTCCCGTTCCCGTCAATCAAGGAAGAGTCTCCTCATCAGATGATGGCTCTGATACTGAGTCAGAACTGGATGAAAAATACCACAACATCAAGAAGTCAGGACTTTGGAGGTTTCTGGATATGTTCAAAATGAACTTCAAGAGGTCTTAGATAACGGTCTAGTTCTAGTTCTGCAACTCACACTGA"
print(len(sequence))
pairs = {"A":"T", "T":"A", "G":"C", "C":"G"}
for i in range(len(sequence) - 6 + 1):
pal = True
for j in range(2):
if pairs[ sequence[i+j] ] != sequence[i+5-j]:
pal = False
break
if pal:
print(sequence[i : i+6])
返回:
704
GATCTC
GAGCTC
GCAGGC
GTTCAC
GAGATC
TCAAGA
AAATTT
GACGTC
CAGTTG
TGGACA
AAGATT
CTTCAG
CCAAGG
CGACCG
TTGGAA
CTCGAG
TCTTGA
CTTGAG
TGAGCA
CGGGCG
ATAGAT
ACGGGT
TCCAGA
CTCGAG
TCGAGA
TGTTCA
GTTCAC
GGCACC
AGATCT
CACCTG
GCCTGC
GACTTC
CAGATG
AGAACT
TCAAGA
GAAGTC
TCAGGA
AGGACT
TCTGGA
TGTTCA
TTCAAA
TCAAGA
GAGGTC
AGGTCT
TAGATA
AGTTCT
AGTTCT
我想查找这些子字符串是否位于“[ATCG]CC”或“[ATCG]GG”旁边 我想在序列中找到这些回文的位置(例如从第 i 到第(i+5),因为回文的长度为 6),然后检查是否第(i+6)到第(i+8) )th 字母是 [ATCG]CC 或 [ATCG]GG。 你知道我怎么写这样的脚本吗?或者你有更好的逻辑? 谢谢
【问题讨论】:
-
@LeonardusChen 我找到了回文,但我需要在这些回文中选择那些放在 [TACG]CC 或 [TACG]GG 旁边的回文
-
你能详细说明这方面的回文是什么意思吗?
AGGTCT似乎不是回文,但它存在于列表中。我错过了什么吗? -
看来您需要记录回文的位置,而不仅仅是它的位置。
-
@AkshaySehgal 这是一个 DNA 回文。如果向后阅读,另一条链上的匹配序列是相同的。