2013-11-25 3 views
3

BCBio의 GFF 파서를 사용해 본 결과 도구에 사용할 수 있기를 기대합니다. NCBI의 RefSeq 데이터베이스에서 .gbk 파일을 가져 와서 .gff 파일로 구문 분석했습니다.BCBio의 GFF 파서가있는 구문 분석이 올바르지 않습니다.

코드 나는 (http://biopython.org/wiki/GFF_Parsing에서) 사용 :

여기
#!/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() 

은 결과의 일부입니다

##gff-version 3 
##sequence-region NC_009925.1 1 6503724 
NC_009925.1 annotation remark 1 6503724 . . . accessions=NC_009925;comment=PROVISIONAL REFSEQ: This record has not yet been subject to final%0ANCBI review. The reference sequence was derived from CP000828.%0ASource bacteria from Marine Biotechnology Institute Culture%0ACollection%2C Marine Biotechnology Institute%2C 3-75-1 Heita%2C Kamaishi%2C%0AIwate 026-0001%2C Japan.%0ACOMPLETENESS: full length.;data_file_division=CON;date=10-JUN-2013;gi=158333233;keywords=;organism=Acaryochloris marina MBIC11017;references=location: %5B0:6503724%5D%0Aauthors: Swingley%2CW.D.%2C Chen%2CM.%2C Cheung%2CP.C.%2C Conrad%2CA.L.%2C Dejesa%2CL.C.%2C Hao%2CJ.%2C Honchak%2CB.M.%2C Karbach%2CL.E.%2C Kurdoglu%2CA.%2C Lahiri%2CS.%2C Mastrian%2CS.D.%2C Miyashita%2CH.%2C Page%2CL.%2C Ramakrishna%2CP.%2C Satoh%2CS.%2C Sattley%2CW.M.%2C Shimada%2CY.%2C Taylor%2CH.L.%2C Tomo%2CT.%2C Tsuchiya%2CT.%2C Wang%2CZ.T.%2C Raymond%2CJ.%2C Mimuro%2CM.%2C Blankenship%2CR.E. and Touchman%2CJ.W.%0Atitle: Niche adaptation and genome expansion in the chlorophyll d-producing cyanobacterium Acaryochloris marina%0Ajournal: Proc. Natl. Acad. Sci. U.S.A. 105 %286%29%2C 2005-2010 %282008%29%0Amedline id: %0Apubmed id: 18252824%0Acomment:,location: %5B0:6503724%5D%0Aauthors: %0Aconsrtm: NCBI Genome Project%0Atitle: Direct Submission%0Ajournal: Submitted %2817-OCT-2007%29 National Center for Biotechnology Information%2C NIH%2C Bethesda%2C MD 20894%2C USA%0Amedline id: %0Apubmed id: %0Acomment:,location: %5B0:6503724%5D%0Aauthors: Touchman%2CJ.W.%0Atitle: Direct Submission%0Ajournal: Submitted %2827-AUG-2007%29 Pharmaceutical Genomics Division%2C Translational Genomics Research Institute%2C 13208 E Shea Blvd%2C Scottsdale%2C AZ 85004%2C USA%0Amedline id: %0Apubmed id: %0Acomment:;sequence_version=1;source=Acaryochloris marina MBIC11017;taxonomy=Bacteria,Cyanobacteria,Oscillatoriophycideae,Chroococcales,Acaryochloris 
NC_009925.1 feature source 1 6503724 . + . db_xref=taxon:329726;mol_type=genomic DNA;note=type strain of Acaryochloris marina;organism=Acaryochloris marina MBIC11017;strain=MBIC11017 
NC_009925.1 feature gene 931 1581 . - . db_xref=GeneID:5685235;locus_tag=AM1_0001;note=conserved hypothetical protein;pseudo= 
NC_009925.1 feature gene 1627 2319 . - . db_xref=GeneID:5678840;locus_tag=AM1_0003 

문제는 세 번째와 네 번째 줄에있다 : 그것은 전체 헤더 정보를한다 .gbk에서 가져 와서 줄을 넣습니다. 반면 건너 뜁니다. 마지막 두 줄은 정확합니다 (나머지 출력 파일도 마찬가지입니다). 몇 가지 다른 .gbk 파일을 사용해 보았습니다. 모두 동일한 결과를 산출합니다.

LOCUS  NC_009925   6503724 bp DNA  circular CON 10-JUN-2013 
DEFINITION Acaryochloris marina MBIC11017 chromosome, complete genome. 
ACCESSION NC_009925 
VERSION  NC_009925.1 GI:158333233 
DBLINK  Project: 58167 
      BioProject: PRJNA58167 
KEYWORDS . 
SOURCE  Acaryochloris marina MBIC11017 
    ORGANISM Acaryochloris marina MBIC11017 
      Bacteria; Cyanobacteria; Oscillatoriophycideae; Chroococcales; 
      Acaryochloris. 
REFERENCE 1 (bases 1 to 6503724) 
    AUTHORS Swingley,W.D., Chen,M., Cheung,P.C., Conrad,A.L., Dejesa,L.C., 
      Hao,J., Honchak,B.M., Karbach,L.E., Kurdoglu,A., Lahiri,S., 
      Mastrian,S.D., Miyashita,H., Page,L., Ramakrishna,P., Satoh,S., 
      Sattley,W.M., Shimada,Y., Taylor,H.L., Tomo,T., Tsuchiya,T., 
      Wang,Z.T., Raymond,J., Mimuro,M., Blankenship,R.E. and 
      Touchman,J.W. 
    TITLE  Niche adaptation and genome expansion in the chlorophyll 
      d-producing cyanobacterium Acaryochloris marina 
    JOURNAL Proc. Natl. Acad. Sci. U.S.A. 105 (6), 2005-2010 (2008) 
    PUBMED 18252824 
REFERENCE 2 (bases 1 to 6503724) 
    CONSRTM NCBI Genome Project 
    TITLE  Direct Submission 
    JOURNAL Submitted (17-OCT-2007) National Center for Biotechnology 
      Information, NIH, Bethesda, MD 20894, USA 
REFERENCE 3 (bases 1 to 6503724) 
    AUTHORS Touchman,J.W. 
    TITLE  Direct Submission 
    JOURNAL Submitted (27-AUG-2007) Pharmaceutical Genomics Division, 
      Translational Genomics Research Institute, 13208 E Shea Blvd, 
      Scottsdale, AZ 85004, USA 
COMMENT  PROVISIONAL REFSEQ: This record has not yet been subject to final 
      NCBI review. The reference sequence was derived from CP000828. 
      Source bacteria from Marine Biotechnology Institute Culture 
      Collection, Marine Biotechnology Institute, 3-75-1 Heita, Kamaishi, 
      Iwate 026-0001, Japan. 
      COMPLETENESS: full length. 
FEATURES    Location/Qualifiers 
    source   1..6503724 
        /organism="Acaryochloris marina MBIC11017" 
        /mol_type="genomic DNA" 
        /strain="MBIC11017" 
        /db_xref="taxon:329726" 
        /note="type strain of Acaryochloris marina" 
    gene   complement(931..1581) 
        /locus_tag="AM1_0001" 
        /note="conserved hypothetical protein" 
        /pseudo 
        /db_xref="GeneID:5685235" 
    gene   complement(1627..2319) 
        /locus_tag="AM1_0003" 
        /db_xref="GeneID:5678840" 
    CDS    complement(1627..2319) 
        /locus_tag="AM1_0003" 
        /codon_start=1 
        /transl_table=11 
        /product="NUDIX hydrolase" 
         /protein_id="YP_001514406.1" 
        /db_xref="GI:158333234" 
        /db_xref="GeneID:5678840" 
        /translation="MPYTYDYPRPGLTVDCVVFGLDEQIDLKVLLIQRQIPPFQHQWA 
       LPGGFVQMDESLEDAARRELREETGVQGIFLEQLYTFGDLGRDPRDRIISVAYYALIN 
       LIEYPLQASTDAEDAAWYSIENLPSLAFDHAQILKQAIRRLQGKVRYEPIGFELLPQK 
       FTLTQIQQLYETVLGHPLDKRNFRKKLLKMDLLIPLDEQQTGVAHRAARLYQFDQSKY 
       ELLKQQGFNFEV" 

사람이 내가이 문제를 해결하는 방법을 알고 있나요 : 참고로

, 여기에 .gbk 파일의 시작인가? 내가 처음이 잘못된 줄을 필터링 할 다음 줄을 사용했습니다

는 :

if "\tannotation\t" in line or "feature\tsource" in line: 

이 여러 테스트 .gbk 년대에 작동하는 것 같다. 그러나 나는 왜 그것이 처음에 그것들을 파싱하는지에 관해서 아직도 흥미 롭다.

답변

1

답변은 연결된 위키 페이지 (http://biopython.org/wiki/GFF_Parsing#Writing_GFF3)에 있습니다. "GFF3Writer는 SeqRecord 객체의 반복자를 사용하고 각 SeqFeature를 GFF3 라인으로 기록합니다." SeqRecord 파일은 .gbk 파일에서 파싱 된이 주석을 포함하므로 작성자가 씁니다. 구현 (https://github.com/chapmanb/bcbb/blob/master/gff/BCBio/GFF/GFFOutput.py)이 완료 위치를 볼 수 있습니다에서 다음 source 기능을 전달하는 이유가

self._write_annotations(rec.annotations, rec.id, len(rec.seq), out_handle) 

당신도 볼 수 있습니다. 그것은 다른 것들 (유전자, CDS)과 같은 기능이며 별도로 취급하지 않습니다.

필자에게 주석을 건너 뛰도록 지시하는 옵션이나 매개 변수가없는 이유는 무엇입니까 (최소한 필자는 아무 것도 발견하지 못했습니다). SeqRecordsSeqIO.parse()으로 읽을 때 특수 효과를 건너 뛰는 매개 변수를 알지 못합니다.

문제를 해결하기 위해 구문 분석 된 SeqRecords에 별도로 액세스하여 주석과 소스 기능을 삭제하십시오. 이 접근법의 단점은 초기 생성기에서 List를 생성하기 때문에 필요한 추가 메모리 (성능 손실은 물론)입니다. 결국 나는 List를 GFF로 파싱한다. 나는이 접근법이 당신보다 훨씬 나은지 모르겠습니다.

#!/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()