Pitanje:
Bash skriptiranje FastQC za više datoteka fastq u više direktorija
Ryan Carter
2018-10-26 14:55:25 UTC
view on stackexchange narkive permalink

Potpuno sam nov u bioinformatici pa želim naučiti kako to učiniti.

Imam više direktorija s datotekama fastq: Npr .; 10 direktorija sa svakom vremenskom serijom, svaki s tretmanima i kontrolnim direktorijima, svaki s rep1 rep2 rep3.

Na primjer: T9 / Infected / Rep1 / *. Fastq.gz.

I Želim stvoriti petlju za pokretanje fastQC-a na svakoj datoteci fastq, umjesto da moram predati zaseban posao za svaki direktorij.

Zatim ili iznijeti podatke fastQC-a u jedan direktorij ili, ako je moguće, direktorij koji odgovara svakom predstavniku - npr rezultati rep1 idu u mapu koja se zove rep1 i tako dalje.

Tri odgovori:
conchoecia
2018-10-26 22:02:17 UTC
view on stackexchange narkive permalink

multiqc vrsta zastakljuje neke važne informacije, poput točnih adaptera i dupliciranih sekvenci u knjižnici. Ako planirate potrošiti velike $$ za sekvenciranje biblioteke, bolje je pogledati i izvješće multiqc i stvarno izvješće fastqc html kako biste dobili bolju ideju o bilo kojoj pogrešci modusi.

Izlazeći iz odgovora @ Kubatora, primijetio sam da ne postoji naredba za pokretanje fastqc-a.

Evo jednostavne obloge za paralelno pokretanje fastqc-a na svim vašim datotekama fastq. -j 25 koristi 25 niti. Promijenite 25 u onoliko nit koliko želite / imate za maksimalnu brzinu.

  # Pokreni fastqc na svemu paralelno.> find ../reads/ -name '* .fastq.gz '| awk '{printf ("fastqc \"% s \ "\ n", $ 0)}' | paralelno -j 25 --verbose # kopira sve datoteke fastqc u direktorij ./ > find ../reads/ -name '* fastqc. *' | xargs -I '{}' mv '{}' ./

Ove datoteke ionako mogu izvesti multiqc !

uredi - sada je naredba sigurna za razmak u imenima datoteka. Molimo vas da u imenima datoteka nema novih redaka!

+1, ali imajte na umu da će se to prekinuti u malo vjerojatnom slučaju kada bilo koje od imena datoteka fastq sadrži razmak. Sigurnija verzija je `pronađi. -ime '* .fastq.gz' | awk '{printf ("fastqc \"% s \ "\ n", $ 0)}' `, ali to i dalje ne uspije u (još nevjerojatnije) slučaju kada naziv datoteke sadrži novi redak. Ovo bi trebalo raditi za bilo što (ali zahtijeva verziju `pronalaska` s` -printf`, poput GNU `pronalaska`):` pronađi. -ime '* .fastq.gz' -printf '"% p" \ n' | paralelno -j 25 --verbose`.
razmaci u imenima datoteka. Oh, užas! Hvala na komentarima!
heh, znam. Svatko tko ima razmake u imenima datoteka u fastqu zaslužuje ono što dobiva :) izvinite, baš sam navikao objavljivati ​​na [Unix.se] gdje su ovakve pojedinosti relevantnije.
Kubator
2018-10-26 15:56:20 UTC
view on stackexchange narkive permalink

Primjer strukture direktorija:

  $ find FastQC / FastQC / FastQC / T9FastQC / T9 / InfectedFastQC / T9 / Infected / Rep1FastQC / T9 / Infected / Rep1 / test11.fastq.gzFastQC / T9 /Infected/Rep1/test1.fastq.gzFastQC/T9/Infected/Rep2FastQC/T9/Infected/Rep2/test2.fastq.gzFastQC/T9/Infected/Rep3FastQC/T9/Infected/Rep3/test3.fastq.gz  

