Python 使用BCBio'进行不正确的分析;GFF解析器

Python 使用BCBio'进行不正确的分析;GFF解析器,python,parsing,biopython,gbk,Python,Parsing,Biopython,Gbk,我正在使用BCBio的GFF解析器进行实验,希望能将其用于我的工具。我从NCBI的RefSeq数据库中获取了一个test.gbk文件,并用它解析成一个.gff文件 我使用的代码(来自): 以下是部分结果: gff第三版 ##序列区NC_009925.1 1 6503724 NC_009925.1注释备注1 6503724。加入=NC_009925;注释=临时参考序号:此记录尚未接受最终%0ANCBI审查。参考序列来源于CP000828。%0A来源于海洋生物技术研究所培养的细菌%0A收集%2C海洋

我正在使用BCBio的GFF解析器进行实验,希望能将其用于我的工具。我从NCBI的RefSeq数据库中获取了一个test.gbk文件,并用它解析成一个.gff文件

我使用的代码(来自):

以下是部分结果:

gff第三版 ##序列区NC_009925.1 1 6503724 NC_009925.1注释备注1 6503724。加入=NC_009925;注释=临时参考序号:此记录尚未接受最终%0ANCBI审查。参考序列来源于CP000828。%0A来源于海洋生物技术研究所培养的细菌%0A收集%2C海洋生物技术研究所%2C 3-75-1海田%2C Kamaishi%2C%0AIwate 026-0001%2C日本。%0A完整性:全长。;数据文件分区=CON;日期=2013年6月10日;gi=15833233;关键词=;有机物=海洋粉螨MBIC1017;参考资料=位置:%5B0:6503724%5D%0A作者:斯威格利%2CW.D.%2C陈%2CM.%2C张%2CP.C.%2C康拉德%2CA.L.%2C德耶萨%2CL.C.%2C浩%2CJ.%2C本察克%2CB.M.%2C卡尔巴赫%2CL.E.%库尔多卢%2CA.%拉希里%2CS.%2C马斯特里安%2CS.D.%2C宫田%2CH.%页%2C%2C罗摩那%2CP克里希纳%2CP萨蒂%2C%2C库尔多卢%2C%2C泰勒%2C%2C泰勒%2C%2CTomo%2CT.%2C Tsuchiya%2CT.%2C Wang%2CZ.T.%2C Raymond%2CJ.%2C Mimuro%2CM.%2CM Blankenship%2CR.E。和Touchman%2CJ.W.%0Atitle:叶绿素d产生菌Acaryochloris marina中的生态位适应和基因组扩展%0Ajournal:Proc。纳特尔。阿卡德。Sci。美国105%286%29%2C 2005-2010%282008%29%0美国在线id:%0经验证的id:18252824%0建议:,位置:%5B0:6503724%5D%0作者:%0Aconsrtm:NCBI基因组计划%0文章:直接提交%0作者:提交%2817-10-2007%29国家生物技术信息中心%2C NIH%2C贝塞斯达%2C MD 20894%2C美国在线id:%0经验证的id:%0建议:,地点:%5B0:6503724%5D%0A作者:Touchman%2CJ.W.%0A个人:直接提交%0A个人:提交%2827-AUG-2007%29药物基因组学部门%2C翻译基因组学研究所%2C 13208 E Shea Blvd%2C Scottsdale%2C AZ 85004%2C美国%0美国电话线id:%0申请id:%0A建议:;序列_版本=1;来源=海洋粉螨MBIC1017;分类学=细菌、蓝藻、振荡菌亚科、绿球藻科、粉螨属 NC_009925.1特征源1 6503724.+。db_xref=分类单元:329726;mol_类型=基因组DNA;注=马尼亚红蜱的类型菌株;有机物=海洋粉螨MBIC1017;应变=Mbic1017 NC_009925.1特征基因931 1581。db_xref=GeneID:5685235;轨迹标记=AM1\U 0001;注=保守假设蛋白;伪= NC_009925.1特征基因1627 2319。db_xref=GeneID:5678840;轨迹标签=AM1\U 0003 问题在于第三行和第四行:它从.gbk中获取完整的标题信息,并将其作为一行输入,但应该跳过它。最后两行是正确的(输出文件的其余部分也是正确的)。我试过使用几个不同的.gbk文件,所有的结果都是一样的

