1use std::path::PathBuf;
2
3use anyhow::Result;
4use clap::Parser;
5
6use super::{Geometry, MapOptions, MultiPairedInput, ProbeOptions, RuntimeOptions};
7use crate::ArgsOutput;
8
9#[derive(Parser, Debug)]
10pub struct ArgsCrispr {
11 #[clap(flatten)]
12 pub input: MultiPairedInput,
13
14 #[clap(flatten)]
15 pub geometry: Geometry,
16
17 #[clap(flatten)]
18 pub crispr: CrisprOptions,
19
20 #[clap(flatten)]
21 pub map: MapOptions,
22
23 #[clap(flatten)]
24 pub probe: ProbeOptions,
25
26 #[clap(flatten)]
27 pub runtime: RuntimeOptions,
28
29 #[clap(flatten)]
30 pub output: ArgsOutput,
31}
32impl ArgsCrispr {
33 pub fn validate_outdir(&self) -> Result<()> {
34 self.output.validate_outdir()
35 }
36 pub fn log_path(&self) -> PathBuf {
37 self.output.log_path()
38 }
39}
40
41#[derive(Parser, Debug)]
42#[clap(next_help_heading = "CRISPR Options")]
43pub struct CrisprOptions {
44 #[clap(short = 'c', long = "guides")]
46 pub guides_filepath: String,
47
48 #[clap(short = 's', long, default_value = "26")]
50 pub offset: usize,
51
52 #[clap(short = 'l', long, default_value_t = 0)]
59 pub lookback: usize,
60}