use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReactionHit {
pub pathway: String,
pub pathway_status: Option<PwyStatus>,
pub rxn: String,
pub name: String,
pub ec: String,
pub keyrea: bool,
pub spont: bool,
pub is_complex: bool,
pub subunit_count: u32,
pub subunits: String,
pub complex: Option<String>,
pub subunits_found: Option<u32>,
pub subunit_undefined_found: Option<bool>,
pub complex_status: Option<u8>,
pub file: Option<String>,
pub dbhit: String,
pub has_dbhit: bool,
pub src: String,
pub reftype: String,
pub qseqid: Option<String>,
pub pident: Option<f32>,
pub evalue: Option<f64>,
pub bitscore: Option<f32>,
pub qcov: Option<f32>,
pub stitle: Option<String>,
pub sstart: Option<i32>,
pub send: Option<i32>,
pub exception: bool,
pub status: HitStatus,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum HitStatus {
GoodBlast,
BadBlast,
NoBlast,
NoSeqData,
Spontaneous,
}
impl HitStatus {
pub fn as_str(self) -> &'static str {
match self {
HitStatus::GoodBlast => "good_blast",
HitStatus::BadBlast => "bad_blast",
HitStatus::NoBlast => "no_blast",
HitStatus::NoSeqData => "no_seq_data",
HitStatus::Spontaneous => "spontaneous",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum PwyStatus {
Full,
Threshold,
Keyenzyme,
}
impl PwyStatus {
pub fn as_str(self) -> &'static str {
match self {
PwyStatus::Full => "full",
PwyStatus::Threshold => "threshold",
PwyStatus::Keyenzyme => "keyenzyme",
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PathwayResult {
pub id: String,
pub name: String,
pub prediction: bool,
pub completeness: f64,
pub status: Option<PwyStatus>,
pub n_reaction: u32,
pub n_spontaneous: u32,
pub n_vague: u32,
pub n_key_reaction: u32,
pub n_reaction_found: u32,
pub n_key_reaction_found: u32,
pub reactions_found: Vec<String>,
pub spontaneous_reactions: Vec<String>,
pub key_reactions: Vec<String>,
}