use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Clone, Serialize_repr, Deserialize_repr, PartialEq, Debug)]
#[repr(u8)]
pub enum SeqCodeType {
IUPACNa = 1,
IUPACAa,
NCBI2Na,
NCBI8Na,
NCBIPna,
NCBI8Aa,
NCBIEaa,
NCBIPaa,
IUPACAa3,
NCBIStdAa,
}
#[derive(Clone, Serialize, Deserialize, PartialEq, Debug)]
#[serde(rename_all = "kebab-case")]
pub struct SeqMapTable {
pub from: SeqCodeType,
pub to: SeqCodeType,
pub num: u64,
pub start_at: u64,
pub table: Vec<u64>,
}
#[derive(Clone, Serialize, Deserialize, PartialEq, Debug)]
#[serde(rename_all = "kebab-case")]
pub struct SeqCodeTableCell {
pub symbol: String,
pub name: String,
}
#[derive(Clone, Serialize, Deserialize, PartialEq, Debug)]
#[serde(rename_all = "kebab-case")]
pub struct SeqCodeTable {
pub code: SeqCodeType,
pub num: u64,
pub one_letter: bool,
pub start_at: u64,
pub table: Vec<Vec<SeqCodeTableCell>>,
pub comps: Option<Vec<u64>>,
}
#[derive(Clone, Serialize, Deserialize, PartialEq, Debug)]
pub struct SeqCodeSet {
pub codes: Option<Vec<SeqCodeTable>>,
pub maps: Option<Vec<SeqMapTable>>,
}