Sisyphus Àr en samling skript och moduler i huvudsak skrivna i Perl för att automatisera och pÄ andra sÀtt underlÀtta kopiering, bearbetning och analys av data frÄn Illuminas HiSeq2500, HiSeqX och MiSeq. Sisyphus kan grovt delas in i fyra delar:
- Postprocessning av data frÄn bcl till (demultiplexade) FASTQ-filer
- Kopiering av data frÄn lokal server till plattformens projekt pÄ UPPMAX
- Packning och filtrering av runfolder för arkivering och leverans
- Verktyg för sammanstÀllning av statistik, filtrering av sekvens etc
AnvĂ€ndardokumentation för perlskript och perlmoduler Ă€r tillgĂ€nglig med kommandot perldoc för respektive fil. Program/skript skrivna i andra sprĂ„k Ă€r dokumenterade antingen i form av en lĂ€ngre kommentar i början av filen eller i underkatalogen âdocâ.
- gnuplot
- gzip
- binary
- ImageMagick
- md5sum
- OpenSSH
- Perl
- rsync
- tar
- Perlmoduler:
- Digest::MD5
- PerlIO::gzip
- XML::Simple
- Archive::Zip
- PDL
- File::NFSLock
- gzip
- Bcl2fastq-v2.19
- md5sum
- OpenSSH
- Perl
- Rsync
- dos2unix
- Perlmoduler:
- Digest::MD5
- PerlIO::gzip
- XML::Simple
- Archive::Zip
- File::NFSLock
Microsoft File Checksum Integrity Verifier V2.05 (fciv)
Ladda ner Sisyphus till din lokala server:
git clone https://github.com/Molmed/sisyphus
I denna guide kommer det antas att sisyphus klonats till /srv/sisyphus
För att fungera pĂ„ Uppmax mĂ„ste de program och moduler som listats ovan (âFörhandskravâ) vara tillgĂ€ngliga i anvĂ€ndarens sökvĂ€gar för program (PATH) och perlbibliotek (PERL5LIB). De skript som behöver det försöker ladda de relevanta modulerna (uppmax, gnuplot och irods/swestore) via Uppmax modulsystem. Dock finns inte Perl PDL installerat pĂ„ Uppmax och dĂ€rför har Sisyphus en funktion för att konfigurera extra sökvĂ€gar till bibliotek sĂ„ att PDL och eventuella andra moduler kan installeras till en valfri mapp. PDL och alla dess beroenden (primĂ€rt beroenden för sjĂ€lva installationsprocessen), installeras med de kommandon som finns listade i filen INSTALL_PDL_milou.txt i sisyphus-mappen. Det gĂ„r ocksĂ„ att installera PDL via CPAN, men installationen hamnar dĂ„ i anvĂ€ndarens hemkatalog om det inte installeras av root, vilket inte Ă€r önskvĂ€rt om flera anvĂ€ndare ska köra sisyphus. Var modulerna installerats anges under PERL5LIB i sisyphus.yml.
För att kunna köra skriptet som kopierar en analysmapp frĂ„n MiSeq-instrumentet till avsedd plats pĂ„ biotanken sĂ„ behöver, förutom sjĂ€lva skriptet, de program listade ovan (âFörhandskravâ) finnas tillgĂ€ngliga i anvĂ€ndarens PATH. Följ följande steg för att installera skriptet:
- HÀmta MiSeqAnalysisTransfer.bat frÄn den aktuella sisyphuskoden och placera den i mappen
C:\Users\sbsuser\Documents\Sisyphus\
. - LĂ€gg till skriptet i âSendToâ-menyn:
- Ăppna ett utforskarfönster och navigera till ovanstĂ„ende mapp
- Högerklicka pĂ„ MiSeqAnalysisTransfer.bat och vĂ€lj âCreate shortcutâ.
- Högerklicka pĂ„ den nyskapade genvĂ€gen (MiSeqAnalysisTransfer.bat - shortcut) och vĂ€lj âRenameâ. Döp genvĂ€gen till namnet pĂ„ den lokala servern, till exempel "biotank".
- Högerklicka sedan pĂ„ den och vĂ€lj âCutâ. GĂ„ till adressfĂ€ltet i utforskarfönstret och gĂ„ till
%APPDATA%\Microsoft\Windows\SendTo
. Högerklicka i fönstret och vĂ€lj âPasteâ.
En kopia av diverse statistik (bland annat mappen InterOp) frÄn runfoldern kopieras till den sökvÀg som angetts under SUMMARY_HOST + SUMMARY_PATH i sisyphus.yml. Till denna mapp ska Àven mappen Summary som skapats i runfoldern pÄ UPPMAX kopieras. Detta kan göras genom ett cron-jobb pÄ SUMMARY_HOST som regelbundet kör skriptet sisyphus/getSummary.pl
för alla runfolders som kopierats till SUMMARY_HOST.
cd <runfolder>
cp /srv/sisyphus/sisyphus.yml .
cp /srv/sisyphus/sisyphus_qc.xml .
/srv/sisyphus/sisyphus.pl -runfolder $PWD
Flagga | Beskrivning |
---|---|
-runfolder | SökvÀg till den runfolder som ska processas |
-noexec | Generera sisyphus.sh skriptet och exekvera det inte |
-nowait | VĂ€nta inte 30 min med att starta |
-force | Processa runfolder Àven om data saknas |
-miseq | Anger att âMiSeq Reporterâ mapp ska laddas upp |
-ignoreQCResult | Processning körs utan att avbryta nÀr QC-resultatet inte uppfylls |
-noUppmaxProcessing | Ingen data kommer laddas upp till Uppmax och inga jobb kommer startas pÄ Uppmax |
-noSeqStatSync | Ingen sekvenseringsstatistik kommer laddas upp till SUMMARY_HOST |
-debug | sisyphus skriver ut extra information i terminalen |
Detta Àr den normala anvÀndningen dÀr alla steg i processningen av en runfolder görs automatiskt med skriptet sisyphus.pl
enligt konfigurationsfilen sisyphus.yml som placerats i runfoldern. Sisyphus.pl
skapar ett bash-skript i runfoldern som dÀrefter startas automatiskt. Om man behöver göra nÄgra förÀndringar i bash-skriptet, t.ex. om antalet cykler som anvÀnds för demultiplexning behöver justeras, innan det körs startar man sisyphus.pl
med flaggan --noexec
.
Innan kopieringen till Uppmax startas kommer Sisyphus att automatiskt kontrollera resultaten som hittas i den korta sammanfattningen (quickReport) som genereras. Om allt stÀmmer med angivna QC-kriterier (sisyphus_qc.xml) kommer data att laddas upp pÄ Uppmax och rapporten skickas till maillistan som Àr angiven i sisyphus.yml.
I konfigurationsfilen sisyphus.yml anges sökvÀg till bcl2fastq, serveradress, kataloger och projektallokering för UPPMAX, samt en mejladress för att notifiera ansvariga för processning.
Sisyphus kan verifiera att en runfolder Àr arkiverad pÄ tvÄ olika sÀtt (se "Delprocesser/moduler" nedan). Genom att Àndra USE_SSVERIFY: 1
till USE_SSVERIFY: 0
kommer sisyphus egen arkiveringsverifiering anvÀndas istÀllet för ssverify som Àr en verifieringsmetod skriven av Uppmax.
Indexcheck (se "Delprocesser/moduler") kan utföras innan demultiplexning genom att Àndra PRE_DEMULTIPLEX_INDEX_CHECK: 0
till PRE_DEMULTIPLEX_INDEX_CHECK: 1
.
För MiSeq-körningar Ă€r det i vissa fall önskvĂ€rt att Ă€ven leverera en komplett runfolder som kan öppnas och analyseras i Illuminas mjukvara âMiSeq Reporterâ. Om detta ska ske sĂ„ ska MiSeq-operatören efter avslutad sekvensering har kopierat analyskatalogen för körningen frĂ„n instrumentet till den lokala servern. För att inkludera analyskatalogen vid processning med sisyphus, startar man med flaggan -miseq. Konfigurationsfilen ska Ă€ven innehĂ„lla sökvĂ€gen till katalogen som innehĂ„ller körningens analyskatalog, relativt körkatalogen. Analyskatalogen kommer dĂ„ packas ihop till ett komprimerat tar-arkiv och lĂ€ggas i den ordinarie runfoldern innan denna laddas upp till Uppmax. Observera att analyskatalogen kommer att tas bort frĂ„n den lokala servern efter att den packats ihop och arkivet verifierats.
Processningen pÄ Uppmax kommer automatisk startas efter att data har laddats upp, men kan manuellt startas pÄ Uppmax med följande kommandon.
ssh <uppmax host>
cd <runfolder>
./Sisyphus/aeacus-stats.pl ârunfolder $PWD
./Sisyphus/aeacus-reports.pl ârunfolder $PWD
Slutfasen av processningen skapar rapporter, projektmappar och arkivkopior
Sisyphus innehÄller ett stort antal kontrollsteg och om nÄgon del i processningen skulle misslyckas sÄ avbryts allt och felet mÄste ÄtgÀrdas innan sisyphus startas om. Om delar av processningen Àr klar kan man starta om frÄn det steg som misslyckades, t.ex. genom att kommentera ut redan avklarade steg i sisyphus.sh. Skripten som startas pÄ Uppmax körs som batch-skript i mappen <runfolder>/slurmscripts
och loggarna skapas i <runfolder>/slurmscripts/logs/
.
Skulle nÄgot fel upptÀckas kan processningen göras om frÄn början genom följande steg:
- De jobb som redan startats pÄ Uppmax (fastqStats) avbryts
- Runfoldern pĂ„ Uppmax döps om med â.oldâ i slutet av namnet
- I runfoldern pÄ den lokala servern tas följande filer/mappar bort
- Sisyphus/
- MD5/
- rsync*.log
- sisyphus.sh
- excludedTiles.yml
- /data/scratch/
- setupBclToFastq.err
- Unaligned
- Excluded (om den har skapats)
- quickReport.txt
- Starta sedan om processningen enligt ovan (se "AnvÀndning")
Om nÄgon del i rapportskapandet behöver köras om raderar man följande filer/kataloger i runfoldern pÄ Uppmax.
- Summary
- Statistics
- MD5/sisyphus.md5
I sista steget tas md5summor för filerna bort eftersom man annars riskerar att fĂ„ problem vid leverans och arkivering. Kör sedan om de uppmax stegen enligt ovan âProcessning pĂ„ uppmaxâ.
För att arkiveringen ska fungera krÀvs att inga filer modifierats, dvs md5summorna i MD5/checksums.md5 och MD5/sisyphus.md5 mÄste stÀmma. Om nÄgon fil Àndrats mÄste dÀrför den gamla md5summan tas bort innan arkiveringen startas/startas om.
Om verifieringen av swestorekopian av nÄgon anledning misslyckas och behöver göras om sÄ kan man starta om batch-scriptet under <ARCHIVE_PATH>/ArchiveScripts/
.
I Sisyphus ingÄr ett antal skript som dels anvÀnds av huvudskriptet sisyphus.pl, men som Àven kan köras separat vid behov. En sammanfattning av de olika skripten följer nedan. För full dokumentation hÀnvisas till dokumentationen för respektive skript i sisyphus-mappen.
- md5sum.pl â LĂ€ser en lista med filnamn frĂ„n rsync och berĂ€knar MD5-kontrollsummor för dessa filer.
- qcValidateRun.pl â JĂ€mföra QC-parametrar för körningen med definierade krav, och om QC-kriterier inte uppfylls eller inte kan hittas kommer ett mail skickas med information varför körningen inte godkĂ€nts.
- quickReport.pl â Skapar en kort rapport med de viktigaste QC-parametrarna och mejlar denna till den adress som angivits i konfigurationsfilen.
- aeacus-stats.pl â Startar
fastqStats.pl
pĂ„ klustret med en process per lane. - fastqStat.pl â SammanstĂ€ller statistik för varje fastq-fil. Resultatet sparas i form av en zip-fil i mappen Statistics. Dessa filer anvĂ€nds sedan vid skapandet av rapporter.
- aeacus-reports.pl â Startar
extractProject.pl
,generateReport.pl
ocharchive.pl
pÄ klustret med en process per projekt samt beroenden sÄ attarchive.pl
endast körs omgenerateReport.pl
kört klart utan fel vilket i sin tur endast körs om alla projekt processats utan fel. - extractProject.pl â Skapar en projektspecifik rapport för de lanes och prover som tillhör ett specifikt projekt. Mappen skapas i runfoldern under Projects och innehĂ„ller hĂ„rdlĂ€nkade fastq-filer (dvs ingen ny kopia görs utan bara nytt namn pĂ„ samma fil), rapport och kontrollsummor för alla filer som ska levereras.
- generateReport.pl â Skapar en global rapport för hela runfoldern i mappen Summary.
- archive.pl â Skapar en kopia av runfoldern för arkivering pĂ„ det stĂ€lle som anvisats i konfigurationsfilen. Alla filer som inte redan Ă€r i ett komprimerat format (png,gz,bz2,jpg) samt nĂ„gra fĂ„ undantagna filer, t.ex. report.html, komprimeras med gzip innan de arkiveras. Om arkivkopian ligger pĂ„ samma diskvolym som runfoldern sĂ„ görs hĂ„rda lĂ€nkar till fastq-filerna för att inte duplicera data. Fastq-filerna arkiveras i första hand frĂ„n projektmapparna och endast om de inte Ă€r med i en projektmapp arkiveras de frĂ„n mappen âUnalignedâ. Alla filer utom de som ligger under Projects samt fastq-filerna kopieras in i en för runfoldern gemensam tar-fil. För respektive projekt skapas separata tar-filer och fastq-filerna inkluderas som de Ă€r utan tar i en kopia av runfolderns mappstruktur. Nya filer med kontrollsummor för alla i arkivet ingĂ„ende filer, bĂ„de tar-filer, originalfiler och komprimerade filer, skapas ocksĂ„ sĂ„ att arkivets och eventuellt senare Ă„terlĂ€sta filers integrigtet kan kontrolleras. NĂ€r arkivet Ă€r skapat kontrolleras det genom att alla filer i originalmappen identifieras och verifieras mot arkivet.
- archive2swestore.pl â Kopierar arkivmappen till lagring pĂ„ SweStore för lĂ„ngtidsarkivering. Startar verifiering efter 4 dagar. Om ssverify-verifiering angivits i konfigurationsfilen kommer ssverify.sh anropas, vilket jĂ€mför adler32 kontrollsummor mellan alla filer i arkivmappen och motsvarande mapp pĂ„ SweStore. Om detta alternativ inte har valts kommer istĂ€llet sisyphus egen verifieringsprocedur anvĂ€ndas. Denna procedur laddar ner alla filer frĂ„n SweStore och kontrollerar att de sparade md5-kontrollsummorna stĂ€mmer. Filer som eventuellt inte kan verifieras laddas upp igen.
- gzipFolder.pl â Tar en katalog och en fil med md5-summor för katalogens innehĂ„ll som argument och genererar ett komprimerat tar-arkiv av katalogen (tar.gz). InnehĂ„llet i det komprimerade arkivet verifieras mot md5-summorna i den tillhandahĂ„llna filen och om allt stĂ€mmer sĂ„ raderas ursprungskatalogen.
- MiSeqAnalysisTransfer.bat â Windows batchskript som kopierar en mapp till en inkodad sökvĂ€g. AnvĂ€nds pĂ„ MiSeq-instrument för att kopiera en analysmapp till den avsedda platsen pĂ„ biotanken. Skriptet kan köras frĂ„n kommandotolken men kan Ă€ven startas genom att dra-och-slĂ€ppa en mapp pĂ„ ikonen för skriptet.
- getSummary.pl â Kopierar summary-mappen för en runfolder frĂ„n Uppmax. Hostname och sökvĂ€g hĂ€mtas ur runfolderns sisyphus.yml. Om ingen Summary-mapp finns 7 dagar efter att runfoldern skapats pĂ„ servern dĂ€r skriptet körs (SUMMARY_HOST) skapas filen noSummary i den lokala mappen och inga fler försök att ladda ner summaryn görs. Ta bort noSummary för att försöka igen. Om ProjMan (extern mjukvara) finns installerat pĂ„ samma stĂ€lle som sisyphus kommer anrop göras för att lĂ€sa in report.xml till en databas.
- checkIndices.pl â I ett standardflöde anropas skriptet efter demultiplexning för att undersöka om det Ă€r nĂ„got som sticker ut bland âUndetermined indicesâ, i.e. index som inte har kunnat kopplas till ett prov. Om ett specifikt index förekommer oftare Ă€n 1% av alla reads i en lane, anses det sticka ut. Skriptet tittar dĂ„ nĂ€rmare pĂ„ sĂ„dana index och försöker urskönja orsaken till att de ej har kunnat kopplas till nĂ„got prov. Verkar orsaken vara lĂ€sningsfel av sekvenseringsmaskinen anses det vara OK. I andra fall termineras processen och eventuellt funnen orsak skrivs ut (e.g. reverskomplement av index har angivits i SampleSheet). Bioinformatiker fĂ„r dĂ„ Ă„tgĂ€rda felet och köra om. Om orsaken inte kan identifieras fĂ„r bioinformatiker utreda det ytterligare. Det Ă€r Ă€ven möjligt att konfiguera Sisyphus att utföra indexchecken innan demultiplexning. I detta fall demultiplexas endast en delmĂ€ngd av all data och indexchecken görs pĂ„ denna delmĂ€ngd. Ser allt bra ut utförs sedan demultiplexning pĂ„ all data.