Domanda:
Come gli attributi GFF3 (nona colonna) variano da un algoritmo di predizione genica a un altro
Arijit Panda
2017-07-28 22:57:13 UTC
view on stackexchange narkive permalink

I file GFF3 sono in formato tabulare con 9 campi per riga, separati da tabulazioni. I primi 8 campi condividono quasi la stessa struttura dati, ma il nono campo varia molto a seconda del tipo di caratteristica e dell'algoritmo di predizione del gene.

Al momento sto cercando di costruire il mio modulo GFF che analizzerà un file GFF e restituisce un oggetto di dati strutturati (una struttura del dizionario python ). Per questo, ho bisogno di una buona conoscenza del nono campo del formato GFF.

Qualcuno può aiutarmi fornendo vari file GFF?

Potresti voler esaminare questo parser GFF3 python, che segue lo stile di biopython: https://github.com/chapmanb/bcbb/tree/master/gff
Hai esaminato [gffutils] (http://daler.github.io/gffutils/index.html)? Probabilmente farà la maggior parte del lavoro pesante per te, ad es. L'analisi.
Una risposta:
Daniel Standage
2017-07-29 00:18:45 UTC
view on stackexchange narkive permalink

Il primo punto da cui iniziare è la specifica GFF3. Questa è la parola ufficiale su ciò che è e non è consentito in un file GFF3. Ad esempio, gli utenti possono definire chiavi di attributo arbitrarie, a condizione che non inizino con una lettera maiuscola (queste sono riservate per l'uso "ufficiale").

Ma la tua domanda non sembra riguardare cosa è consentito , ma ciò che è comunemente usato . Ho una domanda per te: quali predittori genetici stai usando? O stai usando annotazioni geniche prodotte da altri?

Ecco alcuni esempi.

NCBI RefSeq

Se stai usando GFF3 da NCBI, è probabile ha un aspetto simile a questo.

  NC_007070.3 Gnomon gene 329235 331223. +. ID = gene14; Dbxref = BEEBASE: GB42168, GeneID: 551678; Name = LOC551678; gbkey = Gene; gene = LOC551678; gene_biotype = protein_codingNC_007070.3 Gnomon mRNA 329235 331223. +. ID = rna27; Parent = gene14; Dbxref = GeneID: 551678, Genbank: XM_624067.4, BEEBASE: GB42168; Name = XM_624067.4; gbkey = mRNA; gene = LOC551678; model_evidence = L'evidenza a supporto include la somiglianza con: 66 ESTs% 2C 24 Proteine% 2C e 99% 25 copertura della caratteristica genomica annotata mediante allineamenti RNAseq% 2C inclusi 113 campioni con supporto per tutti gli introni annotati; prodotto = variante del trascritto% 2C simile a 5 della proteina che migliora l'espressione del recettore X1; transcript_id = XM_624067.4NC_007070 .3 Esone di Gnomone 329235 329459. +. ID = id117; Parent = rna27; Dbxref = GeneID: 551678, Genbank: XM_624067.4, BEEBASE: GB42168; gbkey = mRNA; gene = LOC551678; prodotto = proteina che migliora l'espressione del recettore 5-like% 2C trascrizione variante X1; transcript_id = XM_624067.4NC_007070.3 Gnomon exon 329850 330082. +. ID = id118; Parent = rna27; Dbxref = GeneID: 551678, Genbank: XM_624067.4, BEEBASE: GB42168; gbkey = mRNA; gene = LOC551678; prodotto = proteina che migliora l'espressione del recettore 5-like% 2C trascrizione variante X1; transcript_id = XM_624067.4
NC_007070.3 Esone di Gnomon 330166 330301. +. ID = id119; Parent = rna27; Dbxref = GeneID: 551678, Genbank: XM_624067.4, BEEBASE: GB42168; gbkey = mRNA; gene = LOC551678; prodotto = proteina che migliora l'espressione del recettore 5-like% 2C trascrizione variante X1; transcript_id = XM_624067.4NC_007070.3 Gnomon exon 330376 331223. +. ID = id120; Parent = rna27; Dbxref = GeneID: 551678, Genbank: XM_624067.4, BEEBASE: GB42168; gbkey = mRNA; gene = LOC551678; prodotto = proteina che migliora l'espressione del recettore 5-like% 2C trascrizione variante X1; transcript_id = XM_624067.4NC_007070.3 Gnomon CDS 329333 329459. + 0 ID = cds8; Parent = rna27; Dbxref = GeneID: 551678, Genbank: XP_624070.1, BEEBASE: GB42168; Name = XP_624070.1; gbkey = CDS; gene = LOC551678; prodotto = proteina recettore che migliora l'espressione 5-like isoform X1; protein_id = XP_624070.1NC_007070.3 Gnomon CDS 329850 330082. + 2 ID = cds8; Parent = rna27; Dbxref = GeneID: 551678, Genbank: XP_624070.1, BEEBASE: GB42168; Name = XP_624070.1; gbkey = CDS; gene = LOC551678; prodotto = proteina recettore che migliora l'espressione 5-like isoform X1; protein_id = XP_624070.1NC_007070.3 Gnomon CDS 330166 330301. + 0 ID = cds8; Parent = rna27; Dbxref = GeneID: 551678, Genbank: XP_624070.1, BEEBASE: GB42168; Name = XP_624070.1; gbkey = CDS; gene = LOC551678; prodotto = proteina recettore che migliora l'espressione 5-like isoform X1; protein_id = XP_624070.1NC_007070.3 Gnomon CDS 330376 330416. + 2 ID = cds8; Parent = rna27; Dbxref = GeneID: 551678, Genbank: XP_624070.1, BEEBASE: GB42168; Name = XP_624070.1; gbkey = CDS; gene = LOC551678; prodotto = proteina recettore che migliora l'espressione 5-like isoform X1; protein_id = XP_624070.1  

MAKER

Flusso di lavoro di annotazione MAKER ( documento, software) è uno strumento di annotazione genica abbastanza comunemente usato e produce un output GFF3 come questo.

  scaffold_12 maker gene 652527 655343. +. ID = maker-scaffold_12-augustus-gene-0.959; Name = maker-scaffold_12-augustus-gene-0.959scaffold_12 maker mRNA 652527 655343. +. ID = maker-scaffold_12-augustus-gene-0.959-mRNA-1; Parent = maker-scaffold_12-augustus-gene-0.959; Name = maker-scaffold_12-augustus-gene-0.959-mRNA-1; _AED = 0.24; _eAED = 0,18; _QI = 0 | 0 | 0 | 0,66 | 0,5 | 0,33 | 3 | 0 | 218scaffold_12 maker esone 652527 652817. +. ID = maker-scaffold_12-augustus-gene-0.959-mRNA-1: esone: 1203; Parent = maker-scaffold_12-augustus-gene-0.959-mRNA-1scaffold_12 maker exon 654877 655170. +. ID = maker-scaffold_12-augustus-gene-0.959-mRNA-1: esone: 1204; Parent = maker-scaffold_12-augustus-gene-0.959-mRNA-1scaffold_12 maker exon 655272 655343. +. ID = maker-scaffold_12-augustus-gene-0.959-mRNA-1: esone: 1205; Parent = maker-scaffold_12-augustus-gene-0.959-mRNA-1scaffold_12 maker CDS 652527 652817. + 0 ID = maker-scaffold_12-augustus-gene-0.959-mRNA-1: cds; Parent = maker-scaffold_12-augustus-gene-0.959-mRNA-1scaffold_12 maker CDS 654877 655170. + 0 ID = maker-scaffold_12-augustus-gene-0.959-mRNA-1: cds; Parent = maker-scaffold_12-augustus-gene-0.959-mRNA-1scaffold_12 maker CDS 655272 655343. + 0 ID = maker-scaffold_12-augustus-gene-0.959-mRNA-1: cds; Parent = maker-scaffold_12-augustus-gene-0.959-mRNA-1scaffold_12 maker gene 941547 943897. +. ID = snap-scaffold_12-processing-gene-0.851; Name = snap-scaffold_12-processing-gene-0.851scaffold_12 maker mRNA 941547 943897. +. ID = snap-scaffold_12-processing-gene-0.851-mRNA-1; Parent = snap-scaffold_12-processing-gene-0.851; Name = snap-scaffold_12-processing-gene-0.851-mRNA-1; _AED = 0.22; _eAED = 0,22; _QI = 0 | 0 | 0,25 | 0,25 | 1 | 1 | 4 | 661 | 95
scaffold_12 maker exon 941547 941631. +. ID = snap-scaffold_12-processing-gene-0.851-mRNA-1: exon: 1206; Parent = snap-scaffold_12-processing-gene-0.851-mRNA-1scaffold_12 maker exon 942343 942367. +. ID = snap-scaffold_12-processing-gene-0.851-mRNA-1: exon: 1207; Parent = snap-scaffold_12-processing-gene-0.851-mRNA-1scaffold_12 maker exon 942780 942920. +. ID = snap-scaffold_12-processing-gene-0.851-mRNA-1: exon: 1208; Parent = snap-scaffold_12-processing-gene-0.851-mRNA-1scaffold_12 maker exon 943200 943897. +. ID = snap-scaffold_12-processing-gene-0.851-mRNA-1: exon: 1209; Parent = snap-scaffold_12-processing-gene-0.851-mRNA-1scaffold_12 maker CDS 941547 941631. + 0 ID = snap-scaffold_12-gene-processato-0.851-mRNA-1: cds; Parent = snap-scaffold_12-processing-gene-0.851-mRNA-1scaffold_12 maker CDS 942343 942367. + 2 ID = snap-scaffold_12-processing-gene-0.851-mRNA-1: cds; Parent = snap-scaffold_12-processing-gene-0.851-mRNA-1scaffold_12 maker CDS 942780 942920. + 1 ID = snap-scaffold_12-processing-gene-0.851-mRNA-1: cds; Parent = snap-scaffold_12-processing-gene-0.851-mRNA-1scaffold_12 maker CDS 943200 943236. + 1 ID = snap-scaffold_12-processing-gene-0.851-mRNA-1: cds; Parent = snap-scaffold_12-processing-gene-0.851-mRNA-1scaffold_12 maker three_prime_UTR 943237 943897. +. ID = snap-scaffold_12-processing-gene-0.851-mRNA-1: three_prime_utr; Parent = snap-scaffold_12-processing-gene-0.851-mRNA-1  

GeneMark, SNAP, Augustus

Se guardiamo all'output di diversi strumenti di predizione genica ab initio comuni, nessuno di essi produce effettivamente GFF3 per impostazione predefinita. Ecco alcuni risultati di GeneMark ( carta, software).

  543 1 + iniziale 799051 799097 47 1 2 - -
543 2 + Terminal 799236 799266 31 3 3 - -544 3 - Terminal 802357 802514 158 3 2 - -544 2 - Interno 802607 802685 79 1 1 - -544 1 - Iniziale 802829 802843 15 3 1 - -  

Ecco alcuni risultati di SNAP ( paper, software).

  Einit 8230 8239 + 9.329 0 1 0 scaffold_12 -snap.4Exon 8848 8869 + 2.484 2 2 2 scaffold_12-snap.4Exon 10121 10208 + 15.302 1 0 2 scaffold_12-snap.4Exon 11361 11420 + 5.969 0 0 2 scaffold_12-snap.4Exon 11471 11535 + 0.921 0 2 1 scaffold_12-snap .4Eterm 12169 12187 + 18.163 1 0 1 scaffold_12-snap. 4Einit 14569 14668 + -6.918 0 1 0 scaffold_12-snap. 5Exon 15029 15203 + -1.02 3 2 2 0 scaffold_12-snap.5Exon 16171 16307 + -9.230 1 1 1 scaffold_12-snap.5Eterm 16667 16698 + 9.829 2 0 0 scaffold_12-snap.5Einit 17809 17898 - -5.390 0 0 0 scaffold_12-snap.6Exon 17299 17350 - 6.978 0 1 2 scaffold_12-snap.6Eterm 17029 17129 - -2.857 2 0 0 scaffold_12-snap.6  

Entrambi questi formati sembrano essere delimitati da tabulazioni, ma è qui che la somiglianza con GFF3 termina.

L'output di Augustus ( paper, software) sembra GTF (una variante del formato GFF) una volta perse tutte le righe che inizia con un simbolo # , ma Augustus ha anche una modalità di output GFF3.

  # Geni previsti per la sequenza numero 1 su entrambi i filamenti # gene iniziale g1scaffold_12 gene AUGUSTUS 2841 3400 1 +. g1
scaffold_12 AUGUSTUS trascrizione 2841 3400 1 +. g1.t1scaffold_12 AUGUSTUS start_codon 2841 2843. + 0 transcript_id "g1.t1"; gene_id "g1"; scaffold_12 AUGUSTUS intron 3027 3097 1 +. transcript_id "g1.t1"; gene_id "g1"; scaffold_12 AUGUSTUS CDS 2841 3026 1 + 0 transcript_id "g1.t1"; gene_id "g1"; scaffold_12 AUGUSTUS CDS 3098 3400 1 + 0 transcript_id "g1.t1"; gene_id "g1"; scaffold_12 AUGUSTUS stop_codon 3398 3400. + 0 transcript_id "g1.t1"; gene_id "G1"; sequenza # proteine ​​= [MAIKNAEHDLRVIVDAIEGLGLKVAPHKTEAMAFPASALCGRRGAAPPKIRLGGSSILVGSRSRWYISGHSENSSKSP # RTEGKETTPLQQRDPLDAPLWVSGVVAHCCGGPEGQEGCPGLAAQGSDQGVLRIRDGLLCGYDGCGDHRPRPSDSSAGGGLCRP] # fine gene g1 #### inizia gene g2scaffold_12 AUGUSTUS gene 4712 15229 0,21 +. g2scaffold_12 AUGUSTUS trascrizione 4712 15229 0,21 +. g2.t1scaffold_12 AUGUSTUS start_codon 4712 4714. + 0 transcript_id "g2.t1"; gene_id "g2"; scaffold_12 AUGUSTUS intron 4858 5591 0,74 +. transcript_id "g2.t1"; gene_id "g2"; scaffold_12 AUGUSTUS intron 5686 15028 0,23 +. transcript_id "g2.t1"; gene_id "g2"; scaffold_12 AUGUSTUS CDS 4712 4857 0,72 + 0 transcript_id "g2.t1"; gene_id "g2"; scaffold_12 AUGUSTUS CDS 5592 5685 0,42 + 1 transcript_id "g2.t1"; gene_id "g2"; scaffold_12 AUGUSTUS CDS 15029 15229 0.43 + 0 transcript_id "g2.t1"; gene_id "g2"; scaffold_12 AUGUSTUS stop_codon 15227 15229. + 0 transcript_id "g2.t1"; gene_id "g2";
# Sequenza della proteina = [MGRNSHRSCCVVNCKITSAKSDCKFYKFPTAKWKINQRKMWVAAVKRQKYIKDEISHAETQTEITEVTGATKVNYANK # KYICLLFVRTYVLRMLVDVALSNLRFSLFGIRKSLEIFGQSEKADQTRWRLPSCEMEWIESRKGKMRE] gene # fine g2 ###  

Analisi attributi

Quindi ... come si dovrebbe gestire gli attributi nel 9 ° colonna di GFF3? Dipende molto da cosa vuoi fare con i dati.

Gli attributi più importanti sono ID e Parent , che vengono utilizzati per definire le relazioni tra caratteristiche e funzionalità secondarie. (Queste relazioni definiscono implicitamente un grafo aciclico diretto delle caratteristiche, sebbene la maggior parte dei parser GFF3 non supporti direttamente l'attraversamento di questo grafico.)

Ma non solo devi gestire gli attributi predefiniti discussi nel Specifica GFF3, devi anche essere in grado di gestire un numero qualsiasi di attributi arbitrari di cui potresti non conoscere le chiavi in ​​anticipo.

Il modo più semplice per gestirlo sarebbe analizzare la colonna dell'attributo in un dizionario di chiave / coppie di valori. Una volta che è in questa forma, è banale vedere quali attributi ci sono e come accedervi.

Ad esempio, se abbiamo una funzionalità con i seguenti attributi ...

  ID = mRNA42; Parent = gene19; integrity = 0.95; foo = bar  

... lo vorremmo in un dizionario come questo.

  attributi = {'ID': 'mrna42', 'Parent': 'gene19', 'integrity': '0.95', 'foo': 'bar',}  

codice Python per analizzare che potrebbe assomigliare a questo.

  attributes = dict () for keyvaluepair in attributestring.split (';'): for key, value in keyvaluepair.split ('='): attributi [chiave] = valore  

Una cosa da considerare è che è possibile che un attributo abbia più valori (separati da virgole). Non è comunemente usato, ma è valido e dovrebbe essere gestito o almeno controllato.

Ringrazio @Daniel per la tua eccellente risposta. Il mio obiettivo finale è convertire ** qualsiasi formato gff3 in una struttura di dizionario Python **. potete aiutarmi a convertire un record genetico (un record genetico può avere mRNA, esone, CDS ecc.) in una struttura di dizionario?
@Arijit L'analisi di una singola riga in un dizionario è banale, ma la risoluzione delle relazioni padre / figlio implica riferimenti incrociati ID ed è più complicata. La maggior parte dei parser GFF3 lascia questo come esercizio al programmatore. In questo momento sto lavorando a una libreria Python chiamata tag. Sentiti libero di controllarlo e vedere se soddisfa le tue esigenze. http://tag.readthedocs.io/


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...