Skip to main content

qualia_cli/cli/
science.rs

1use clap::Subcommand;
2
3#[derive(Subcommand, Debug)]
4pub enum ScienceAction {
5    Chem {
6        #[command(subcommand)]
7        action: ChemAction,
8    },
9    Bio {
10        #[command(subcommand)]
11        action: BioAction,
12    },
13    Geo {
14        #[command(subcommand)]
15        action: GeoAction,
16    },
17    Thermo {
18        #[command(subcommand)]
19        action: ThermoAction,
20    },
21    Geometric {
22        #[command(subcommand)]
23        action: GeometricAction,
24    },
25    Clinical {
26        #[command(subcommand)]
27        action: ClinicalAction,
28    },
29    Economics {
30        #[command(subcommand)]
31        action: EconomicsAction,
32    },
33}
34
35#[derive(Subcommand, Debug)]
36pub enum ChemAction {
37    Smiles {
38        smiles: String,
39    },
40    Thermo {
41        reaction: String,
42        #[arg(long)]
43        a: f64,
44        #[arg(long)]
45        b: f64,
46        #[arg(long)]
47        c: f64,
48    },
49    DrugLike {
50        smiles: String,
51    },
52    Pka {
53        #[arg(long)]
54        pka: f64,
55        #[arg(long)]
56        conc_base: f64,
57        #[arg(long)]
58        conc_acid: f64,
59    },
60}
61
62#[derive(Subcommand, Debug)]
63pub enum BioAction {
64    Align {
65        query: String,
66        target: String,
67        #[arg(long, default_value = "dna")]
68        mode: String,
69    },
70    Kmer {
71        sequence: String,
72        #[arg(long, default_value = "4")]
73        k: usize,
74    },
75    Translate {
76        dna: String,
77    },
78    Isoelectric {
79        protein: String,
80    },
81    Jaccard {
82        sketch_a: String,
83        sketch_b: String,
84    },
85    Minhash {
86        sequence: String,
87        #[arg(long, default_value = "4")]
88        k: usize,
89        #[arg(long, default_value = "128")]
90        size: usize,
91    },
92}
93
94#[derive(Subcommand, Debug)]
95pub enum GeoAction {
96    EmbedH3 {
97        #[arg(long)]
98        index: u64,
99    },
100}
101
102#[derive(Subcommand, Debug)]
103pub enum ThermoAction {
104    Gibbs {
105        #[arg(long)]
106        enthalpy: f64,
107        #[arg(long)]
108        entropy: f64,
109        #[arg(long)]
110        temp: f64,
111    },
112    Anneal {
113        #[arg(long, default_value = "300.0")]
114        initial_temp: f64,
115        #[arg(long, default_value = "1")]
116        particles: usize,
117        #[arg(long)]
118        proposed_energy: f64,
119        #[arg(long, default_value = "0.5")]
120        random: f64,
121    },
122}
123
124#[derive(Subcommand, Debug)]
125pub enum GeometricAction {
126    Cross {
127        #[arg(long)]
128        a: String,
129        #[arg(long)]
130        b: String,
131    },
132    Angle {
133        #[arg(long)]
134        a: String,
135        #[arg(long)]
136        b: String,
137    },
138}
139
140#[derive(Subcommand, Debug)]
141pub enum ClinicalAction {
142    Framingham {
143        #[arg(long)]
144        age: u8,
145        #[arg(long)]
146        sex_male: bool,
147        #[arg(long)]
148        total_chol: f64,
149        #[arg(long)]
150        hdl_chol: f64,
151        #[arg(long)]
152        systolic_bp: f64,
153        #[arg(long)]
154        bp_treated: bool,
155        #[arg(long)]
156        smoker: bool,
157        #[arg(long)]
158        diabetic: bool,
159    },
160    Sofa {
161        #[arg(long)]
162        pao2_fio2: f64,
163        #[arg(long)]
164        platelets: f64,
165        #[arg(long)]
166        bilirubin: f64,
167        #[arg(long)]
168        map: f64,
169        #[arg(long)]
170        gcs: u8,
171        #[arg(long)]
172        creatinine: f64,
173    },
174    Ckd {
175        #[arg(long)]
176        age: u8,
177        #[arg(long)]
178        sex_male: bool,
179        #[arg(long)]
180        weight_kg: f64,
181        #[arg(long)]
182        creatinine: f64,
183    },
184    Pk {
185        #[arg(long)]
186        dose_mg: f64,
187        #[arg(long)]
188        vd_l: f64,
189        #[arg(long)]
190        cl_l_hr: f64,
191        #[arg(long)]
192        time_hr: f64,
193    },
194    DrugInteractions {
195        drug_names: String,
196    },
197}
198
199#[derive(Subcommand, Debug)]
200pub enum EconomicsAction {
201    Gbm {
202        #[arg(long, default_value = "100.0")]
203        price: f64,
204        #[arg(long, default_value = "0.05")]
205        drift: f64,
206        #[arg(long, default_value = "0.2")]
207        vol: f64,
208        #[arg(long, default_value = "1.0")]
209        horizon: f64,
210        #[arg(long, default_value = "252")]
211        steps: usize,
212    },
213    Var {
214        #[arg(long, default_value = "100.0")]
215        price: f64,
216        #[arg(long, default_value = "0.05")]
217        drift: f64,
218        #[arg(long, default_value = "0.2")]
219        vol: f64,
220        #[arg(long, default_value = "1.0")]
221        horizon: f64,
222        #[arg(long, default_value = "252")]
223        steps: usize,
224        #[arg(long, default_value = "1000")]
225        paths: usize,
226    },
227    Macro {
228        #[arg(long, default_value = "1000.0")]
229        m0: f64,
230        #[arg(long, default_value = "1.0")]
231        p0: f64,
232        #[arg(long, default_value = "2.0")]
233        velocity: f64,
234        #[arg(long, default_value = "500.0")]
235        real_gdp: f64,
236        #[arg(long, default_value = "10.0")]
237        horizon: f64,
238        #[arg(long, default_value = "100")]
239        steps: usize,
240    },
241    Bond {
242        #[arg(long, default_value = "100.0")]
243        face: f64,
244        #[arg(long, default_value = "0.05")]
245        coupon_rate: f64,
246        #[arg(long, default_value = "0.06")]
247        yield_rate: f64,
248        #[arg(long, default_value = "5")]
249        periods: u32,
250    },
251    Paper {
252        #[arg(long, default_value = "10.0")]
253        qty: f64,
254        #[arg(long, default_value = "100.5")]
255        last_price: f64,
256    },
257    Welfare {
258        #[arg(long, default_value = "1,2,3,10")]
259        incomes: String,
260    },
261    Game {
262        #[arg(long, default_value = "100")]
263        market_a: f64,
264    },
265}