2016-07-11 24 views
6

Ist es in scikit-bio möglich, genomische merkmale zu extrahieren, die in einer gff3-formatierten datei aus einer genom fasta-datei gespeichert sind?scikit-bio-extrakt genomische merkmale aus gff3-datei

Beispiel:


genome.fasta

>sequence1 
ATGGAGAGAGAGAGAGAGAGGGGGCAGCATACGCATCGACATACGACATACATCAGATACGACATACTACTACTATGA 

annotation.gff3

#gff-version 3 
sequence1 source gene 1 78 . + . ID=gene1 
sequence1 source mRNA 1 78 . + . ID=transcript1;parent=gene1 
sequence1 source CDS 1 6 . + 0 ID=CDS1;parent=transcript1 
sequence1 source CDS 73 78 . + 0 ID=CDS2;parent=transcript1 

Die gewünschte Sequenz für das mRNA-Merkmal (Transkript1) wäre die Verkettung der zwei Kind-CDS-Merkmale. In diesem Fall wäre das also 'ATGGAGCTATGA'.

+0

Ab Scikit-Bio 0.5.0 wird das Lesen von Gff3-Dateien nicht unterstützt. Wenn dies eine Funktion ist, die dem Projekt hinzugefügt werden soll, können Sie eine Feature-Anfrage für den Issue Tracker senden: https://github.com/biocore/sikit-bio/issues – jairideout

Antwort

1

Diese Funktion wurde zu scikit-bio hinzugefügt, die in bioconda verfügbare Version unterstützt dies jedoch noch nicht (2017-12-15). Die Formatdatei für gff3 ist in der Github repository vorhanden.

Sie können die Repo klonen und lokal installieren mit:

$ git clone https://github.com/biocore/scikit-bio.git 
$ cd scikit-bio 
$ python setup.py install 

das Beispiel in der Datei arbeiten sollte der folgende Code vergeben wird:

import io 
from skbio.metadata import IntervalMetadata 
from skbio.io import read 

gff = io.StringIO(open("annotations.gff3", "r").read()) 
im = read(gff, format='gff3', into=IntervalMetadata, seq_id="sequence1") 

print(im) 

Für mich dies ein FormatIdentificationWarning wirft, aber die Einträge sind korrekt gemeldet:

4 interval features 
------------------- 
Interval(interval_metadata=<140154121000104>, bounds=[(0, 78)], fuzzy=[(False, False)], metadata={'source': 'source', 'type': 'gene', 'score': '.', 'strand': '+', 'ID': 'gene1'}) 
Interval(interval_metadata=<140154121000104>, bounds=[(0, 78)], fuzzy=[(False, False)], metadata={'source': 'source', 'type': 'mRNA', 'score': '.', 'strand': '+', 'ID': 'transcript1', 'parent': 'gene1'}) 
Interval(interval_metadata=<140154121000104>, bounds=[(0, 6)], fuzzy=[(False, False)], metadata={'source': 'source', 'type': 'CDS', 'score': '.', 'strand': '+', 'phase': 0, 'ID': 'CDS1', 'parent': 'transcript1'}) 
Interval(interval_metadata=<140154121000104>, bounds=[(72, 78)], fuzzy=[(False, False)], metadata={'source': 'source', 'type': 'CDS', 'score': '.', 'strand': '+', 'phase': 0, 'ID': 'CDS2', 'parent': 'transcript1'}) 

In der e xample im Code werden die GFF3- und die FASTA-Datei in der für die Lesefunktion verwendeten Eingabekette verkettet. Vielleicht kann das das Problem beheben. Auch bin ich nicht 100% sicher, wie Sie die Intervalle verwenden können, um das Feature zu extrahieren.