A paraméter miatt az alignment elveszett,
Az alignment miatt az ismétlés elveszett,
Az ismétlés miatt a kísérlet elveszett,
A kísérlet miatt a cikk elveszett,
A cikk miatt a kutatócsoport elveszett,
Máskor gondosan válaszd meg a paramétered!
Szerencsére a való életben nem ilyen sarkallatos a helyzet, de a paraméter választás sok mindent meghatároz. Ez különösen igaz azokra a paraméterekre, amelyeket a felhasználó be sem állíthat. Például olyan népszerű programokban, mint a MACS2.
A történet egy Chip-seq kísérlettel kezdődött. Mivel a Sangerben a rák genomikai csoportok nem sűrűn szekvenálnak chip-seq-et, a teljes pipeline-tt mellőznöm kellett, amit nem is bántam. Az illesztést minden mintára BWA-mem-el végeztem, ezért elég váratlanul ért, mikor az alignmenten futtatott MACS2 egyetlen egy fájlnál azt jelezte, hogy a BAM fájl érvénytelen.
Azért tudnak furcsa dolgok történni az LFS-ben (ez a közös tárterület, amit minden node elér), főleg ha több szál akarja írni ugyan azt a fájlt, vagy a fejlesztők épp frissítettek a kliensen, amiben maradt egy túlcsordulás hiba vagy időtúllépés keletkezett. Ugyancsak meglepő dolgokat képes produkálni egy több száz nodos szuperszámítógép is. Az egyik gép kiesik, nem tudja olvasni a megosztott fájlrendszert. Mindez rengeteg teret ad Bitmumusnak, hogy kiélje magát.
Az ellenőrzés viszont azt mutatta, hogy a BAM fájl teljesen korrekt, olvasható, a szükséges elemek benne voltak. Gyorsan megnéztem, találkozott-e már más is hasonló problémával, de egyik eset sem illett az én esetemre.
A gyors kacsás keresés viszont kiadta a MACS2 forráskódját, ahol a hiba keletkezett. Elkezdtem böngészni a kódot egyszerűen weben keresztül, amitől olyan érzésem lett, mint a koca dohányosnak, aki nem tüdőzi le a füstöt. Ég a cigi, ég a cigi, de hiányzik az érzés.
A hiba oka viszont megvolt. A kód beolvas 10 readet minden BAM fájlnál és az alapján kiszámolja, mennyi a readek távolsága a fragmenten. Ha az első 10 read értékelhetetlen, mert más kromoszómán vannak, 0 a távolságuk, stb. A program dob egy kivételt, hogy érvénytelen a BAM fájl. A tíz read vizsgálat pedig bele van égetve a rendszerbe.
Gyorsan megnéztem a BAM fájlomat. Valóban, értékelhető read a 30. sortól volt.
Először megnéztem, explicite be tudom-e állítani a fragment méretet. Igen, be lehet a --extsize kapcsolóval, de a BAM ellenérzés továbbra is lefut. Eljátszottam a gondolattal, hogy fordítok egy MACS2-t, ahol átírom a kérdéses sort 100-ra, de ez is csak félmegoldás, arról nem is beszélve, hogy ez további problémák forrása lehet, amire nem is gondoltam.
Ehelyett kitöröltem az első 29 BAM rekordot. A program varázslatos módon lefutott. Az ismétlés mindenképp megmenekült.