cyto_cli/map/
crispr.rs

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    /// Path to CRISPR library
45    #[clap(short = 'c', long = "guides")]
46    pub guides_filepath: String,
47
48    /// Offset for anchor sequences
49    #[clap(short = 's', long, default_value = "26")]
50    pub offset: usize,
51
52    /// Lookback size for probe sequences
53    ///
54    /// This will skip back `n` bases from the start of the anchor sequence to match
55    /// the right-hand side of the probe sequence.
56    ///
57    /// [probe][lookback-size][anchor]
58    #[clap(short = 'l', long, default_value_t = 0)]
59    pub lookback: usize,
60}