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}