PathoGenOmics-Lab/VIPERA
A Snakemake workflow for SARS-CoV-2 Viral Intra-Patient Evolution Reporting and Analysis
Overview
Latest release: v1.3.0, Last update: 2025-11-24
Linting: linting: failed, Formatting: formatting: failed
Topics: bioinformatics intrahost sars-cov-2 virus-evolution reporting snakemake
Deployment
Step 1: Install Snakemake and Snakedeploy
Snakemake and Snakedeploy are best installed via the Conda. It is recommended to install conda via Miniforge. Run
conda create -c conda-forge -c bioconda -c nodefaults --name snakemake snakemake snakedeploy
to install both Snakemake and Snakedeploy in an isolated environment. For all following commands ensure that this environment is activated via
conda activate snakemake
For other installation methods, refer to the Snakemake and Snakedeploy documentation.
Step 2: Deploy workflow
With Snakemake and Snakedeploy installed, the workflow can be deployed as follows. First, create an appropriate project working directory on your system and enter it:
mkdir -p path/to/project-workdir
cd path/to/project-workdir
In all following steps, we will assume that you are inside of that directory. Then run
snakedeploy deploy-workflow https://github.com/PathoGenOmics-Lab/VIPERA . --tag v1.3.0
Snakedeploy will create two folders, workflow and config. The former contains the deployment of the chosen workflow as a Snakemake module, the latter contains configuration files which will be modified in the next step in order to configure the workflow to your needs.
Step 3: Configure workflow
To configure the workflow, adapt config/config.yml to your needs following the instructions below.
Step 4: Run workflow
The deployment method is controlled using the --software-deployment-method (short --sdm) argument.
To run the workflow with automatic deployment of all required software via conda/mamba, use
snakemake --cores all --sdm conda
Snakemake will automatically detect the main Snakefile in the workflow subfolder and execute the workflow module that has been defined by the deployment in step 2.
For further options such as cluster and cloud execution, see the docs.
Step 5: Generate report
After finalizing your data analysis, you can automatically generate an interactive visual HTML report for inspection of results together with parameters and code inside of the browser using
snakemake --report report.zip
Configuration
The following section is imported from the workflow’s config/README.md.
Instructions
To run VIPERA, an environment with Snakemake version 7.19 or later is needed (see the Snakemake docs for setup instructions).
This guide provides command-line instructions for running VIPERA with Snakemake versions prior to 8. All configuration parameters are fully cross-compatible. The original publication used Snakemake 7.32, but newer versions can also be used with only minor changes. For details, see the Snakemake migration guide. For example, existing profiles are cross-compatible as well, but note that the
--use-condaflag is deprecated starting with Snakemake 8. Instead, use--software-deployment-method conda.
tl;dr
Needs:
Snakemake 7.19 or later.
One FASTA per sample.
One BAM per sample.
One metadata CSV with columns
ID,CollectionDate(YYYY-MM-DD),ResidenceCityandGISAIDEPI(can be empty).
Setup: edit targets.yaml (set
SAMPLESandMETADATA, at least) or build it usingbuild_targets.py. LeaveCONTEXT_FASTA: nullto auto-download from GISAID (needsconfig/gisaid.yamlwith your username and password) or set a local FASTA path if download fails (see GISAID disclaimer).Run:
snakemake (--use-conda | --sdm conda) -c4.
Inputs and outputs
The workflow requires a set of FASTA files (one per target sample), a corresponding set of BAM files (also one per target sample), and a metadata table in CSV format with one row per sample. The metadata must include at least the following columns:
ID: unique sample identifier, used to match sequencing files with metadata.CollectionDate: the date the sample was collected (YYYY-MM-DD).ResidenceCity: the location where the sample was collected.GISAIDEPI: GISAID accession identifier (EPI_ISL_...or empty).
The path to these input files is set in two configuration files in YAML format:
config.yaml (for general workflow settings) and
targets.yaml (for specific dataset-related settings).
The latter must be modified by the user to point the SAMPLES and METADATA
parameters to your data. The OUTPUT_DIRECTORY parameter should point to your
desired results directory.
The script build_targets.py simplifies the process of creating
the targets configuration file. To run this script, you need to have PyYAML installed. It
takes a list of sample names, a directory with BAM and FASTA files, the path to
the metadata table and the name of your dataset as required inputs. Then, it searches the
directory for files that have the appropriate extensions and sample names and adds them
to the configuration file.
An example file could look like this:
OUTPUT_NAME:
"your-dataset-name"
SAMPLES:
sample1:
bam: "path/to/sorted/bam1.bam"
fasta: "path/to/sequence1.fasta"
sample2:
bam: "path/to/sorted/bam2.bam"
fasta: "path/to/sequence2.fasta"
...
METADATA:
"path/to/metadata.csv"
OUTPUT_DIRECTORY:
"output"
CONTEXT_FASTA:
null
MAPPING_REFERENCES_FASTA:
null
This information may also be provided through the --config parameter.
Automated construction of a context dataset
Setting the CONTEXT_FASTA parameter to null (default) will enable
the automatic download of sequences from the GISAID EpiCoV SARS-CoV-2 database.
An unset parameter has the same effect.
To enable this, you must also sign up to the GISAID platform
and provide your credentials by creating and filling an additional configuration
file (default: config/gisaid.yaml) as follows:
USERNAME: "your-username"
PASSWORD: "your-password"
A set of samples that meet the spatial, temporal and phylogenetic criteria
set through the download_context rule
will be retrieved automatically from GISAID. These criteria are:
Location matching the place(s) of sampling of the target samples
Collection date within the time window that includes 95% of the date distribution of the target samples (2.5% is trimmed at each end to account for extreme values) ± 2 weeks
Pango lineage matching that of the target samples
Then, a series of checkpoint steps are executed for quality assurance:
Remove context samples whose GISAID ID match any of the target samples
Enforce a minimum number of samples to have at least as many possible combinations as random subsample replicates for the diversity assessment (set in config.yaml)
The workflow will continue its execution until completion if the obtained
context dataset passes these checkpoints. Otherwise, the execution will be
terminated and, to continue the analysis, an external context dataset must
be provided through the CONTEXT_FASTA parameter. This can be done
by editing targets.yaml or via the command line:
snakemake --config CONTEXT_FASTA="path/to/fasta"
[!IMPORTANT] The GISAID EpiCoV database is proprietary and not openly accessible. For details, refer to the GISAID Terms of Use. VIPERA uses GISAIDR to automate access to GISAID data. However, this access can be unstable or occasionally fail due to changes in the platform. Possible workarounds are documented in the GISAIDR repository (e.g. issues #55 and #58). If programmatic access fails, a suitable context dataset must be manually provided by setting the
CONTEXT_FASTAparameter to the path of a FASTA file. As a last resort, some of the analyses can be allowed to run even if context-dependent rules fail by passing the--keep-goingflag to Snakemake. To replicate our work, the automatic context dataset is available via DOI: 10.55876/gis8.250718er (EPI_SET_250718er). Read more about EPI_SETs here.
Mapping reference sequence
Setting MAPPING_REFERENCES_FASTA to null (default) will enable the automatic download of the
reference sequence(s) that were used to map the reads and generate the BAM files.
An unset parameter has the same effect.
If the required sequence is not available publically or the user already has it
at your disposal, it can be provided manually by setting the parameter to the
path of the reference FASTA file.
Workflow configuration variables
All of the following variables are pre-defined in config.yaml:
ALIGNMENT_REFERENCE: NCBI accession number of the reference record for sequence alignment.PROBLEMATIC_VCF: URL or path of a VCF file containing problematic genome positions for masking.GENETIC_CODE_JSON: path of a JSON file containing a genetic code for gene translation.TREE_MODEL: substitution model used by IQTREE (see docs).UFBOOT&SHALRT: settings for ultrafast bootstrap (see UFBoot) and Shimodaira–Hasegawa approximate likelihood ratio test bootstrap (see SH-aLRT) in IQTREE runs:REPS: number of replicates.THRESHOLD: value cutoff for visualization.
VC: variant calling configuration:MIN_QUALITY: minimum base quality forivar variants(option-q).MIN_FREQ: minimum frequency threshold forivar variants(option-t).MIN_DEPTH: minimum read depth forivar variants(option-m).MAX_DEPTH: maximum read depth forsamtools mpileup(option-d).
DEMIX: demixing configuration (uses Freyja, see also its docs):PATHOGEN: pathogen of interest forfreyja update(option--pathogen); must be ‘SARS-CoV-2’.MIN_QUALITY: minimum quality forfreyja variants(option--minq).MAX_DEPTH: maximum read depth forsamtools mpileup(option-d).COV_CUTOFF: minimum depth to calculate the reported “coverage” (percent of sites with that depth) forfreyja demix(option--covcut).MIN_ABUNDANCE: minimum lineage estimated abundance forfreyja demix(option--eps).CONFIRMED_ONLY: exclude unconfirmed lineages infreyja demix(option--confirmedonly).DEPTH_CUTOFF: minimum depth on each site forfreyja demix(option--depthcutoff).RELAXED_MRCA: assign clusters using relaxed (as opposed to strict) MRCA, used withDEPTH_CUTOFF, forfreyja demix(option--relaxedmrca).RELAXED_MRCA_THRESH:RELAXED_MRCAthreshold forfreyja demix(option--relaxedthresh).AUTO_ADAPT: use error profile to set adaptive lasso penalty parameter forfreyja demix(option--autoadapt).
WINDOW: sliding window of nucleotide variants per site configuration:WIDTH: number of sites within windows.STEP: number of sites between windows.
GB_FEATURES: optional mapping to filter which features from the GenBank file are used by some analyses (e.g. ruleswindowandn_s_sites). IfGB_FEATURESis empty or unset, all features are used. Filtering is applied in order:INCLUDE: mapping of qualifier names to sequences of values. If present, only features that match at least one key/value pair inINCLUDEare included in the analyses. For example, havingINCLUDE: {gene: [S, N]}keeps features whosegenequalifier equalsSorN.EXCLUDE: mapping of qualifier names to sequences of values. AfterINCLUDEis applied, any feature that matches any key/value pair inEXCLUDEis omitted. For example, havingEXCLUDE: {gene: [S, N]}removes features whosegenequalifier equalsSorN.
ANNOTATION: settings for variant annotation and functional effect prediction using SnpEff, which usesALIGNMENT_REFERENCEfor selecting the database to annotate.SNPEFF_COLS: mapping of column names (which appear in result tables) to VCF fields (extracted after annotation with SnpSift). Some columns are hard-coded in the code, so removing them is not advised. Additional columns can be added as needed.FILTER_INCLUDE&FILTER_EXCLUDE: mapping of column names (fromSNPEFF_COLS) to lists of values used for filtering the annotated variants table.FILTER_INCLUDEis applied first, thenFILTER_EXCLUDE.FILTER_INCLUDE: keeps variants that match at least one listed value.FILTER_EXCLUDE: removes variant that matches any listed value.
VARIANT_NAME_PATTERN: string template used to build the variant name shown in the results table (columnVARIANT_NAME). The template is interpreted with glue and can use any column name fromSNPEFF_COLSand some R functions. For example,"{GENE}:{coalesce(HGVS_P, HGVS_C)}"creates names likeS:p.D614G(usingHGVS_Pwhen available, otherwiseHGVS_C).
GISAID: automatic context download configuration.CREDENTIALS: path of the GISAID credentials in YAML format.DATE_COLUMN: name of the column that contains sampling dates (YYYY-MM-DD) in the input target metadata.LOCATION_COLUMN: name of the column that contains sampling locations (e.g. city names) in the input target metadata.ACCESSION_COLUMN: name of the column that contains GISAID EPI identifiers in the input target metadata.
DIVERSITY_REPS: number of random sample subsets of the context dataset for the nucleotide diversity comparison.USE_BIONJ: use the BIONJ algorithm (Gascuel, 1997) instead of NJ (neighbor-joining; Saitou & Nei, 1987) to reconstruct phylogenetic trees from pairwise distances.COR: configuration for correlation analyses of allele frequency data over time and between variants. This parameter controls how correlation tests are performed using R’scor.testandcorfunctions (see R documentation).METHOD: correlation method to use. Valid options are “pearson” (default), “kendall”, or “spearman”.EXACT: boolean flag indicating whether to compute an exact p-value when possible. This option applies only to certain methods and may be set tonull(default) to let R decide automatically.
LOG_PY_FMT: logging format string for Python scripts.PLOTS: path of the R script that sets the design and style of data visualizations.PLOT_GENOME_REGIONS: path of a CSV file containing genome regions, e.g. SARS-CoV-2 non-structural protein (NSP) coordinates, for data visualization (columns:region,start,end).REPORT_QMD: path of the report template in Quarto markdown (QMD) format.REPORT_CSS: path of the report stylesheet definition in CSS format.
Workflow visualization
Snakemake enables easy visualization of workflows and rule relationships. The --rulegraph option outputs a DOT file that describes dependencies between rules. The example below produces an image using Graphviz:
snakemake --forceall --rulegraph | dot -Tpng >.rulegraph.png

The same graph can also be rendered with other tools such as snakevision (v0.1.0).
snakemake --forceall --rulegraph | snakevision -s all -o .rulegraph_sv.svg
The --dag option emits an directed acyclic graph (DAG) that corresponds to the rule instances that would be executed for the current dataset. The example below produces an image using Graphviz:
snakemake --forceall --dag | dot -Tpng >.dag.png

Run modes
To run the analysis with the default configuration, run the following command
(change the -c/--cores argument to use a different number of CPUs):
snakemake --use-conda -c4
To run the analysis in an HPC environment using SLURM, we provide a default SLURM profile configuration as an example that should be modified to fit your needs. Read more about Snakemake profiles here. To use the profile, install the Snakemake executor plugin for SLURM and run one of the following commands:
snakemake --slurm --profile profile/slurm # Snakemake v7
snakemake --profile profile/slurm # Snakemake v8+
Additionally, we offer the option of running the workflow within a containerized
environment using a pre-built Docker image,
provided that Apptainer/Singularity
is available on the system. This eliminates the need for further conda package
downloads and environment configuration.
To do that, simply add the option --use-apptainer to any of the previous commands.
Using Apptainer for running VIPERA in the Windows Subsystem for Linux (WSL)
may encounter errors due to the default file permissions configuration, which
conflicts with Snakemake’s containerized conda environment activation mechanism.
Thus, running the containerized VIPERA workflow on the WSL is not advised.
Additionally, certain known issues arise when utilizing non-default temporary
directories and Snakemake shadow directories. To address this issue, use the
default temporary directory (e.g. export TMPDIR=/tmp in Linux machines) and
specify the shadow prefix (--shadow-prefix /tmp) before executing the containerized workflow.
Linting and formatting
Linting results
1Lints for snakefile /tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/common.smk:
2 * Absolute path "/"sequences.fasta" in line 52:
3 Do not define absolute paths inside of the workflow, since this renders
4 your workflow irreproducible on other machines. Use path relative to the
5 working directory instead, or make the path configurable via a config
6 file.
7 Also see:
8 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
9
10Lints for snakefile /tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/fasta.smk:
11 * Absolute path "/g" in line 28:
12 Do not define absolute paths inside of the workflow, since this renders
13 your workflow irreproducible on other machines. Use path relative to the
14 working directory instead, or make the path configurable via a config
15 file.
16 Also see:
17 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
18 * Absolute path "/f" in line 55:
19 Do not define absolute paths inside of the workflow, since this renders
20 your workflow irreproducible on other machines. Use path relative to the
21 working directory instead, or make the path configurable via a config
22 file.
23 Also see:
24 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
25 * Absolute path "/f" in line 70:
26 Do not define absolute paths inside of the workflow, since this renders
27 your workflow irreproducible on other machines. Use path relative to the
28 working directory instead, or make the path configurable via a config
29 file.
30 Also see:
31 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
32 * Absolute path "/f" in line 74:
33 Do not define absolute paths inside of the workflow, since this renders
34 your workflow irreproducible on other machines. Use path relative to the
35 working directory instead, or make the path configurable via a config
36 file.
37 Also see:
38 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
39
40Lints for snakefile /tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/asr.smk:
41 * Absolute path "/f" in line 11:
42 Do not define absolute paths inside of the workflow, since this renders
43 your workflow irreproducible on other machines. Use path relative to the
44 working directory instead, or make the path configurable via a config
45 file.
46 Also see:
47 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
48 * Absolute path "/f" in line 14:
49 Do not define absolute paths inside of the workflow, since this renders
50 your workflow irreproducible on other machines. Use path relative to the
51 working directory instead, or make the path configurable via a config
52 file.
53 Also see:
54 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
55 * Absolute path "/f" in line 33:
56 Do not define absolute paths inside of the workflow, since this renders
57 your workflow irreproducible on other machines. Use path relative to the
58 working directory instead, or make the path configurable via a config
59 file.
60 Also see:
61 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
62
63Lints for snakefile /tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/demix.smk:
64 * Absolute path "/"freyja_data" in line 9:
65 Do not define absolute paths inside of the workflow, since this renders
66 your workflow irreproducible on other machines. Use path relative to the
67 working directory instead, or make the path configurable via a config
68 file.
69 Also see:
70 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
71 * Absolute path "/"freyja_data" in line 10:
72 Do not define absolute paths inside of the workflow, since this renders
73 your workflow irreproducible on other machines. Use path relative to the
74 working directory instead, or make the path configurable via a config
75 file.
76 Also see:
77 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
78 * Absolute path "/"freyja_data" in line 11:
79 Do not define absolute paths inside of the workflow, since this renders
80 your workflow irreproducible on other machines. Use path relative to the
81 working directory instead, or make the path configurable via a config
82 file.
83 Also see:
84 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
85 * Absolute path "/"freyja_data" in line 12:
86 Do not define absolute paths inside of the workflow, since this renders
87 your workflow irreproducible on other machines. Use path relative to the
88 working directory instead, or make the path configurable via a config
89 file.
90 Also see:
91 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
92 * Absolute path "/"freyja_data" in line 13:
93 Do not define absolute paths inside of the workflow, since this renders
94 your workflow irreproducible on other machines. Use path relative to the
95 working directory instead, or make the path configurable via a config
96 file.
97 Also see:
98 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
99 * Absolute path "/"freyja_data" in line 14:
100 Do not define absolute paths inside of the workflow, since this renders
101 your workflow irreproducible on other machines. Use path relative to the
102 working directory instead, or make the path configurable via a config
103 file.
104 Also see:
105 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
106 * Absolute path "/"freyja_data" in line 15:
107 Do not define absolute paths inside of the workflow, since this renders
108 your workflow irreproducible on other machines. Use path relative to the
109 working directory instead, or make the path configurable via a config
110 file.
111 Also see:
112 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
113 * Absolute path "/"{sample}/{sample}_depth.txt" in line 34:
114 Do not define absolute paths inside of the workflow, since this renders
115 your workflow irreproducible on other machines. Use path relative to the
116 working directory instead, or make the path configurable via a config
117 file.
118 Also see:
119 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
120 * Absolute path "/"{sample}/{sample}_variants.tsv" in line 35:
121 Do not define absolute paths inside of the workflow, since this renders
122 your workflow irreproducible on other machines. Use path relative to the
123 working directory instead, or make the path configurable via a config
124 file.
125 Also see:
126 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
127 * Absolute path "/"{sample}/{sample}_depth.txt" in line 52:
128 Do not define absolute paths inside of the workflow, since this renders
129 your workflow irreproducible on other machines. Use path relative to the
130 working directory instead, or make the path configurable via a config
131 file.
132 Also see:
133 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
134 * Absolute path "/"{sample}/{sample}_variants.tsv" in line 53:
135 Do not define absolute paths inside of the workflow, since this renders
136 your workflow irreproducible on other machines. Use path relative to the
137 working directory instead, or make the path configurable via a config
138 file.
139 Also see:
140 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
141 * Absolute path "/"freyja_data" in line 54:
142 Do not define absolute paths inside of the workflow, since this renders
143 your workflow irreproducible on other machines. Use path relative to the
144 working directory instead, or make the path configurable via a config
145 file.
146 Also see:
147 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
148 * Absolute path "/"freyja_data" in line 55:
149 Do not define absolute paths inside of the workflow, since this renders
150 your workflow irreproducible on other machines. Use path relative to the
151 working directory instead, or make the path configurable via a config
152 file.
153 Also see:
154 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
155 * Absolute path "/"freyja_data" in line 56:
156 Do not define absolute paths inside of the workflow, since this renders
157 your workflow irreproducible on other machines. Use path relative to the
158 working directory instead, or make the path configurable via a config
159 file.
160 Also see:
161 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
162 * Absolute path "/"samples" in line 67:
163 Do not define absolute paths inside of the workflow, since this renders
164 your workflow irreproducible on other machines. Use path relative to the
165 working directory instead, or make the path configurable via a config
166 file.
167 Also see:
168 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
169 * Absolute path "/"samples" in line 95:
170 Do not define absolute paths inside of the workflow, since this renders
171 your workflow irreproducible on other machines. Use path relative to the
172 working directory instead, or make the path configurable via a config
173 file.
174 Also see:
175 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
176 * Absolute path "/"summary.csv" in line 97:
177 Do not define absolute paths inside of the workflow, since this renders
178 your workflow irreproducible on other machines. Use path relative to the
179 working directory instead, or make the path configurable via a config
180 file.
181 Also see:
182 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
183
184Lints for snakefile /tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/vaf.smk:
185 * Absolute path "/"{sample}.tsv" in line 17:
186 Do not define absolute paths inside of the workflow, since this renders
187 your workflow irreproducible on other machines. Use path relative to the
188 working directory instead, or make the path configurable via a config
189 file.
190 Also see:
191 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
192 * Absolute path "/g" in line 30:
193 Do not define absolute paths inside of the workflow, since this renders
194 your workflow irreproducible on other machines. Use path relative to the
195 working directory instead, or make the path configurable via a config
196 file.
197 Also see:
198 https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
199 * Absolute path "/"{sample}.tsv" in line 61:
200 Do not define absolute paths inside of the workflow, since this renders
201
202... (truncated)
Formatting results
1[DEBUG]
2[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/fetch.smk": Formatted content is different from original
3[DEBUG]
4[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/pangolin.smk": Formatted content is different from original
5[DEBUG]
6[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/Snakefile": Formatted content is different from original
7[DEBUG]
8[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/vaf.smk": Formatted content is different from original
9[DEBUG]
10[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/distances.smk": Formatted content is different from original
11[DEBUG]
12[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/demix.smk": Formatted content is different from original
13[DEBUG]
14[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/context.smk": Formatted content is different from original
15[DEBUG]
16[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/fasta.smk": Formatted content is different from original
17[DEBUG]
18[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/common.smk": Formatted content is different from original
19[DEBUG]
20[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/evolution.smk": Formatted content is different from original
21[DEBUG]
22[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/report.smk": Formatted content is different from original
23[DEBUG]
24[DEBUG] In file "/tmp/tmpa7deqqcu/PathoGenOmics-Lab-VIPERA-e7d89b5/workflow/rules/asr.smk": Formatted content is different from original
25[INFO] 12 file(s) would be changed 😬
26
27snakefmt version: 0.11.2