use crate::utils::input_bam::InputBam;
use crate::utils::nucleosome::*;
use clap::Args;
use std::fmt::Debug;
#[derive(Args, Debug, Clone)]
pub struct NucleosomeParameters {
#[clap(short, long, default_value = NUC_LEN)]
pub nucleosome_length: i64,
#[clap(short, long, default_value = COMBO_NUC_LEN)]
pub combined_nucleosome_length: i64,
#[clap(long, default_value = MIN_DIST_ADDED)]
pub min_distance_added: i64,
#[clap(short, long, default_value = DIST_FROM_END)]
pub distance_from_end: i64,
#[clap(short, long, default_value = ALLOWED_SKIPS, hide = true)]
pub allowed_m6a_skips: i64,
}
impl std::default::Default for NucleosomeParameters {
fn default() -> Self {
Self {
nucleosome_length: NUC_LEN.parse().unwrap(),
combined_nucleosome_length: COMBO_NUC_LEN.parse().unwrap(),
min_distance_added: MIN_DIST_ADDED.parse().unwrap(),
distance_from_end: DIST_FROM_END.parse().unwrap(),
allowed_m6a_skips: ALLOWED_SKIPS.parse().unwrap(),
}
}
}
#[derive(Args, Debug)]
pub struct AddNucleosomeOptions {
#[clap(flatten)]
pub input: InputBam,
#[clap(default_value = "-")]
pub out: String,
#[clap(flatten)]
pub nuc: NucleosomeParameters,
}