如何使用 SAMtool htslib 库读取可选信息字段

How to use SAMtool htslib library to read optional info fields

我有一个 BAM 文件:

ERR174327.487900        99      chr9    80320323        60      101M    =       80320752        530     AGGGACATTGGTCCAAAAGGTTTTAATTAACCATACACCCTGCTCTACAAATCTAAAAAACTGTAGGACAGTATTTTGAGTCTCCAAGTATCCAGTGATAA   CCCFFFFFHHHHFIJJJJJJGIJJJJJJJJJJJJJJJJIJIJJJJJIIJJJIJIJJJJJJJGICEHIHFHH=BFFADFFDCCCDCDDDCCCDADC@>ADC@   NM:i:0  AS:i:101        XS:i:0  RG:Z:group1

我需要读取我的 C++ 代码中的可选字段 NM:i:0 AS:i:101 XS:i:0 RG:Z:group1。我可以使用 htslib 库来读取除那些可选字段之外的所有内容。

htsib 库的源文件位于 Github 上的 here。不幸的是,我找不到可以读取这些字段的函数。

问:如何用htslib读取可选字段?

在bam.h

/*!
  @abstract       Retrieve data of a tag
  @param  b       pointer to an alignment struct
  @param  tag     two-character tag to be retrieved

  @return  pointer to the type and data. The first character is the
  type that can be 'iIsScCdfAZH'.
 */

 static inline uint8_t *bam_aux_get_core(bam1_t *b, const char tag[2]);