Ako se dobro razumije, morate pokrenuti neki posao na svakoj datoteci * .fastq.gz. Tada možete učiniti nešto poput ovog (moj primjer posla je gzip test , zamijenite svojim poslom):

Rookie:

  $ find FastQC / -tip f -ime "* .fastq.gz" | xargs gzip -tvFastQC / T9 / Infected / Rep1 / test11.fastq.gz: OKFastQC / T9 / Infected / Rep1 / test1.fastq.gz: OKFastQC / T9 / Infected / Rep2 / test2.fastq.gz: OKFastQC / T9 / Infected /Rep3/test3.fastq.gz: U redu  

Solidno:

  $ find FastQC / -type f -name "* .fastq.gz" - ispis0 | xargs -0 -I {} gzip -tv {} FastQC / T9 / Infected / Rep1 / test11.fastq.gz: OKFastQC / T9 / Infected / Rep1 / test1.fastq.gz: OKFastQC / T9 / Infected / Rep2 / test2. fastq.gz: OKFastQC / T9 / Infected / Rep3 / test3.fastq.gz: OK  
  1. find pronalazi datoteke s imenom * .fastq.gz i izbacuje ih s nula razdvojenih bajtova (za podršku čudnim znakovima poput razmaka i sl. u nazivima datoteka)
  2. xargs predstavlja izlaz kao {} i prosljeđuje ga gzip -tv

Ako želite kopirajte datoteke unutar jedne mape hrpe:

  $ find FastQC / -type f -name "* .fastq.gz" -print0 | xargs -0 -I {} cp -pv {} FastQC_heap / `FastQC / T9 / Infected / Rep1 / test11.fastq.gz '->` FastQC_heap / test11.fastq.gz'`FastQC / T9 / Infected / Rep1 / test1 .fastq.gz '-> `FastQC_heap / test1.fastq.gz'`FastQC / T9 / Infected / Rep2 / test2.fastq.gz' ->` FastQC_heap / test2.fastq.gz'`FastQC / T9 / Infected / Rep3 /test3.fastq.gz '-> `FastQC_heap / test3.fastq.gz'  
bli
2018-10-31 18:33:37 UTC
view on stackexchange narkive permalink

Ovo je tipična vrsta posla za snakemake.

Pod pretpostavkom da imate jednu datoteku po replici koja se naziva na primjer T9 / Infected / Rep1 / Rep1.fastq. gz , možete pripremiti datoteku koju zovete Snakefile sa sljedećim sadržajem:

  timepoints = list (raspon (10)) uvjeti = ["control", "zaraženi"] replicira = [1, 2, 3] pravilo sve: input: expand ("T {time} / {cond} / Rep {rep} / Rep { rep} _fastqc.html ", vrijeme = vremenske točke, cond = uvjeti, rep = replicira) pravilo do_fastqc: input: fastq =" T {vrijeme} / {cond} / Rep {rep} / Rep {rep} .fastq.gz " izlaz: html = "T {time} / {cond} / Rep {rep} / Rep {rep} _fastqc.html" shell: "" "fastqc {input.fastq}" ""  

Stavite ovu datoteku u direktorij koji sadrži direktorije T * i odatle pokrenite snakemake .

Gornji svi pravilo objašnjava koje datoteke želite. Pravilo do_fastqc objašnjava kako napraviti jedno izvješće fastqc iz jedne datoteke fastq.gz.

Uz malo više posla, ovo se može koristiti za slanje poslova u računalni klaster. Snakemake ima neke alate za to.

Ako ne znate točna imena datoteka fastq, ali sve slijede isti obrazac, morat ćete upotrijebiti glob python modul i napravite malo programiranja kako biste utvrdili moguće vrijednosti za rep , cond i time . "Snakefile" može sadržavati bilo koji python kod koji želite.

Ako u nazivima datoteka nema uobičajenog uzorka, prvo riješite ovaj problem;)



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...