Küsimus:
Järeldage GFF3-failis puuduvaid UTR-funktsioone
l0110
2017-12-29 23:49:41 UTC
view on stackexchange narkive permalink

Töötan GFF-faili kallal, kus puudub teave 5'UTR ja 3'UTR. Näiteks:

  ctg123. geen 1050 9000. +. ID = gene00001; nimi = EDEN ctg123. mRNA 1050 9000. +. ID = mRNA00001; vanem = gene00001; nimi = EDEN.1 ctg123. ekson 1050 1500. +. ID = exon00002; vanem = mRNA00001 ctg123. ekson 3000 3902. +. ID = exon00003; Vanem = mRNA00001 ctg123. ekson 5000 5500. +. ID = exon00004; vanem = mRNA00001 ctg123. ekson 7000 9000. +. ID = exon00005; Vanem = mRNA00001 ctg123. CDS 1201 1500. + 0 ID = cds00001; vanem = mRNA00001; nimi = edenproteiin. 1 ctg123. CDS 3000 3902. + 0 ID = cds00001; vanem = mRNA00001; nimi = edenproteiin. 1 ctg123. CDS 5000 5300. + 0 ID = cds00001; Vanem = mRNA00001; Nimi = edenprotein.1  

Kas GFF-i saab lisada ridu vahemikega 5'UTR ja 3'UTR?

Kas me peaksime tegelema ka negatiivse haruga? Ma mõtlen, kas teil võib olla negatiivsele ahelale viitavaid gff-jooni ja kui jah, siis kas võime eeldada, et need on õiged? Kas positsioonid antakse "+" ahela suhtes ja lõppasend on "enne" algust?
jah, me peame tegelema ka negatiivse haruga. Siin on vaid lihtsustatud näide.
Seejärel [muutke] oma küsimust ja lisage ka negatiivse lõigu näide. Samuti peaksime teadma, kas igal gff-il on üks kirje või kas teil võib samas gff-is olla mitu geeni. Mida täpsemat teavet meile annate, seda tõenäolisem on, et saame teile kasuliku vastuse anda. Pidage siiski meeles, et UTR-sid saab siduda, nii et see pole hea viis vajaliku teabe saamiseks. Parem oleks see, kui hankiksite täieliku märkuse kõikjalt, kust alla laadisite.
Kolm vastused:
Daniel Standage
2019-01-09 20:36:20 UTC
view on stackexchange narkive permalink

Muuhulgas järeldab AEGeAn Toolkit programm canon-gff3 ja prindib puuduvad funktsioonid, näiteks UTR-id.

  $ canon -gff3 < geenid.gff3 >i geenid-utrs.gff3  
Devon Ryan
2017-12-30 19:10:19 UTC
view on stackexchange narkive permalink

Tüütu on, et saate sellise GFF3-faili R-i laadida (kasutades paketti GenomicFeatures) ja pääseda juurde UTR-idele, kuid neid siis ei salvestata, kui kasutate funktsiooni eksport saidilt rtracklayer (see oleks olnud kõige lihtsam lahendus).

Kuna ma ei tea mitte midagi selle kohta, et seda käepärast teha, kulutasin paar minutit ühe kirjutamiseks. Kasutamine oleks addGFF3UTRs.py input.gff output.gff . Saate muuta mitut silti nii, et need kuvatakse nii, nagu soovite. Seda pole põhjalikult testitud, kuid tundub, et see annab õige tulemuse väikeses just läbitud testis.


Kood on hostitud GitHubis ülaltoodud lingil ja lisan ka see siin:

  #! / usr / bin / env pythonimport argparsedef parseAttribuudid (kvps): d = dict () kvp-le kvps-s: k, v = kvp.split ("=") d [k] = v tagastab ddef parseGFF3 (fname, topLevel = "gene", secondLevel = "mRNA", CDS = "CDS", exon = "exon"): f = avatud (fname) geenid = dict () transkriptid = dict () g2t = dict () # Sõnastik geeni ID-dega, mis on seotud nende transkriptsiooni ID-dega reale f: if line.startswith ("#"): jätkake cols = line.strip () .split ("\ t") atribuudid = parseAttribuudid (veerud [8] .split (";")) ID = atribuudid ["ID"] kui veerud [2] == topLevel: geenid [ID] = rida g2t [ID] = [] elif-veerud [2] == teineTase: vanem = atribuudid ["Vanem"] g2t [vanem ] .append (ID) # Looge loend [rida, [eksonikirjed], [CDS-kirjed]], kui ID pole transkriptsioonides: ärakirjad [ID] = [rida, [], []] muu: ärakirjad [ID] [0] = rida muu: vanem = atribuudid ["Vanem"], kui vanemat pole transkriptsioonides: ärakirju [vanem] = [Puudub, [], []] kui veerud [2] == ekson: ärakirju [vanem] [1 ] .apend ((int (koolid [3]), int (koolid [4]), rida))
