Skip to content

Configuration API

SeqNado uses Pydantic for its configuration management. This page documents the primary configuration models.

Main Configuration

seqnado.config.SeqnadoConfig

Bases: BaseModel

Configuration for the SeqNado workflow.

organism property

organism: str

Return the organism (string) from the genome configuration.

shift_for_tn5_insertion property

shift_for_tn5_insertion: bool

Return the Tn5 shift configuration for the specified assay.

mcc_viewpoints property

mcc_viewpoints: str

Return the MCC viewpoints file path.

set_default_pcr_duplicates

set_default_pcr_duplicates(values)

Set default PCR duplicate handling based on assay type.

Source code in seqnado/config/core.py
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
@model_validator(mode="before")
def set_default_pcr_duplicates(cls, values):
    """Set default PCR duplicate handling based on assay type."""
    from seqnado import PCRDuplicateHandling

    if "pcr_duplicates" not in values or values["pcr_duplicates"] is None:
        assay = values.get("assay")
        # Normalize assay to Assay enum if it's a string
        if isinstance(assay, str):
            assay = Assay(assay)
        # Default to REMOVE for ATAC, ChIP, CAT, SNP, and METH; KEEP for RNA
        if assay in [Assay.ATAC, Assay.CHIP, Assay.CAT, Assay.SNP, Assay.METH]:
            values["pcr_duplicates"] = PCRDuplicatesConfig(strategy=PCRDuplicateHandling.REMOVE)
        else:
            values["pcr_duplicates"] = PCRDuplicatesConfig(strategy=PCRDuplicateHandling.NONE)

    return values

from_yaml classmethod

from_yaml(path: Path) -> SeqnadoConfig

Load configuration from a YAML file.

Source code in seqnado/config/core.py
197
198
199
200
201
202
203
204
205
@classmethod
def from_yaml(cls, path: Path) -> "SeqnadoConfig":
    """Load configuration from a YAML file."""
    import yaml

    with open(path, "r") as f:
        data = yaml.safe_load(f)

    return cls(**data)

validate_remove_blacklist

validate_remove_blacklist(v)

Can only be set to True if genome blacklist is provided.

Source code in seqnado/config/core.py
227
228
229
230
231
232
233
234
@field_validator("remove_blacklist")
def validate_remove_blacklist(cls, v):
    """Can only be set to True if genome blacklist is provided."""
    if v and not cls.genome.blacklist:
        raise ValueError(
            "remove_blacklist can only be True if genome blacklist is provided."
        )
    return v

validate_assay_config_matches_assay

validate_assay_config_matches_assay(v, info)

Ensure the assay_config type matches the specified assay.

Source code in seqnado/config/core.py
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
@field_validator("assay_config", mode="before")
def validate_assay_config_matches_assay(cls, v, info):
    """Ensure the assay_config type matches the specified assay."""
    if v is None:
        return v

    assay = info.data.get("assay")
    if assay is None:
        return v

    expected_config_class = ASSAY_CONFIG_MAP.get(assay)
    if expected_config_class and not isinstance(v, expected_config_class):
        if isinstance(v, dict):
            # Try to create the appropriate config from dict
            return expected_config_class(**v)
        else:
            raise ValueError(
                f"assay_config must be of type {expected_config_class.__name__} for assay {assay.value}"
            )

    return v

create_assay_config classmethod

create_assay_config(
    assay: Assay, **kwargs
) -> AssaySpecificConfig

Create the appropriate assay config for the given assay type.

Source code in seqnado/config/core.py
258
259
260
261
262
263
264
265
266
267
@classmethod
def create_assay_config(cls, assay: Assay, **kwargs) -> AssaySpecificConfig:
    """Create the appropriate assay config for the given assay type."""
    config_class = cls._ASSAY_CONFIG_MAP.get(assay)
    if config_class is None:
        raise ValueError(
            f"No configuration class available for assay {assay.value}"
        )

    return config_class(**kwargs)

seqnado.config.ProjectConfig

Bases: BaseModel

Configuration for the SeqNado project.

Genome Configuration

seqnado.config.GenomeConfig

Bases: BaseModel

Configuration for genome-related files and indices.

Assay Specific Configurations

seqnado.config.ATACAssayConfig

Bases: BaseAssayConfig, PeakCallingMixin

Configuration specific to ATAC-seq assays.

seqnado.config.ChIPAssayConfig

Bases: BaseAssayConfig, PeakCallingMixin

Configuration specific to ChIP-seq assays.

seqnado.config.RNAAssayConfig

Bases: BaseAssayConfig

Configuration specific to RNA-seq assays.

← Back to API Overview