回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>所以最近我一直在尝试编写一个程序,根据起始密码子和终止密码子来检测和切断DNA序列的编码部分。在</p>
<p>最终的目标是比较两个240个核苷酸的序列,但是其中一个会导致镰状细胞疾病,所以你想看看这两个结果的编码部分之间的差异。在</p>
<p>这是我到目前为止编写的代码,它实际上可以处理随附的序列。在</p>
<pre><code>sequence = "CCATGCTTGATCA"
sequence_list = list(sequence)
codon_list = ["ATG", "TAA", "TAG", "TGA"]
position_list = []
length_sequence = len(sequence)
length_codon = len(codon_list)
length_position = len(position_list)
n = length_sequence-1
while n >= 0:
for i in range(0, len(codon_list)):
codon_sub_list = list(codon_list[i])
if sequence_list[n] == codon_sub_list[2] and sequence_list[n-1] == codon_sub_list[1] and sequence_list[n-2] == codon_sub_list[0]:
position_list.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(n-2)
print(sequence_list[n], "@", n)
print(sequence_list[n-1], "@", n-1)
print(sequence_list[n-2], "@", n-2)
n-=1
print(len(position_list))
print(sequence[position_list[length_position-1]:(position_list[0]+3)])
</code></pre>
<p>现在,我两天前做这个实验的结果很有希望。正如预期的那样,结果如下:</p>
<blockquote>
<p>A at location 9</p>
<p>G at location 8</p>
<p>T at location 7</p>
<p>G at location 4</p>
<p>T at location 3</p>
<p>A at location 2</p>
<p>[7,2]</p>
<p>ATGCTTGA</p>
</blockquote>
<p>然而,今天我尝试了一个不同的序列来继续这项工作,这次是240个核苷酸长序列中的一个。
下面是这两个序列以及它是哪一个。在</p>
<p>镰状细胞病序列号:gaccatcattgcttacattgtctgagaactgttcactgcaacctcagcaagacaggtgctctcagcaagagagagagagagtgtgttggttgctctgtgtgaggaagtgaggatgaaggtggtgagtgtgtgtgtgtgtgttagttggttagttagagtagagagagagagagttagttagagagagagagagttggttggttagagagagagagagagttggtttttcagagagagagagagagagttggtttttct在</p>
<p>正常序列:gaccatcattgcttacattgtctgagagagagcttgttggttgctctcagcaagagagtctgttagtctgttagagagagtctgttagtcttaggcagtgtgagcaagagtgagatgagtgaaggtgggtggtgagtgtgtgtgttagttagtagagagagagagagttagttagagagagagagagttggttagagagagagagagttggtttcttagagagagagagagagtgtttttct</p>
<p>不过,这是我从执行它得到的结果,我会很快列出核苷酸和它们的位置,因为它们大部分都是无关的,而最重要的是最后一个。在</p>
<blockquote>
<p>[G,211] [T,210] [A,209] [G,199] [A,198] [T,197] [A,187] [A,186] [T,185] [A,145] [G,144] [T,143] [A,133] [G,132] [T,131] [G,132] [T,131] [A,130] [A,123] [G,122] [T,121] [A,78] [G,77] [T,76] [G,68] [T,67] [A,66] [G,47] [A,46] [T,45] [A,29] [G,28] [T,27] [A,1] [G,0] [T,-1]</p>
<p>[209, 197, 185, 143, 131, 130, 121, 76, 66, 45, 27, -1]</p>
<p>No sequence, just an empty line</p>
</blockquote>
<p>现在很明显,当最后一个密码子,TGA,它注意到T的位置为-1时,问题就出现了,但是我不知道是什么原因导致了这个问题,并尝试调整了几个值来使它工作,但在任何情况下都没有做到。在</p>
<p>我想知道是什么引起的,该怎么办?另外,我两天前做了这个,主要是作为一个初稿开始的,而且可能还有其他更好的东西,所以如果有什么东西看起来有点草率,那就找借口吧,在我看来整个while循环可以做得更好,但在那一刻,我选择了它,因为一个不同的循环方法不起作用,已经记不清到底是什么了。在</p>
<p>注:我制作了一个空闲输出的屏幕截图,让您了解:</p>
<p><a href="https://i.stack.imgur.com/4yd8H.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4yd8H.jpg" alt=""/></a></p>