Pitanje:
Prijepis koordinata kreće se u genomske koordinate
Nathan S. Watson-Haigh
2018-10-05 09:23:03 UTC
view on stackexchange narkive permalink

Imam 2 GFF3 datoteke:

  1. Značajke koje koriste ID-je prijepisa kao orijentire. tj. "CDS" vrste značajki koje koriste koordinate iz prostora prijepisa.
  2. Značajke koje koriste ID-je kromosoma kao orijentire. tj. "exon" tipovi značajki pomoću koordinata iz prostora kromosoma.

Želio bih transformirati koordinate obilježja u datoteci 1 u koordinatni prostor datoteke 2. tj. koordinate temeljene na transkriptu u genodomske koodinate.

Evo primjera za datoteku1:

  cat transcript_orfs.gff3 ## gff-version 3 ## slijed-regija Tx.1 1 4000Tx. 1 gen ORF_finder 1 4000. +. ID = 1Tx.1 ORF_finder mRNA 1 4000. +. ID = 2; Roditelj = 1Tx.1 ORF_finder exon 1501 2500. + 0 ID = 3; Nadređeni = 2Tx.1 ORF_finder CDS 1501 2500. + 0 ID = 4; Nadređeni = 2gt skica -addintrons transcript_orfs.png transcript_orfs.gff3  

coordinates in transcript space

Evo primjera za datoteku1:

  mačka genome.gff3 ## gff-verzija 3 ## slijed-regija chr3A_part1 1 454103970chr3A_part1 genome_assembly gen 1001 6000. +. ID = Txchr3A_part1 genom_sklop mRNA 1001 6000. +. ID = Tx.1; Nadređeni = Txchr3A_part1 genom_sklop montaže exon 1001 3000. +. ID = Tx.1.exon1; Roditelj = Tx.1chr3A_part1 genom_sklop pet_prime_UTR 1001 2000. +. ID = Tx.1.utr5; Nadređeni = Tx.1chr3A_part1 genom_sklop CDS 2001 3000. + 0 ID = Tx.1.cds1; Nadređeni = Tx.1chr3A_part1 genome_assembly exon 4001 6000. +. ID = Tx.1.exon2; Nadređeni = Tx.1chr3A_part1 genom_sklop CDS 4001 5000. + 2 ID = Tx.1.cds2; Roditelj = Tx.1chr3A_part1 genom_sklop tri_prime_UTR 5001 6000. +. ID = Tx.1.utr3; Nadređeni = Tx.1gt skica -addintrons genome.png genome.gff3  

coordinates in genomic space

Želim pretvoriti koordinate značajki iz datoteke1 u genomske koordinate kromosoma. Očekujem da ću dobiti nešto poput sljedećeg rezultata:

  cat output.gff3
## gff-inačica 3 ## slijed-regija chr3A_part1 1 454103970chr3A_part1 ORF_finder gen 1001 6000. +. ID = 1chr3A_part1 ORF_finder mRNA 1001 6000. +. ID = 2; Roditelj = 1chr3A_part1 ORF_finder exon 2501 3000. + 0 ID = 3.1; Nadređeni = 2chr3A_part1 ORF_finder CDS 2501 3000. + 0 ID = 4.1; Nadređeni = 2chr3A_part1 ORF_finder exon 4001 4500. + 0 ID = 3,2; Roditelj = 2chr3A_part1 ORF_finder CDS 4001 4500. + 1 ID = 4.2; Nadređeni = 2gt skica -addintrons output.png output.gff3  

transformed coordinates

Preispitao sam koristeći mapFromTranscripts () iz biblioteke GenomicRanges Bioconductora, ali malo sam napredovao pokušavajući dešifrirati priručnik.

Dva odgovori:
Daniel Standage
2018-12-13 21:11:31 UTC
view on stackexchange narkive permalink

Ovaj zadatak ima isti "okus" kao i mnogi koje sam prije radio, ali svaki je slučaj toliko suptilno različit da je nemoguće napisati generalizirani alat koji će ispravno raditi u svim okolnostima.

R nije moja kormilarnica, ali uspio sam nešto brzo spojiti sa standardnim Pythonom. Ovo bi vam trebalo dovesti barem 95% puta do mjesta na koje idete. :) .add_argument ('txspace', type = FileType ('r')) cli.add_argument ('chrspace', type = FileType ('r')) args = cli.parse_args () exons = defaultdict (list) for line in args .txspace: ako je line.startswith ('#') ili line.strip () == '': continue values ​​= line.split ('\ t') featuretype = values ​​[2] ako vrsta značajke nije u ('CDS', 'exon'): nastavi txid = vrijednosti [0] exons [txid] .append (vrijednosti) za liniju u args.chrspace: values ​​= line.split ('\ t') ako je len (vrijednosti)! = 9: print ( redak, kraj = '') nastavi obilježje = vrijednosti [2] ako svojstvo nije u ('gen', 'mRNA'): nastavi ispis (redak, kraj = '') ako je svojstvo == 'mRNA': txid = traži ( 'ID = ([^; \ n] +)', vrijednosti [8]). Grupa (1) start = int (vrijednosti [3]) txexons = exons [txid] za exon u txexons: exon [0] = vrijednosti [0] exon [3] = str (int (exon [3]) + start) exon [4] = str (int (exon [4]) + start) exon [8] = sub (r'Parent = [^; \ n] + ',' Parent = '+ txid, exon [8]) print (' \ t'.join (exon), end = '')

Ian Sudbery
2018-12-14 17:04:29 UTC
view on stackexchange narkive permalink

Povezana suština sadrži klasu koju sam napisao zbog toga na GTF datotekama:

https://gist.github.com/IanSudery/d8349c22823a475ceb489c3e8aeb448e

Koristi klasu GTF iz cgata, koju možete pronaći ovdje: https://github.com/cgat-developers/cgat-apps

Koristili biste je za učinite ovaj zadatak ovako:

  iz cgat import gtffrom cgat import iotoolsimport TranscriptCoordsInterconvertertrans_coord_file = gtf.iterator (iotools.open_file (args [1]) transcripts = dict () za transkript u gtf.transcript_iterator (trans_coords_file): transcript_id = transcript [0] .transcript_id transcripts [transcript_id] = transcripttrans_coord_file.close () genome_coord_file = gtf.iterator (iotools.open_file (args transcript [2])) za args [2]) gtf.transcript_iterator (genome_coord_file): transcript_id = transcript [0] .transcript_id contig = transcript [0] .contig strand = transcript [0] .strand ako transcript_id nije u transkriptima: nastavi c onverter = TranscriptCoordsInterconverter (transkript) za ekson u transkriptima [transcript_id]: genome_intervals = converter.transcript_interval2genome_intervals ((exon.start, exon.end)) za interval u genomskim intervalima: new_entry = GTF.Entry (). fromGTF (exon) newGTF (exon). = contig new_entry.strand = strand new_entry.start = interval [0] new_entry.end = interval [1] print (str (new_entry) + "\ n")  


Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 4.0 licenci pod kojom se distribuira.
Loading...