Kérdés:
Hogyan készítsünk egy BAM fejlécfájlt htslib-el a C ++ nyelven?
SmallChess
2017-09-04 12:54:45 UTC
view on stackexchange narkive permalink

A C ++ programmal szeretnék új BAM fájlt programszerűen előállítani. Ez egy példa arra, hogyan lehet a htslib használatával új BCF fájlt generálni menet közben.

https://github.com/samtools/htslib/blob/develop/test/test -bcf-translate.c

A két fő funkció a következő:

  • bcf_hdr_append
  • bcf_hdr_add_sample

Most, amikor a SAM / BAM funkciók fejlécfájljához navigálok:

https: //github.com/samtools/htslib/blob/develop/htslib/sam.h

Az egyetlen "függelék" funkció a bam_aux_append . De ez az opcionális mezőkre vonatkozik.

Kérdéseim:

  • Adva egy bam_hdr_t fejlécet (esetleg üres), hogyan lehet új kromoszóma-referenciát hozzáadni? (Például vegyen fel egy új chrAB-t a BAM fájlba.)
  • Ha nem üres bam_hdr_t * fejlécet adunk, hogyan lehet eltávolítani a kromoszómát? (Például távolítsa el a chr4 fájlt a BAM fejlécéből)

Példakódom:

  // Üres BAM fejléc, semmi benne bam_hdr_t * hdr = bam_hdr_init () ; // Szeretnék hozzáadni egy új szintetikus `chrAB'-t a fejléchez, hogyan?  
Egy válasz:
Devon Ryan
2017-09-04 13:12:16 UTC
view on stackexchange narkive permalink

Csak rossz fejlécfájlt keres. A BCF cuccok a vcf.h fájlban lesznek (látni fogja az ott említett két funkciót).

A BAM fájlokkal általában nem kell fejléceket hozzáadni / eltávolítani. , ezért nincsenek számukra kényelmi funkciók. Fejléc hozzáadása:

  1. Növekmény hdr->ntargets
  2. realloc (hdr->target_len, ...) és hdr->target_name.
  3. Valószínűleg hozzá kívánja fűzni a nevet / hosszúságot a hdr->target_name és a hdr->target_len , illetve.

Nem hiszem, hogy a legtöbb használathoz (vagy legalábbis soha nem kellett) frissítenie kell a szótárt vagy az egyszerű szöveget.

A kromoszóma eltávolítása a fordított utasításokat követi (ha a középen lévő bejegyzéseket eltávolítja, mindent el kell helyeznie a név és a hosszúság tömbjeiben.

FIGYELEM, ez hajlamos a hibára!

Erősen óvatosságra intem, hogy nagyon óvatos legyen ennek során. Ne feledje, hogy az a kromoszóma, amelyhez a bejegyzéseket leképezik, valójában maguk sem tárolódnak az igazítási bejegyzésekben. Inkább egyszerűen indexelnek a hdr->target_name , amely helyet takarít meg. t Fejléceket hozzáadva / eltávolítva egy BAM fájlból / abba igazításokkal, akkor a megfelelő igazítás megőrzése érdekében módosítania kell az összes igazítást: a kromoszóma asszociációk. Ellenkező esetben teljesen haszontalan eredményeket érhet el (ez ugyanaz a figyelmeztetés, mint a samtools reheader esetében).



Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...