有時候我們需要使用C++處理bam文件,比如取出read1或者read2等符合特定條件的序列,根據(jù)cigar值對序列指定位置的堿基進(jìn)行統(tǒng)計或者對序列進(jìn)行處理并輸出等,這時我們可以使用htslib庫。htslib可以用來處理SAM, BAM,CRAM 和VCF文件,是samtools、bcftools的核心庫。
成都創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元鐵西做網(wǎng)站,已為上家服務(wù),為鐵西各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108#include <stdio.h> #include <stdlib.h> #include <htslib/sam.h> using namespace std; #define bam_is_read1(b) (((b)->core.flag&BAM_FREAD1) != 0) uint8_t Base[16] = {0,65,67,0,71,0,0,0,84,0,0,0,0,0,0,78}; int main(int argc, char **argv) { bam_hdr_t *header; bam1_t *aln = bam_init1(); samFile *in = sam_open(argv[1], "r"); htsFile *outR1 = hts_open(argv[2], "wb"); header = sam_hdr_read(in); if (sam_hdr_write(outR1, header) < 0) { fprintf(stderr, "Error writing output.\n"); exit(-1); } uint8_t *seq; int32_t lseq; uint32_t *cigar; char* qname; while (sam_read1(in, header, aln) >= 0) { if (bam_is_read1(aln)){ sam_write1(outR1, header, aln); } else { seq = bam_get_seq(aln); lseq = aln->core.l_qseq; qname = bam_get_qname(aln); printf("%s\n",qname); cigar = bam_get_cigar(aln); for(int i=0; i < aln->core.n_cigar;++i){ int icigar = cigar[i]; printf("%d%d\n",bam_cigar_op(icigar),bam_cigar_oplen(icigar)); } for(int i=0; i < lseq;++i){ printf("%c", Base[bam_seqi(seq, i)]); } printf("\n"); } } sam_close(in); sam_close(outR1); }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站bm7419.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文名稱:C++使用htslib庫讀入和寫出bam文件的實例-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://bm7419.com/article32/cdshsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、App開發(fā)、電子商務(wù)、網(wǎng)頁設(shè)計公司、小程序開發(fā)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容