我尝试从Linux服务器的文件中只提取序列ID。给你举几个例子TRINITY_DN0_c0_g1_i1.p1
和TRINITY_DN0_c0_g1_i3.p1
和序列ID。序列ID的长度不一样,但它们都以TRINITY
开始,以.p1
结束。
我尝试使用awk '{print$1}' filename.cdhit > seq_id.fasta
,但得到的是这个
我只需要ID,但它也会提取非兴趣信息(冗长的字母顺序蛋白质seq)。我尝试创建一个python脚本,希望只提取ID:
import re
file_path = '/var2/user/de_novo/data/transdecoder_dir/Trinity.fasta.transdecoder.pep.cdhi
t'
new_file_path = '/var2/user/de_novo/data/transdecoder_dir/seqID.fasta'
with open(file_path, 'rt') as file:
for myline in file:
if "\.p1" in file:
with open(new_file_path, 'w') as new_file:
new_file.write()
else:
print('No match found.')
尝试创建python脚本,运行linux命令,但结果是未找到匹配项。不确定我哪里出错了。希望得到任何帮助,谢谢。
2条答案
按热度按时间4ioopgfo1#
这应该可以达到目的:
至于python,看看https://biopython.org/,它是一个生物信息学相关的好东西的集合。
或
这里是一个."cdhit"文件读取器:https://pypi.org/project/cdhit-reader/
qaxu7uf22#
您可以将
awk | grep | cut
组合为:1.使用
regex
设置NF = 1/0
,与print $1 | grep
相同1.当它为false时,
NF
被设置为0
,因此整个行被清空,因此sub()
将失败并返回0
(替换的示例数),从而跳过不合格的行sub()
的功能与cut
相同