#macro-derive #bit #codec #enums #user #variant #bio-seq

macro bio-seq-derive

为bio-seq crate提供派生宏

9个稳定版本 (3个主要版本)

4.0.0 2024年7月12日
3.9.0 2024年6月21日
2.0.2 2024年5月14日
1.6.4 2023年4月10日
1.0.0 2022年4月21日

#bit中排名226

Download history 360/week @ 2024-05-09 50/week @ 2024-05-16 16/week @ 2024-05-23 2/week @ 2024-05-30 6/week @ 2024-06-06 5/week @ 2024-06-13 105/week @ 2024-06-20 5/week @ 2024-06-27 1/week @ 2024-07-04 99/week @ 2024-07-11 5/week @ 2024-07-18

每月下载量106
用于2个crate(通过bio-seq

MIT许可证

19KB
323 行代码

bio-seq-derive

bio-seq-derive是一个过程宏crate,它为bio-seq库提供了Codec派生宏。它允许用户从枚举中定义自定义的位打包字母表。符号的位表示是从枚举区分符派生出来的。

此crate还提供了由bio-seq重新导出的宏dna!()iupac!(),这些宏用于在编译时声明静态序列。

你可能不想直接将此crate作为依赖项包括。

有关定义自定义字母表的完整指南,请参阅bio-seq文档

功能

  • width属性:指定表示自定义字母表中的每个变体的位数。默认值是最佳值。
  • alt属性:为相同的变体定义替代位表示。
  • display属性:为变体设置自定义字符表示。

用法

要派生自定义编码,请使用在bio-seq预导入中重新导出的Codec派生宏

use bio_seq::prelude::*;

可以使用#[repr(u8)]注释对编解码器进行注释,以便进行方便的转换。

#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Codec)]
#[width(6)]
pub enum Amino {
    #[alt(0b110110, 0b010110, 0b100110)]
    A = 0b000110, // GCA
    #[alt(0b111011)]
    C = 0b011011, // TGC
    #[alt(0b110010)]
    D = 0b010010, // GAC
    #[alt(0b100010)]
    E = 0b000010, // GAA
    #[alt(0b111111)]
    F = 0b011111, // TTC
    #[alt(0b101010, 0b011010, 0b111010)]
    G = 0b001010, // GGA
    #[alt(0b110001)]
    H = 0b010001, // CAC
    #[alt(0b011100, 0b111100)]
    I = 0b001100, // ATA
    #[alt(0b100000)]
    K = 0b000000, // AAA
    #[alt(0b001111, 0b101111, 0b111101, 0b011101, 0b101101)]
    L = 0b001101, // CTA
    M = 0b101100, // ATG
    #[alt(0b110000)]
    N = 0b010000, // AAC
    #[alt(0b010101, 0b100101, 0b110101)]
    P = 0b000101, // CCA
    #[alt(0b100001)]
    Q = 0b000001, // CAA
    #[alt(0b101000, 0b111001, 0b011001, 0b001001, 0b101001)]
    R = 0b001000, // AGA
    #[alt(0b110111, 0b010111, 0b000111, 0b100111, 0b111000)]
    S = 0b011000, // AGC
    #[alt(0b110100, 0b010100, 0b100100)]
    T = 0b000100, // ACA
    #[alt(0b011110, 0b111110, 0b101110)]
    V = 0b001110, // GTA
    W = 0b101011, // TGG
    #[alt(0b110011)]
    Y = 0b010011, // TAC
    #[display('*')]
    #[alt(0b001011, 0b100011)]
    X = 0b000011, // TAA (stop)
}

依赖项

~270–720KB
~17K SLoC