Jag har tre sekvenseringsbibliotek av enskild individ mappad till en referens med bwa-mem
. Jag skulle vilja slå samman de tre osorterade .sam
-filerna jag har så jag kan ringa varianter och heterozygosity-uppskattningar med atlas. Atlas kräver en inmatningsmappningsfil ( bam
) med definierade läsgrupper eftersom den uppskattar felprofilerna för olika bibliotek separat.
Hur kan jag slå samman flera samfiler? Undvik helst java (Picard-verktyg).
Jag försökte räkna ut en lösning med samtools 1.3
. Jag sorterade enskilda filer med samtools sort
, sedan använde jag samtools merge -r merged.bam s1.sort.sam s2.sort.sam s3.sort.sam
för att slå samman sorterade filer. Men läsgruppen kom inte till rubriken (och den variant som ringer jag använder klagar på det), även läsgruppen är dumt filnamnet.
Jag försökte definiera meningsfulla läsgruppsnamn med hjälp av proceduren som beskrivs på BioStars, men jag fann att detta bara kommer att ändra rubriken, det justerar inte namnen på läsgrupper som definierats av samtools merge
(filnamnen).
Efter denna relaterade tråd på SeqAnswers försökte jag definiera rätt rubrik med läsgrupper som motsvarar sammanslagna filnamn:
samtools -rh rg.txt merged.bam s1.sort.sam s2.sort.sam s3.sort.sam
där rg.txt
är en fil med rubrik
@RG s1.sort@RG s2.sort@RG s3.sort ... output of samtools view -H s1.sort
Men rubriken hade fortfarande inte läsgruppen, antar jag att eftersom samhuvud endast accepterar märkta objekt som ska specificeras (något som @RG XY: s1.sort
). Så jag tittade på den sammanslagna bam
och jag upptäckte att taggen för RG är Z:
. Så jag försökte bara byta namn på rubriken för den sammanslagna filen med samtools reheader
, men sedan klagar samtools över det faktum att en tagg måste ha längd 2:
Felaktig nyckel: värdepar vid rad 123: "@RG Z: s1.sort" Segmenteringsfel (kärndumpad)
Jag har öppnat ett problem för att rapportera denna konstiga inkompatibilitet för läsgrupper som genereras av samtools merge
med samtools reheader
.
Jag vill ha lösning på:
- skapa lite mer standardiserade läsgruppnamn (
SM: Exempel \ tLB: bibliotek -format) - undvik meningslös skrivning till disk som i sam -> sorterad. sam -> merged.bam case (kan antagligen uppnås genom "rör och tees", tack @bli)
Jag vet också att jag kan ange RG till bwa, så sam-filerna kommer har läst grupper definierade i första hand. Men jag gillar inte tanken på att mappa om tre bibliotek bara för att skapa korrekt formatering av läsgrupper.