elif cols [2] == CDS: transkriptid [vanem] [2] .apend ((int (cols [3], int (cols [4]), rida)) f.close () tagastavad geenid, transkriptid, g2tdef findUTR-id (transkriptid, fivePrime = True): k, t jaoks transkriptides.items (): # Kui CDS-kirjeid pole, jätke vahele, kui len (t [2]) == 0: jätka # Hangi ahel ("." käsitletakse kui "+") haru = t [0] .split ("\ t") [6] # 3 'UTR-i jaoks vahetage lihtsalt ahel, kui mitte viisPrime: strand = "+" kui ahel == "- "else" - "exons = [(s, e) s, e, _ in t [1]] CDS = [(s, e) s, e, _ in t [2]] exons.sort () CDSs.sort () UTRs = [] kui ahel! = "-": lõplik = CDS [0] [0] s, e jaoks eksonites: kui e < lõplik: UTRs.append ((s, e)) elif s < lõplik: UTRs.append ((s, final - 1)) else: break else: final = CDS-id [-1] [- 1] eksonites s, e: kui e < lõplik: jätkake elif s > final: UTRs.append ((s, e)) else: UTRs.append ((final + 1, e) ) t.append (UTRs) def saveGFF (oname, geenid, transkriptid, g2t, fivePrime, threePrime): o = open (oname, "w") o.write ("## gff-version 3 \ n") geenID jaoks , geneLine geenides. elemendid (): o.write (geneLine) # Käige läbi iga transkript transID jaoks g2t-s [geenID]: t = transkriptid [transID] kui t [0] pole: jätkake o.write (t [0 ]) cols = t [0] .strip (). split ("\ t") # Kirjutage eksonite eksonid t [1], seejärel CDS, seejärel 5'UTR, seejärel 3'UTR: o.write (exon [2]) CDS-i korral t [2]: o.write (CDS [2]) idx-le, UTR loendis (t [3]):
o.write ("{} \ t {} \ t {} \ t {} \ t {} \ t. \ t {} \ t. \ t" .formaat (veerud [0], veerud [1], fivePrime) , UTR [0], UTR [1], veerud [6])) o.write ("ID = {}. FivePrimeUTR {}; Parent = {} \ n" .formaat (transID, idx, transID)) IDX-le , UTR loendis (t [4]): o.write ("{} \ t {} \ t {} \ t {} \ t {} \ t. \ T {} \ t. \ T" .formaat ( cols [0], cols [1], threePrime, UTR [0], UTR [1], cols [6])) o.write ("ID = {}. threePrimeUTR {}; Vanem = {} \ n". formaat (transID, idx, transID)) o.close () parser = argparse.ArgumentParser (description = "Parsige GFF3-fail, millel puuduvad UTR-kirjed, ja lisage need. Pange tähele, et see programm eeldab mõistlikult vormindatud GFF3-faili") parser.add_argument ("--fiveUTRname", default = "five_prime_UTR", help = "5 'UTR-i kirje silt (vaikimisi:% (vaikimisi) s)") parser.add_argument ("- threeUTRname", default = "three_prime_UTR", help = "3 'UTR-i kirje silt (vaikimisi:% (vaikimisi) s)") parser.add_argument ("- topLevelID", default = "gene", help = "Tipptaseme kirjet tähistav tüüp" (vaikimisi:% (vaikimisi) s) ") parser .add_argument ("- secondLevelID", default = "mRNA", help = "Teise taseme kirjet tähistav" tüüp ", tavaliselt midagi sellist nagu" mRNA "või" ärakiri "(vaikimisi:% (vaikimisi) s)") parser.add_argument ("- exonID", default = "exon", help = "Eksoneid tähistav" tüüp "(vaikimisi:% (vaikimisi) s)") parser.add_argument ("- CDSID", default = "CDS ", help =" CDS-i tähistav "tüüp" (vaikimisi:% (vaikimisi) s) ") parser.add_argument (" sisend ", metavar =" input.gff3 ", help =" Sisendfaili nimi ") parser.add_argument ( "output", metavar = "output.gff3", help = "Väljundfaili nimi" args = parser.parse_args () geenid, ärakirjad, g2t = parseGFF3 (args.input, topLevel = args.topLevelID, secondLevel = args.secondLevelID , exon = args.exonID, CDS = args.CDSID) # Lisage UTRsfindUTR-id (transkriptid) findUTR-id (transkriptid, fivePrime = False) # Kirjutage väljundidaveGFF (args.output, geenid, transkriptid, g2t, args.fiveUTRname, args.three )  
vkkodali
2019-03-28 20:56:39 UTC
view on stackexchange narkive permalink

Selleks saate kasutada NCBI RefSeqi pakutavat skripti add_utrs_to_gff.py . Näites skripti käivitamine annab järgmise tulemuse:

  ./add_utrs_to_gff.py example.gff3ctg123. geen 1050 9000. +. ID = gene00001; nimi = EDENctg123. mRNA 1050 9000. +. ID = mRNA00001; vanem = gene00001; nimi = EDEN.1ctg123. ekson 1050 1500. +. ID = exon00002; vanem = mRNA00001ctg123. ekson 3000 3902. +. ID = exon00003; Vanem = mRNA00001ctg123. ekson 5000 5500. +. ID = exon00004; vanem = mRNA00001ctg123. ekson 7000 9000. +. ID = exon00005; Vanem = mRNA00001ctg123. CDS 1201 1500. + 0 ID = cds00001; vanem = mRNA00001; nimi = edenproteiin. 1 ktg123. CDS 3000 3902. + 0 ID = cds00001; vanem = mRNA00001; nimi = edenproteiin.1ctg123. CDS 5000 5300. + 0 ID = cds00001; vanem = mRNA00001; nimi = edenproteiin.1ctg123. five_prime_UTR 1050 1200. +. ID = utr00002; vanem = mRNA00001ctg123. three_prime_UTR 5301 5500. +. ID = utr00004; vanem = mRNA00001ctg123. three_prime_UTR 7000 9000. +. ID = utr00005; Vanem = mRNA00001  


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...