ubuntu 使用python脚本从文件中提取ID?

gkn4icbw  于 2023-01-25  发布在  Python
关注(0)|答案(2)|浏览(131)

我尝试从Linux服务器的文件中只提取序列ID。给你举几个例子TRINITY_DN0_c0_g1_i1.p1TRINITY_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命令,但结果是未找到匹配项。不确定我哪里出错了。希望得到任何帮助,谢谢。

4ioopgfo

4ioopgfo1#

这应该可以达到目的:

awk '{print$1}' filename.cdhit | grep TRINITY | cut -c2-

至于python,看看https://biopython.org/,它是一个生物信息学相关的好东西的集合。

这里是一个."cdhit"文件读取器:https://pypi.org/project/cdhit-reader/

qaxu7uf2

qaxu7uf22#

您可以将awk | grep | cut组合为:

mawk 'sub(".",_, $(NF = /TRINITY/))'

1.使用regex设置NF = 1/0,与print $1 | grep相同
1.当它为false时,NF被设置为0,因此整个行被清空,因此sub()将失败并返回0(替换的示例数),从而跳过不合格的行

  1. sub()的功能与cut相同

相关问题