以下是.gbk文件的开头,以供参考:

位点NC_009925 6503724 bp DNA循环CON 2013年6月10日
定义马氏粉螨MBIC1017染色体,全基因组。
加入NC_009925
版本NC_009925.1 GI:15833233
DBLINK项目:58167
生物项目:PRJNA58167
关键词。
来源:海洋粉螨MBIC1017
海洋粉螨MBIC1017
细菌;蓝藻;振荡菌科;绿球藻;
蜱螨属。
参考1(基准1至6503724)
作者Swingley,W.D.,Chen,M.,Cheng,P.C.,Conrad,A.L.,Dejesa,L.C。,
Hao,J.,Honchak,B.M.,Karbach,L.E.,Kurdoglu,A.,Lahiri,S。,
马斯特里安,S.D.,宫田,H.,佩奇,L.,罗摩克里希纳,P.,佐藤,S。,
Sattley,W.M.,Shimada,Y.,Taylor,H.L.,Tomo,T.,Tsuchiya,T。,
Wang,Z.T.,Raymond,J.,Mimuro,M.,Blankenship,R.E.和
Touchman,J.W。
叶绿素的生态位适应和基因组扩展
产d蓝藻粉氯藻
日志处理。纳特尔。阿卡德。Sci。《美国法典》105(6),2005-2010(2008)
PUBMED 18252824
参考2(基准1至6503724)
CONSTRTM NCBI基因组计划
标题直接提交
期刊提交(2007年10月17日)国家生物技术中心
信息,美国马里兰州贝塞斯达国家卫生研究院,邮编:20894
参考3(基准1至6503724)
作者:Touchman,J.W。
标题直接提交
杂志提交(2007年8月27日)药物基因组学部,
翻译基因组学研究所,13208 E Shea Blvd,
美国亚利桑那州斯科茨代尔85004
临时意见参考:该记录尚未进行最终审查
NCBI审查。参考序列源自CP000828。
海洋生物技术研究所培养的源细菌
海洋生物技术研究所收藏,Kamaishi海塔3-75-1号,
岩手026-0001,日本。
完整性:全长。
特征位置/限定符
资料来源1..6503724
/有机物=“Acaryochloris marina MBIC1017”
/mol_type=“基因组DNA”
/应变=“mbic1017”
/db_xref=“分类单元:329726”
/注=“马尼亚红蜱的类型菌株”
基因补体(931..1581)
/轨迹标签=“AM1\U 0001”
/注=“保守假设蛋白”
/伪
/db_xref=“GeneID:5685235”
基因补体(1627..2319)
/轨迹标签=“AM1\U 0003”
/db_xref=“GeneID:5678840”
CDS补码(1627..2319)
/轨迹标签=“AM1\U 0003”
/密码子启动=1
/transl_表=11
/product=“NUDIX水解酶”
/保护
#!/usr/bin/python
from BCBio import GFF
from Bio import SeqIO

def convert_to_GFF3():
    in_file = "/var/www/localhost/NC_009925.gbk"
    out_file = "/var/www/localhost/output/your_file.gff"
    in_handle = open(in_file)
    out_handle = open(out_file, "w")

    GFF.write(SeqIO.parse(in_handle, "genbank"), out_handle)

    in_handle.close()
    out_handle.close()

convert_to_GFF3()
if "\tannotation\t" in line or "feature\tsource" in line:
self._write_annotations(rec.annotations, rec.id, len(rec.seq), out_handle)
#!/usr/bin/env python
from BCBio import GFF
from Bio import SeqIO

def convert_to_GFF3():
    in_file = "input.gbk"
    out_file = "output.gff"
    in_handle = open(in_file)
    out_handle = open(out_file, "w")

    records = []
    for record in SeqIO.parse(in_handle, "genbank"):
        # delete annotations
        record.annotations = {}
        # loop through features to find the source
        for i in range(0,len(record.features)):
            # if found, delete it and stop (only expect one source)
            if(record.features[i].type == "source"):
                record.features.pop(i)
                break
        records.append(record)

    GFF.write(records, out_handle)

    in_handle.close()
    out_handle.close()

convert_to_GFF3()