boulardlab/3t-seq
A Snakemake workflow for single copy gene, transposable elements and tRNA expression analysis
Overview
Latest release: v2.0.0, Last update: 2026-11-04
Share link: https://snakemake.github.io/snakemake-workflow-catalog?wf=boulardlab/3t-seq
Quality control: linting: failed formatting: passed
Topics: bioinformatics-pipeline rna-seq-analysis snakemake transposable-elements trna
Wrappers: utils/datavzrd
Deployment
Step 1: Install Snakemake and Snakedeploy
Snakemake and Snakedeploy are best installed via the Conda package manager. 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/boulardlab/3t-seq . --tag v2.0.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
To run the workflow using a combination of conda and apptainer/singularity for software deployment, use
snakemake --cores all --sdm conda apptainer
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.
See below for an example config file with explanation of each option and description of common use-cases. For a complete, exhaustive guide on all available parameters, please refer to the Full Configuration Documentation.
Coming from 3t-seq 1.x? See the migration guide for the old -> new key mapping.
Configuration Validation
3t-seq includes a built-in schema validator to ensure your config.yaml is correctly formatted before running the full pipeline. You can run the validator using:
pixi run lint
Files in this folder
File |
Purpose |
|---|---|
Commented template with every option. Copy it (e.g. to |
|
Full-genome analysis of the public GSE130735 dataset that the integration test is subsampled from. |
cp config/config.yaml config/my_config.yaml
pixi run snakemake --profile profile/default --configfile config/my_config.yaml
A minimal example
globals:
results_folder: results/
# A list of comparisons to process.
# Each item groups a set of samples, listed in 'sample_sheet', under a unique 'name'.
# Tool parameter overrides (trimmomatic, star, bamCoverage, starTE_random, starTE_multihit, strandedness, deseq2) are optional per-comparison
# and fall back to pipeline defaults defined in the schema if omitted.
comparisons:
- name: GSE130735
protocol: pe # required: pe (paired-end) or se (single-end)
sample_sheet: sample-sheet.csv
# Optional comparison-level overrides:
deseq2:
variable: cell_type # This overrides the global default 'genotype' for this comparison
genome:
label: mm10
How 3t-seq resolves reads paths
The pipeline relies primarily on the paths provided in your sample sheet to locate input read files.
For each sample, you can provide paths in the filename (for single-end) or filename_1 and filename_2 (for paired-end) columns. Which columns are read depends on the comparison’s protocol in the config (pe for paired-end, otherwise single-end).
These paths can be provided in several flexible formats:
Absolute Paths: If an absolute path (e.g.
/data/my_experiment/reads/sample1_R1.fq.gz) is provided, 3t-seq will use it directly.Relative Paths: If a relative path is provided, 3t-seq will resolve it relative to the current working directory.
Note: You do not need to provide the file extension (.fastq.gz, .fq.gz, etc.) if you don’t want to. 3t-seq will automatically test standard fastq extensions if the exact path specified doesn’t exist.
Because 3t-seq now relies on explicit paths in the sample sheet, you do not need to rename your raw data files or move them into rigid directory structures.
Sample Sheet Format
The sample sheet is a CSV file. It must contain a name column representing the sample ID, and either:
A
filenamecolumn for single-end libraries.filename_1andfilename_2columns for paired-end libraries.
Example (Absolute Paths):
name,filename_1,filename_2,genotype
sampleA,/data/raw/batch1/A_read1.fq.gz,/data/raw/batch1/A_read2.fq.gz,WT
sampleB,/data/raw/batch1/B_read1.fq.gz,/data/raw/batch1/B_read2.fq.gz,KO
Built-in Reference Genomes via Refgenie
3t-seq now natively integrates with Refgenie to automatically retrieve and manage the supported reference genomes (mm10 and mm39).
To use this feature, simply provide the label in your configuration’s genome section and omit fasta_path and gtf_path. The pipeline will automatically fetch the FASTA and GTF files for that genome and symlink them into your results directory.
Note: You do not need to configure or set the $REFGENIE environment variable on your system; the pipeline handles initialization underneath the hood at runtime.
How to use custom local reference files
If you prefer to use your own reference files, you can override the Refgenie downloads by providing absolute paths to your local fasta_path and gtf_path. Keep the label: it is required and is still used to fetch the matching RepeatMasker and GtRNAdb annotations.
genome:
# Required: mm10 or mm39
label: mm10
# Provide an absolute path to your fasta:
fasta_path: /path/to/references/custom-mm10.fa
# Provide an absolute path to your gtf:
gtf_path: /path/to/references/custom-mm10.gtf
# Explicitly specify the annotation type (required for custom references)
annotation_type: ensembl
fasta_path, gtf_path and annotation_type must be provided together; the configuration validator rejects a config that sets only some of them.
Workflow parameters
The following table is automatically parsed from the workflow’s config.schema.y(a)ml file.
Parameter |
Type |
Description |
Required |
Default |
|---|---|---|---|---|
globals |
Global settings affecting the pipeline paths. |
yes |
||
. results_folder |
string |
Path to the main results folder where all pipeline outputs will be saved. |
yes |
|
defaults |
Global default parameters for all sequencing libraries. |
{} |
||
. strandedness |
integer |
Library strandedness (0: unstranded, 1: stranded, 2: reversely stranded). |
0 |
|
. starTE_random |
{} |
|||
. . outFilterMultimapNmax |
integer |
5000 |
||
. . winAnchorMultimapNmax |
integer |
5000 |
||
. . alignTranscriptsPerWindowNmax |
integer |
300 |
||
. starTE_multihit |
{} |
|||
. . outFilterMultimapNmax |
integer |
1 |
||
. . winAnchorMultimapNmax |
integer |
5000 |
||
. . alignTranscriptsPerWindowNmax |
integer |
3000 |
||
. deseq2 |
Default DESeq2 parameters. |
{} |
||
. . test |
string |
Wald |
||
. . variable |
string |
genotype |
||
. . reference_level |
string |
Control level of ‘variable’. Required for every comparison, here or in comparisons[].deseq2. |
||
comparisons |
array |
List of comparisons to process. Each comparison groups a set of samples (via a sample sheet) with its alignment and differential expression settings. |
yes |
|
genome |
Genome references. |
yes |
||
. label |
string |
Genome label, used in reference file names. Must be ‘mm10’ or ‘mm39’ when references are fetched automatically (no fasta_path/gtf_path). With custom fasta_path + gtf_path any label made of letters, digits, ‘.’, ‘_’ and ‘-’ is accepted. Required. |
yes |
|
. fasta_path |
string |
Local path to explicit genome fasta. |
||
. gtf_path |
string |
Local path to explicit genome GTF annotation. |
||
. annotation_type |
string |
Type of genome annotation. Required if custom fasta/gtf are provided. |
ensembl |
|
. selected_chromosomes |
[‘array’, ‘null’] |
List of chromosomes to process. If not provided, all chromosomes will be processed. |
||
disable_TE_analysis |
boolean |
Disable TE analysis. |
false |
|
disable_salmonTE_analysis |
boolean |
Disable SalmonTE analysis. |
false |
|
disable_tRNA_analysis |
boolean |
Disable tRNA analysis. |
false |
|
tRNA_quantification |
{} |
|||
. method |
string |
Method for tRNA quantification. |
yes |
standard |
. mimseq_params |
{} |
|||
. . max_mismatches |
number |
mimseq –max-mismatches: a fraction of read length (< 1) or a number of mismatches (>= 1). |
0.1 |
|
. . cluster_identity |
number |
mimseq –cluster-id: identity threshold for clustering tRNA genes when building the index. |
0.95 |
|
. . min_cov |
integer |
Minimum coverage required for a tRNA to be quantified. |
10 |
Linting and formatting
Linting results
1/home/runner/work/snakemake-workflow-catalog/snakemake-workflow-catalog/.pixi/envs/default/lib/python3.13/site-packages/google/auth/transport/grpc.py:43: FutureWarning: grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). Support for non-PQC environments is deprecated. In April 2027, google-auth will raise its minimum requirements to enforce grpcio >= 1.83.0. For more details on Google Cloud's post-quantum security migration, visit: https://cloud.google.com/security/resources/post-quantum-cryptography
2 warnings.warn(
3ImportError in file "/tmp/tmpi4_vtkuj/boulardlab-3t-seq-cfc778c/workflow/rules/common.smk", line 9:
4cannot import name 'Wildcards' from 'snakemake.io' (/home/runner/work/snakemake-workflow-catalog/snakemake-workflow-catalog/.pixi/envs/default/lib/python3.13/site-packages/snakemake/io/__init__.py)
5 File "/tmp/tmpi4_vtkuj/boulardlab-3t-seq-cfc778c/workflow/rules/common.smk", line 9, in <module>
Formatting results
All tests passed!