搜索
查看: 1456|回复: 3

求助,处理fasta文件

[复制链接]

7

主题

37

帖子

412

积分

中级会员

Rank: 3Rank: 3

积分
412
发表于 2018-4-8 16:23:58 | 显示全部楼层 |阅读模式
我得到的fasta文件是这样的  结果是从trinity中来的

想要的结果是将相同ID中较短的序列删除,只保留有最长的ATCG的ID 。 可以通过len 来比较长度  。

我已经把文件名后的 ATCD序列放到ID的后面了,现在就是不知道如何再根据 len来排序。 试验文件在text.zip



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:TCGA计算FPKM时计算基因长度
下一篇:利用 GATK 来做sv 和snv
回复

使用道具 举报

0

主题

3

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2018-4-9 20:52:17 | 显示全部楼层
xiao7462 发表于 2018-4-9 18:36
你的结果只输出 ID和 len , 后面的不显示啊。。 也没换行

我还以为你要的是个大概思路呢,这样你倒是把需求讲清楚啊
[Python] 纯文本查看 复制代码
# -*- coding:utf-8 -*-
    
def mian():
    fasta = 'test.fasta'
    out = 'out.txt'
    outtxt = open(out,'w')
    maxlen = {}
    with open(fasta,'r') as f:
        for line in f:
            if not line.startswith('>'):
                continue
            elems = line.split()
            id = elems[0][1:]
            num = elems[1][4:]
            seq = ''.join(elems[6:])
            try:
                if maxlen[id][0] < num:
                    maxlen[id] = (num,seq)
            except:
                maxlen[id] = (num,seq)
    for k in maxlen.keys():
        outtxt.write(k+'\t'+str(maxlen[k][0]) + '\t' +maxlen[k][1]+'\n')

if __name__ == '__main__':
    mian()
回复 支持 1 反对 0

使用道具 举报

0

主题

3

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2018-4-9 15:45:32 | 显示全部楼层
本帖最后由 立秋之后 于 2018-4-9 16:02 编辑

[Python] 纯文本查看 复制代码
# -*- coding:utf-8 -*-

def mian():
    fasta = 'test.fasta'
    maxlen = {}
    with open(fasta,'r') as f:
        for line in f:
            if not line.startswith('>'):
                continue
            id = line.split()[0][1:]
            num = line.split()[1][4:]
            try:
                if maxlen[id] < num:
                    maxlen[id] = num
            except:
                maxlen[id] = num
    print(maxlen)

if __name__ == '__main__':
    mian()
回复 支持 反对

使用道具 举报

7

主题

37

帖子

412

积分

中级会员

Rank: 3Rank: 3

积分
412
 楼主| 发表于 2018-4-9 18:36:12 | 显示全部楼层
立秋之后 发表于 2018-4-9 15:45
[mw_shl_code=python,true]# -*- coding:utf-8 -*-

def mian():

你的结果只输出 ID和 len , 后面的不显示啊。。 也没换行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2019-6-16 19:45 , Processed in 0.033471 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.