В настоящее время я использую htslib (хотя я мог бы также использовать bamtools) и могу получать последовательные чтения через что-то вроде этот но мне любопытно, как я мог бы отредактировать этот код, чтобы получить n-е чтение из m-й хромосомы, а не читать его последовательно. Это возможно?
Вы можете прыгнуть прямо к m
й хромосомы, но тогда вам нужно будет линейно искать n
нить.
Вместо sam_read1()
и дали htsFile *
(bamFile
) соответствует файлу с именем bamFileName
можно было бы:
hts_idx_t *idx = sam_index_load(bamFile, bamFileName);
hts_itr_t *itr = sam_itr_queryi(idx, m, 0, hdr->targetLen[m]);
Тогда используйте sam_itr_next(bamFile, itr, b)
чтобы получить последовательные выравнивания в b
, который является bam1_t*
,
Других решений пока нет …