fibertools_rs/cli/pileup_opts.rs
1use crate::utils::input_bam::InputBam;
2use clap::Args;
3use std::fmt::Debug;
4
5#[derive(Args, Debug)]
6pub struct PileupOptions {
7 #[clap(flatten)]
8 pub input: InputBam,
9 /// Region string to make a pileup of. e.g. chr1:1-1000 or chr1:1-1,000
10 /// If not provided will make a pileup of the whole genome
11 #[clap(default_value = None)]
12 pub rgn: Option<String>,
13 /// Output file
14 #[clap(short, long, default_value = "-")]
15 pub out: String,
16 /// include m6A calls
17 #[clap(short, long)]
18 pub m6a: bool,
19 /// include 5mC calls
20 #[clap(short, long)]
21 pub cpg: bool,
22 /// For each column add two new columns with the hap1 and hap2 specific data.
23 #[clap(long)]
24 pub haps: bool,
25 /// Keep zero coverage regions
26 #[clap(short, long)]
27 pub keep_zeros: bool,
28 /// Write output one base at a time even if the values do not change
29 #[clap(short, long)]
30 pub per_base: bool,
31 /// Calculate coverage starting from the first MSP/NUC to the last MSP/NUC
32 /// position instead of the complete span of the read alignment.
33 #[clap(long)]
34 pub fiber_coverage: bool,
35 /// Shuffle the fiber-seq data according to a bed file of
36 /// the shuffled positions of the fiber-seq data
37 ///
38 /// The bed file should have the following format:
39 /// #chrom shuffled_start shuffled_end read_name original_start
40 #[clap(long)]
41 pub shuffle: Option<String>,
42 /// Output a rolling max of the score column over X bases
43 #[clap(long)]
44 pub rolling_max: Option<usize>,
45 /// No MSP columns
46 #[clap(long)]
47 pub no_msp: bool,
48 /// No NUC columns
49 #[clap(long)]
50 pub no_nuc: bool,
51}