我正在构建一个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)
如果在Python
中运行,translate.py
的输出如下
Bio / Seq.py:1976:BiopythonWarning:部分密码子,len(序列)不是三的倍数。在翻译之前明确修剪序列或添加尾随N.这可能在将来成为一个错误。 BiopythonWarning)
'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 cookbook中有一个单独的方法来处理fasta文件格式转换。
有什么想法吗?
答案 0 :(得分:1)
如果您的文件translate.py
确实如此:
from Bio.Seq import translate
for line in open("output3.txt"):
translate(line)
您不应期望将任何数据定向到标准输出并重定向到output4.txt
文件。
将翻译的序列打印到stdout
:
print translate(line)