1

我正在编写一个处理基因序列的程序,我想将每个核苷酸存储在一个字节中,其中每个位代表遗传字母表中的一个字母A,C,G,T(显然只有一半的位会被使用)。

我的编码如下:

A = 0b1000
C = 0b0100
G = 0b0010
T = 0b0001
R = 0b1010
Y = 0b0101
N = 0b0000

这里,R是嘌呤,可以代表Aor GY是嘧啶 ( Cor T),并且N可以代表任何一个字母。

typedef在 C 中使用and定义这种格式的最佳方法是什么enum?我想定义一种类型,允许我按名称将字母分配给变量,例如

typedef ... nucleotide_t;
nucleotide_t x[] = {G, A, T, T, A, C, A};

编辑:感谢您的输入。我绝对有理由不想要字符串,但感谢您的建议。确实,从逻辑上讲,N应该是,但对于我的应用程序来说,将其表示为以上都不是0b1111更有意义。

请注意,我确实知道如何完成这项工作,但我不会经常打破 ol' C,我宁愿寻找最优雅的解决方案。我想如果我想保留NUL字节,那么我可以在0b10000任何地方添加到我的代码中。

我认为两种可能的方法是一个enum或一些#define宏。然而,枚举是int,我需要一个char,那么宏是更好的解决方案吗?

4

1 回答 1

-1

如何这样做:

typedef enum NUC{
   N            = 0,
   T            = 1,
   G            = 2,
   C            = 4,
   Y            = 5,
   A            = 8,
   R            = 10
}nucleotide_t;
于 2013-07-28T14:11:08.837 回答