【发布时间】:2015-11-07 17:00:00
【问题描述】:
我有一个我试图解析的基因 GTF 文件,因此“gene_id”、“gene_type”、“gene_status”、“gene_name”和 level 都在不同的列中。
因此对于我的原始文件:
chr1 | ENSEMBL gene| 17369| 17436| . - . |gene_id "ENSG00000278267.1"; gene_type "miRNA"; gene_status "KNOWN"; gene_name "MIR6859-1"; level 3;
chr1 | ENSEMBL gene| 30366| 30503| . + . |gene_id "ENSG00000274890.1"; gene_type "miRNA"; gene_status "KNOWN"; gene_name "MIR1302-2"; level 3;
chr1 | ENSEMBL gene| 157784| 157887| . - . |gene_id "ENSG00000222623.1"; gene_type "snRNA"; gene_status "KNOWN"; gene_name "RNU6-1100P"; level 3;
chr1 | ENSEMBL gene| 187891| 187958| . - . |gene_id "ENSG00000273874.1"; gene_type "miRNA"; gene_status "KNOWN"; gene_name "MIR6859-2"; level 3;
我希望它看起来像这样,“gene_id”、“gene_type”、“gene_status”、“gene_name”和 level 都在单独的列中:
chr1 |ENSEMBL |gene| 17369| |17436 |. - . |gene_id "ENSG00000278267.1" |gene_type "miRNA" |gene_status "KNOWN" |gene_name "MIR6859-1" |level 3
chr1 |ENSEMBL |gene| 30366| 30503 |. + . |gene_id "ENSG00000274890.1" |gene_type "miRNA" |gene_status "KNOWN" |gene_name "MIR1302-2" |level 3
chr1 |ENSEMBL |gene| 157784| 157887 |. - . |gene_id "ENSG00000222623.1" |gene_type "snRNA" |gene_status "KNOWN" |gene_name "RNU6-1100P" |level 3
chr1 |ENSEMBL |gene| 187891| 187958 |. - . |gene_id "ENSG00000273874.1" |gene_type "miRNA" |gene_status "KNOWN" |gene_name "MIR6859-2" |level 3
我尝试使用 gffutils 解析它,使用他们提供的基本代码:
import gffutils
db = gffutils.create_db("sRNA.gene.gtf", dbfn='sRNA.gene.gtf.db')
print(list(db.featuretypes()))
# Here's how to write genes out to file
with open('sRNA.gene.gtf', 'w') as fout:
for gene in db.features_of_type('gene'):
fout.write(str(gene) + '\n')
但是,我收到“ImportError: cannot import name 'feature:'”
ImportError Traceback (most recent call last)
<ipython-input-26-4dd7cd5c7e24> in <module>()
2
3
----> 4 db = gffutils.create_db("sRNA.gene.gtf", dbfn='sRNA.gene.gtf.db')
5
6 #db = gffutils.FeatureDB('sRNA.gene.gtf.db')
我不确定这里出了什么问题,现在正在考虑尝试使用命令行对其进行解析。谁能提供一些关于解析 GTF 文件的最佳方法的建议?
提前谢谢你。
【问题讨论】:
-
请根据您的示例输入编辑您的问题以包含您所需的输出。祝你好运。
-
添加更改,谢谢!
-
很难看出输入和输出的差异。您可以切换到在列之间使用
|字符吗?然后,您是否将其加载到 excel 或类似文件中?祝你好运。 -
在原文中,在 'gene_id' 之后,它全部组合在一行中,我希望变量都通过它们的标识符进入不同的列。
-
我看到的是
;字符被删除。够了吗?sed 's/;/ /g' file > outFile会这样做。否则,需要知道是否有用于分隔字段的字符。即标签分隔?祝你好运。
标签: python parsing command-line