我被困在 python 练习中,我需要将 DNA 序列转换成相应的氨基酸。到目前为止,我有:
seq1 = "AATAGGCATAACTTCCTGTTCTGAACAGTTTGA"
for i in range(0, len(seq), 3):
print seq[i:i+3]
我需要在不使用词典的情况下执行此操作,并且我打算进行替换,但似乎也不可取。我怎样才能做到这一点?
它应该给出这样的东西,例如:
>seq1_1_+
TQSLIVHLIY
>seq1_2_+
LNRSFTDSST
>seq1_3_+
SIADRSLTHLL
更新 2:好的,所以我不得不求助于函数,并且按照建议,我已经得到了我想要的输出。现在,我有一系列函数,它们返回一系列氨基酸序列,我想得到一个看起来像这样的输出文件,例如:
>seq1_1_+
iyyslrs-las-smrlssiv-m
>seq1_2_+
fiirydrs-ladrcgshrssk
>seq1_3_+
llfativas-lidaalidrl
>seq1_1_-
frrsmraasis-lativannkm
>seq1_2_-
lddr-ephrsas-lrs-riin
>seq1_3_-
-tidesridqlasydrse--m
为此,我正在使用这个:
for x in f1:
x = x.strip()
if x.count("seq"):
f2.write((x)+("_1_+\n"))
f2.write((x)+("_2_+\n"))
f2.write((x)+("_3_+\n"))
f2.write((x)+("_1_-\n"))
f2.write((x)+("_2_-\n"))
f2.write((x)+("_3_-\n"))
else:
f2.write((translate1(x))+("\n"))
f2.write((translate2(x))+("\n"))
f2.write((translate3(x))+("\n"))
f2.write((translate1neg(x))+("\n"))
f2.write((translate2neg(x))+("\n"))
f2.write((translate3neg(x))+("\n"))
但与建议的预期输出文件不同,我得到了这个:
>seq1_1_+
>seq1_2_+
>seq1_3_+
>seq1_1_-
>seq1_2_-
>seq1_3_-
iyyslrs-las-smrlssiv-m
fiirydrs-ladrcgshrssk
llfativas-lidaalidrl
frrsmraasis-lativannkm
lddr-ephrsas-lrs-riin
-tidesridqlasydrse--m
所以他基本上是先做所有的 seq,然后再做所有的函数,所以我需要插入它们,问题是如何插入。
要翻译,您需要一个 codons 的表格, 所以没有字典或其他数据结构看起来很奇怪。
也许你可以看看biopython ?看看他们是如何管理的。
您也可以直接从编码链 DNA 序列翻译:
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import IUPAC
>>> coding_dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG", IUPAC.unambiguous_dna)
>>> coding_dna
Seq('ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG', IUPACUnambiguousDNA())
>>> coding_dna.translate()
Seq('MAIVMGR*KGAR*', HasStopCodon(IUPACProtein(), '*')) "
你可以看看into
我是一名优秀的程序员,十分优秀!