NCBI EST 文库格式转换

本文介绍了一个 Python 脚本,用于处理 NCBI 的 EST 数据库文件,并将其转换为特定格式。脚本读取原始文件,提取必要的元数据,并按照 LIBEST 前缀重新组织数据条目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NCBI   EST 文库格式转换

#!/usr/bin/env python
# -*- coding: utf-8 -*-
with open('1.txt', 'r') as f:
    a = []
    b = []
    for num, line in enumerate(f):
        if 'Lib' not in line:
            line1 = line.strip().split()[-2]
            b.append(int(line1))
            for i in range(1, int(line1)+1):
                a.append(num+i)
    f.seek(0, 0)
    print sum(b)
    tissue = ''
    for num, line in enumerate(f):
        if 'Lib' not in line:
            tissue = line.strip().split()[0]
        if num in a:
            line2 = line.strip('\t').split()
            n = int(line2[0][4:])
            if n < 1000:
                print 'LIBEST_000%s\t%s\t%s\t%s' % (n, tissue, line2[-1], ' '.join(line2[1:-1]))
            elif n < 10000:
                print 'LIBEST_00%s\t%s\t%s\t%s' % (n, tissue, line2[-1], ' '.join(line2[1:-1]))
            else:
                print 'LIBEST_0%s\t%s\t%s\t%s' % (n, tissue, line2[-1], ' '.join(line2[1:-1]))
### 将NCBI GI号转换为基因符号的方法 为了将GI号转换成基因符号(Gene Symbol),可以利用NCBI提供的`gene_info.gz`文件,该文件包含了丰富的基因信息,其中包括基因名称(Symbol)、所在染色体编号等内容[^1]。此过程可以通过编程批量处理来提高效率。 一种常见的方式是从`gene_info.gz`下载并解析这个压缩后的制表符分隔文本文件,从中查找对应的GI号及其关联的Gene Symbol。下面是一个Python脚本的例子,用于读取本地存储的`gene_info.gz`文件,并基于给定的GI列表获取相应的Gene Symbols: ```python import gzip from collections import defaultdict def load_gene_map(file_path): gene_mapping = {} with gzip.open(file_path, 'rt') as f: next(f) # 跳过标题行 for line in f: fields = line.strip().split("\t") tax_id = fields[0] gene_id = fields[1] symbol = fields[2] synonyms = fields[4].split("|") if fields[4] != "-" else [] other_designations = fields[-1].split("|") if fields[-1] != "-" else [] all_names = set([symbol] + synonyms + other_designations) for name in all_names: gene_mapping[name.upper()] = { "tax_id": tax_id, "gene_id": gene_id, "symbol": symbol } return gene_mapping def gi_to_symbol(gene_mapping, gis): result_symbols = [] for gi in gis: entry = gene_mapping.get(str(gi).upper()) if entry is not None: result_symbols.append(entry["symbol"]) else: result_symbols.append(None) return result_symbols # 假设已经有一个名为'gene_info.gz'的文件位于当前目录下 file_path = './gene_info.gz' gis_of_interest = ['8755', '9373'] # 这里放置想要查询的具体GI号码 mapping_dict = load_gene_map(file_path) symbols = gi_to_symbol(mapping_dict, gis_of_interest) for i, sym in enumerate(symbols): print(f"GI {gis_of_interest[i]} 对应的 Gene Symbol 是 '{sym}'") ``` 上述代码片段展示了如何加载`gene_info.gz`中的数据以及怎样通过匹配GI号找到其对应的Gene Symbol。需要注意的是,在实际应用中可能还需要考虑物种分类ID(Taxonomy ID),因为同一个GI号在不同物种间可能会有不同的映射关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值