【发布时间】:2014-02-11 17:51:57
【问题描述】:
我正在构建一个 bash 脚本,该脚本包含 grep 和小型 Python 脚本,最终能够在基因序列文件(fasta 格式)中搜索两个序列搜索字符串之间给定长度的序列字符串,并将这些序列翻译成肽。我的 bash 脚本使用两个 grep 函数,后跟一个 Biopython 脚本,该脚本打印与所需区域相对应的前几行。
grep -E -o "ATGAGTCTT(.*)TCAGTACG" search_script_testdata.fasta > ./output1.txt
grep -E -o "(.*)TCAGTACG" output1.txt > ./output2.txt
python print_int.py > ./output3.txt
python translate.py > ./output4.txt
代码在python translate.py之前有效。
from Bio.Seq import translate
for line in open("output3.txt"):
translate(line)
translate.py 在 Python 中运行时的输出如下
Bio/Seq.py:1976:BiopythonWarning:部分密码子,len(序列)不是三的倍数。在翻译前显式修剪序列或添加尾随 N。这可能会成为未来的错误。 Biopython警告)
'LVS'
'SLD'
我希望生成的倒数第二个文件将包含信息
LVS
SLD
但是,当 bash 脚本运行时,只有警告/错误消息而不是两个氨基酸序列输出到屏幕,并且没有任何内容写入 output4.txt。氨基酸序列不应该以甲硫氨酸开头,甲硫氨酸是错误信息的来源。我需要这种格式的序列。任何有 Biopython 经验的人都可以帮忙并建议我如何仅将氨基酸序列输出到文件中吗?
编辑: 我已经更改了 search_script_testdata.fasta 文件,因此预期的 output3.txt 文件将只有三行 ATGAGTCTT 转换为 MSL。
output3.txt
ATGAGTCTT
ATGAGTCTT
ATGAGTCTT
产生的错误和以前一样。
translate.py 是一个包含以下代码行的文件:
for line in open("output2.txt", "r"):
print(line[:9])
这次我明白了
'MSL'
'MSL'
'MSL'
同样的错误信息。我的理解是,此代码应与设置的文件一起使用,以便每一行都有一串要翻译的基因组序列。在 biopython 食谱中有一个单独的方法来处理 fasta 文件格式的翻译。
有什么想法吗?
【问题讨论】:
-
向我们展示
output3.txt的样本,以及print_int.py的脚本详情
标签: regex string bash translate biopython