diff --git a/.gitattributes b/.gitattributes
index 7fe55006..d746be2f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,3 @@
+# GitHub syntax highlighting
+pixi.lock linguist-language=YAML linguist-generated=true
*.config linguist-language=nextflow
diff --git a/.gitignore b/.gitignore
index 1fa50a5a..6f946f7f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,19 @@
+# Nextflow files
.nextflow*
work/
-results/
\ No newline at end of file
+
+# Pipeline files
+results/
+*_cache/
+
+# Pixi environments
+.pixi/
+*.egg-info
+
+# nf-test files
+.nf-test.log
+.nf-test/
+
+# misc
+.DS_Store
+.screenrc
diff --git a/assets/assembly_report.qmd b/assets/assembly_report.qmd
deleted file mode 100644
index ef5d6650..00000000
--- a/assets/assembly_report.qmd
+++ /dev/null
@@ -1,84 +0,0 @@
----
-format:
- html:
- embed-resources: true
-
-params:
- species: 'Species'
- data_path : '.'
----
-
-# Assembly report (`r params$species`)
-
-## General
-
-- ToLID:
-- Species Name:
-- Class:
-- Order:
-
-## Genome Traits
-
-- Haploid Genome Size:
-- Haploid Number:
-- Ploidy:
-- Sample Sex:
-
-## EBP Metrics and curation notes
-
-- Table of Assembly standards
- - Metrics flagged as red ( below EBP standards )
-- Curator notes
-- Contaminants detected
-- Other observations
-
-## Data Profile
-
-### Data inspection
-
-- Table of Coverage ( HiFi, ONT, Bionano, HiC )
-- Total base sequenced
-- Sequence distribution
-- GenomeScope plot
-
-### Data preprocessing
-
-- Table of Coverage ( HiFi, ONT, Bionano, HiC )
-- Total base sequenced
-- Sequence distribution
-- GenomeScope plot
-
-### Raw assembly metrics
-
-- Assembly metrics
-- Mitochondria metrics
-- Chloroplast metrics
-
-### Contamination screening
-
-- FCS metrics
-
-### Duplicate purging
-
-## Assembly pipeline
-
-- Tool version table ( Hifiasm, purge_dups, bionano, YaHS )
-
-## Curation pipeline
-
-- Tool version table ( GRIT_rapid, HiGlass )
-
-## Metrics Table
-
-- Hi Contact Map
-- Kmer Spectra
-- Blob ( Bubble ) of cov vs gc.
-
-
-
- Table of assembly standards met
- Sequence metrics ( from ? )
- Total sequence data
- Sequence distribution
- Expected coverage ( total bases / estimated genome size )
- GenomeScope
diff --git a/assets/notebooks/assembly_report.qmd b/assets/notebooks/assembly_report.qmd
new file mode 100644
index 00000000..508cd001
--- /dev/null
+++ b/assets/notebooks/assembly_report.qmd
@@ -0,0 +1,799 @@
+---
+title: 'Earth Biogenome Project'
+subtitle: 'NBIS Assembly Report'
+date: today
+toc: true
+toc-location: left
+
+engine: 'jupyter'
+
+execute:
+ echo: false
+ warning: true
+
+format:
+ html:
+ embed-resources: true
+ theme:
+ light: minty
+ dark: darkly
+ gfm:
+ preview-mode: raw
+---
+
+## Introduction
+
+This assembly report has been prepared by the National Bioinformatics Infrastructure Sweden
+(NBIS) as part of the Earth Biogenome Project workflow.
+
+The purpose of this report is to guide you through the analysis process, rather than merely
+summarizing tool logs. If you have any suggestions or feedback, please submit a feature
+request at [NBIS Earth Biogenome Project - Issues](https://github.com/NBISweden/Earth-Biogenome-Project-pilot/issues).
+
+::::: {.content-visible when-meta="diagnostics"}
+
+### Setup
+
+This [Quarto notebook](https://quarto.org/) establishes default parameters
+in this section and utilizes the MultiQC Python package to locate log files
+from tools executed within the workflow.
+
+```{python}
+#| tags: [parameters]
+
+log_path = 'log_files'
+inspect = True
+preprocess = True
+assemble = True
+screen = True
+purge = True
+polish = True
+scaffold = True
+curate = True
+alignRNA = False
+diagnostics = False
+```
+
+#### MultiQC
+
+```{python}
+import glob
+import multiqc
+import os
+import pandas as pd
+from itertools import groupby
+from pprint import pprint
+from IPython.display import display # MQCPlot.show() returns a HTML object which needs to be forced to render in a cell
+from IPython.display import Image
+
+multiqc.reset() # Important for Quarto preview
+# Load a custom config
+multiqc.load_config(f"{log_path}/multiqc_assembly_report_config.yml")
+multiqc.parse_logs(log_path)
+
+# pprint pretty prints the dictionary
+pprint(multiqc.list_plots())
+pprint(multiqc.list_modules())
+
+# Write out report (If other parts error, we should at least have the summary)
+multiqc.write_report(
+ force=True,
+ output_dir=".",
+)
+```
+
+:::::
+
+## Species information
+
+To begin our analysis, let's explore the available species information. The following
+details are sourced from [Genomes on a Tree (GOAT)](https://goat.genomehubs.org/).
+
+```{python}
+if "dtol" in multiqc.list_modules():
+ display(multiqc.get_plot("dtol", "dtol-section").show())
+```
+
+### Genome Traits
+
+```{python}
+if "traits" in multiqc.list_modules():
+ display(multiqc.get_plot("traits", "traits-section").show())
+```
+
+::::: {.content-visible when-meta="inspect"}
+
+## Data inspection
+
+Let's ensure the quality of our input data.
+
+### Sequence data quantity
+
+* Do we have enough total sequence data?
+* Do we have enough long reads?
+
+#### HiFi
+
+::: {.callout-note title="Expectation" collapse="true"}
+For long read data (PacBio, ONT) we expect to see 15-20x coverage per haplotype, for a good assembly.
+:::
+
+```{python}
+# TODO data quantity table
+```
+#### Hi-C
+
+```{python}
+if "fastqc" in multiqc.list_modules():
+ display(multiqc.get_plot("fastqc", "Sequence Counts").show())
+else:
+ print("No Hi-C data available")
+```
+
+::: {.callout-note title="Expectation" collapse="true"}
+Arima-HiC (Arima Genomics)
+: Duplication levels expected to be ~10-30%.
+
+Dovetail Omni-C (Cantata Bio)
+: Duplication levels expected to be ~30-80%.
+:::
+
+```{python}
+if "fastqc" in multiqc.list_modules():
+ display(multiqc.get_plot("fastqc", "Sequence Duplication Levels").show())
+```
+
+#### HiFi vs Hi-C
+
+* Do our libraries have similar data content?
+```{python}
+Image(filename=glob.glob(f"{log_path}/*_katcomp.st.png")[0])
+```
+
+### Genomic screen
+
+* Do the libraries contain our expected organism.
+
+### Genomic characteristics
+
+We can glean a good amount of information about the sequenced species from the k-mer content of the data.
+
+#### Ploidy
+Does it show the correct ploidy?
+
+::: {.callout-note title="Interpretation" collapse="true"}
+A Kmer histogram counts the frequency of k-mers in the data. Some parts of the genome are unique, and
+there are expected to be *coverage* times copies of these k-mers in the data. If the organism is diploid,
+the regions unique to a haplotype should have *coverage* times copies of these k-mers, and regions shared
+between both haplotypes should have *coverage* times two copies of these k-mers. This leads to formations
+of peaks in the k-mer histogram. A haploid organism should have one peak, while a diploid should have two peaks.
+:::
+
+```{python}
+#| output: asis
+if inspect:
+ images = [
+ img
+ for pattern in ["log_plot", "linear_plot"]
+ for img in glob.glob(f"{log_path}/*_{pattern}.png")
+ ]
+
+ if len(images) == 0:
+ raise ValueError("No files found")
+
+ # Ensure we have multiples of 4 images
+ if len(images) % 4 != 0:
+ raise ValueError("There should be 4 images per GenomeScope2 process")
+
+ # Function to sort filenames
+ def sort_key(filename):
+ filename = os.path.basename(filename)
+ parts = filename.split("_")
+ # Order: linear < log, non-transformed < transformed
+ order = {"linear": 0, "log": 1}
+ transformed = 1 if "transformed" in parts else 0
+ return (" ".join(parts[:2]), transformed, order[parts[-2]])
+
+ # Sort filenames first
+ sorted_filenames = sorted(images, key=sort_key)
+
+ # Group by sample
+ grouped_filenames = {}
+ for key, group in groupby(
+ sorted_filenames, key=lambda x: " ".join(os.path.basename(x).split("_")[:2])
+ ):
+ grouped_filenames[key] = list(group)
+
+
+ # Function to format filenames
+ def format_filename(filename):
+ # return os.path.basename(filename).replace(".png", "").replace("_", " ")
+ return " ".join(os.path.basename(filename).split("_")[2:-1])
+
+ # Print grouped and sorted filenames
+ tabs = [] # tabbed panels
+ for sample, files in grouped_filenames.items():
+ # tabs.append(f"### {sample}")
+ tabs.append("::: {.panel-tabset}")
+ for image in files:
+ formatted_filename = format_filename(image)
+ tabs.append(f"## {formatted_filename}")
+ tabs.append(f"![{formatted_filename}]({image})")
+ tabs.append(":::")
+
+ markdown = "\n\n".join(tabs)
+ print(markdown)
+```
+
+#### SmudgePlot
+
+Does the smudgeplot indicate the expected ploidy?
+
+```{python}
+Image(filename=glob.glob(f"{log_path}/*_ploidyplot.st.png")[0])
+```
+
+#### GC content
+
+```{python}
+Image(filename=glob.glob(f"{log_path}/*_katgc.st.png")[0])
+```
+
+::: {.callout-note title="Expectation" collapse="true"}
+* Unexpected GC content value can indicate contamination.
+* Unexpected blobs(?) in the plot can indicate contamination.
+:::
+
+#### Hi-C
+
+```{python}
+if "fastqc" in multiqc.list_modules():
+ display(multiqc.get_plot("fastqc", "Per Sequence GC Content").show())
+```
+
+::: {.callout-note title="Expectation" collapse="true"}
+The peak GC content on the x-axis should be the same value
+as the peak on the HiFi KatGC plot on the y-axis.
+:::
+
+### Synthetic sequence content
+
+Do we see indications of synthetic sequences such as adaptors?
+
+#### HiFi
+
+TODO: FCS
+
+#### Hi-C
+```{python}
+if "fastqc" in multiqc.list_modules():
+ display(multiqc.get_plot("fastqc", "Adapter Content").show())
+```
+
+:::::
+
+::::: {.content-visible when-meta="preprocess"}
+
+## Data processing
+
+:::::
+
+::::: {.content-visible when-meta="assemble"}
+
+## Assembly
+
+### General comparison
+
+```{python}
+if "quast" in multiqc.list_modules():
+ display(multiqc.get_plot("quast", "Assembly Statistics").show())
+```
+
+```{python}
+if "quast" in multiqc.list_modules():
+ display(multiqc.get_plot("quast", "Number of Contigs").show())
+```
+
+### Best ranked assembly
+
+#### Assembly statistics
+
+```{python}
+#| output: asis
+raw_asm_stats = pd.read_csv(
+ glob.glob(f"{log_path}/*-raw-*.fasta.assembly_summary")[0],
+ sep="\t",
+ header=None,
+ names=["Metric","Value"]
+)
+raw_asm_t1=raw_asm_stats.iloc[[0, 31, 32]]
+print(raw_asm_t1.to_markdown(index=False))
+```
+```{python}
+#| output: asis
+raw_asm_t2=raw_asm_stats.iloc[1:12] # TODO Add conversion
+print(raw_asm_t2.to_markdown(index=False))
+```
+```{python}
+#| output: asis
+raw_asm_t3=raw_asm_stats.iloc[12:23] # TODO Add conversion
+print(raw_asm_t3.to_markdown(index=False))
+```
+```{python}
+#| output: asis
+raw_asm_t4=raw_asm_stats.iloc[24:31] # TODO Add conversion
+print(raw_asm_t4.to_markdown(index=False))
+```
+
+#### Assembly k-mer completeness
+
+```{python}
+#| output: asis
+print(
+ pd.read_csv(
+ glob.glob(f"{log_path}/*-raw-default_merquryfk.completeness.stats")[0], sep="\t"
+ ).to_markdown(index=False)
+)
+```
+
+```{python}
+if "hifiasm" in multiqc.list_modules():
+ display(multiqc.get_plot("hifiasm", "HiFiasm kmer graph").show())
+```
+
+##### Assembly quality value
+
+```{python}
+#| output: asis
+print(
+ pd.read_csv(
+ glob.glob(f"{log_path}/*-raw-default_merquryfk.qv")[0], sep="\t"
+ ).to_markdown(index=False)
+)
+```
+
+
+QV per scaffold
+
+```{python}
+#| output: asis
+qvs = []
+for qv_file in glob.glob(f"{log_path}/*-raw-default_merqury.*.qv"):
+ if os.path.getsize(qv_file) > 0:
+ qvs.append(
+ pd.read_csv(
+ qv_file,
+ sep="\t",
+ header=None,
+ names=[
+ "Scaffold",
+ "No support k-mers",
+ "Total k-mers",
+ "QV",
+ "Error rate",
+ ],
+ dtype={
+ "Scaffold": str,
+ "No support k-mers": int,
+ "Total k-mers": int,
+ "QV": float,
+ "Error rate": float,
+ },
+ na_values=["", "inf"],
+ )
+ )
+if qvs:
+ per_scaffold_qv_raw = pd.concat(qvs, ignore_index=True)
+ print(per_scaffold_qv_raw.to_markdown(index=False))
+else:
+ print("No per scaffold qv found")
+```
+
+
+
+##### Copy number spectra
+
+:::: {.panel-tabset}
+
+## MerquryFK
+
+```{python}
+# TODO account for multiple assemblers
+# TODO: Add ln plot too see the relative contribution
+Image(filename=glob.glob(f"{log_path}/*-raw-default_merquryfk.*.spectra-cn.st.png")[0])
+```
+
+## Merqury
+
+```{python}
+# TODO This path will be different depending on phased or not
+Image(filename=glob.glob(f"{log_path}/*-raw-default_merqury.*.spectra-cn.st.png")[0])
+```
+
+::::
+
+##### Assembly spectra
+
+:::: {.panel-tabset}
+
+## MerquryFK
+
+```{python}
+# TODO account for multiple assemblers
+Image(filename=glob.glob(f"{log_path}/*-raw-default_merquryfk.spectra-asm.st.png")[0])
+```
+
+## Merqury
+
+```{python}
+Image(filename=glob.glob(f"{log_path}/*-raw-default_merqury.spectra-asm.st.png")[0])
+```
+
+::::
+
+##### False duplications
+
+```{python}
+#| output: asis
+print(
+ pd.read_csv(
+ glob.glob(f"{log_path}/*-raw-default_merquryfk.false_duplications.tsv")[0], sep="\t"
+ ).to_markdown(index=False)
+)
+```
+
+#### Assembly gene space completeness
+
+```{python}
+if "busco" in multiqc.list_modules():
+ for lineage in multiqc.list_plots()["busco"]:
+ display(multiqc.get_plot("busco", f"{lineage}").show())
+```
+
+### Other assemblies
+TODO for each assembly output a stats section (expandable).
+
+## Organelle detection
+
+:::::
+
+::::: {.content-visible when-meta="screen"}
+
+## Contamination Screen
+
+:::::
+
+::::: {.content-visible when-meta="purge"}
+
+## Duplication purging
+
+### Purge dups
+
+::: {.callout-note title="Interpretation" collapse="true"}
+
+X-axis (Read Depth)
+: This axis represents the read depth, which is the number of times a particular base is covered by reads. It typically starts from 0 and increases to the maximum read depth observed.
+
+Y-axis (Number of Positions)
+: This axis shows the number of positions in the assembly that have a specific read depth. Higher values indicate more positions with that particular read depth.
+
+Histogram Peaks
+: For a diploid organism, there should be a heterozgyous peak and a homozygous peak.
+
+ - **Heterozygous Peak**: The first major peak from the left usually represents the expected read depth for the heterozgyous portion of the genome, i.e., a haplotype.
+ - **Homozygous Peak**: The second major peak from the left usually represents the expected read depth for the homozygous portion, i.e.,
+ where the both alleles are the same.
+
+Cutoff Lines
+: The plot includes three vertical lines indicating coverage cutoffs. These cutoffs help distinguish between primary contigs, haplotigs, and potential contaminants or low-quality regions.
+
+ - **Low Coverage Cutoff**: Positions below this line are considered low coverage and might be errors or low-quality regions.
+ - **Haploid-Diploid Transition**: Marks the transition where average coverage denotes a heterozygous or homozygous region.
+ - **High Coverage Cutoff**: Positions above this line are considered high coverage and might indicate duplicated regions or haplotigs.
+
+Interpreting the Data
+:
+
+ - **JUNK**: Contigs with an average coverage below the low-coverage threshold.
+ - **HAPLOTIG**: Contigs with an average coverage between low coverage cutoff and the transition, that overlap with another region.
+ - **HIGHCOV**: Contigs with an average coverage above the high coverage cutoff.
+ - **REPEAT**: Repeat contig.
+ - **OVLP**: Overlap.
+
+:::
+
+```{python}
+Image(filename=glob.glob(f"{log_path}/*_purgedups_hist.png")[0])
+```
+
+```{python}
+#| output: asis
+assemblies = [ asm for asm in multiqc.list_samples() if asm.startswith("hifiasm-raw-default.asm.bp") ]
+assembly_size_mb = [ multiqc.get_module_data(module="quast",sample=f"{asm}")['Total length'] for asm in assemblies ]
+for bed in glob.glob(f"{log_path}/*-purged-*.dups.bed"):
+ dup_bed = pd.read_csv(
+ bed,
+ sep="\t",
+ names=['Contig','Start','End','Type','Partner']
+ )
+ dup_bed['Length'] = dup_bed['End'] - dup_bed['Start']
+ summary = dup_bed.groupby('Type')['Length'].sum().reset_index() # TODO Fix for multiple assemblies
+ summary['Percentage'] = summary['Length'].apply(lambda x: x * 100 / (assembly_size_mb[0] * 1000000) ).apply(lambda x: f"{x:.2f}%")
+ print(summary.to_markdown(index=False))
+```
+
+#### Assembly k-mer completeness
+
+```{python}
+#| output: asis
+print(
+ pd.read_csv(
+ glob.glob(f"{log_path}/*-purged-default_merquryfk.completeness.stats")[0], sep="\t"
+ ).to_markdown(index=False)
+)
+```
+
+##### Assembly quality value
+
+```{python}
+#| output: asis
+print(
+ pd.read_csv(
+ glob.glob(f"{log_path}/*-purged-default_merquryfk.qv")[0], sep="\t"
+ ).to_markdown(index=False)
+)
+```
+
+
+QV per scaffold
+
+```{python}
+#| output: asis
+qvs = []
+for qv_file in glob.glob(f"{log_path}/*-purged-default_merqury.*.qv"):
+ if os.path.getsize(qv_file) > 0:
+ qvs.append(
+ pd.read_csv(
+ qv_file,
+ sep="\t",
+ header=None,
+ names=[
+ "Scaffold",
+ "No support k-mers",
+ "Total k-mers",
+ "QV",
+ "Error rate",
+ ],
+ dtype={
+ "Scaffold": str,
+ "No support k-mers": int,
+ "Total k-mers": int,
+ "QV": float,
+ "Error rate": float,
+ },
+ na_values=["", "inf"],
+ )
+ )
+if qvs:
+ per_scaffold_qv_raw = pd.concat(qvs, ignore_index=True)
+ print(per_scaffold_qv_raw.to_markdown(index=False))
+else:
+ print("No per scaffold qv found")
+```
+
+
+
+##### Copy number spectra
+
+:::: {.panel-tabset}
+
+## MerquryFK
+
+```{python}
+# TODO Do we need separate for each fasta? This is combined
+Image(filename=glob.glob(f"{log_path}/*-purged-default_merquryfk.spectra-cn.st.png")[0])
+```
+
+## Merqury
+
+```{python}
+Image(filename=glob.glob(f"{log_path}/*-purged-default_merqury.spectra-cn.st.png")[0])
+```
+
+::::
+
+##### Assembly spectra
+
+:::: {.panel-tabset}
+
+## MerquryFK
+
+```{python}
+# TODO account for multiple assemblers
+Image(filename=glob.glob(f"{log_path}/*-purged-default_merquryfk.spectra-asm.st.png")[0])
+```
+
+## Merqury
+
+```{python}
+Image(filename=glob.glob(f"{log_path}/*-purged-default_merqury.spectra-asm.st.png")[0])
+```
+
+::::
+
+##### False duplications
+
+```{python}
+#| output: asis
+print(
+ pd.read_csv(
+ glob.glob(f"{log_path}/*-purged-default_merquryfk.false_duplications.tsv")[0], sep="\t"
+ ).to_markdown(index=False)
+)
+```
+
+:::::
+
+::::: {.content-visible when-meta="polish"}
+
+## Polishing
+
+:::::
+
+::::: {.content-visible when-meta="scaffold"}
+
+## Scaffolding
+
+### Pairtools
+
+```{python}
+if "pairtools" in multiqc.list_modules():
+ display(multiqc.get_plot("pairtools", "Pairs by alignment status").show())
+```
+
+```{python}
+if "pairtools" in multiqc.list_modules():
+ display(multiqc.get_plot("pairtools", "Fraction of read pairs by strand orientation").show())
+```
+
+```{python}
+if "pairtools" in multiqc.list_modules():
+ display(multiqc.get_plot("pairtools", "Pre-filtered pairs as a function of genomic separation (in detail)").show())
+```
+
+
+#### Assembly k-mer completeness
+
+```{python}
+#| output: asis
+print(
+ pd.read_csv(
+ glob.glob(f"{log_path}/*-scaffolded-default_merquryfk.completeness.stats")[0], sep="\t"
+ ).to_markdown(index=False)
+)
+```
+
+##### Assembly quality value
+
+```{python}
+#| output: asis
+print(
+ pd.read_csv(
+ glob.glob(f"{log_path}/*-scaffolded-default_merquryfk.qv")[0], sep="\t"
+ ).to_markdown(index=False)
+)
+```
+
+
+QV per scaffold
+
+```{python}
+#| output: asis
+qvs = []
+for qv_file in glob.glob(f"{log_path}/*-scaffolded-default_merqury.*.qv"):
+ if os.path.getsize(qv_file) > 0:
+ qvs.append(
+ pd.read_csv(
+ qv_file,
+ sep="\t",
+ header=None,
+ names=[
+ "Scaffold",
+ "No support k-mers",
+ "Total k-mers",
+ "QV",
+ "Error rate",
+ ],
+ dtype={
+ "Scaffold": str,
+ "No support k-mers": int,
+ "Total k-mers": int,
+ "QV": float,
+ "Error rate": float,
+ },
+ na_values=["", "inf"],
+ )
+ )
+if qvs:
+ per_scaffold_qv_raw = pd.concat(qvs, ignore_index=True)
+ print(per_scaffold_qv_raw.to_markdown(index=False))
+else:
+ print("No per scaffold qv found")
+```
+
+
+
+##### Copy number spectra
+
+:::: {.panel-tabset}
+
+## MerquryFK
+
+```{python}
+# TODO Do we need for each fasta. This is combined fastas
+Image(filename=glob.glob(f"{log_path}/*-scaffolded-default_merquryfk.spectra-cn.st.png")[0])
+```
+
+## Merqury
+
+```{python}
+Image(filename=glob.glob(f"{log_path}/*-scaffolded-default_merqury.spectra-cn.st.png")[0])
+```
+
+::::
+
+##### Assembly spectra
+
+:::: {.panel-tabset}
+
+## MerquryFK
+
+```{python}
+# TODO account for multiple assemblers
+Image(filename=glob.glob(f"{log_path}/*-scaffolded-default_merquryfk.spectra-asm.st.png")[0])
+```
+
+## Merqury
+
+```{python}
+Image(filename=glob.glob(f"{log_path}/*-scaffolded-default_merqury.spectra-asm.st.png")[0])
+```
+
+::::
+
+##### False duplications
+
+```{python}
+#| output: asis
+print(
+ pd.read_csv(
+ glob.glob(f"{log_path}/*-scaffolded-default_merquryfk.false_duplications.tsv")[0], sep="\t"
+ ).to_markdown(index=False)
+)
+```
+
+:::::
+
+::::: {.content-visible when-meta="curate"}
+
+## Curation
+
+:::::
+
+## Summary
+
+### EBP Metrics and curation notes
+
+- Table of Assembly standards
+ - Metrics flagged as red ( below EBP standards )
+- Curator notes
+- Contaminants detected
+- Other observations
+
+### Assembly pipeline
+
+- Tool version table ( Hifiasm, purge_dups, bionano, YaHS )
+
+## Curation pipeline
+
+- Tool version table ( GRIT_rapid, HiGlass )
diff --git a/bin/filter_five_end.pl b/bin/filter_five_end.pl
new file mode 100644
index 00000000..191f5824
--- /dev/null
+++ b/bin/filter_five_end.pl
@@ -0,0 +1,112 @@
+#!/usr/bin/perl
+
+# Portions of this code adapted from Sanger Institute's "curationpretext" (https://github.com/sanger-tol/curationpretext)
+# and Arima Genomics' "mapping_pipeline" (https://github.com/ArimaGenomics/mapping_pipeline)
+
+use strict;
+use warnings;
+
+my $prev_id = "";
+my @five;
+my @three;
+my @unmap;
+my @mid;
+my @all;
+my $counter = 0;
+
+while (){
+ chomp;
+ if (/^@/){
+ print($_ . "\n");
+ next;
+ }
+ my ($id, $flag, $chr_from, $loc_from, $mapq, $cigar, $d1, $d2, $d3, $read, $read_qual, @rest) = split(/\t/);
+ my $bin = reverse(dec2bin($flag));
+ my @binary = split(//, $bin);
+ if ($prev_id ne $id && $prev_id ne ""){
+ if ($counter == 1){
+ if (@five == 1){
+ print($five[0] . "\n");
+ }
+ else{
+ my ($id_1, $flag_1, $chr_from_1, $loc_from_1, $mapq_1, $cigar_1, $d1_1, $d2_1, $d3_1, $read_1, $read_qual_1, @rest_1) = split(/\t/, $all[0]);
+ my $bin_1 = reverse(dec2bin($flag_1));
+ my @binary_1 = split(//, $bin_1);
+ $binary_1[2] = 1;
+ my $bin_1_new = reverse(join("",@binary_1));
+ my $flag_1_new = bin2dec($bin_1_new);
+ print(join("\t", $id_1, $flag_1_new, $chr_from_1, $loc_from_1, $mapq_1, $cigar_1, $d1_1, $d2_1, $d3_1, $read_1, $read_qual_1, @rest_1) . "\n");
+ }
+ }
+ elsif ($counter == 2 && @five == 1){
+ print($five[0] . "\n");
+ }
+ else{
+ my ($id_1, $flag_1, $chr_from_1, $loc_from_1, $mapq_1, $cigar_1, $d1_1, $d2_1, $d3_1, $read_1, $read_qual_1, @rest_1) = split(/\t/, $all[0]);
+ my $bin_1 = reverse(dec2bin($flag_1));
+ my @binary_1 = split(//, $bin_1);
+ $binary_1[2] = 1;
+ my $bin_1_new = reverse(join("", @binary_1));
+ my $flag_1_new = bin2dec($bin_1_new);
+ print(join("\t", $id_1, $flag_1_new, $chr_from_1, $loc_from_1, $mapq_1, $cigar_1, $d1_1, $d2_1, $d3_1, $read_1, $read_qual_1, @rest_1) . "\n");
+ }
+
+ $counter = 0;
+ undef @unmap;
+ undef @five;
+ undef @three;
+ undef @mid;
+ undef @all;
+ }
+
+ $counter++;
+ $prev_id = $id;
+ push(@all, $_);
+ if ($binary[2] == 1){
+ push @unmap,$_;
+ }
+ elsif ($binary[4] == 0 && $cigar =~ m/^[0-9]*M/ || $binary[4] == 1 && $cigar =~ m/.*M$/){
+ push(@five, $_);
+ }
+ elsif ($binary[4] == 1 && $cigar =~ m/^[0-9]*M/ || $binary[4] == 0 && $cigar =~ m/.*M$/){
+ push(@three, $_);
+ }
+ elsif ($cigar =~ m/^[0-9]*[HS].*M.*[HS]$/){
+ push(@mid, $_);
+ }
+}
+
+if ($counter == 1){
+ if (@five == 1){
+ print($five[0] . "\n");
+ }
+ else{
+ my ($id_1, $flag_1, $chr_from_1, $loc_from_1, $mapq_1, $cigar_1, $d1_1, $d2_1, $d3_1, $read_1, $read_qual_1, @rest_1) = split(/\t/, $all[0]);
+ my $bin_1 = reverse(dec2bin($flag_1));
+ my @binary_1 = split(//, $bin_1);
+ $binary_1[2] = 1;
+ my $bin_1_new = reverse(join("", @binary_1));
+ my $flag_1_new = bin2dec($bin_1_new);
+ print(join("\t", $id_1, $flag_1_new, $chr_from_1, $loc_from_1, $mapq_1, $cigar_1, $d1_1, $d2_1, $d3_1, $read_1, $read_qual_1, @rest_1) . "\n");
+ }
+}
+elsif ($counter == 2 && @five == 1){
+ print($five[0] . "\n");
+}
+else{
+ my ($id_1, $flag_1, $chr_from_1, $loc_from_1, $mapq_1, $cigar_1, $d1_1, $d2_1, $d3_1, $read_1, $read_qual_1, @rest_1) = split(/\t/, $all[0]);
+ my $bin_1 = reverse(dec2bin($flag_1));
+ my @binary_1 = split(//, $bin_1);
+ $binary_1[2] = 1;
+ my $bin_1_new = reverse(join("", @binary_1));
+ my $flag_1_new = bin2dec($bin_1_new);
+ print(join("\t", $id_1, $flag_1_new, $chr_from_1, $loc_from_1, $mapq_1, $cigar_1, $d1_1, $d2_1, $d3_1, $read_1, $read_qual_1, @rest_1) . "\n");
+}
+
+sub dec2bin {
+ return unpack("B32", pack("N", shift));
+}
+
+sub bin2dec {
+ return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
+}
\ No newline at end of file
diff --git a/bin/two_read_bam_combiner_sanger.pl b/bin/two_read_bam_combiner_sanger.pl
new file mode 100644
index 00000000..4d9c028c
--- /dev/null
+++ b/bin/two_read_bam_combiner_sanger.pl
@@ -0,0 +1,135 @@
+#!/usr/bin/perl
+
+# Portions of this code adapted from Sanger Institute's "curationpretext" (https://github.com/sanger-tol/curationpretext)
+# and Arima Genomics' "mapping_pipeline" (https://github.com/ArimaGenomics/mapping_pipeline)
+
+use strict;
+
+MAIN : {
+
+ my ($read1_bam, $read2_bam, $samtools, $mq) = @ARGV;
+
+ if ((not defined $read1_bam) ||
+ (not defined $read2_bam)) {
+ die ("Usage: ./two_read_bam_combiner.pl \n");
+ }
+
+ open(FILE1,"$samtools view -h $read1_bam |");
+ open(FILE2,"$samtools view -h $read2_bam |");
+
+ my $line1 = ;
+ my $line2 = ;
+
+ my $counter = 0;
+ my $new_counter = 0;
+
+ while (defined $line1) {
+
+ if ($line1 =~ /^(\@)PG/){
+ print $line1;
+ $line1 = ;
+ $line2 = ;
+ next;
+ }
+
+ if ($line1 =~ /^(\@)SQ/ || $line1 =~ /^(\@)RG/){
+ if ($line1 ne $line2){print $line1;print $line2; die ("Inconsistent BAM headers. BAM files must be aligned to same reference.");}
+ else{
+ print $line1;
+ }
+ $line1 = ;
+ $line2 = ;
+ next;
+ }
+
+ $counter++;
+ if ($counter == ($new_counter + 1000000)) {
+ print STDERR $counter . "\n";
+ $new_counter = $counter;
+ }
+
+ chomp $line1;
+ chomp $line2;
+
+ my ($id1, $flag1, $chr_from1, $loc_from1, $mapq1, $cigar1, $d1_1, $d2_1, $d3_1, $read1, $read_qual1, @rest1) = split(/\t/,$line1);
+ my ($id2, $flag2, $chr_from2, $loc_from2, $mapq2, $cigar2, $d1_2, $d2_2, $d3_2, $read2, $read_qual2, @rest2) = split(/\t/,$line2);
+
+ if ($id1 ne $id2) {
+ die ("The read id's of the two files do not match up at line number $counter. Files should be from the same sample and sorted in identical order.\n");
+ }
+
+ my $bin1 = reverse(dec2bin($flag1));
+ my $bin2 = reverse(dec2bin($flag2));
+
+ my @binary1 = split(//,$bin1);
+ my @binary2 = split(//,$bin2);
+
+ my $trouble = 0;
+ if (($binary1[2] == 1) || ($mapq1 < $mq)) {
+ $trouble = 1;
+ }
+ if (($binary2[2]== 1) || ($mapq2 < $mq)) {
+ $trouble = 1;
+ }
+
+ my $proper_pair1;
+ my $proper_pair2;
+ my $dist1;
+ my $dist2;
+
+ if (($binary1[2] == 0) && ($binary2[2] == 0)) {
+ $proper_pair1 = 1;
+ $proper_pair2 = 1;
+ if ($chr_from1 eq $chr_from2) {
+ my $dist = abs($loc_from1 - $loc_from2);
+ if ($loc_from1 >= $loc_from2) {
+ $dist1 = -1*$dist;
+ $dist2 = $dist;
+ } else {
+ $dist1 = $dist;
+ $dist2 = -1*$dist;
+ }
+ } else {
+ $dist1 = 0;
+ $dist2 = 0;
+ }
+ } else {
+ $proper_pair1 = 0;
+ $proper_pair2 = 0;
+ $dist1 = 0;
+ $dist2 = 0;
+ }
+
+ my $new_bin1 = join("","000000000000000000000",$binary1[10],$binary1[9],"0","0","1",$binary2[4],$binary1[4],$binary2[2],$binary1[2],$proper_pair1,"1");
+ my $new_bin2 = join("","000000000000000000000",$binary2[10],$binary2[9],"0","1","0",$binary1[4],$binary2[4],$binary1[2],$binary2[2],$proper_pair2,"1");
+
+ my $new_flag1 = bin2dec($new_bin1);
+ my $new_flag2 = bin2dec($new_bin2);
+
+ unless ($trouble == 1) {
+
+ print(join("\t",$id1,$new_flag1,$chr_from1,$loc_from1,$mapq1,$cigar1,$chr_from2,$loc_from2,$dist1,$read1,$read_qual1,@rest1) . "\n");
+ print(join("\t",$id2,$new_flag2,$chr_from2,$loc_from2,$mapq2,$cigar2,$chr_from1,$loc_from1,$dist2,$read2,$read_qual2,@rest2) . "\n");
+
+ }
+
+ $line1 = ;
+ $line2 = ;
+
+ }
+
+}
+
+
+
+sub dec2bin {
+
+ my $str = unpack("B32", pack("N", shift));
+ return $str;
+
+}
+
+sub bin2dec {
+ return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
+}
+
diff --git a/configs/README.md b/configs/README.md
new file mode 100644
index 00000000..718d55bd
--- /dev/null
+++ b/configs/README.md
@@ -0,0 +1,46 @@
+# Configuration
+
+This folder contains workflow configuration files that affect various
+aspects of running this pipeline.
+
+These are all in some way included by the `nextflow.config`.
+
+## Test Profile
+
+The test profile is included through a profile called `test`, activated
+using `-profile test`. It runs most of the pipeline on a tiny test dataset,
+with reduced resources.
+
+## Site Profiles
+
+There are three site profiles included in this pipeline.
+
+- dardel.config: Resource requirements for the HPC cluster `dardel` at PDC.
+- uppmax.config: Resource requirements for the HPC cluster `rackham` at UPPMAX.
+- nac.config: Resource requirements for the HPC cluster `nac` at NBIS.
+
+Each of these include the config `tool_resources.config`, which can then
+be further customized by site. This is separate from the `test` profile
+which reduces the resource availability for all tools.
+
+## Modules config
+
+The `modules.config` supplies additional parameters to each module, such
+as file prefixes, additional tool options, and which files should be published
+where. This file extends the `nextflow.config`, supplying module specific
+configuration. Resource requirements should not be added here as they will
+also affect the test profile.
+
+## Overview
+
+```mermaid
+flowchart TD
+ nextflow <--o dardel
+ nextflow <--o uppmax
+ nextflow <--o nac
+ nextflow <--o test
+ dardel <--o tool_resources
+ uppmax <--o tool_resources
+ nac <--o tool_resources
+ nextflow <--- modules
+```
\ No newline at end of file
diff --git a/configs/dardel.config b/configs/dardel.config
index 7d8a9cb1..22d6d180 100644
--- a/configs/dardel.config
+++ b/configs/dardel.config
@@ -11,7 +11,7 @@ params {
def clusterOptionsCreator = { mem, time, cpus ->
List clusterOpts = [ "-A $params.project ${params.clusterOptions ?: ''}" ]
- if (time < 7.d && mem <= 222.GB && cpus < 256) {
+ if (time < 7.d && mem <= 111.GB && cpus < 256) {
clusterOpts << '-p shared'
} else if (time < 1.d) {
// Shortish
@@ -35,7 +35,31 @@ def clusterOptionsCreator = { mem, time, cpus ->
return clusterOpts.join(' ')
}
+includeConfig 'tool_resources.config'
+
process {
+ // resource limits are based on nodes on the shared partition of PDC dardel:
+ // CfgTRES=cpu=256,mem=237174M,
+ // MaxTime=7-00:00:00
+ // Processes that require more resources need to explicitly overwrite it,
+ // and use other partitions: e.g. long or memory
+ resourceLimits = [
+ memory: 222.GB,
+ cpus: 256,
+ time: 7.d
+ ]
+
+ // all processes that need more than the default resources need to be added here:
+ withName: 'FCSGX_RUNGX' {
+ cpus = 20
+ memory = 1024.GB
+ time = 1.h
+ resourceLimits = [
+ cpus: 20,
+ memory: 1024.GB,
+ time: 1.h
+ ]
+ }
executor = 'slurm'
clusterOptions = { clusterOptionsCreator(task.memory, task.time, task.cpus) }
// There is no node local storage, but there is a scratch space.
diff --git a/configs/modules.config b/configs/modules.config
index b831d034..c63b04a5 100644
--- a/configs/modules.config
+++ b/configs/modules.config
@@ -36,12 +36,12 @@ process {
// BUILD FASTK DATABASES
withName: 'BUILD_FASTK_HIFI_DATABASE:FASTK_FASTK' {
scratch = false // !Disable scratch to get around bug https://github.com/nextflow-io/nextflow/issues/2983
- ext.args = { "-t1 -k${params.fastk?.kmer_size?:31}" }
+ ext.args = { "-t1 -k${params.fastk?.kmer_size?:31} -P\$PWD -v" }
ext.prefix = { "${meta.id}_${reads instanceof List ? reads[0].baseName : reads.baseName}_hifi" }
}
withName: 'BUILD_FASTK_HIC_DATABASE:FASTK_FASTK' {
scratch = false // !Disable scratch to get around bug https://github.com/nextflow-io/nextflow/issues/2983
- ext.args = { "-t1 -k${params.fastk?.kmer_size?:31}" }
+ ext.args = { "-t1 -k${params.fastk?.kmer_size?:31} -P\$PWD -v" }
ext.prefix = { "${meta.id}_${reads instanceof List ? reads[0].baseName : reads.baseName}_hic" }
}
withName: 'BUILD_FASTK_HIFI_DATABASE:FASTK_MERGE' {
@@ -96,6 +96,7 @@ process {
// COMPARE_LIBRARIES
withName: 'MERQURYFK_KATCOMP' {
+ ext.prefix = { "${meta.id}_katcomp" }
publishDir = [
path: { "$params.outdir/$stage.inspect/kat_comp" },
mode: params.publish_mode,
@@ -174,7 +175,7 @@ process {
// COMPARE_ASSEMBLIES
withName: 'QUAST' {
- cpus = { Math.min(6, consensus instanceof List ? consensus.size() : 1 ) }
+ ext.prefix = { "${meta.id}_quast_report" }
publishDir = [
path: { "$params.outdir/$stage.assembly/quast" },
mode: params.publish_mode,
@@ -185,7 +186,7 @@ process {
// EVALUATE_RAW_ASSEMBLY
withName: 'EVALUATE_RAW_ASSEMBLY:MERQURYFK_MERQURYFK' {
tag = { meta.assembly.build }
- ext.prefix = { meta.assembly.build }
+ ext.prefix = { "${meta.assembly.build}_merquryfk" }
publishDir = [
path: { "$params.outdir/$stage.assembly/merquryfk/$meta.assembly.build" },
mode: params.publish_mode,
@@ -194,7 +195,7 @@ process {
}
withName: 'EVALUATE_RAW_ASSEMBLY:MERQURY' {
tag = { meta.assembly.build }
- ext.prefix = { meta.assembly.build }
+ ext.prefix = { "${meta.assembly.build}_merqury" }
publishDir = [
path: { "$params.outdir/$stage.assembly/merqury/$meta.assembly.build" },
mode: params.publish_mode,
@@ -210,13 +211,11 @@ process {
mode: params.publish_mode,
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
]
- time = 4.d
}
// FCS
withName: 'FCSGX_FETCHDB' {
storeDir = { params.cache }
- time = 2.d
}
withName: 'FCSGX_RUNGX' {
tag = { "${meta.assembly.build}-hap${meta.haplotype}" }
@@ -226,9 +225,6 @@ process {
mode: params.publish_mode,
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
]
- cpus = 20
- memory = 1024.GB
- time = 1.h
}
withName: 'FCSGX_CLEAN' {
tag = { "${meta.assembly.build}-hap${meta.haplotype}" }
@@ -257,7 +253,11 @@ process {
// kmer coverage is very close to read coverage w.r.t long read sequencing.
// kmer coverage is used as a proxy for read coverage here.
// kmer coverage is extracted from the GenomeScope model when available.
- ext.args = { meta.kmercov ? "-m ${meta.kmercov * 1.5} -u ${meta.kmercov * 3}" : "" }
+ ext.args = ''
+ // ext.args = { meta.kmercov ? "-m ${meta.kmercov * 1.5} -u ${meta.kmercov * 3}" : "" }
+ }
+ withName: 'PURGEDUPS_HISTPLOT' {
+ ext.prefix = { "${meta.id}_${meta.assembly.build}_purgedups_hist" }
}
withName: '(PURGEDUPS|MINIMAP2)_.*_PRIMARY' {
ext.prefix = { "${meta.id}_${meta.assembly.build}_hap0" }
@@ -281,7 +281,7 @@ process {
// EVALUATE_PURGED_ASSEMBLY
withName: 'EVALUATE_PURGED_ASSEMBLY:MERQURYFK_MERQURYFK' {
tag = { meta.assembly.build }
- ext.prefix = { meta.assembly.build }
+ ext.prefix = { "${meta.assembly.build}_merquryfk" }
publishDir = [
path: { "$params.outdir/$stage.purge/merquryfk/$meta.assembly.build" },
mode: params.publish_mode,
@@ -290,7 +290,7 @@ process {
}
withName: 'EVALUATE_PURGED_ASSEMBLY:MERQURY' {
tag = { meta.assembly.build }
- ext.prefix = { meta.assembly.build }
+ ext.prefix = { "${meta.assembly.build}_merqury" }
publishDir = [
path: { "$params.outdir/$stage.purge/merqury/$meta.assembly.build" },
mode: params.publish_mode,
@@ -306,7 +306,6 @@ process {
mode: params.publish_mode,
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
]
- time = 4.d
}
withName: 'STAR_ALIGN' {
@@ -319,6 +318,198 @@ process {
]
}
+ // scaffolding
+ withName: 'BWAMEM2_MEM_SCAFFOLD' {
+ ext.prefix = { "${meta.id}_${meta.assembly.build}_${reads.head().getBaseName(reads.head().name.endsWith(".gz") ? 2 : 1)}" }
+ ext.args = '-SP -T0'
+ ext.args2 = { sort_bam ? "--write-index" : "" }
+ }
+
+ withName: 'PAIRTOOLS_PARSE' {
+ ext.prefix = { "${bam.getBaseName()}" }
+ ext.args = { "--min-mapq 20 --walks-policy 5unique --max-inter-align-gap 30" }
+ publishDir = [
+ path: { "$params.outdir/$stage.scaffold/pairtools_parse/$meta.assembly.build" },
+ mode: params.publish_mode,
+ pattern: "*.pairsam.stat"
+ ]
+ }
+
+ withName: 'PAIRTOOLS_SORT' {
+ ext.prefix = { "${input.getBaseName(2)}" }
+ ext.args = { '--tmpdir=\$PWD' }
+ }
+
+ withName: 'PAIRTOOLS_MERGE' {
+ ext.prefix = { "${meta.id}_${meta.assembly.build}_merge" }
+ }
+
+ withName: 'PAIRTOOLS_DEDUP' {
+ ext.prefix = { "${meta.id}_${meta.assembly.build}_dedup" }
+ ext.args = '--mark-dups'
+ publishDir = [
+ path: { "$params.outdir/$stage.scaffold/pairtools_dedup/$meta.assembly.build" },
+ mode: params.publish_mode,
+ pattern: "*.pairs.stat"
+ ]
+ }
+
+ withName: 'PAIRTOOLS_SPLIT' {
+ ext.prefix = { "${meta.id}_${meta.assembly.build}" }
+ ext.args2 = { sort_bam ? params.hic_bam_sorting == "by_coordinate" ? "--write-index" : "-n" : "" }
+ }
+
+ withName: 'YAHS' {
+ ext.prefix = { "${meta.id}_${meta.assembly.build}" }
+ ext.args = { params.hic_type == "arima_v2" ? "-e GATC,GANTC,CTNAG,TTAA" : params.hic_type == "arima_v1" ? "-e GATC,GANTC" : "" }
+ publishDir = [
+ path: { "$params.outdir/$stage.scaffold/yahs/$meta.assembly.build" },
+ mode: params.publish_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ ]
+ }
+ // scaffolding curation
+ withName: 'BWAMEM2_MEM_CURATION' {
+ ext.prefix = { "${meta.id}_${meta.assembly.build}_${reads.head().getBaseName(reads.head().name.endsWith(".gz") ? 2 : 1)}" }
+ ext.args = '-SP -T0'
+ ext.args2 = { sort_bam ? "--write-index" : "" }
+ }
+
+ withName: 'FILTER_FIVE_END' {
+ ext.prefix = { "${bam.head().getBaseName(1)}_filt5prime" }
+ }
+
+ withName: 'TWOREADCOMBINER_FIXMATE_SORT' {
+ ext.prefix = { "${bam.head().getBaseName(1)}" }
+ ext.args = { "${params.hic_map_qv}" } // min hic map quality
+ ext.args2 = '--write-index -l1'
+ }
+
+ withName: 'SCAFFOLD_CURATION:SAMTOOLS_MERGE_(HIFI|HIC)' {
+ ext.prefix = { "${meta.assembly.build}_merged" }
+ ext.args = '--write-index'
+ }
+
+ withName: 'SCAFFOLD_CURATION:BIOBAMBAM_BAMMARKDUPLICATES2' {
+ ext.prefix = { "${bam.getBaseName(1)}_dupMarked" }
+ }
+
+ withName: 'SCAFFOLD_CURATION:BAM2BED_SORT' {
+ ext.prefix = { "${bam.head().getBaseName(1)}" }
+ ext.args = '-u -F0x400 -h' // arguments for samtools view
+ ext.args2 = '-S50G -T \$PWD' // arguments for sort
+ ext.args3 = { "${params.hic_map_qv}" } // min hic map quality
+ }
+ withName: 'SCAFFOLD_CURATION:COOLER_CLOAD' {
+ ext.prefix = { "${pairs.head().getBaseName(1)}" }
+ ext.args = 'pairs -0 -c1 2 -p1 3 -c2 4 -p2 5'
+ }
+ withName: 'SCAFFOLD_CURATION:COOLER_ZOOMIFY' {
+ ext.prefix = { "${cool.head().getBaseName(1)}" }
+ ext.args = '--resolutions 1000,5000,10000,20000,40000,60000,80000,100000,120000,150000,200000,300000,400000,500000'
+ publishDir = [
+ path: { "$params.outdir/$stage.curate/higlass/$meta.assembly.build" },
+ mode: params.publish_mode,
+ pattern: "*.mcool"
+ ]
+ }
+ withName: 'SCAFFOLD_CURATION:PRETEXTMAP' {
+ ext.prefix = { "${input.head().getBaseName(1)}" }
+ ext.args = { "--sortby ${params.hic_map_sort_by} --mapq ${params.hic_map_qv} --highRes" }
+ }
+ withName: 'SCAFFOLD_CURATION:MINIMAP2_INDEX' {
+ ext.prefix = { "${meta.assembly.build}" }
+ ext.args = "-x map-hifi"
+ }
+ withName: 'SCAFFOLD_CURATION:MINIMAP2_ALIGN' {
+ ext.prefix = { "${meta.assembly.build}_${reads.getBaseName(reads.name.endsWith(".gz") ? 2 : 1)}" }
+ ext.args = "--MD -x map-hifi"
+ }
+ withName: 'SCAFFOLD_CURATION:BAM2COVERAGE_TRACKS' {
+ ext.prefix = { "${bam.head().getBaseName(1)}" }
+ ext.args = '' // samtools sort
+ ext.args2 = '-b -h -F 256' // samtools view
+ ext.args3 = '-bga -split' // genomeCoverageBed
+ //TODO use task2
+ ext.args4 = { "-T \$PWD" } // sort
+ ext.args5 = '--no-header --method average' // clodius aggregate
+ publishDir = [
+ path: { "$params.outdir/$stage.curate/higlass/$meta.assembly.build" },
+ mode: params.publish_mode,
+ pattern: "*.hitile"
+ ]
+ }
+ withName: 'SCAFFOLD_CURATION:SEQTK_CUTN' {
+ ext.prefix = { "${meta.assembly.build}" }
+ ext.args = "-n 1"
+ }
+ withName: 'SCAFFOLD_CURATION:CREATE_GAP_TRACKS' {
+ ext.prefix = { "${meta.assembly.build}" }
+ // ext.args = { "" } // sort
+ ext.args2 = '--no-header' // clodius aggregate
+ publishDir = [
+ path: { "$params.outdir/$stage.curate/higlass/$meta.assembly.build" },
+ mode: params.publish_mode,
+ pattern: "*.beddb"
+ ]
+ }
+ withName: 'SCAFFOLD_CURATION:TIDK_SEARCH_BEDGRAPH' {
+ ext.prefix = { "${meta.assembly.build}_telomer" }
+ ext.args = { "--window 10000 --extension bedgraph" } // tidk search
+ }
+ withName: 'SCAFFOLD_CURATION:TIDK_SEARCH_TSV' {
+ ext.prefix = { "${meta.assembly.build}_telomer" }
+ ext.args = { "--window 10000 --extension tsv" } // tidk search
+ }
+ withName: 'SCAFFOLD_CURATION:CREATE_TELOMER_BIGWIG_TRACK' {
+ ext.prefix = { "${meta.assembly.build}" }
+ ext.args = '' // sort
+ ext.args2 = '--no-header' // clodius aggregate bedgraph
+ publishDir = [
+ path: { "$params.outdir/$stage.curate/higlass/$meta.assembly.build" },
+ mode: params.publish_mode,
+ pattern: "*.bw"
+ ]
+ }
+ withName: 'SCAFFOLD_CURATION:PRETEXT_TRACKS_INGESTION' {
+ ext.prefix = { "${meta.assembly.build}" }
+ publishDir = [
+ path: { "$params.outdir/$stage.curate/pretext/$meta.assembly.build" },
+ mode: params.publish_mode,
+ pattern: "*_wTracks.pretext"
+ ]
+ }
+
+ withName: 'EVALUATE_SCAFFOLDED_ASSEMBLY:MERQURYFK_MERQURYFK' {
+ tag = { meta.assembly.build }
+ ext.prefix = { "${meta.assembly.build}_merquryfk" }
+ publishDir = [
+ path: { "$params.outdir/$stage.scaffold/merquryfk/$meta.assembly.build" },
+ mode: params.publish_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ ]
+ }
+ withName: 'EVALUATE_SCAFFOLDED_ASSEMBLY:MERQURY' {
+ tag = { meta.assembly.build }
+ ext.prefix = { "${meta.assembly.build}_merqury" }
+ publishDir = [
+ path: { "$params.outdir/$stage.scaffold/merqury/$meta.assembly.build" },
+ mode: params.publish_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ ]
+ }
+ withName: 'EVALUATE_SCAFFOLDED_ASSEMBLY:BUSCO' {
+ tag = { "${meta.assembly.build}-${lineage}" }
+ ext.prefix = { "${meta.assembly.build}-${lineage}" }
+ ext.args = '--tar'
+ publishDir = [
+ path: { "$params.outdir/$stage.scaffold/busco/$meta.assembly.build" },
+ mode: params.publish_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ ]
+ }
+
+
// Assembly report
withName: 'TOL_SEARCH' {
executor = 'local'
@@ -332,19 +523,24 @@ process {
withName: 'REPORT_SOFTWAREVERSIONS' {
executor = 'local'
}
- withName: 'QUARTO' {
- ext.args = '-P image_path:data'
- ext.prefix = { "${notebook.baseName}_mqc" }
- stageInMode = 'copy'
- time = 15.m
- }
- withName: 'MULTIQC' {
+ withName: 'ASSEMBLY_REPORT:QUARTO_NOTEBOOK' {
publishDir = [
path: { "$params.outdir/$stage.report" },
mode: params.publish_mode,
- saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename },
+ overwrite: true
]
- time = 30.m
}
-
+ // withName: 'QUARTO' {
+ // ext.args = '-P image_path:data'
+ // ext.prefix = { "${notebook.baseName}_mqc" }
+ // stageInMode = 'copy'
+ // }
+ // withName: 'MULTIQC' {
+ // publishDir = [
+ // path: { "$params.outdir/$stage.report" },
+ // mode: params.publish_mode,
+ // saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ // ]
+ // }
}
diff --git a/configs/multiqc_summary_report_config.yml b/configs/multiqc_assembly_report_config.yml
similarity index 83%
rename from configs/multiqc_summary_report_config.yml
rename to configs/multiqc_assembly_report_config.yml
index a000ecaa..86ac9b66 100644
--- a/configs/multiqc_summary_report_config.yml
+++ b/configs/multiqc_assembly_report_config.yml
@@ -1,10 +1,10 @@
-title: "BGE Assembly Report"
-output_fn_name: BGE_assembly_multiqc_report.html
+title: "Assembly Summary"
+output_fn_name: multiqc-summary.html
intro_text: |
- An assembly report for the BGE project.
+ An assembly summary report for the BGE project.
ignore_images: false
-disable_version_detection: true
+# disable_version_detection: true
module_order:
- "dtol"
@@ -38,10 +38,12 @@ custom_data:
section_name: "GenomeScope2"
description: "Sample data k-mer histogram."
ploidyplot:
+ id: "ploidyplot"
file_format: "png"
section_name: "Ploidy Plot"
description: "Ploidy estimate based on kmers."
katgc:
+ id: "katgc"
file_format: "png"
section_name: "GC Content"
description: "Sequence GC content."
@@ -55,3 +57,5 @@ sp: # Search pattern
fn: "*_ploidyplot.st.png"
katgc:
fn: "*_katgc.st.png"
+ quast:
+ fn: "*_quast_report.tsv"
diff --git a/configs/nac.config b/configs/nac.config
index f6646d36..87055f28 100644
--- a/configs/nac.config
+++ b/configs/nac.config
@@ -1,4 +1,31 @@
+includeConfig 'tool_resources.config'
+
process {
+ // resource limits are based on most nodes of the abc partition on nac:
+ // 15 CfgTRES=cpu=16,mem=120G,billing=16
+ // 3 CfgTRES=cpu=36,mem=375G,billing=36
+ // MaxTime=30-00:00:00
+ // Processes that require more resources need to explicitly overwrite it
+ resourceLimits = [
+ memory: 120.GB,
+ cpus: 16,
+ time: 30.d
+ ]
+ // all processes that need more than the default resources need to be added here:
+ // BUT the nac cluster does not have a single node with enough storage -> this
+ // results in a very long runtime due swapping issues, but in principle it should run
+ withName: 'FCSGX_RUNGX' {
+ cpus = 16
+ memory = 370.GB
+ time = 30.d
+ resourceLimits = [
+ cpus: 16,
+ memory: 370.GB,
+ time: 30.d
+ ]
+ }
+
+
executor = 'slurm'
scratch = '/scratch'
}
diff --git a/configs/test.config b/configs/test.config
new file mode 100644
index 00000000..282b61f8
--- /dev/null
+++ b/configs/test.config
@@ -0,0 +1,61 @@
+// Test config - Tiny dataset
+resume = true
+
+params {
+ input = "$projectDir/tests/data/tiny/test_ci_Dmelanogaster.yml"
+ steps = 'inspect,preprocess,assemble,purge,polish,scaffold,curate'
+ outdir = "results"
+ fastk.kmer_size = 14
+ meryl.kmer_size = 14
+ genescopefk.kmer_size = 14
+ busco.lineages = 'bacteria_odb10' //eukaryota_odb10'
+ organelle_assembly_mode = 'none'
+}
+
+process {
+ cpus = 1
+ memory = 6.GB
+ time = 10.m
+ resourceLimits = [
+ cpus: 10,
+ memory: 32.GB,
+ time: 1.h
+ ]
+
+ withLabel: process_low {
+ cpus = 2
+ memory = 6.GB
+ time = 10.m
+ }
+ withLabel: process_medium {
+ cpus = 6
+ memory = 12.GB
+ time = 30.m
+ }
+ withLabel: process_high {
+ cpus = 10
+ memory = 32.GB
+ time = 1.h
+ }
+ withLabel: process_long {
+ time = 1.h
+ }
+ withLabel: process_high_memory {
+ memory = 32.GB
+ }
+
+ withName: 'PRETEXTMAP' {
+ cpus = 4
+ memory = 10.GB
+ time = 1.h
+ ext.args = { "--sortby ${params.hic_map_sort_by} --mapq ${params.hic_map_qv}" }
+ }
+
+ withName: 'ASSEMBLE:ASSEMBLE_HIFI:HIFIASM' {
+ ext.args = { '-f 0' }
+ }
+
+ // withName: 'ASSEMBLY_REPORT:QUARTO' {
+ // containerOptions = { 'docker' in workflow.profile.tokenize(',')? '--platform=linux/amd64' : '' }
+ // }
+}
diff --git a/configs/tool_resources.config b/configs/tool_resources.config
new file mode 100644
index 00000000..61b646b2
--- /dev/null
+++ b/configs/tool_resources.config
@@ -0,0 +1,171 @@
+// CUSTOM Resource allocations
+process {
+ // COMPARE_ASSEMBLIES
+ withName: 'QUAST' {
+ cpus = { Math.min(6, consensus instanceof List ? consensus.size() : 1 ) }
+ }
+
+ // EVALUATE ASSEMBLIES
+ withName: 'BUSCO' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 4.d : 2.d }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 40 : 30 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 230.GB : 128.GB }
+ }
+
+ // FCS
+ withName: 'FCSGX_FETCHDB' {
+ time = 2.d
+ }
+
+ withName: 'FCSGX_RUNGX' {
+ cpus = 20
+ memory = 1024.GB
+ time = 1.h
+ }
+
+ // scaffolding - pairtools parse
+ // runs single threaded but uses 3 decompression and 8 compression threads by default
+ // the runtime heavily depends on the HiC file and potentially on IO-load
+ withName: 'PAIRTOOLS_PARSE' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 7.d : 2.d }
+ cpus = 12
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 128.GB : 64.GB }
+ }
+
+ withName: 'PAIRTOOLS_SORT' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 7.d : 2.d }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 32 : 16 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 230.GB : 128.GB }
+ }
+
+ withName: 'PAIRTOOLS_MERGE' {
+ time = 1.d
+ cpus = { allpairs.size() }
+ memory = { "${allpairs.size() * 2} GB" }
+ }
+
+ withName: 'PAIRTOOLS_DEDUP' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 2.d : 1.d }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 16 : 12 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 128.GB : 64.GB }
+ }
+
+ withName: 'PAIRTOOLS_SPLIT' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 2.d : 1.d }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 32 : 16 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 128.GB : 64.GB }
+ }
+
+ withName: 'YAHS' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 12.h : 8.h }
+ cpus = 1
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 96.GB : 12.GB }
+ }
+
+ withName: 'FASTK_FASTK' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 2.d : 1.d }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 72 : 36 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 72.GB : 36.GB }
+ }
+
+ withName: 'FASTK_MERGE' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 1.d : 8.h }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 72 : 36 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 96.GB : 30.GB }
+ }
+
+ withName: 'MERYL_COUNT' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 2.d : 1.d }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 72 : 24 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 288.GB : 96.GB }
+ }
+ // MERYL_UNIONSUM does not scale well with more threads
+ withName: 'MERYL_UNIONSUM' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 12.h : 8.h }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 48 : 16 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 96.GB : 64.GB }
+ }
+
+ withName: 'MERQURY' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 12.h : 8.h }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 48 : 16 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 128.GB : 96.GB }
+ }
+
+ withName: 'MERQURYFK_MERQURYFK' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 8.h : 4.h }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 64 : 32 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 96.GB : 64.GB }
+ }
+
+ withName: 'MERQURYFK_PLOIDYPLOT' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 8.h : 4.h }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 96 : 64 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 192.GB : 96.GB }
+ }
+
+ withName: 'MINIMAP2_ALIGN_READS' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 1.d : 12.h }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 64 : 32 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 64.GB : 32.GB }
+ }
+
+ withName: 'MINIMAP2_ALIGN_ASSEMBLY_PRIMARY' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 2.d : 1.d }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 64 : 32 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 128.GB : 64.GB }
+ }
+
+ withName: 'BWAMEM2_INDEX' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 1.d : 12.h }
+ cpus = 1
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 256.GB : 60.GB }
+ }
+
+ withName: 'BWAMEM2_MEM' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 1.d : 12.h }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 96 : 64 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 596.GB : 120.GB }
+ }
+
+ withName: 'HIFIASM' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 2.d : 1.d }
+ cpus = { meta.sample.genome_size.toInteger() > 3000000000 ? 96 : 46 }
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 596.GB : 128.GB }
+ }
+
+ withName: 'PURGEDUPS_PURGEDUPS_PRIMARY' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 12.h : 8.h }
+ cpus = 1
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 256.GB : 30.GB }
+ }
+
+ withName: 'PURGEDUPS_PBCSTAT' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 2.h : 1.h }
+ cpus = 1
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 16.GB : 8.GB }
+ }
+ // scales linearly with genome size
+ withName: 'GFASTATS' {
+ time = { meta.sample.genome_size.toInteger() > 3000000000 ? 4.h : 1.h }
+ cpus = 1
+ memory = { meta.sample.genome_size.toInteger() > 3000000000 ? 64.GB : 8.GB }
+ }
+
+ withName: 'SCAFFOLD_CURATION:SAMTOOLS_MERGE_(HIFI|HIC)' {
+ cpus = 8
+ memory = 10.GB
+ }
+
+ withName: 'PRETEXTMAP' {
+ memory = 30.GB
+ }
+
+ // Assembly report
+ withName: 'QUARTO' {
+ time = 15.m
+ }
+ withName: 'MULTIQC' {
+ time = 30.m
+ }
+}
diff --git a/configs/uppmax.config b/configs/uppmax.config
index eb489c98..a7c04def 100644
--- a/configs/uppmax.config
+++ b/configs/uppmax.config
@@ -2,15 +2,37 @@ params {
// SNIC compute allocation id
project = ''
}
+
+includeConfig 'tool_resources.config'
+
process {
+ // resource limits are based on most nodes of the core partition on Uppmax rackham:
+ // CfgTRES=cpu=20,mem=125G,billing=20
+ // and
+ // CfgTRES=cpu=16,mem=249611M,billing=16
+ // MaxTime=10-00:00:00
+ // Processes that require more resources need to explicitly overwrite it,
+ // and use other partitions: e.g. veryfat on SNOWY, or via e.g -C mem1TB
+ resourceLimits = [
+ memory: 125.GB,
+ cpus: 16,
+ time: 10.d
+ ]
+ // all processes that need more than the default resources need to be added here:
+ withName: 'FCSGX_RUNGX' {
+ time = 1.h
+ clusterOptions = { "-A $params.project -p node -C mem1TB" }
+ resourceLimits = [
+ cpus: 16,
+ memory: 1024.GB,
+ time: 1.h
+ ]
+ }
+
executor = 'slurm'
clusterOptions = { "-A $params.project" }
// Use node local storage for execution.
scratch = '$SNIC_TMP'
-
- withName: 'FCSGX_RUNGX' {
- clusterOptions = { "-A $params.project -C mem1TB" }
- }
}
singularity {
enabled = true
diff --git a/main.nf b/main.nf
index 4e7067fe..a8aaf84b 100644
--- a/main.nf
+++ b/main.nf
@@ -1,8 +1,5 @@
#! /usr/bin/env nextflow
-// Include Map.deepMerge() function
-evaluate(new File("$projectDir/lib/MapExtended.groovy"))
-
include { combineByMetaKeys } from "$projectDir/modules/local/functions"
include { assembliesFromStage as preassembledInput } from "$projectDir/modules/local/functions"
include { setAssemblyStage } from "$projectDir/modules/local/functions"
@@ -27,6 +24,11 @@ include { PURGE_DUPLICATES } from "$projectDir/subworkflows/local/purge_dups/mai
include { EVALUATE_ASSEMBLY as EVALUATE_PURGED_ASSEMBLY } from "$projectDir/subworkflows/local/evaluate_assembly/main"
+include { SCAFFOLD } from "$projectDir/subworkflows/local/scaffold/main.nf"
+include { EVALUATE_ASSEMBLY as EVALUATE_SCAFFOLDED_ASSEMBLY } from "$projectDir/subworkflows/local/evaluate_assembly/main"
+
+include { SCAFFOLD_CURATION } from "$projectDir/subworkflows/local/scaffold_curation/main.nf"
+
include { ALIGN_RNASEQ } from "$projectDir/subworkflows/local/align_rnaseq/main"
include { ASSEMBLY_REPORT } from "$projectDir/subworkflows/local/assembly_report/main"
@@ -37,6 +39,8 @@ include { ASSEMBLY_REPORT } from "$projectDir/subworkflows/local/assembly_report
*/
workflow {
+ // Include Map.deepMerge() function
+ new GroovyShell().evaluate(new File("$projectDir/lib/MapExtended.groovy"))
// Define constants
def workflow_permitted_stages = [
@@ -63,8 +67,8 @@ workflow {
""")
// Setup sink channels
- ch_multiqc_files = Channel.empty()
- ch_quarto_files = Channel.empty()
+ ch_multiqc_files = Channel.value( file(params.multiqc_assembly_report_config, checkIfExists: true) )
+ // ch_quarto_files = Channel.empty()
ch_versions = Channel.empty()
// Read in data
@@ -93,7 +97,6 @@ workflow {
)
ch_hifi = INSPECT_DATA.out.hifi // with added kmer coverage
ch_multiqc_files = ch_multiqc_files.mix( INSPECT_DATA.out.logs )
- ch_quarto_files = ch_quarto_files.mix( INSPECT_DATA.out.quarto_files )
ch_versions = ch_versions.mix( INSPECT_DATA.out.versions )
}
@@ -110,6 +113,8 @@ workflow {
// Run assemblers
ASSEMBLE ( PREPARE_INPUT.out.hifi_merged )
ch_raw_assemblies = ch_raw_assemblies.mix( ASSEMBLE.out.raw_assemblies )
+ ch_multiqc_files = ch_multiqc_files.mix( ASSEMBLE.out.logs )
+ ch_versions = ch_versions.mix( ASSEMBLE.out.versions )
} else {
// Nothing more than evaluate
}
@@ -162,6 +167,8 @@ workflow {
ch_hifi
)
ch_purged_assemblies = PURGE_DUPLICATES.out.assemblies
+ ch_multiqc_files = ch_multiqc_files.mix( PURGE_DUPLICATES.out.logs )
+ ch_versions = ch_versions.mix( PURGE_DUPLICATES.out.versions )
} else {
ch_purged_assemblies = ch_to_purge
}
@@ -197,14 +204,26 @@ workflow {
'scaffolded' // Set assembly stage now for filenaming
).dump(tag: 'Assemblies: to scaffold')
if ( 'scaffold' in workflow_steps ) {
- // Run scaffolder
- ch_scaffolded_assemblies = ch_to_scaffold
+ SCAFFOLD (
+ ch_to_scaffold,
+ PREPARE_INPUT.out.hic
+ )
+ ch_scaffolded_assemblies = SCAFFOLD.out.assemblies
+ ch_multiqc_files = ch_multiqc_files.mix( SCAFFOLD.out.logs )
+ ch_versions = ch_versions.mix( SCAFFOLD.out.versions )
} else {
ch_scaffolded_assemblies = ch_to_scaffold
}
ch_scaffolded_assemblies = ch_scaffolded_assemblies.mix(
preassembledInput( PREPARE_INPUT.out.assemblies, 'scaffolded' )
).dump(tag: 'Assemblies: Scaffolded')
+ EVALUATE_SCAFFOLDED_ASSEMBLY (
+ ch_scaffolded_assemblies,
+ BUILD_FASTK_HIFI_DATABASE.out.fastk_hist_ktab,
+ BUILD_MERYL_HIFI_DATABASE.out.uniondb
+ )
+ ch_multiqc_files = ch_multiqc_files.mix( EVALUATE_SCAFFOLDED_ASSEMBLY.out.logs )
+ ch_versions = ch_versions.mix( EVALUATE_SCAFFOLDED_ASSEMBLY.out.versions )
// Curate
ch_to_curate = setAssemblyStage (
@@ -212,14 +231,19 @@ workflow {
'curated' // Set assembly stage now for filenaming
).dump(tag: 'Assemblies: to curate')
if ( 'curate' in workflow_steps ) {
- // Run assemblers
- ch_curated_assemblies = ch_to_curate
+ SCAFFOLD_CURATION (
+ ch_scaffolded_assemblies,
+ PREPARE_INPUT.out.hic,
+ PREPARE_INPUT.out.hifi
+ )
+ ch_versions = ch_versions.mix( SCAFFOLD_CURATION.out.versions )
} else {
ch_curated_assemblies = ch_to_curate
}
- ch_curated_assemblies = ch_curated_assemblies.mix(
- preassembledInput( PREPARE_INPUT.out.assemblies, 'curated' )
- ).dump(tag: 'Assemblies: Curated')
+ // TODO: output needs to be defined
+ //ch_curated_assemblies = ch_curated_assemblies.mix(
+ // preassembledInput( PREPARE_INPUT.out.assemblies, 'curated' )
+ //).dump(tag: 'Assemblies: Curated')
// Align RNAseq
if( 'alignRNA' in workflow_steps ) {
@@ -231,29 +255,30 @@ workflow {
}
ASSEMBLY_REPORT(
- PREPARE_INPUT.out.sample_meta,
+ PREPARE_INPUT.out.sample_meta.map{ meta -> [ meta, file(params.quarto_assembly_report, checkIfExists: true) ] },
ch_multiqc_files,
- ch_quarto_files,
- ch_versions
+ ch_versions,
+ [ diagnostics: "debug" in workflow.profile.tokenize(",") ] +
+ workflow_permitted_stages.collectEntries{ step -> [(step): step in params.steps.tokenize(",")] }
)
-}
-
-workflow.onComplete {
- if( workflow.success ){
- log.info("""
- Thank you for using the NBIS Earth Biogenome Project Assembly workflow.
- The workflow completed successfully.
- Results are located in the folder: $params.outdir
- """)
- } else {
- log.info("""
- Thank you for using the NBIS Earth Biogenome Project Assembly workflow.
- The workflow completed unsuccessfully.
-
- Please read over the error message. If you are unable to solve it, please
- post an issue at https://github.com/NBISweden/Earth-Biogenome-Project-pilot/issues
- where we will do our best to help.
- """)
+ workflow.onComplete = {
+ if( workflow.success ){
+ log.info("""
+ Thank you for using the NBIS Earth Biogenome Project Assembly workflow.
+ The workflow completed successfully.
+
+ Results are located in the folder: $params.outdir
+ """)
+ } else {
+ log.info("""
+ Thank you for using the NBIS Earth Biogenome Project Assembly workflow.
+ The workflow completed unsuccessfully.
+
+ Please read over the error message. If you are unable to solve it, please
+ post an issue at https://github.com/NBISweden/Earth-Biogenome-Project-pilot/issues
+ where we will do our best to help.
+ """)
+ }
}
}
diff --git a/modules.json b/modules.json
index 8a93ab4b..eb79255a 100644
--- a/modules.json
+++ b/modules.json
@@ -1,217 +1,451 @@
{
- "name": "Earth Biogenome Project Assembly and Annotation workflow",
- "homePage": "https://github.com/NBISweden/Earth-Biogenome-Project-pilot",
- "repos": {
- "https://github.com/nf-core/modules.git": {
- "modules": {
- "nf-core": {
- "busco": {
- "branch": "master",
- "git_sha": "5892730425a245e4830124f8429c011d18a562a5",
- "installed_by": ["modules"]
- },
- "cat/cat": {
- "branch": "master",
- "git_sha": "81f27e75847087865299cc46605deb3b09b4e0a2",
- "installed_by": ["modules"]
- },
- "fastk/fastk": {
- "branch": "master",
- "git_sha": "29e87a37ae1887fc8289f2f56775604a71715cb9",
- "installed_by": ["modules"]
- },
- "fastk/histex": {
- "branch": "master",
- "git_sha": "ed67f2fadd6d2a155b296f728e6b1f8c92ddc1a6",
- "installed_by": ["modules"]
- },
- "fastk/merge": {
- "branch": "master",
- "git_sha": "8c4542e5d421c4690cf1fa6ec729e9304763fdaf",
- "installed_by": ["modules"]
- },
- "fcs/fcsadaptor": {
- "branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
- },
- "fcs/fcsgx": {
- "branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
- },
- "genescopefk": {
- "branch": "master",
- "git_sha": "3f908700a03ca2fa388f794914f89be977ce5740",
- "installed_by": ["modules"]
- },
- "genomescope2": {
- "branch": "master",
- "git_sha": "c95215baf20e6d8cf2ae0e8411d03c5d9ef21d4a",
- "installed_by": ["modules"]
- },
- "gfastats": {
- "branch": "master",
- "git_sha": "9e51255c4f8ec69fb6ccf68593392835f14fecb8",
- "installed_by": ["modules"]
- },
- "goat/taxonsearch": {
- "branch": "master",
- "git_sha": "f06ea9b058c2e4af141245ccff58ea5f65808d1a",
- "installed_by": ["modules"]
- },
- "hifiasm": {
- "branch": "master",
- "git_sha": "daa15d5226111e10ca95c0d4a85fa6bd11a08a01",
- "installed_by": ["modules"]
- },
- "kraken2/kraken2": {
- "branch": "master",
- "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220",
- "installed_by": ["modules"]
- },
- "mash/screen": {
- "branch": "master",
- "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
- "installed_by": ["modules"]
- },
- "merqury": {
- "branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
- },
- "merquryfk/katcomp": {
- "branch": "master",
- "git_sha": "6f150e1503c0826c21fedf1fa566cdbecbe98ec7",
- "installed_by": ["modules"]
- },
- "merquryfk/katgc": {
- "branch": "master",
- "git_sha": "6f150e1503c0826c21fedf1fa566cdbecbe98ec7",
- "installed_by": ["modules"]
- },
- "merquryfk/ploidyplot": {
- "branch": "master",
- "git_sha": "ebb27711cd5f4de921244bfa81c676504072d31c",
- "installed_by": ["modules"]
- },
- "meryl/count": {
- "branch": "master",
- "git_sha": "2910aa889fd3497727d87854148a0e0aa1105da3",
- "installed_by": ["modules"]
- },
- "meryl/histogram": {
- "branch": "master",
- "git_sha": "c95215baf20e6d8cf2ae0e8411d03c5d9ef21d4a",
- "installed_by": ["modules"]
- },
- "meryl/unionsum": {
- "branch": "master",
- "git_sha": "b7f584e61c35c138a5717f837f4da9b838e290a7",
- "installed_by": ["modules"]
- },
- "minimap2/align": {
- "branch": "master",
- "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220",
- "installed_by": ["modules"]
- },
- "mitohifi/findmitoreference": {
- "branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
- },
- "mitohifi/mitohifi": {
- "branch": "master",
- "git_sha": "5bcbc0c522879ba15a224eb06cd42e6c46932545",
- "installed_by": ["modules"],
- "patch": "modules/nf-core/mitohifi/mitohifi/mitohifi-mitohifi.diff"
- },
- "multiqc": {
- "branch": "master",
- "git_sha": "ccacf6f5de6df3bc6d73b665c1fd2933d8bbc290",
- "installed_by": ["modules"]
- },
- "pilon": {
- "branch": "master",
- "git_sha": "240937a2a9c30298110753292be041188891f2cb",
- "installed_by": ["modules"]
- },
- "purgedups/calcuts": {
- "branch": "master",
- "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
- "installed_by": ["modules"]
- },
- "purgedups/getseqs": {
- "branch": "master",
- "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
- "installed_by": ["modules"]
- },
- "purgedups/histplot": {
- "branch": "master",
- "git_sha": "d449de9e062dd159ff8c802709d3c5ab06ce6789",
- "installed_by": ["modules"]
- },
- "purgedups/pbcstat": {
- "branch": "master",
- "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
- "installed_by": ["modules"]
- },
- "purgedups/purgedups": {
- "branch": "master",
- "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
- "installed_by": ["modules"]
- },
- "purgedups/splitfa": {
- "branch": "master",
- "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
- "installed_by": ["modules"],
- "patch": "modules/nf-core/purgedups/splitfa/purgedups-splitfa.diff"
- },
- "quast": {
- "branch": "master",
- "git_sha": "344638191a5d6b3526556410819dfcf24e98039e",
- "installed_by": ["modules"],
- "patch": "modules/nf-core/quast/quast.diff"
- },
- "racon": {
- "branch": "master",
- "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
- "installed_by": ["modules"]
- },
- "salsa2": {
- "branch": "master",
- "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
- "installed_by": ["modules"]
- },
- "seqkit/seq": {
- "branch": "master",
- "git_sha": "2be41ca2cc780eca4293d1b0dd3850b0b7ac40a3",
- "installed_by": ["modules"]
- },
- "star/align": {
- "branch": "master",
- "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3",
- "installed_by": ["modules"],
- "patch": "modules/nf-core/star/align/star-align.diff"
- },
- "star/genomegenerate": {
- "branch": "master",
- "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3",
- "installed_by": ["modules"],
- "patch": "modules/nf-core/star/genomegenerate/star-genomegenerate.diff"
- },
- "untar": {
- "branch": "master",
- "git_sha": "e719354ba77df0a1bd310836aa2039b45c29d620",
- "installed_by": ["modules"]
- },
- "yahs": {
- "branch": "master",
- "git_sha": "9e51255c4f8ec69fb6ccf68593392835f14fecb8",
- "installed_by": ["modules"]
- }
+ "name": "Earth Biogenome Project Assembly and Annotation workflow",
+ "homePage": "https://github.com/NBISweden/Earth-Biogenome-Project-pilot",
+ "repos": {
+ "https://github.com/nf-core/modules.git": {
+ "modules": {
+ "nf-core": {
+ "biobambam/bammarkduplicates2": {
+ "branch": "master",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "busco": {
+ "branch": "master",
+ "git_sha": "5892730425a245e4830124f8429c011d18a562a5",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "bwamem2/index": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "bwamem2/mem": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "cat/cat": {
+ "branch": "master",
+ "git_sha": "81f27e75847087865299cc46605deb3b09b4e0a2",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "cooler/cload": {
+ "branch": "master",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "cooler/zoomify": {
+ "branch": "master",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "fastk/fastk": {
+ "branch": "master",
+ "git_sha": "29e87a37ae1887fc8289f2f56775604a71715cb9",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "fastk/histex": {
+ "branch": "master",
+ "git_sha": "ed67f2fadd6d2a155b296f728e6b1f8c92ddc1a6",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "fastk/merge": {
+ "branch": "master",
+ "git_sha": "8c4542e5d421c4690cf1fa6ec729e9304763fdaf",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "fcs/fcsadaptor": {
+ "branch": "master",
+ "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "fcs/fcsgx": {
+ "branch": "master",
+ "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "genescopefk": {
+ "branch": "master",
+ "git_sha": "3f908700a03ca2fa388f794914f89be977ce5740",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "genomescope2": {
+ "branch": "master",
+ "git_sha": "c95215baf20e6d8cf2ae0e8411d03c5d9ef21d4a",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "gfastats": {
+ "branch": "master",
+ "git_sha": "9e51255c4f8ec69fb6ccf68593392835f14fecb8",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "goat/taxonsearch": {
+ "branch": "master",
+ "git_sha": "f06ea9b058c2e4af141245ccff58ea5f65808d1a",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "hifiasm": {
+ "branch": "master",
+ "git_sha": "daa15d5226111e10ca95c0d4a85fa6bd11a08a01",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "kraken2/kraken2": {
+ "branch": "master",
+ "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "mash/screen": {
+ "branch": "master",
+ "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "merqury": {
+ "branch": "master",
+ "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "merquryfk/katcomp": {
+ "branch": "master",
+ "git_sha": "6f150e1503c0826c21fedf1fa566cdbecbe98ec7",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "merquryfk/katgc": {
+ "branch": "master",
+ "git_sha": "6f150e1503c0826c21fedf1fa566cdbecbe98ec7",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "merquryfk/merquryfk": {
+ "branch": "master",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/merquryfk/merquryfk/merquryfk-merquryfk.diff"
+ },
+ "merquryfk/ploidyplot": {
+ "branch": "master",
+ "git_sha": "ebb27711cd5f4de921244bfa81c676504072d31c",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "meryl/count": {
+ "branch": "master",
+ "git_sha": "2910aa889fd3497727d87854148a0e0aa1105da3",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/meryl/count/meryl-count.diff"
+ },
+ "meryl/histogram": {
+ "branch": "master",
+ "git_sha": "c95215baf20e6d8cf2ae0e8411d03c5d9ef21d4a",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "meryl/unionsum": {
+ "branch": "master",
+ "git_sha": "b7f584e61c35c138a5717f837f4da9b838e290a7",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "minimap2/align": {
+ "branch": "master",
+ "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "minimap2/index": {
+ "branch": "master",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "mitohifi/findmitoreference": {
+ "branch": "master",
+ "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "mitohifi/mitohifi": {
+ "branch": "master",
+ "git_sha": "5bcbc0c522879ba15a224eb06cd42e6c46932545",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/mitohifi/mitohifi/mitohifi-mitohifi.diff"
+ },
+ "multiqc": {
+ "branch": "master",
+ "git_sha": "ccacf6f5de6df3bc6d73b665c1fd2933d8bbc290",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "pairix": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "pairtools/dedup": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/pairtools/dedup/pairtools-dedup.diff"
+ },
+ "pairtools/merge": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/pairtools/merge/pairtools-merge.diff"
+ },
+ "pairtools/parse": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/pairtools/parse/pairtools-parse.diff"
+ },
+ "pairtools/select": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "pairtools/sort": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/pairtools/sort/pairtools-sort.diff"
+ },
+ "pairtools/split": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/pairtools/split/pairtools-split.diff"
+ },
+ "pilon": {
+ "branch": "master",
+ "git_sha": "240937a2a9c30298110753292be041188891f2cb",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "pretextmap": {
+ "branch": "master",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "purgedups/calcuts": {
+ "branch": "master",
+ "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "purgedups/getseqs": {
+ "branch": "master",
+ "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "purgedups/histplot": {
+ "branch": "master",
+ "git_sha": "d449de9e062dd159ff8c802709d3c5ab06ce6789",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "purgedups/pbcstat": {
+ "branch": "master",
+ "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "purgedups/purgedups": {
+ "branch": "master",
+ "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "purgedups/splitfa": {
+ "branch": "master",
+ "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/purgedups/splitfa/purgedups-splitfa.diff"
+ },
+ "quast": {
+ "branch": "master",
+ "git_sha": "344638191a5d6b3526556410819dfcf24e98039e",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/quast/quast.diff"
+ },
+ "racon": {
+ "branch": "master",
+ "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "salsa2": {
+ "branch": "master",
+ "git_sha": "911696ea0b62df80e900ef244d7867d177971f73",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "samtools/faidx": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "samtools/merge": {
+ "branch": "master",
+ "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "samtools/sort": {
+ "branch": "master",
+ "git_sha": "b7800db9b069ed505db3f9d91b8c72faea9be17b",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "seqkit/seq": {
+ "branch": "master",
+ "git_sha": "2be41ca2cc780eca4293d1b0dd3850b0b7ac40a3",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "seqtk/cutn": {
+ "branch": "master",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "star/align": {
+ "branch": "master",
+ "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/star/align/star-align.diff"
+ },
+ "star/genomegenerate": {
+ "branch": "master",
+ "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3",
+ "installed_by": [
+ "modules"
+ ],
+ "patch": "modules/nf-core/star/genomegenerate/star-genomegenerate.diff"
+ },
+ "tidk/plot": {
+ "branch": "master",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "tidk/search": {
+ "branch": "master",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "untar": {
+ "branch": "master",
+ "git_sha": "e719354ba77df0a1bd310836aa2039b45c29d620",
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "yahs": {
+ "branch": "master",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "installed_by": [
+ "modules"
+ ]
+ }
+ }
+ }
}
- }
}
- }
-}
+}
\ No newline at end of file
diff --git a/modules/local/functions.nf b/modules/local/functions.nf
index 72d383e2..ff842865 100644
--- a/modules/local/functions.nf
+++ b/modules/local/functions.nf
@@ -130,7 +130,7 @@ Example:
PROCESSA.out.fasta // contains [ meta, 'assembler-stage-uuid-hap0.fasta' ] and [ meta, 'assembler-stage-uuid-hap1.fasta']
.set { processed_assemblies }
-output_assembly_ch = constructAssemblyRecord ( processed_assemblies )
+output_assembly_ch = constructAssemblyRecord ( processed_assemblies, sort_by_name )
The output is the map:
[
@@ -145,8 +145,8 @@ The output is the map:
]
]
*/
-def constructAssemblyRecord( assemblies ) {
- assemblies.groupTuple( sort: { a, b -> a.name <=> b.name } )
+def constructAssemblyRecord( assemblies, Boolean byName ) {
+ assemblies.groupTuple( sort: byName? { a, b -> a.name <=> b.name }: { a, b -> b.name <=> a.name } )
.map { meta, fasta ->
def asm_meta = meta.assembly.subMap(['assembler','stage','id','build'])
[ meta, asm_meta + (fasta.size() == 1 ? [ pri_fasta: fasta[0] ] : [ pri_fasta: fasta[0], alt_fasta: fasta[1] ] ) ]
diff --git a/modules/local/hic_curation/bam2bed_sort.nf b/modules/local/hic_curation/bam2bed_sort.nf
new file mode 100644
index 00000000..a9b2577b
--- /dev/null
+++ b/modules/local/hic_curation/bam2bed_sort.nf
@@ -0,0 +1,42 @@
+// Portions of this code adapted from Sanger Institute's "curationpretext" (https://github.com/sanger-tol/curationpretext)
+// and from https://github.com/MartinPippel/DAMARVEL/blob/master-v1/scripts/createHiCPlans.sh
+process BAM2BED_SORT {
+ tag "$meta.id"
+ label 'process_medium'
+
+ container "community.wave.seqera.io/library/bedtools_samtools_pip_awk:61be4cfccef27592"
+
+ input:
+ tuple val(meta), path(bam)
+
+ output:
+ tuple val(meta), path("*.pairs") , emit: pairs
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def args3 = task.ext.args3 ?: '1'
+ def prefix = task.ext.prefix ?: "${meta.id}"
+
+ """
+ samtools view -@$task.cpus $args ${bam} | \\
+ bamToBed | \\
+ sort -k4 --parallel=$task.cpus $args2 | \\
+ paste -d '\t' - - | \\
+ awk -v q=$args3 'BEGIN {FS=\"\t\"; OFS=\"\t\"} { if(int(\$5) >= int(q) && int(\$11) >= int(q)) { if (\$1 > \$7) { print substr(\$4,1,length(\$4)-2),\$7,\$8,\$1,\$2,\$12,\$6,\"UU\"} else { print substr(\$4,1,length(\$4)-2),\$1,\$2,\$7,\$8,\$6,\$12,\"UU\"} } }' | \\
+ sort -k2,2V -k4,4V -k3,3n -k5,5n --parallel=$task.cpus $args2 > ${prefix}.pairs
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ bedtools: \$(echo \$(bedtools --version 2>&1) | sed 's/^.*bedtools //')
+ paste: \$(echo \$(paste --version 2>&1) | head -n 1 | sed 's/^.*paste //; s/Copyright.*\$//')
+ sort: \$(echo \$(sort --version 2>&1) | head -n 1 | sed 's/^.*sort //; s/Copyright.*\$//')
+ awk: \$(echo \$(awk --version 2>&1) | head -n 1 | sed 's/Copyright.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/local/hic_curation/bam2coverageTracks.nf b/modules/local/hic_curation/bam2coverageTracks.nf
new file mode 100644
index 00000000..04f4997c
--- /dev/null
+++ b/modules/local/hic_curation/bam2coverageTracks.nf
@@ -0,0 +1,51 @@
+process BAM2COVERAGE_TRACKS {
+ tag "$meta.id"
+ label 'process_medium'
+
+ container "community.wave.seqera.io/library/bedtools_samtools_ucsc-bedgraphtobigwig:ba8edacb0d7bff96"
+
+ input:
+ tuple val(meta), path(bam)
+ path(chrom_sizes)
+ val(hifi_coverage_cap)
+
+ output:
+ tuple val(meta), path("*_coverage.bed") , emit: bed
+ tuple val(meta), path("*_coverage.bw") , emit: bigwig
+ tuple val(meta), path("*_coverage_capped.bed") , emit: capped_bed
+ tuple val(meta), path("*_coverage_capped.bw") , emit: capped_bigwig
+
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def args3 = task.ext.args3 ?: ''
+ def args4 = task.ext.args4 ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ # convert bam to sorted bed
+ samtools sort -@ $task.cpus $args ${bam} | \\
+ samtools view -@ $task.cpus $args2 - | \\
+ genomeCoverageBed $args3 -ibam - | \\
+ sort -k1,1 -k2,2n --parallel=${task.cpus} $args4 > ${prefix}_coverage.bed
+ # convert bed to bigwig
+ bedGraphToBigWig ${prefix}_coverage.bed ${chrom_sizes} ${prefix}_coverage.bw
+ # coverage cap
+ sort -k1,1V -k2,2n -k3,3n $args4 ${prefix}_coverage.bed | \\
+ awk -v COVERAGE_CAP=$hifi_coverage_cap 'BEGIN {FS = " "; OFS = "\t";}{if(int(\$4)>COVERAGE_CAP){print \$1,\$2,\$3,COVERAGE_CAP} else {print \$1,\$2,\$3,\$4}}' > ${prefix}_coverage_capped.bed
+ # convert bed to bigwig
+ bedGraphToBigWig ${prefix}_coverage_capped.bed ${chrom_sizes} ${prefix}_coverage_capped.bw
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ bedtools: \$(echo \$(bedtools --version 2>&1) | sed 's/^.*bedtools //')
+ sort: \$(echo \$(sort --version 2>&1) | head -n 1 | sed 's/^.*sort //; s/Copyright.*\$//')
+ awk: \$(echo \$(awk --version 2>&1) | head -n 1 | sed 's/Copyright.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/local/hic_curation/create_chromosome_sizes.nf b/modules/local/hic_curation/create_chromosome_sizes.nf
new file mode 100644
index 00000000..31b04f0a
--- /dev/null
+++ b/modules/local/hic_curation/create_chromosome_sizes.nf
@@ -0,0 +1,40 @@
+process CREATE_CHROMOSOME_SIZES_FILE {
+ tag "$meta.id"
+ label 'process_low'
+
+ container "community.wave.seqera.io/library/pip_awk:e0daab0638d06dfd"
+
+ input:
+ tuple val(meta), path(fai)
+ val hic_map_sort_by
+
+ output:
+ tuple val(meta), path("*.sizes") , emit: sizes
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ // def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ if [[ "$hic_map_sort_by" == "length" ]]
+ then
+ awk '{print \$1\"\t\"\$2}' ${fai} | \\
+ sort -k2,2 -nr > ${prefix}.sizes
+ elif [[ "$hic_map_sort_by" == "name" ]]
+ then
+ awk '{print \$1\"\t\"\$2}' ${fai} | \\
+ sort -k1,1 -nr > ${prefix}.sizes
+ else
+ awk '{print \$1\"\t\"\$2}' ${fai} > ${prefix}.sizes
+ fi
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ sort: \$(echo \$(sort --version 2>&1) | head -n 1 | sed 's/^.*sort //; s/Copyright.*\$//')
+ awk: \$(echo \$(awk --version 2>&1) | head -n 1 | sed 's/Copyright.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/local/hic_curation/create_gap_tracks.nf b/modules/local/hic_curation/create_gap_tracks.nf
new file mode 100644
index 00000000..bd27ee5b
--- /dev/null
+++ b/modules/local/hic_curation/create_gap_tracks.nf
@@ -0,0 +1,38 @@
+process CREATE_GAP_TRACKS {
+ tag "$meta.id"
+ label 'process_medium'
+
+ container "community.wave.seqera.io/library/pysam_pip_awk_clodius:79d5112d656076f9"
+
+ input:
+ tuple val(meta), path(bed)
+ path(chrom_sizes)
+
+ output:
+ tuple val(meta), path("*_gaps.bedgraph") , emit: bedgraph
+ tuple val(meta), path("*_gaps.bedgraph.beddb") , emit: beddb
+
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+
+ """
+ # create gaps bedgraph file which can be loaded into Pretext
+ awk '{print \$0"\t"sqrt((\$3-\$2)*(\$3-\$2))}' ${bed} | \\
+ sort -k1,1V -k2,2n -k3,3n --parallel=${task.cpus} ${args} > ${prefix}_gaps.bedgraph
+ # create sorted.bedgraph.beddb which can be ingested to HiGlass
+ clodius aggregate bedfile ${args2} --chromsizes-filename ${chrom_sizes} ${prefix}_gaps.bedgraph
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ sort: \$(echo \$(sort --version 2>&1) | head -n 1 | sed 's/^.*sort //; s/Copyright.*\$//')
+ awk: \$(echo \$(awk --version 2>&1) | head -n 1 | sed 's/Copyright.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/local/hic_curation/create_telomer_bigwig_track.nf b/modules/local/hic_curation/create_telomer_bigwig_track.nf
new file mode 100644
index 00000000..465708d2
--- /dev/null
+++ b/modules/local/hic_curation/create_telomer_bigwig_track.nf
@@ -0,0 +1,33 @@
+process CREATE_TELOMER_BIGWIG_TRACK {
+ tag "$meta.id"
+ label 'process_medium'
+
+ container "community.wave.seqera.io/library/ucsc-bedgraphtobigwig:469--f66c00635e28f216"
+
+ input:
+ tuple val(meta), path(bedgraph)
+ path(chrom_sizes)
+
+ output:
+ tuple val(meta), path("*_telomer.bw"), emit: bw
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+
+ """
+ sort -k1,1V -k2,2n -k3,3n ${args} ${bedgraph} > ${bedgraph}_sorted.bedgraph
+ bedGraphToBigWig ${bedgraph}_sorted.bedgraph ${chrom_sizes} ${prefix}_telomer.bw;
+
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ bedGraphToBigWig: \$(echo \$(bedGraphToBigWig 2>&1) | sed 's/^.*bedGraphToBigWig //; s/Copyright.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/local/hic_curation/filter_five_end.nf b/modules/local/hic_curation/filter_five_end.nf
new file mode 100644
index 00000000..5099a206
--- /dev/null
+++ b/modules/local/hic_curation/filter_five_end.nf
@@ -0,0 +1,32 @@
+process FILTER_FIVE_END {
+ tag "$meta.id"
+ label 'process_medium'
+
+ container "community.wave.seqera.io/library/samtools_perl:e2ce3f7265547d1f"
+
+ input:
+ tuple val(meta), path(bam)
+
+ output:
+ tuple val(meta), path("*.bam") , emit: bam
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+
+ """
+ samtools view -h -@ $task.cpus ${bam} | \\
+ perl ${projectDir}/bin/filter_five_end.pl | \\
+ samtools view -@ $task.cpus -Sb - > ${prefix}.bam
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/local/hic_curation/pretext_tracks_ingestion.nf b/modules/local/hic_curation/pretext_tracks_ingestion.nf
new file mode 100644
index 00000000..a9457c47
--- /dev/null
+++ b/modules/local/hic_curation/pretext_tracks_ingestion.nf
@@ -0,0 +1,42 @@
+process PRETEXT_TRACKS_INGESTION {
+ tag "$meta.id"
+ label 'process_medium'
+
+ container "community.wave.seqera.io/library/pretextgraph:0.0.6--561a906eedf096a7"
+
+ input:
+ tuple val(meta), path(pretext_in), path(cov_bedgraph), path(telomer_bedgraph), path(gap_bedgraph)
+
+ output:
+ tuple val(meta), path("*_wTracks.pretext") , emit: hitile
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+
+ """
+ cat ${cov_bedgraph} | PretextGraph -i ${pretext_in} -n coverage -o ${prefix}_cov.pretext
+ if [[ ${telomer_bedgraph.size()} -gt 0 && ${gap_bedgraph.size()} -gt 0 ]]
+ then
+ cat ${telomer_bedgraph} | PretextGraph -i ${prefix}_cov.pretext -n telomer -o ${prefix}_wTracks.pretext
+ cat ${gap_bedgraph} | PretextGraph -i ${prefix}_wTracks.pretext -n gap
+ elif [[ ${telomer_bedgraph.size()} -eq 0 && ${gap_bedgraph.size()} -gt 0 ]]
+ then
+ cat ${gap_bedgraph} | PretextGraph -i ${prefix}_cov.pretext -n gap -o ${prefix}_wTracks.pretext
+ elif [[ ${telomer_bedgraph.size()} -gt 0 && ${gap_bedgraph.size()} -eq 0 ]]
+ then
+ cat ${telomer_bedgraph} | PretextGraph -i ${prefix}_cov.pretext -n telomer -o ${prefix}_wTracks.pretext
+ else
+ mv ${prefix}_cov.pretext ${prefix}_wTracks.pretext
+ fi
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ PretextGraph: \$(echo \$(PretextGraph 2>&1 | grep Version) | awk '{print \$NF}')
+ END_VERSIONS
+ """
+}
diff --git a/modules/local/hic_curation/tworeadcombiner_fixmate_sort.nf b/modules/local/hic_curation/tworeadcombiner_fixmate_sort.nf
new file mode 100644
index 00000000..12e858bc
--- /dev/null
+++ b/modules/local/hic_curation/tworeadcombiner_fixmate_sort.nf
@@ -0,0 +1,32 @@
+process TWOREADCOMBINER_FIXMATE_SORT {
+ tag "$meta.id"
+ label 'process_medium'
+
+ container "community.wave.seqera.io/library/samtools_perl:e2ce3f7265547d1f"
+
+ input:
+ tuple val(meta), path(bam)
+
+ output:
+ tuple val(meta), path("*.bam") , emit: bam
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+
+ """
+ perl ${projectDir}/bin/two_read_bam_combiner_sanger.pl ${bam} samtools ${args} | \\
+ grep -v -e "^@HD" | \\
+ samtools sort ${args2} -@${task.cpus} -T sort_tmp -o ${prefix}_comb.bam -
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/local/merquryfk/merquryfk.nf b/modules/local/merquryfk/merquryfk.nf
deleted file mode 100644
index 25688e16..00000000
--- a/modules/local/merquryfk/merquryfk.nf
+++ /dev/null
@@ -1,61 +0,0 @@
-process MERQURYFK_MERQURYFK {
- tag "$meta.id"
- label 'process_medium'
-
- // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions.
- container 'ghcr.io/nbisweden/fastk_genescopefk_merquryfk:1.2'
-
- input:
- tuple val(meta), path(fastk_hist), path(fastk_ktab), path(assembly)
-
- output:
- tuple val(meta), path("${prefix}.completeness.stats") , emit: stats
- tuple val(meta), path("${prefix}.*_only.bed") , emit: bed
- tuple val(meta), path("${prefix}.*.qv") , emit: assembly_qv
- tuple val(meta), path("${prefix}.*.spectra-cn.fl.png") , emit: spectra_cn_fl_png, optional: true
- tuple val(meta), path("${prefix}.*.spectra-cn.fl.pdf") , emit: spectra_cn_fl_pdf, optional: true
- tuple val(meta), path("${prefix}.*.spectra-cn.ln.png") , emit: spectra_cn_ln_png, optional: true
- tuple val(meta), path("${prefix}.*.spectra-cn.ln.pdf") , emit: spectra_cn_ln_pdf, optional: true
- tuple val(meta), path("${prefix}.*.spectra-cn.st.png") , emit: spectra_cn_st_png, optional: true
- tuple val(meta), path("${prefix}.*.spectra-cn.st.pdf") , emit: spectra_cn_st_pdf, optional: true
- tuple val(meta), path("${prefix}.qv") , emit: qv
- tuple val(meta), path("${prefix}.spectra-asm.fl.png") , emit: spectra_asm_fl_png, optional: true
- tuple val(meta), path("${prefix}.spectra-asm.fl.pdf") , emit: spectra_asm_fl_pdf, optional: true
- tuple val(meta), path("${prefix}.spectra-asm.ln.png") , emit: spectra_asm_ln_png, optional: true
- tuple val(meta), path("${prefix}.spectra-asm.ln.pdf") , emit: spectra_asm_ln_pdf, optional: true
- tuple val(meta), path("${prefix}.spectra-asm.st.png") , emit: spectra_asm_st_png, optional: true
- tuple val(meta), path("${prefix}.spectra-asm.st.pdf") , emit: spectra_asm_st_pdf, optional: true
- tuple val(meta), path("${prefix}.false_duplications.tsv"), emit: false_duplications
- tuple val(meta), path("${prefix}.cni.gz") , emit: cn_histogram
- path "versions.yml" , emit: versions
-
- when:
- task.ext.when == null || task.ext.when
-
- script:
- def args = task.ext.args ?: ''
- prefix = task.ext.prefix ?: "${meta.id}"
- def FASTK_VERSION = 'f18a4e6d2207539f7b84461daebc54530a9559b0'
- def MERQURY_VERSION = '8ae344092df5dcaf83cfb7f90f662597a9b1fc61'
- """
- MerquryFK \\
- $args \\
- -T$task.cpus \\
- ${fastk_ktab.find{ it.toString().endsWith(".ktab") }} \\
- $assembly \\
- $prefix
-
- mv .cni ${prefix}.cni
- awk -v asm_ploidy=${assembly instanceof List ? assembly.size() : 1} \\
- -f $projectDir/bin/false_duplications.awk ${prefix}.cni \\
- > ${prefix}.false_duplications.tsv
- gzip ${prefix}.cni
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- fastk: $FASTK_VERSION
- merquryfk: $MERQURY_VERSION
- r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' )
- END_VERSIONS
- """
-}
diff --git a/modules/local/quarto.nf b/modules/local/quarto.nf
deleted file mode 100644
index 9057370d..00000000
--- a/modules/local/quarto.nf
+++ /dev/null
@@ -1,43 +0,0 @@
-process QUARTO {
- tag "$notebook.baseName"
- label 'process_single'
-
- conda "conda-forge::quarto=1.3.450 conda-forge::r-base=4.3.2 conda-forge::r-tidyverse=2.0.0"
- container "docker.io/rocker/verse:4.3.2"
-
- input:
- tuple (
- val (meta),
- path (notebook),
- path (data, stageAs: 'data/*', arity: '1..*')
- )
-
- output:
- path "*.html" , emit: html
- path "versions.yml", emit: versions
-
- when:
- task.ext.when == null || task.ext.when
-
- script:
- def args = task.ext.args ?: ''
- def prefix = task.ext.prefix ?: notebook.baseName
- """
- export USERID=\$UID
- export XDG_CACHE_HOME=tmp/quarto_cache_home
- export XDG_DATA_HOME=tmp/quarto_data_home
-
- quarto \\
- render \\
- $notebook \\
- $args \\
- --output ${prefix}.html
-
- rm -rf tmp
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- quarto: \$( quarto --version )
- END_VERSIONS
- """
-}
diff --git a/modules/local/quarto/notebook/environment.yml b/modules/local/quarto/notebook/environment.yml
new file mode 100644
index 00000000..a11929cb
--- /dev/null
+++ b/modules/local/quarto/notebook/environment.yml
@@ -0,0 +1,10 @@
+channels:
+- conda-forge
+- bioconda
+dependencies:
+- bioconda::multiqc=1.25
+- conda-forge::jupyter=1.1.1
+- conda-forge::pandas=2.2.3
+- conda-forge::papermill=2.6.0
+- conda-forge::quarto=1.5.57
+- conda-forge::tabulate=0.9.0
\ No newline at end of file
diff --git a/modules/local/quarto/notebook/main.nf b/modules/local/quarto/notebook/main.nf
new file mode 100644
index 00000000..5831babe
--- /dev/null
+++ b/modules/local/quarto/notebook/main.nf
@@ -0,0 +1,55 @@
+process QUARTO_NOTEBOOK {
+ tag "$notebook.baseName"
+ label 'process_single'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/27/27ad4fe625a7c22fb1c8c3ee83dda7276f0e27f68385991df88b330e46e1d930/data':
+ 'community.wave.seqera.io/library/quarto_pip_jupyter_multiqc_pruned:a0afd98904fa925c' }"
+
+ input:
+ tuple val(meta), path(notebook, arity: '1')
+ path (log_files, stageAs: 'log_files/*', arity: '1..*')
+ path 'params.yml'
+
+ output:
+ path "${prefix}.html", arity: '1', emit: html
+ path "${prefix}.md" , arity: '1', emit: github_markdown
+ path "multiqc*.html" , arity: '1', emit: multiqc_summary
+ path "versions.yml" , arity: '1', emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ prefix = task.ext.prefix ?: notebook.baseName
+ """
+ export USERID=\$UID
+ export XDG_CACHE_HOME=tmp/quarto_cache_home
+ export XDG_DATA_HOME=tmp/quarto_data_home
+ # Fix Quarto for apptainer
+ ENV_QUARTO="\${ENV_QUARTO:-/opt/conda/etc/conda/activate.d/quarto.sh}"
+ set +u
+ if [ -z "\${QUARTO_DENO}" ] && [ -f "\${ENV_QUARTO}" ]; then
+ source "\${ENV_QUARTO}"
+ fi
+ set -u
+
+ # Link params to meta data
+ ln -s params.yml _quarto.yml
+
+ quarto check
+ quarto \\
+ render \\
+ $notebook \\
+ --execute-params params.yml \\
+ $args
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ quarto: \$(quarto --version)
+ multiqc: \$(multiqc --version | sed '1!d; s/.*version //')
+ END_VERSIONS
+ """
+}
\ No newline at end of file
diff --git a/modules/local/report/dtol.nf b/modules/local/report/dtol.nf
index 93aba10d..d0255317 100644
--- a/modules/local/report/dtol.nf
+++ b/modules/local/report/dtol.nf
@@ -1,5 +1,5 @@
process REPORT_DTOL {
- tag ""
+ tag "${tol_search_json.species[0].scientificName}"
label 'process_single'
input:
@@ -12,11 +12,13 @@ process REPORT_DTOL {
task.ext.when == null || task.ext.when
exec:
- def tol_table = [
- tolId: tol_search_json.species[0].tolIds[0]?.tolId?: "No ToL ID",
- species: tol_search_json.species[0].scientificName,
- class: tol_search_json.species[0].taxaClass,
- order: tol_search_json.species[0].order
- ].collect { key, value -> "$key\t$value" }.join('\n')
- file("$task.workDir/DToL.tsv").text = tol_table
+ def tol_table = []
+ tol_table << "ToL ID\tSpecies\tClass\tOrder"
+ tol_table << [
+ tol_search_json.species[0].tolIds[0]?.tolId?: "No ToL ID",
+ tol_search_json.species[0].scientificName,
+ tol_search_json.species[0].taxaClass,
+ tol_search_json.species[0].order
+ ].join("\t")
+ file("$task.workDir/DToL.tsv").text = tol_table.join('\n')
}
diff --git a/modules/local/report/genometraits.nf b/modules/local/report/genometraits.nf
index 76ab0bab..e802ed28 100644
--- a/modules/local/report/genometraits.nf
+++ b/modules/local/report/genometraits.nf
@@ -1,5 +1,5 @@
process REPORT_GENOMETRAITS {
- tag ""
+ tag "${meta.sample.name}"
label 'process_single'
input:
diff --git a/modules/local/tol/search.nf b/modules/local/tol/search.nf
index 895e44b8..3bc0222d 100644
--- a/modules/local/tol/search.nf
+++ b/modules/local/tol/search.nf
@@ -1,7 +1,5 @@
-import groovy.json.JsonSlurper
-
process TOL_SEARCH {
- tag "$taxid"
+ tag "Taxid: $taxid"
label 'process_single'
input:
@@ -16,5 +14,5 @@ process TOL_SEARCH {
exec:
def args = task.ext.args ?: ''
def response = new URL("https://id.tol.sanger.ac.uk/api/v2/species?taxonomyId=$taxid").text
- json = new JsonSlurper().parseText(response)
+ json = new groovy.json.JsonSlurper().parseText(response) as HashMap // Otherwise returns a LazyMap which causes caching problems.
}
diff --git a/modules/nf-core/biobambam/bammarkduplicates2/environment.yml b/modules/nf-core/biobambam/bammarkduplicates2/environment.yml
new file mode 100644
index 00000000..eb19895a
--- /dev/null
+++ b/modules/nf-core/biobambam/bammarkduplicates2/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::biobambam=2.0.183
diff --git a/modules/nf-core/biobambam/bammarkduplicates2/main.nf b/modules/nf-core/biobambam/bammarkduplicates2/main.nf
new file mode 100644
index 00000000..fb29e635
--- /dev/null
+++ b/modules/nf-core/biobambam/bammarkduplicates2/main.nf
@@ -0,0 +1,48 @@
+process BIOBAMBAM_BAMMARKDUPLICATES2 {
+ tag "$meta.id"
+ label 'process_medium'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/biobambam:2.0.183--h9f5acd7_1' : 'biocontainers/biobambam:2.0.183--h9f5acd7_1'}"
+
+ input:
+ tuple val(meta), path(bam)
+
+ output:
+ tuple val(meta), path("*.bam") , emit: bam
+ tuple val(meta), path("*.metrics.txt"), emit: metrics
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ bammarkduplicates2 \\
+ $args \\
+ I=$bam \\
+ O=${prefix}.bam \\
+ M=${prefix}.metrics.txt \\
+ tmpfile=$prefix \\
+ markthreads=$task.cpus
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ bammarkduplicates2: \$(echo \$(bammarkduplicates2 --version 2>&1) | sed 's/^This is biobambam2 version //; s/..biobambam2 is .*\$//' )
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ touch ${prefix}.bam
+ touch ${prefix}.metrics.txt
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ bammarkduplicates2: \$(echo \$(bammarkduplicates2 --version 2>&1) | sed 's/^This is biobambam2 version //; s/..biobambam2 is .*\$//' )
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/biobambam/bammarkduplicates2/meta.yml b/modules/nf-core/biobambam/bammarkduplicates2/meta.yml
new file mode 100644
index 00000000..60b26305
--- /dev/null
+++ b/modules/nf-core/biobambam/bammarkduplicates2/meta.yml
@@ -0,0 +1,55 @@
+name: biobambam_bammarkduplicates2
+description: Locate and tag duplicate reads in a BAM file
+keywords:
+ - markduplicates
+ - bam
+ - cram
+tools:
+ - biobambam:
+ description: |
+ biobambam is a set of tools for early stage alignment file processing.
+ homepage: https://gitlab.com/german.tischler/biobambam2
+ documentation: https://gitlab.com/german.tischler/biobambam2/-/blob/master/README.md
+ doi: 10.1186/1751-0473-9-13
+ licence: ["GPL v3"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: file
+ description: BAM/CRAM file
+ pattern: "*.{bam,cram}"
+output:
+ - bam:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.bam":
+ type: file
+ description: BAM file with duplicate reads marked/removed
+ pattern: "*.{bam}"
+ - metrics:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.metrics.txt":
+ type: file
+ description: Duplicate metrics file generated by biobambam
+ pattern: "*.{metrics.txt}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@muffato"
+maintainers:
+ - "@muffato"
diff --git a/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test b/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test
new file mode 100644
index 00000000..954635ce
--- /dev/null
+++ b/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test
@@ -0,0 +1,63 @@
+
+nextflow_process {
+
+ name "Test Process BIOBAMBAM_BAMMARKDUPLICATES2"
+ script "../main.nf"
+ process "BIOBAMBAM_BAMMARKDUPLICATES2"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "biobambam"
+ tag "biobambam/bammarkduplicates2"
+
+ test("test-biobambam-bammarkduplicates2") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true)
+ ]
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ bam(process.out.bam[0][1]).getReadsMD5(),
+ file(process.out.metrics[0][1]).readLines()[3..7],
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+ test("test-biobambam-bammarkduplicates2-stub") {
+ options '-stub'
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true)
+ ]
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test.snap b/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test.snap
new file mode 100644
index 00000000..7973ee1e
--- /dev/null
+++ b/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test.snap
@@ -0,0 +1,75 @@
+{
+ "test-biobambam-bammarkduplicates2": {
+ "content": [
+ "762e859a3d0ed1553655cde77665c940",
+ [
+ "LIBRARY\tUNPAIRED_READS_EXAMINED\tREAD_PAIRS_EXAMINED\tUNMAPPED_READS\tUNPAIRED_READ_DUPLICATES\tREAD_PAIR_DUPLICATES\tREAD_PAIR_OPTICAL_DUPLICATES\tPERCENT_DUPLICATION\tESTIMATED_LIBRARY_SIZE",
+ "lib1\t3\t97\t3\t0\t0\t0\t0\t-1",
+ "",
+ "## HISTOGRAM",
+ "BIN\tVALUE"
+ ],
+ [
+ "versions.yml:md5,05d0569b6cbc14212ccdfac3b15128f3"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-02T09:48:22.747008"
+ },
+ "test-biobambam-bammarkduplicates2-stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "2": [
+ "versions.yml:md5,05d0569b6cbc14212ccdfac3b15128f3"
+ ],
+ "bam": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "metrics": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,05d0569b6cbc14212ccdfac3b15128f3"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-02T09:48:26.94941"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/bwamem2/index/environment.yml b/modules/nf-core/bwamem2/index/environment.yml
new file mode 100644
index 00000000..15cee238
--- /dev/null
+++ b/modules/nf-core/bwamem2/index/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::bwa-mem2=2.2.1
diff --git a/modules/nf-core/bwamem2/index/main.nf b/modules/nf-core/bwamem2/index/main.nf
new file mode 100644
index 00000000..b7688285
--- /dev/null
+++ b/modules/nf-core/bwamem2/index/main.nf
@@ -0,0 +1,52 @@
+process BWAMEM2_INDEX {
+ tag "$fasta"
+ label 'process_single'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/bwa-mem2:2.2.1--he513fc3_0' :
+ 'biocontainers/bwa-mem2:2.2.1--he513fc3_0' }"
+
+ input:
+ tuple val(meta), path(fasta)
+
+ output:
+ tuple val(meta), path("bwamem2"), emit: index
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def prefix = task.ext.prefix ?: "${fasta}"
+ def args = task.ext.args ?: ''
+ """
+ mkdir bwamem2
+ bwa-mem2 \\
+ index \\
+ $args \\
+ $fasta -p bwamem2/${prefix}
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ bwamem2: \$(echo \$(bwa-mem2 version 2>&1) | sed 's/.* //')
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${fasta}"
+
+ """
+ mkdir bwamem2
+ touch bwamem2/${prefix}.0123
+ touch bwamem2/${prefix}.ann
+ touch bwamem2/${prefix}.pac
+ touch bwamem2/${prefix}.amb
+ touch bwamem2/${prefix}.bwt.2bit.64
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ bwamem2: \$(echo \$(bwa-mem2 version 2>&1) | sed 's/.* //')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/bwamem2/index/meta.yml b/modules/nf-core/bwamem2/index/meta.yml
new file mode 100644
index 00000000..c14a1092
--- /dev/null
+++ b/modules/nf-core/bwamem2/index/meta.yml
@@ -0,0 +1,42 @@
+name: bwamem2_index
+description: Create BWA-mem2 index for reference genome
+keywords:
+ - index
+ - fasta
+ - genome
+ - reference
+tools:
+ - bwamem2:
+ description: |
+ BWA-mem2 is a software package for mapping DNA sequences against
+ a large reference genome, such as the human genome.
+ homepage: https://github.com/bwa-mem2/bwa-mem2
+ documentation: https://github.com/bwa-mem2/bwa-mem2#usage
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - fasta:
+ type: file
+ description: Input genome fasta file
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - index:
+ type: file
+ description: BWA genome index files
+ pattern: "*.{0123,amb,ann,bwt.2bit.64,pac}"
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@maxulysse"
+maintainers:
+ - "@maxulysse"
diff --git a/modules/nf-core/bwamem2/index/tests/main.nf.test b/modules/nf-core/bwamem2/index/tests/main.nf.test
new file mode 100644
index 00000000..dbf11132
--- /dev/null
+++ b/modules/nf-core/bwamem2/index/tests/main.nf.test
@@ -0,0 +1,31 @@
+nextflow_process {
+
+ name "Test Process BWAMEM2_INDEX"
+ tag "modules_nfcore"
+ tag "modules"
+ tag "bwamem2"
+ tag "bwamem2/index"
+ script "../main.nf"
+ process "BWAMEM2_INDEX"
+
+ test("BWAMEM2 index") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [id: 'test'],
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+}
diff --git a/modules/nf-core/bwamem2/index/tests/main.nf.test.snap b/modules/nf-core/bwamem2/index/tests/main.nf.test.snap
new file mode 100644
index 00000000..69b268ee
--- /dev/null
+++ b/modules/nf-core/bwamem2/index/tests/main.nf.test.snap
@@ -0,0 +1,47 @@
+{
+ "BWAMEM2 index": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ [
+ "genome.fasta.0123:md5,b02870de80106104abcb03cd9463e7d8",
+ "genome.fasta.amb:md5,3a68b8b2287e07dd3f5f95f4344ba76e",
+ "genome.fasta.ann:md5,c32e11f6c859f166c7525a9c1d583567",
+ "genome.fasta.bwt.2bit.64:md5,d097a1b82dee375d41a1ea69895a9216",
+ "genome.fasta.pac:md5,983e3d2cd6f36e2546e6d25a0da78d66"
+ ]
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,9ffd13d12e7108ed15c58566bc4717d6"
+ ],
+ "index": [
+ [
+ {
+ "id": "test"
+ },
+ [
+ "genome.fasta.0123:md5,b02870de80106104abcb03cd9463e7d8",
+ "genome.fasta.amb:md5,3a68b8b2287e07dd3f5f95f4344ba76e",
+ "genome.fasta.ann:md5,c32e11f6c859f166c7525a9c1d583567",
+ "genome.fasta.bwt.2bit.64:md5,d097a1b82dee375d41a1ea69895a9216",
+ "genome.fasta.pac:md5,983e3d2cd6f36e2546e6d25a0da78d66"
+ ]
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,9ffd13d12e7108ed15c58566bc4717d6"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.02.0"
+ },
+ "timestamp": "2024-03-18T12:59:39.132616"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/bwamem2/index/tests/tags.yml b/modules/nf-core/bwamem2/index/tests/tags.yml
new file mode 100644
index 00000000..3953018e
--- /dev/null
+++ b/modules/nf-core/bwamem2/index/tests/tags.yml
@@ -0,0 +1,2 @@
+bwamem2/index:
+ - modules/nf-core/bwamem2/index/**
diff --git a/modules/nf-core/bwamem2/mem/environment.yml b/modules/nf-core/bwamem2/mem/environment.yml
new file mode 100644
index 00000000..633712cf
--- /dev/null
+++ b/modules/nf-core/bwamem2/mem/environment.yml
@@ -0,0 +1,8 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bwa-mem2=2.2.1
+ # renovate: datasource=conda depName=bioconda/samtools
+ - samtools=1.19.2
+ - htslib=1.19.1
diff --git a/modules/nf-core/bwamem2/mem/main.nf b/modules/nf-core/bwamem2/mem/main.nf
new file mode 100644
index 00000000..729428c4
--- /dev/null
+++ b/modules/nf-core/bwamem2/mem/main.nf
@@ -0,0 +1,86 @@
+process BWAMEM2_MEM {
+ tag "$meta.id"
+ label 'process_high'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/mulled-v2-e5d375990341c5aef3c9aff74f96f66f65375ef6:2d15960ccea84e249a150b7f5d4db3a42fc2d6c3-0' :
+ 'biocontainers/mulled-v2-e5d375990341c5aef3c9aff74f96f66f65375ef6:2d15960ccea84e249a150b7f5d4db3a42fc2d6c3-0' }"
+
+ input:
+ tuple val(meta), path(reads)
+ tuple val(meta2), path(index)
+ tuple val(meta3), path(fasta)
+ val sort_bam
+
+ output:
+ tuple val(meta), path("*.sam") , emit: sam , optional:true
+ tuple val(meta), path("*.bam") , emit: bam , optional:true
+ tuple val(meta), path("*.cram") , emit: cram, optional:true
+ tuple val(meta), path("*.crai") , emit: crai, optional:true
+ tuple val(meta), path("*.csi") , emit: csi , optional:true
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def samtools_command = sort_bam ? 'sort' : 'view'
+
+ def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/
+ def extension_matcher = (args2 =~ extension_pattern)
+ def extension = extension_matcher.getCount() > 0 ? extension_matcher[0][2].toLowerCase() : "bam"
+ def reference = fasta && extension=="cram" ? "--reference ${fasta}" : ""
+ if (!fasta && extension=="cram") error "Fasta reference is required for CRAM output"
+
+ """
+ INDEX=`find -L ./ -name "*.amb" | sed 's/\\.amb\$//'`
+
+ bwa-mem2 \\
+ mem \\
+ $args \\
+ -t $task.cpus \\
+ \$INDEX \\
+ $reads \\
+ | samtools $samtools_command $args2 -@ $task.cpus ${reference} -o ${prefix}.${extension} -
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ bwamem2: \$(echo \$(bwa-mem2 version 2>&1) | sed 's/.* //')
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+
+ stub:
+
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def samtools_command = sort_bam ? 'sort' : 'view'
+ def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/
+ def extension_matcher = (args2 =~ extension_pattern)
+ def extension = extension_matcher.getCount() > 0 ? extension_matcher[0][2].toLowerCase() : "bam"
+ def reference = fasta && extension=="cram" ? "--reference ${fasta}" : ""
+ if (!fasta && extension=="cram") error "Fasta reference is required for CRAM output"
+
+ def create_index = ""
+ if (extension == "cram") {
+ create_index = "touch ${prefix}.crai"
+ } else if (extension == "bam") {
+ create_index = "touch ${prefix}.csi"
+ }
+
+ """
+ touch ${prefix}.${extension}
+ ${create_index}
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ bwamem2: \$(echo \$(bwa-mem2 version 2>&1) | sed 's/.* //')
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/bwamem2/mem/meta.yml b/modules/nf-core/bwamem2/mem/meta.yml
new file mode 100644
index 00000000..931f7129
--- /dev/null
+++ b/modules/nf-core/bwamem2/mem/meta.yml
@@ -0,0 +1,88 @@
+name: bwamem2_mem
+description: Performs fastq alignment to a fasta reference using BWA
+keywords:
+ - mem
+ - bwa
+ - alignment
+ - map
+ - fastq
+ - bam
+ - sam
+tools:
+ - bwa:
+ description: |
+ BWA-mem2 is a software package for mapping DNA sequences against
+ a large reference genome, such as the human genome.
+ homepage: https://github.com/bwa-mem2/bwa-mem2
+ documentation: http://www.htslib.org/doc/samtools.html
+ arxiv: arXiv:1303.3997
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - reads:
+ type: file
+ description: |
+ List of input FastQ files of size 1 and 2 for single-end and paired-end data,
+ respectively.
+ - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference/index information
+ e.g. [ id:'test' ]
+ - index:
+ type: file
+ description: BWA genome index files
+ pattern: "Directory containing BWA index *.{0132,amb,ann,bwt.2bit.64,pac}"
+ - meta3:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'genome' ]
+ - fasta:
+ type: file
+ description: Reference genome in FASTA format
+ pattern: "*.{fa,fasta,fna}"
+ - sort_bam:
+ type: boolean
+ description: use samtools sort (true) or samtools view (false)
+ pattern: "true or false"
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - sam:
+ type: file
+ description: Output SAM file containing read alignments
+ pattern: "*.{sam}"
+ - bam:
+ type: file
+ description: Output BAM file containing read alignments
+ pattern: "*.{bam}"
+ - cram:
+ type: file
+ description: Output CRAM file containing read alignments
+ pattern: "*.{cram}"
+ - crai:
+ type: file
+ description: Index file for CRAM file
+ pattern: "*.{crai}"
+ - csi:
+ type: file
+ description: Index file for BAM file
+ pattern: "*.{csi}"
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@maxulysse"
+ - "@matthdsm"
+maintainers:
+ - "@maxulysse"
+ - "@matthdsm"
diff --git a/modules/nf-core/bwamem2/mem/tests/main.nf.test b/modules/nf-core/bwamem2/mem/tests/main.nf.test
new file mode 100644
index 00000000..9e0ab14a
--- /dev/null
+++ b/modules/nf-core/bwamem2/mem/tests/main.nf.test
@@ -0,0 +1,179 @@
+nextflow_process {
+
+ name "Test Process BWAMEM2_MEM"
+ script "../main.nf"
+ process "BWAMEM2_MEM"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "bwamem2"
+ tag "bwamem2/mem"
+ tag "bwamem2/index"
+
+ setup {
+ run("BWAMEM2_INDEX") {
+ script "../../index/main.nf"
+ process {
+ """
+ input[0] = Channel.of([
+ [:], // meta map
+ [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]
+ ])
+ """
+ }
+ }
+ }
+
+ test("sarscov2 - fastq, index, fasta, false") {
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:true ], // meta map
+ [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)]
+ ])
+ input[1] = BWAMEM2_INDEX.out.index
+ input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]])
+ input[3] = false
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ bam(process.out.bam[0][1]).getHeaderMD5(),
+ bam(process.out.bam[0][1]).getReadsMD5(),
+ process.out.versions
+ ).match() }
+ )
+ }
+
+ }
+
+ test("sarscov2 - fastq, index, fasta, true") {
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:true ], // meta map
+ [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)]
+ ])
+ input[1] = BWAMEM2_INDEX.out.index
+ input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]])
+ input[3] = true
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ bam(process.out.bam[0][1]).getHeaderMD5(),
+ bam(process.out.bam[0][1]).getReadsMD5(),
+ process.out.versions
+ ).match() }
+ )
+ }
+
+ }
+
+ test("sarscov2 - [fastq1, fastq2], index, fasta, false") {
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ [
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)
+ ]
+ ])
+ input[1] = BWAMEM2_INDEX.out.index
+ input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]])
+ input[3] = false
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ bam(process.out.bam[0][1]).getHeaderMD5(),
+ bam(process.out.bam[0][1]).getReadsMD5(),
+ process.out.versions
+ ).match() }
+ )
+ }
+
+ }
+
+ test("sarscov2 - [fastq1, fastq2], index, fasta, true") {
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ [
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)
+ ]
+ ])
+ input[1] = BWAMEM2_INDEX.out.index
+ input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]])
+ input[3] = true
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ bam(process.out.bam[0][1]).getHeaderMD5(),
+ bam(process.out.bam[0][1]).getReadsMD5(),
+ process.out.versions
+ ).match() }
+ )
+ }
+
+ }
+
+ test("sarscov2 - [fastq1, fastq2], index, fasta, true - stub") {
+
+ options "-stub"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ [
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)
+ ]
+ ])
+ input[1] = BWAMEM2_INDEX.out.index
+ input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]])
+ input[3] = true
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap b/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap
new file mode 100644
index 00000000..69bc3612
--- /dev/null
+++ b/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap
@@ -0,0 +1,129 @@
+{
+ "sarscov2 - [fastq1, fastq2], index, fasta, false": {
+ "content": [
+ "eefa0f44493fd0504e734efd2f1f4a9e",
+ "57aeef88ed701a8ebc8e2f0a381b2a6",
+ [
+ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-02T12:23:37.929675"
+ },
+ "sarscov2 - [fastq1, fastq2], index, fasta, true - stub": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "2": [
+
+ ],
+ "3": [
+
+ ],
+ "4": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "5": [
+ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a"
+ ],
+ "bam": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "crai": [
+
+ ],
+ "cram": [
+
+ ],
+ "csi": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "sam": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-02T12:12:06.693567"
+ },
+ "sarscov2 - [fastq1, fastq2], index, fasta, true": {
+ "content": [
+ "7aba324f82d5b4e926a5dd7b46029cb4",
+ "af8628d9df18b2d3d4f6fd47ef2bb872",
+ [
+ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-02T12:23:53.488374"
+ },
+ "sarscov2 - fastq, index, fasta, false": {
+ "content": [
+ "bc02b41697b3a8f1021b02becec24052",
+ "798439cbd7fd81cbcc5078022dc5479d",
+ [
+ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-02T12:23:05.644682"
+ },
+ "sarscov2 - fastq, index, fasta, true": {
+ "content": [
+ "e41d67320815d29ba5f6e9d1ae21902a",
+ "94fcf617f5b994584c4e8d4044e16b4f",
+ [
+ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-02T12:23:21.837763"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/bwamem2/mem/tests/tags.yml b/modules/nf-core/bwamem2/mem/tests/tags.yml
new file mode 100644
index 00000000..134efb2b
--- /dev/null
+++ b/modules/nf-core/bwamem2/mem/tests/tags.yml
@@ -0,0 +1,2 @@
+bwamem2/mem:
+ - "modules/nf-core/bwamem2/mem/**"
diff --git a/modules/nf-core/cooler/cload/environment.yml b/modules/nf-core/cooler/cload/environment.yml
new file mode 100644
index 00000000..f8165ca9
--- /dev/null
+++ b/modules/nf-core/cooler/cload/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::cooler=0.9.2
diff --git a/modules/nf-core/cooler/cload/main.nf b/modules/nf-core/cooler/cload/main.nf
new file mode 100644
index 00000000..b170a5d0
--- /dev/null
+++ b/modules/nf-core/cooler/cload/main.nf
@@ -0,0 +1,50 @@
+process COOLER_CLOAD {
+ tag "$meta.id"
+ label 'process_high'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/cooler:0.9.2--pyh7cba7a3_0' :
+ 'biocontainers/cooler:0.9.2--pyh7cba7a3_0' }"
+
+ input:
+ tuple val(meta), path(pairs), path(index), val(cool_bin)
+ path chromsizes
+
+ output:
+ tuple val(meta), path("*.cool"), val(cool_bin), emit: cool
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def nproc = args.contains('pairix') || args.contains('tabix')? "--nproc $task.cpus" : ''
+
+ """
+ cooler cload \\
+ $args \\
+ $nproc \\
+ ${chromsizes}:${cool_bin} \\
+ $pairs \\
+ ${prefix}.cool
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //')
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ touch ${prefix}.cool
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/cooler/cload/meta.yml b/modules/nf-core/cooler/cload/meta.yml
new file mode 100644
index 00000000..1bb9f748
--- /dev/null
+++ b/modules/nf-core/cooler/cload/meta.yml
@@ -0,0 +1,60 @@
+name: cooler_cload
+description: Create a cooler from genomic pairs and bins
+keywords:
+ - cool
+ - cooler
+ - cload
+ - hic
+tools:
+ - cooler:
+ description: Sparse binary format for genomic interaction matrices
+ homepage: https://open2c.github.io/cooler/
+ documentation: https://cooler.readthedocs.io/en/latest/index.html
+ tool_dev_url: https://github.com/open2c/cooler
+ doi: "10.1093/bioinformatics/btz540"
+ licence: ["BSD-3-clause"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - pairs:
+ type: file
+ description: Path to contacts (i.e. read pairs) file.
+ - index:
+ type: file
+ description: Path to index file of the contacts.
+ - cool_bin:
+ type: integer
+ description: Bins size in bp
+ - - chromsizes:
+ type: file
+ description: Path to a chromsizes file.
+output:
+ - cool:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.cool":
+ type: file
+ description: Output COOL file path
+ pattern: "*.cool"
+ - cool_bin:
+ type: file
+ description: Output COOL file path
+ pattern: "*.cool"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@jianhong"
+ - "@muffato"
+maintainers:
+ - "@jianhong"
+ - "@muffato"
diff --git a/modules/nf-core/cooler/zoomify/environment.yml b/modules/nf-core/cooler/zoomify/environment.yml
new file mode 100644
index 00000000..f8165ca9
--- /dev/null
+++ b/modules/nf-core/cooler/zoomify/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::cooler=0.9.2
diff --git a/modules/nf-core/cooler/zoomify/main.nf b/modules/nf-core/cooler/zoomify/main.nf
new file mode 100644
index 00000000..f9933dff
--- /dev/null
+++ b/modules/nf-core/cooler/zoomify/main.nf
@@ -0,0 +1,46 @@
+process COOLER_ZOOMIFY {
+ tag "$meta.id"
+ label 'process_high'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/cooler:0.9.2--pyh7cba7a3_0' :
+ 'biocontainers/cooler:0.9.2--pyh7cba7a3_0' }"
+
+ input:
+ tuple val(meta), path(cool)
+
+ output:
+ tuple val(meta), path("*.mcool"), emit: mcool
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ cooler zoomify \\
+ $args \\
+ -n $task.cpus \\
+ -o ${prefix}.mcool \\
+ $cool
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //')
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ touch ${prefix}.mcool
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/cooler/zoomify/meta.yml b/modules/nf-core/cooler/zoomify/meta.yml
new file mode 100644
index 00000000..3f928781
--- /dev/null
+++ b/modules/nf-core/cooler/zoomify/meta.yml
@@ -0,0 +1,45 @@
+name: cooler_zoomify
+description: Generate a multi-resolution cooler file by coarsening
+keywords:
+ - mcool
+ - cool
+ - cooler
+tools:
+ - cooler:
+ description: Sparse binary format for genomic interaction matrices
+ homepage: https://open2c.github.io/cooler/
+ documentation: https://cooler.readthedocs.io/en/latest/index.html
+ tool_dev_url: https://github.com/open2c/cooler
+ doi: "10.1093/bioinformatics/btz540"
+ licence: ["BSD-3-clause"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - cool:
+ type: file
+ description: Path to COOL file
+ pattern: "*.{cool,mcool}"
+output:
+ - mcool:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.mcool":
+ type: file
+ description: Output mcool file
+ pattern: "*.mcool"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@jianhong"
+maintainers:
+ - "@jianhong"
diff --git a/modules/nf-core/merquryfk/merquryfk/main.nf b/modules/nf-core/merquryfk/merquryfk/main.nf
new file mode 100644
index 00000000..7fb6811c
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/main.nf
@@ -0,0 +1,92 @@
+process MERQURYFK_MERQURYFK {
+ tag "$meta.id"
+ label 'process_medium'
+
+ // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions.
+ container 'ghcr.io/nbisweden/fastk_genescopefk_merquryfk:1.2'
+
+ input:
+ tuple val(meta), path(fastk_hist),path(fastk_ktab),path(assembly),path(haplotigs)
+ path matktab //optional
+ path patktab //optional
+
+ output:
+ tuple val(meta), path("${prefix}.completeness.stats") , emit: stats
+ tuple val(meta), path("${prefix}.*_only.bed") , emit: bed
+ tuple val(meta), path("${prefix}.*.qv") , emit: assembly_qv
+ tuple val(meta), path("${prefix}.*.spectra-cn.fl.{png,pdf}") , emit: part_spectra_cn_fl, optional: true
+ tuple val(meta), path("${prefix}.*.spectra-cn.ln.{png,pdf}") , emit: part_spectra_cn_ln, optional: true
+ tuple val(meta), path("${prefix}.*.spectra-cn.st.{png,pdf}") , emit: part_spectra_cn_st, optional: true
+ tuple val(meta), path("${prefix}.spectra-cn.fl.{png,pdf}") , emit: full_spectra_cn_fl, optional: true
+ tuple val(meta), path("${prefix}.spectra-cn.ln.{png,pdf}") , emit: full_spectra_cn_ln, optional: true
+ tuple val(meta), path("${prefix}.spectra-cn.st.{png,pdf}") , emit: full_spectra_cn_st, optional: true
+ tuple val(meta), path("${prefix}.qv") , emit: qv
+ tuple val(meta), path("${prefix}.spectra-asm.fl.{png,pdf}") , emit: spectra_asm_fl, optional: true
+ tuple val(meta), path("${prefix}.spectra-asm.ln.{png,pdf}") , emit: spectra_asm_ln, optional: true
+ tuple val(meta), path("${prefix}.spectra-asm.st.{png,pdf}") , emit: spectra_asm_st, optional: true
+ tuple val(meta), path("${prefix}.phased_block.bed") , emit: phased_block_bed, optional: true
+ tuple val(meta), path("${prefix}.phased_block.stats") , emit: phased_block_stats, optional: true
+ tuple val(meta), path("${prefix}.continuity.N.{pdf,png}") , emit: continuity_N, optional: true
+ tuple val(meta), path("${prefix}.block.N.{pdf,png}") , emit: block_N, optional: true
+ tuple val(meta), path("${prefix}.block.blob.{pdf,png}") , emit: block_blob, optional: true
+ tuple val(meta), path("${prefix}.hapmers.blob.{pdf,png}") , emit: hapmers_blob, optional: true
+ tuple val(meta), path("${prefix}.false_duplications.tsv") , emit: false_duplications
+ tuple val(meta), path("${prefix}.cni.gz") , emit: cn_histogram
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ // Exit if running this module with -profile conda / -profile mamba
+ if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) {
+ error "MERQURYFK_MERQURYFK module does not support Conda. Please use Docker / Singularity / Podman instead."
+ }
+ def args = task.ext.args ?: ''
+ prefix = task.ext.prefix ?: "${meta.id}"
+ def mat_ktab = matktab ? "${matktab.find{ it.toString().endsWith(".ktab") }}" : ''
+ def pat_ktab = patktab ? "${patktab.find{ it.toString().endsWith(".ktab") }}" : ''
+ def FASTK_VERSION = 'f18a4e6d2207539f7b84461daebc54530a9559b0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions.
+ def MERQURY_VERSION = '8ae344092df5dcaf83cfb7f90f662597a9b1fc61' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions.
+ """
+ MerquryFK \\
+ $args \\
+ -T$task.cpus \\
+ ${fastk_ktab.find{ it.toString().endsWith(".ktab") }} \\
+ ${mat_ktab} \\
+ ${pat_ktab} \\
+ $assembly \\
+ $haplotigs \\
+ $prefix
+
+ mv .cni ${prefix}.cni
+ awk -v asm_ploidy=${assembly instanceof List ? assembly.size() : 1} \\
+ -f $projectDir/bin/false_duplications.awk ${prefix}.cni \\
+ > ${prefix}.false_duplications.tsv
+ gzip ${prefix}.cni
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ fastk: $FASTK_VERSION
+ merquryfk: $MERQURY_VERSION
+ r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' )
+ END_VERSIONS
+ """
+
+ stub:
+ prefix = task.ext.prefix ?: "${meta.id}"
+ def FASTK_VERSION = 'f18a4e6d2207539f7b84461daebc54530a9559b0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions.
+ def MERQURY_VERSION = '8ae344092df5dcaf83cfb7f90f662597a9b1fc61' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions.
+ """
+ touch ${prefix}.completeness.stats
+ touch ${prefix}.qv
+ touch ${prefix}._.qv
+ touch ${prefix}._only.bed
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ fastk: $FASTK_VERSION
+ merquryfk: $MERQURY_VERSION
+ r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' )
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/merquryfk/merquryfk/merquryfk-merquryfk.diff b/modules/nf-core/merquryfk/merquryfk/merquryfk-merquryfk.diff
new file mode 100644
index 00000000..99fded48
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/merquryfk-merquryfk.diff
@@ -0,0 +1,60 @@
+Changes in module 'nf-core/merquryfk/merquryfk'
+'modules/nf-core/merquryfk/merquryfk/meta.yml' is unchanged
+Changes in 'merquryfk/merquryfk/main.nf':
+--- modules/nf-core/merquryfk/merquryfk/main.nf
++++ modules/nf-core/merquryfk/merquryfk/main.nf
+@@ -14,9 +14,12 @@
+ tuple val(meta), path("${prefix}.completeness.stats") , emit: stats
+ tuple val(meta), path("${prefix}.*_only.bed") , emit: bed
+ tuple val(meta), path("${prefix}.*.qv") , emit: assembly_qv
+- tuple val(meta), path("${prefix}.*.spectra-cn.fl.{png,pdf}") , emit: spectra_cn_fl, optional: true
+- tuple val(meta), path("${prefix}.*.spectra-cn.ln.{png,pdf}") , emit: spectra_cn_ln, optional: true
+- tuple val(meta), path("${prefix}.*.spectra-cn.st.{png,pdf}") , emit: spectra_cn_st, optional: true
++ tuple val(meta), path("${prefix}.*.spectra-cn.fl.{png,pdf}") , emit: part_spectra_cn_fl, optional: true
++ tuple val(meta), path("${prefix}.*.spectra-cn.ln.{png,pdf}") , emit: part_spectra_cn_ln, optional: true
++ tuple val(meta), path("${prefix}.*.spectra-cn.st.{png,pdf}") , emit: part_spectra_cn_st, optional: true
++ tuple val(meta), path("${prefix}.spectra-cn.fl.{png,pdf}") , emit: full_spectra_cn_fl, optional: true
++ tuple val(meta), path("${prefix}.spectra-cn.ln.{png,pdf}") , emit: full_spectra_cn_ln, optional: true
++ tuple val(meta), path("${prefix}.spectra-cn.st.{png,pdf}") , emit: full_spectra_cn_st, optional: true
+ tuple val(meta), path("${prefix}.qv") , emit: qv
+ tuple val(meta), path("${prefix}.spectra-asm.fl.{png,pdf}") , emit: spectra_asm_fl, optional: true
+ tuple val(meta), path("${prefix}.spectra-asm.ln.{png,pdf}") , emit: spectra_asm_ln, optional: true
+@@ -27,6 +30,8 @@
+ tuple val(meta), path("${prefix}.block.N.{pdf,png}") , emit: block_N, optional: true
+ tuple val(meta), path("${prefix}.block.blob.{pdf,png}") , emit: block_blob, optional: true
+ tuple val(meta), path("${prefix}.hapmers.blob.{pdf,png}") , emit: hapmers_blob, optional: true
++ tuple val(meta), path("${prefix}.false_duplications.tsv") , emit: false_duplications
++ tuple val(meta), path("${prefix}.cni.gz") , emit: cn_histogram
+ path "versions.yml" , emit: versions
+
+ when:
+@@ -54,6 +59,12 @@
+ $haplotigs \\
+ $prefix
+
++ mv .cni ${prefix}.cni
++ awk -v asm_ploidy=${assembly instanceof List ? assembly.size() : 1} \\
++ -f $projectDir/bin/false_duplications.awk ${prefix}.cni \\
++ > ${prefix}.false_duplications.tsv
++ gzip ${prefix}.cni
++
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ fastk: $FASTK_VERSION
+@@ -61,6 +72,7 @@
+ r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' )
+ END_VERSIONS
+ """
++
+ stub:
+ prefix = task.ext.prefix ?: "${meta.id}"
+ def FASTK_VERSION = 'f18a4e6d2207539f7b84461daebc54530a9559b0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions.
+
+'modules/nf-core/merquryfk/merquryfk/tests/nextflow.trio.config' is unchanged
+'modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap' is unchanged
+'modules/nf-core/merquryfk/merquryfk/tests/nextflow.pdf.config' is unchanged
+'modules/nf-core/merquryfk/merquryfk/tests/tags.yml' is unchanged
+'modules/nf-core/merquryfk/merquryfk/tests/nextflow.config' is unchanged
+'modules/nf-core/merquryfk/merquryfk/tests/main.nf.test' is unchanged
+'modules/nf-core/merquryfk/merquryfk/tests/nextflow.png.config' is unchanged
+************************************************************
diff --git a/modules/nf-core/merquryfk/merquryfk/meta.yml b/modules/nf-core/merquryfk/merquryfk/meta.yml
new file mode 100644
index 00000000..82bfbec4
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/meta.yml
@@ -0,0 +1,217 @@
+name: "merquryfk_merquryfk"
+description: FastK based version of Merqury
+keywords:
+ - Merqury
+ - reference-free
+ - assembly evaluation
+tools:
+ - "merquryfk":
+ description: "FastK based version of Merqury"
+ homepage: "https://github.com/thegenemyers/MERQURY.FK"
+ tool_dev_url: "https://github.com/thegenemyers/MERQURY.FK"
+ licence: ["https://github.com/thegenemyers/MERQURY.FK/blob/main/LICENSE"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - fastk_hist:
+ type: file
+ description: A histogram files from the program FastK
+ pattern: "*.hist"
+ - fastk_ktab:
+ type: file
+ description: Histogram ktab files from the program FastK (option -t)
+ pattern: "*.ktab*"
+ - assembly:
+ type: file
+ description: Genome (primary) assembly files (fasta format)
+ pattern: ".fasta"
+ - haplotigs:
+ type: file
+ description: Assembly haplotigs (fasta format)
+ pattern: ".fasta"
+ - - matktab:
+ type: file
+ description: trio maternal histogram ktab files from the program FastK (option
+ -t)
+ pattern: "*.ktab*"
+ - - patktab:
+ type: file
+ description: trio paternal histogram ktab files from the program FastK (option
+ -t)
+ pattern: "*.ktab*"
+output:
+ - stats:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.completeness.stats:
+ type: file
+ description: Assembly statistics file
+ pattern: "*.completeness.stats"
+ - bed:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.*_only.bed:
+ type: file
+ description: Assembly only kmer positions not supported by reads in bed format
+ pattern: "*_only.bed"
+ - assembly_qv:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.*.qv:
+ type: file
+ description: "error and qv table for each scaffold of the assembly"
+ pattern: "*.qv"
+ - spectra_cn_fl:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.*.spectra-cn.fl.{png,pdf}:
+ type: file
+ description: "Unstacked copy number spectra filled plot in PNG or PDF format"
+ pattern: "*.spectra-cn.fl.{png,pdf}"
+ - spectra_cn_ln:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.*.spectra-cn.ln.{png,pdf}:
+ type: file
+ description: "Unstacked copy number spectra line plot in PNG or PDF format"
+ pattern: "*.spectra-cn.ln.{png,pdf}"
+ - spectra_cn_st:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.*.spectra-cn.st.{png,pdf}:
+ type: file
+ description: "Stacked copy number spectra line plot in PNG or PDF format"
+ pattern: "*.spectra-cn.st.{png,pdf}"
+ - qv:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.qv:
+ type: file
+ description: "error and qv of each assembly as a whole"
+ pattern: "*.qv"
+ - spectra_asm_fl:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.spectra-asm.fl.{png,pdf}:
+ type: file
+ description: "Unstacked assembly spectra filled plot in PNG or PDF format"
+ pattern: "*.spectra-asm.fl.{png,pdf}"
+ - spectra_asm_ln:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.spectra-asm.ln.{png,pdf}:
+ type: file
+ description: "Unstacked assembly spectra line plot in PNG or PDF format"
+ pattern: "*.spectra-asm.ln.{png,pdf}"
+ - spectra_asm_st:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.spectra-asm.st.{png,pdf}:
+ type: file
+ description: "Stacked assembly spectra line plot in PNG or PDF format"
+ pattern: "*.spectra-asm.st.{png,pdf}"
+ - phased_block_bed:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.phased_block.bed:
+ type: file
+ description: Assembly kmer positions seperated by block in bed format
+ pattern: "*.phased.block.bed"
+ - phased_block_stats:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.phased_block.stats:
+ type: file
+ description: phased assembly statistics file
+ pattern: "*.phased.block.stats"
+ - continuity_N:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.continuity.N.{pdf,png}:
+ type: file
+ description: "Stacked assembly N continuity plot in PNG or PDF format"
+ pattern: "*.continuity.N.{png,pdf}"
+ - block_N:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.block.N.{pdf,png}:
+ type: file
+ description: "Stacked assembly N continuity by block plot in PNG or PDF format"
+ pattern: "*.block.N.{png,pdf}"
+ - block_blob:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.block.blob.{pdf,png}:
+ type: file
+ description: "Stacked assembly block plot in PNG or PDF format"
+ pattern: "*.block.blob.{png,pdf}"
+ - hapmers_blob:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.hapmers.blob.{pdf,png}:
+ type: file
+ description: "Stacked assembly hapmers block plot in PNG or PDF format"
+ pattern: "*.hapmers.blob.{png,pdf}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@mahesh-panchal"
+ - "@yumisims"
+maintainers:
+ - "@mahesh-panchal"
+ - "@yumisims"
diff --git a/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test b/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test
new file mode 100644
index 00000000..c46843c6
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test
@@ -0,0 +1,170 @@
+nextflow_process {
+
+ name "Test Process MERQURYFK"
+ script "../main.nf"
+ process "MERQURYFK_MERQURYFK"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "merquryfk"
+ tag "merquryfk/merquryfk"
+ tag "fastk"
+ tag "fastk/fastk"
+
+ setup {
+ run("FASTK_FASTK") {
+ script "../../../fastk/fastk"
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true)
+ ]
+ """
+ }
+ }
+ run("FASTK_FASTK", alias: "FASTK_MAT") {
+ script "../../../fastk/fastk"
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true),
+ ]
+ """
+ }
+ }
+
+ run("FASTK_FASTK", alias: "FASTK_PAT") {
+ script "../../../fastk/fastk"
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true),
+ ]
+ """
+ }
+ }
+ }
+
+ test("homo_sapiens - Illumina - png") {
+ config "./nextflow.png.config"
+ when {
+ process {
+ """
+ assembly = [
+ [ id:'test', single_end:true ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ]
+
+ haplotigs = [
+ [ id:'test', single_end:true ], []
+ ]
+ input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).join(Channel.from(assembly)).join(Channel.from(haplotigs))
+ input[1] = []
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("homo_sapiens - Illumina - pdf") {
+ config "./nextflow.pdf.config"
+ when {
+ process {
+ """
+ assembly = [
+ [ id:'test', single_end:true ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ]
+
+ haplotigs = [
+ [ id:'test', single_end:true ], []
+ ]
+ input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).join(Channel.from(assembly)).join(Channel.from(haplotigs))
+ input[1] = []
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("homo_sapiens - Illumina - trio") {
+ config "./nextflow.trio.config"
+ when {
+ process {
+ """
+ assembly = [
+ [ id:'test', single_end:true ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ]
+
+ haplotigs = [
+ [ id:'test', single_end:true ], []
+ ]
+ input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).join(Channel.from(assembly)).join(Channel.from(haplotigs))
+ input[1] = FASTK_MAT.out.ktab
+ input[2] = FASTK_PAT.out.ktab
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("homo_sapiens - Illumina - stub") {
+ options "-stub"
+ config "./nextflow.pdf.config"
+ when {
+ process {
+ """
+ assembly = [
+ [ id:'test', single_end:true ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ]
+
+ haplotigs = [
+ [ id:'test', single_end:true ], []
+ ]
+ input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).join(Channel.from(assembly)).join(Channel.from(haplotigs))
+ input[1] = []
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap b/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap
new file mode 100644
index 00000000..f7ce47f0
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap
@@ -0,0 +1,454 @@
+{
+ "homo_sapiens - Illumina - stub": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+
+ ],
+ "10": [
+
+ ],
+ "11": [
+
+ ],
+ "12": [
+
+ ],
+ "13": [
+
+ ],
+ "14": [
+
+ ],
+ "15": [
+
+ ],
+ "16": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+
+ ],
+ "4": [
+
+ ],
+ "5": [
+
+ ],
+ "6": [
+
+ ],
+ "7": [
+
+ ],
+ "8": [
+
+ ],
+ "9": [
+
+ ],
+ "assembly_qv": [
+
+ ],
+ "bed": [
+
+ ],
+ "block_N": [
+
+ ],
+ "block_blob": [
+
+ ],
+ "continuity_N": [
+
+ ],
+ "hapmers_blob": [
+
+ ],
+ "phased_block_bed": [
+
+ ],
+ "phased_block_stats": [
+
+ ],
+ "qv": [
+
+ ],
+ "spectra_asm_fl": [
+
+ ],
+ "spectra_asm_ln": [
+
+ ],
+ "spectra_asm_st": [
+
+ ],
+ "spectra_cn_fl": [
+
+ ],
+ "spectra_cn_ln": [
+
+ ],
+ "spectra_cn_st": [
+
+ ],
+ "stats": [
+
+ ],
+ "versions": [
+
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.2"
+ },
+ "timestamp": "2024-08-15T15:22:52.240373868"
+ },
+ "homo_sapiens - Illumina - pdf": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+
+ ],
+ "10": [
+
+ ],
+ "11": [
+
+ ],
+ "12": [
+
+ ],
+ "13": [
+
+ ],
+ "14": [
+
+ ],
+ "15": [
+
+ ],
+ "16": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+
+ ],
+ "4": [
+
+ ],
+ "5": [
+
+ ],
+ "6": [
+
+ ],
+ "7": [
+
+ ],
+ "8": [
+
+ ],
+ "9": [
+
+ ],
+ "assembly_qv": [
+
+ ],
+ "bed": [
+
+ ],
+ "block_N": [
+
+ ],
+ "block_blob": [
+
+ ],
+ "continuity_N": [
+
+ ],
+ "hapmers_blob": [
+
+ ],
+ "phased_block_bed": [
+
+ ],
+ "phased_block_stats": [
+
+ ],
+ "qv": [
+
+ ],
+ "spectra_asm_fl": [
+
+ ],
+ "spectra_asm_ln": [
+
+ ],
+ "spectra_asm_st": [
+
+ ],
+ "spectra_cn_fl": [
+
+ ],
+ "spectra_cn_ln": [
+
+ ],
+ "spectra_cn_st": [
+
+ ],
+ "stats": [
+
+ ],
+ "versions": [
+
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.2"
+ },
+ "timestamp": "2024-08-15T15:22:19.530675341"
+ },
+ "homo_sapiens - Illumina - png": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+
+ ],
+ "10": [
+
+ ],
+ "11": [
+
+ ],
+ "12": [
+
+ ],
+ "13": [
+
+ ],
+ "14": [
+
+ ],
+ "15": [
+
+ ],
+ "16": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+
+ ],
+ "4": [
+
+ ],
+ "5": [
+
+ ],
+ "6": [
+
+ ],
+ "7": [
+
+ ],
+ "8": [
+
+ ],
+ "9": [
+
+ ],
+ "assembly_qv": [
+
+ ],
+ "bed": [
+
+ ],
+ "block_N": [
+
+ ],
+ "block_blob": [
+
+ ],
+ "continuity_N": [
+
+ ],
+ "hapmers_blob": [
+
+ ],
+ "phased_block_bed": [
+
+ ],
+ "phased_block_stats": [
+
+ ],
+ "qv": [
+
+ ],
+ "spectra_asm_fl": [
+
+ ],
+ "spectra_asm_ln": [
+
+ ],
+ "spectra_asm_st": [
+
+ ],
+ "spectra_cn_fl": [
+
+ ],
+ "spectra_cn_ln": [
+
+ ],
+ "spectra_cn_st": [
+
+ ],
+ "stats": [
+
+ ],
+ "versions": [
+
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.2"
+ },
+ "timestamp": "2024-08-15T15:21:57.682723412"
+ },
+ "homo_sapiens - Illumina - trio": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+
+ ],
+ "10": [
+
+ ],
+ "11": [
+
+ ],
+ "12": [
+
+ ],
+ "13": [
+
+ ],
+ "14": [
+
+ ],
+ "15": [
+
+ ],
+ "16": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+
+ ],
+ "4": [
+
+ ],
+ "5": [
+
+ ],
+ "6": [
+
+ ],
+ "7": [
+
+ ],
+ "8": [
+
+ ],
+ "9": [
+
+ ],
+ "assembly_qv": [
+
+ ],
+ "bed": [
+
+ ],
+ "block_N": [
+
+ ],
+ "block_blob": [
+
+ ],
+ "continuity_N": [
+
+ ],
+ "hapmers_blob": [
+
+ ],
+ "phased_block_bed": [
+
+ ],
+ "phased_block_stats": [
+
+ ],
+ "qv": [
+
+ ],
+ "spectra_asm_fl": [
+
+ ],
+ "spectra_asm_ln": [
+
+ ],
+ "spectra_asm_st": [
+
+ ],
+ "spectra_cn_fl": [
+
+ ],
+ "spectra_cn_ln": [
+
+ ],
+ "spectra_cn_st": [
+
+ ],
+ "stats": [
+
+ ],
+ "versions": [
+
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.2"
+ },
+ "timestamp": "2024-08-15T15:22:40.060937299"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.config b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.config
new file mode 100644
index 00000000..ba1eebc9
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.config
@@ -0,0 +1,8 @@
+process {
+ publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }
+
+ withName: 'FASTK_.*' {
+ ext.args = '-t'
+ publishDir = [ enabled: false ]
+ }
+}
diff --git a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.pdf.config b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.pdf.config
new file mode 100644
index 00000000..52beeaa3
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.pdf.config
@@ -0,0 +1,9 @@
+process {
+ withName: 'FASTK_.*' {
+ ext.args = '-t'
+ publishDir = [ enabled: false ]
+ }
+ withName: 'MERQURYFK_MERQURYFK' {
+ ext.args = '-lfs -pdf'
+ }
+}
diff --git a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.png.config b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.png.config
new file mode 100644
index 00000000..47c3d63e
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.png.config
@@ -0,0 +1,9 @@
+process {
+ withName: 'FASTK_.*' {
+ ext.args = '-t'
+ publishDir = [ enabled: false ]
+ }
+ withName: 'MERQURYFK_MERQURYFK' {
+ ext.args = '-lfs'
+ }
+}
diff --git a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.trio.config b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.trio.config
new file mode 100644
index 00000000..47c3d63e
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.trio.config
@@ -0,0 +1,9 @@
+process {
+ withName: 'FASTK_.*' {
+ ext.args = '-t'
+ publishDir = [ enabled: false ]
+ }
+ withName: 'MERQURYFK_MERQURYFK' {
+ ext.args = '-lfs'
+ }
+}
diff --git a/modules/nf-core/merquryfk/merquryfk/tests/tags.yml b/modules/nf-core/merquryfk/merquryfk/tests/tags.yml
new file mode 100644
index 00000000..7dcac99b
--- /dev/null
+++ b/modules/nf-core/merquryfk/merquryfk/tests/tags.yml
@@ -0,0 +1,2 @@
+merquryfk/merquryfk:
+ - "modules/nf-core/merquryfk/merquryfk/**"
diff --git a/modules/nf-core/meryl/count/main.nf b/modules/nf-core/meryl/count/main.nf
index c1540cc8..d1119786 100644
--- a/modules/nf-core/meryl/count/main.nf
+++ b/modules/nf-core/meryl/count/main.nf
@@ -21,14 +21,15 @@ process MERYL_COUNT {
script:
def args = task.ext.args ?: ''
def prefix = task.ext.prefix ?: "${meta.id}"
+ def red_mem = task.memory.multiply(0.9).toGiga()
"""
for READ in $reads; do
meryl count \\
k=$kvalue \\
threads=$task.cpus \\
- memory=${task.memory.toGiga()} \\
+ memory=$red_mem \\
$args \\
- $reads \\
+ \$READ \\
output read.\${READ%.f*}.meryl
done
diff --git a/modules/nf-core/meryl/count/meryl-count.diff b/modules/nf-core/meryl/count/meryl-count.diff
new file mode 100644
index 00000000..f71de924
--- /dev/null
+++ b/modules/nf-core/meryl/count/meryl-count.diff
@@ -0,0 +1,23 @@
+Changes in module 'nf-core/meryl/count'
+--- modules/nf-core/meryl/count/main.nf
++++ modules/nf-core/meryl/count/main.nf
+@@ -21,14 +21,15 @@
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
++ def red_mem = task.memory.multiply(0.9).toGiga()
+ """
+ for READ in $reads; do
+ meryl count \\
+ k=$kvalue \\
+ threads=$task.cpus \\
+- memory=${task.memory.toGiga()} \\
++ memory=$red_mem \\
+ $args \\
+- $reads \\
++ \$READ \\
+ output read.\${READ%.f*}.meryl
+ done
+
+
+************************************************************
diff --git a/modules/nf-core/minimap2/index/environment.yml b/modules/nf-core/minimap2/index/environment.yml
new file mode 100644
index 00000000..d1c1b471
--- /dev/null
+++ b/modules/nf-core/minimap2/index/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::minimap2=2.28
diff --git a/modules/nf-core/minimap2/index/main.nf b/modules/nf-core/minimap2/index/main.nf
new file mode 100644
index 00000000..38320214
--- /dev/null
+++ b/modules/nf-core/minimap2/index/main.nf
@@ -0,0 +1,44 @@
+process MINIMAP2_INDEX {
+ label 'process_low'
+
+ // Note: the versions here need to match the versions used in minimap2/align
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/minimap2:2.28--he4a0461_0' :
+ 'biocontainers/minimap2:2.28--he4a0461_0' }"
+
+ input:
+ tuple val(meta), path(fasta)
+
+ output:
+ tuple val(meta), path("*.mmi"), emit: index
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ """
+ minimap2 \\
+ -t $task.cpus \\
+ -d ${fasta.baseName}.mmi \\
+ $args \\
+ $fasta
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ minimap2: \$(minimap2 --version 2>&1)
+ END_VERSIONS
+ """
+
+ stub:
+ """
+ touch ${fasta.baseName}.mmi
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ minimap2: \$(minimap2 --version 2>&1)
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/minimap2/index/meta.yml b/modules/nf-core/minimap2/index/meta.yml
new file mode 100644
index 00000000..57c80e29
--- /dev/null
+++ b/modules/nf-core/minimap2/index/meta.yml
@@ -0,0 +1,46 @@
+name: minimap2_index
+description: Provides fasta index required by minimap2 alignment.
+keywords:
+ - index
+ - fasta
+ - reference
+tools:
+ - minimap2:
+ description: |
+ A versatile pairwise aligner for genomic and spliced nucleotide sequences.
+ homepage: https://github.com/lh3/minimap2
+ documentation: https://github.com/lh3/minimap2#uguide
+ licence: ["MIT"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - fasta:
+ type: file
+ description: |
+ Reference database in FASTA format.
+output:
+ - index:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.mmi":
+ type: file
+ description: Minimap2 fasta index.
+ pattern: "*.mmi"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@yuukiiwa"
+ - "@drpatelh"
+maintainers:
+ - "@yuukiiwa"
+ - "@drpatelh"
diff --git a/modules/nf-core/minimap2/index/tests/main.nf.test b/modules/nf-core/minimap2/index/tests/main.nf.test
new file mode 100644
index 00000000..97840ff7
--- /dev/null
+++ b/modules/nf-core/minimap2/index/tests/main.nf.test
@@ -0,0 +1,32 @@
+nextflow_process {
+
+ name "Test Process MINIMAP2_INDEX"
+ script "../main.nf"
+ process "MINIMAP2_INDEX"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "minimap2"
+ tag "minimap2/index"
+
+ test("minimap2 index") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test' ],
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assert process.success
+ assert snapshot(process.out).match()
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/nf-core/minimap2/index/tests/main.nf.test.snap b/modules/nf-core/minimap2/index/tests/main.nf.test.snap
new file mode 100644
index 00000000..0b098828
--- /dev/null
+++ b/modules/nf-core/minimap2/index/tests/main.nf.test.snap
@@ -0,0 +1,68 @@
+{
+ "Should run without failures": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test_ref"
+ },
+ "genome.mmi:md5,72e450f12dc691e763c697463bdb1571"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,0fced0ee8015e7f50b82566e3db8f7b0"
+ ],
+ "index": [
+ [
+ {
+ "id": "test_ref"
+ },
+ "genome.mmi:md5,72e450f12dc691e763c697463bdb1571"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,0fced0ee8015e7f50b82566e3db8f7b0"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-03-18T11:46:30.000058092"
+ },
+ "minimap2 index": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "genome.mmi:md5,72e450f12dc691e763c697463bdb1571"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,2f8340380c6741e9261a284262a90bde"
+ ],
+ "index": [
+ [
+ {
+ "id": "test"
+ },
+ "genome.mmi:md5,72e450f12dc691e763c697463bdb1571"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,2f8340380c6741e9261a284262a90bde"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-04-05T10:58:29.828187662"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/minimap2/index/tests/tags.yml b/modules/nf-core/minimap2/index/tests/tags.yml
new file mode 100644
index 00000000..e5ef8e19
--- /dev/null
+++ b/modules/nf-core/minimap2/index/tests/tags.yml
@@ -0,0 +1,2 @@
+minimap2/index:
+ - modules/nf-core/minimap2/index/**
diff --git a/modules/nf-core/pairix/environment.yml b/modules/nf-core/pairix/environment.yml
new file mode 100644
index 00000000..d544ae49
--- /dev/null
+++ b/modules/nf-core/pairix/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::pairix=0.3.7
diff --git a/modules/nf-core/pairix/main.nf b/modules/nf-core/pairix/main.nf
new file mode 100644
index 00000000..e71ebb8f
--- /dev/null
+++ b/modules/nf-core/pairix/main.nf
@@ -0,0 +1,32 @@
+process PAIRIX {
+ tag "$meta.id"
+ label 'process_medium'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/pairix:0.3.7--py36h30a8e3e_3' :
+ 'biocontainers/pairix:0.3.7--py36h30a8e3e_3' }"
+
+ input:
+ tuple val(meta), path(pair)
+
+ output:
+ tuple val(meta), path(pair), path("*.px2"), emit: index
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ """
+ pairix \\
+ $args \\
+ $pair
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairix: \$(echo \$(pairix --help 2>&1) | sed 's/^.*Version: //; s/Usage.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/pairix/meta.yml b/modules/nf-core/pairix/meta.yml
new file mode 100644
index 00000000..f5277182
--- /dev/null
+++ b/modules/nf-core/pairix/meta.yml
@@ -0,0 +1,42 @@
+name: pairix
+description: |
+ a tool for indexing and querying on a block-compressed text file
+ containing pairs of genomic coordinates
+keywords:
+ - index
+ - block-compressed
+ - pairs
+tools:
+ - pairix:
+ description: 2D indexing on bgzipped text files of paired genomic coordinates
+ homepage: "https://github.com/4dn-dcic/pairix"
+ documentation: "https://github.com/4dn-dcic/pairix"
+ tool_dev_url: "https://github.com/4dn-dcic/pairix"
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - pair:
+ type: file
+ description: pair file
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - index:
+ type: file
+ description: pair index file
+ pattern: "*.px2"
+authors:
+ - "@jianhong"
+maintainers:
+ - "@jianhong"
diff --git a/modules/nf-core/pairix/tests/main.nf.test b/modules/nf-core/pairix/tests/main.nf.test
new file mode 100644
index 00000000..bcfffff8
--- /dev/null
+++ b/modules/nf-core/pairix/tests/main.nf.test
@@ -0,0 +1,32 @@
+
+nextflow_process {
+
+ name "Test Process PAIRIX"
+ script "../main.nf"
+ process "PAIRIX"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "pairix"
+
+ test("test-pairix") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file("https://raw.githubusercontent.com/4dn-dcic/pairix/master/samples/4dn.bsorted.chr21_22_only.nontriangle.pairs.gz", checkIfExists: true) ]
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/pairix/tests/main.nf.test.snap b/modules/nf-core/pairix/tests/main.nf.test.snap
new file mode 100644
index 00000000..d11b4bb4
--- /dev/null
+++ b/modules/nf-core/pairix/tests/main.nf.test.snap
@@ -0,0 +1,39 @@
+{
+ "test-pairix": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "4dn.bsorted.chr21_22_only.nontriangle.pairs.gz:md5,ee90dc99987ece492d598ed939d54561",
+ "4dn.bsorted.chr21_22_only.nontriangle.pairs.gz.px2:md5,a6e41cc7cff16fd15b5ee505549ec99a"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,848c8be602ec36645d30010ea30f0684"
+ ],
+ "index": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "4dn.bsorted.chr21_22_only.nontriangle.pairs.gz:md5,ee90dc99987ece492d598ed939d54561",
+ "4dn.bsorted.chr21_22_only.nontriangle.pairs.gz.px2:md5,a6e41cc7cff16fd15b5ee505549ec99a"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,848c8be602ec36645d30010ea30f0684"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T11:25:18.874503"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/pairtools/dedup/environment.yml b/modules/nf-core/pairtools/dedup/environment.yml
new file mode 100644
index 00000000..c03efb71
--- /dev/null
+++ b/modules/nf-core/pairtools/dedup/environment.yml
@@ -0,0 +1,6 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
diff --git a/modules/nf-core/pairtools/dedup/main.nf b/modules/nf-core/pairtools/dedup/main.nf
new file mode 100644
index 00000000..78b416b1
--- /dev/null
+++ b/modules/nf-core/pairtools/dedup/main.nf
@@ -0,0 +1,38 @@
+process PAIRTOOLS_DEDUP {
+ tag "$meta.id"
+ label 'process_high'
+
+ // Pinning numpy to 1.23 until https://github.com/open2c/pairtools/issues/170 is resolved
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
+ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(input)
+
+ output:
+ tuple val(meta), path("*.pairs.gz") , emit: pairs
+ tuple val(meta), path("*.pairs.stat"), emit: stat
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ pairtools dedup \\
+ $args \\
+ -o ${prefix}.pairs.gz \\
+ --output-stats ${prefix}.pairs.stat \\
+ $input
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairtools: \$(pairtools --version | tr '\\n' ',' | sed 's/.*pairtools.*version //' | sed 's/,\$/\\n/')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/pairtools/dedup/meta.yml b/modules/nf-core/pairtools/dedup/meta.yml
new file mode 100644
index 00000000..3c67e3fb
--- /dev/null
+++ b/modules/nf-core/pairtools/dedup/meta.yml
@@ -0,0 +1,45 @@
+name: pairtools_dedup
+description: Find and remove PCR/optical duplicates
+keywords:
+ - dedup
+ - deduplication
+ - PCR/optical duplicates
+ - pairs
+tools:
+ - pairtools:
+ description: CLI tools to process mapped Hi-C data
+ homepage: http://pairtools.readthedocs.io/
+ documentation: http://pairtools.readthedocs.io/
+ tool_dev_url: https://github.com/mirnylab/pairtools
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - input:
+ type: file
+ description: pair file
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - pairs:
+ type: file
+ description: Duplicates removed pairs
+ pattern: "*.{pairs.gz}"
+ - stat:
+ type: file
+ description: stats of the pairs
+ pattern: "*.{pairs.stat}"
+authors:
+ - "@jianhong"
+maintainers:
+ - "@jianhong"
diff --git a/modules/nf-core/pairtools/dedup/pairtools-dedup.diff b/modules/nf-core/pairtools/dedup/pairtools-dedup.diff
new file mode 100644
index 00000000..836e48e6
--- /dev/null
+++ b/modules/nf-core/pairtools/dedup/pairtools-dedup.diff
@@ -0,0 +1,26 @@
+Changes in module 'nf-core/pairtools/dedup'
+--- modules/nf-core/pairtools/dedup/environment.yml
++++ modules/nf-core/pairtools/dedup/environment.yml
+@@ -2,5 +2,5 @@
+ - conda-forge
+ - bioconda
+ dependencies:
+- - bioconda::pairtools=1.0.2
++ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
+
+--- modules/nf-core/pairtools/dedup/main.nf
++++ modules/nf-core/pairtools/dedup/main.nf
+@@ -6,8 +6,8 @@
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+- 'https://depot.galaxyproject.org/singularity/pairtools:1.0.2--py39h2a9f597_0' :
+- 'biocontainers/pairtools:1.0.2--py39h2a9f597_0' }"
++ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
++ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(input)
+
+************************************************************
diff --git a/modules/nf-core/pairtools/dedup/tests/main.nf.test b/modules/nf-core/pairtools/dedup/tests/main.nf.test
new file mode 100644
index 00000000..41bbfabb
--- /dev/null
+++ b/modules/nf-core/pairtools/dedup/tests/main.nf.test
@@ -0,0 +1,39 @@
+
+nextflow_process {
+
+ name "Test Process PAIRTOOLS_DEDUP"
+ script "../main.nf"
+ process "PAIRTOOLS_DEDUP"
+ config "./nextflow.config"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "pairtools"
+ tag "pairtools/dedup"
+
+ test("test-pairtools-dedup") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.4dedup.pairsam', checkIfExists: true) ]
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ path(process.out.pairs[0][1]).linesGzip[3..7],
+ process.out.stat,
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/pairtools/dedup/tests/main.nf.test.snap b/modules/nf-core/pairtools/dedup/tests/main.nf.test.snap
new file mode 100644
index 00000000..46dcf965
--- /dev/null
+++ b/modules/nf-core/pairtools/dedup/tests/main.nf.test.snap
@@ -0,0 +1,30 @@
+{
+ "test-pairtools-dedup": {
+ "content": [
+ [
+ "#genome_assembly: unknown",
+ "#chromosomes: chr1 chr2",
+ "#columns: readID chrom1 pos1 chrom2 pos2 strand1 strand2 pair_type sam1 sam2",
+ "readid3\tchr1\t1\tchr1\t20\t+\t+\tUU\t.\t.",
+ "readid5\tchr1\t1\tchr1\t25\t+\t+\tUU\t.\t."
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.dedup.pairs.stat:md5,94682d1bc608ade150dd11993fbfd2a3"
+ ]
+ ],
+ [
+ "versions.yml:md5,485fbdd68f35d563c8559e1afedc4c53"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T11:23:16.451408"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/pairtools/dedup/tests/nextflow.config b/modules/nf-core/pairtools/dedup/tests/nextflow.config
new file mode 100644
index 00000000..d0cfe51f
--- /dev/null
+++ b/modules/nf-core/pairtools/dedup/tests/nextflow.config
@@ -0,0 +1,5 @@
+process {
+ withName: PAIRTOOLS_DEDUP {
+ ext.prefix = { "${meta.id}.dedup" }
+ }
+}
diff --git a/modules/nf-core/pairtools/merge/environment.yml b/modules/nf-core/pairtools/merge/environment.yml
new file mode 100644
index 00000000..c03efb71
--- /dev/null
+++ b/modules/nf-core/pairtools/merge/environment.yml
@@ -0,0 +1,6 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
diff --git a/modules/nf-core/pairtools/merge/main.nf b/modules/nf-core/pairtools/merge/main.nf
new file mode 100644
index 00000000..f450c25d
--- /dev/null
+++ b/modules/nf-core/pairtools/merge/main.nf
@@ -0,0 +1,37 @@
+process PAIRTOOLS_MERGE {
+ tag "${meta.id}"
+ label 'process_medium'
+
+ // Pinning numpy to 1.23 until https://github.com/open2c/pairtools/issues/170 is resolved
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
+ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(allpairs)
+
+ output:
+ tuple val(meta), path("*pairs.gz"), emit:pairs
+ path("versions.yml"), emit:versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}_merged"
+ """
+ pairtools merge \
+ ${args} \
+ --nproc ${task.cpus} \
+ -o ${prefix}.pairs.gz \
+ ${allpairs}
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairtools: \$(pairtools --version | tr '\\n' ',' | sed 's/.*pairtools.*version //' | sed 's/,\$/\\n/')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/pairtools/merge/meta.yml b/modules/nf-core/pairtools/merge/meta.yml
new file mode 100644
index 00000000..b7bccc3c
--- /dev/null
+++ b/modules/nf-core/pairtools/merge/meta.yml
@@ -0,0 +1,40 @@
+name: pairtools_merge
+description: Merge multiple pairs/pairsam files
+keywords:
+ - merge
+ - pairs
+ - pairsam
+tools:
+ - pairtools:
+ description: CLI tools to process mapped Hi-C data
+ homepage: http://pairtools.readthedocs.io/
+ documentation: http://pairtools.readthedocs.io/
+ tool_dev_url: https://github.com/mirnylab/pairtools
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - allpairs:
+ type: file
+ description: All pair files to merge
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - pairs:
+ type: file
+ description: Merged pairs file
+ pattern: "*.{pairs.gz}"
+authors:
+ - "@nservant"
+maintainers:
+ - "@nservant"
diff --git a/modules/nf-core/pairtools/merge/pairtools-merge.diff b/modules/nf-core/pairtools/merge/pairtools-merge.diff
new file mode 100644
index 00000000..fa789f38
--- /dev/null
+++ b/modules/nf-core/pairtools/merge/pairtools-merge.diff
@@ -0,0 +1,26 @@
+Changes in module 'nf-core/pairtools/merge'
+--- modules/nf-core/pairtools/merge/environment.yml
++++ modules/nf-core/pairtools/merge/environment.yml
+@@ -2,5 +2,5 @@
+ - conda-forge
+ - bioconda
+ dependencies:
+- - bioconda::pairtools=1.0.2
++ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
+
+--- modules/nf-core/pairtools/merge/main.nf
++++ modules/nf-core/pairtools/merge/main.nf
+@@ -6,8 +6,8 @@
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+- 'https://depot.galaxyproject.org/singularity/pairtools:1.0.2--py39h2a9f597_0' :
+- 'biocontainers/pairtools:1.0.2--py39h2a9f597_0' }"
++ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
++ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(allpairs)
+
+************************************************************
diff --git a/modules/nf-core/pairtools/merge/tests/main.nf.test b/modules/nf-core/pairtools/merge/tests/main.nf.test
new file mode 100644
index 00000000..d9cfa7d0
--- /dev/null
+++ b/modules/nf-core/pairtools/merge/tests/main.nf.test
@@ -0,0 +1,37 @@
+
+nextflow_process {
+
+ name "Test Process PAIRTOOLS_MERGE"
+ script "../main.nf"
+ process "PAIRTOOLS_MERGE"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "pairtools"
+ tag "pairtools/merge"
+
+ test("test-pairtools-merge") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.pairsam', checkIfExists: true) ]
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ path(process.out.pairs[0][1]).linesGzip[3..7],
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/pairtools/merge/tests/main.nf.test.snap b/modules/nf-core/pairtools/merge/tests/main.nf.test.snap
new file mode 100644
index 00000000..3aabbca3
--- /dev/null
+++ b/modules/nf-core/pairtools/merge/tests/main.nf.test.snap
@@ -0,0 +1,21 @@
+{
+ "test-pairtools-merge": {
+ "content": [
+ [
+ "#samheader: @SQ\tSN:chr1\tLN:100",
+ "#samheader: @SQ\tSN:chr2\tLN:100",
+ "#samheader: @SQ\tSN:chr3\tLN:100",
+ "#samheader: @PG\tID:bwa\tPN:bwa\tVN:0.7.15-r1140\tCL:bwa mem -SP /path/ucsc.hg19.fasta.gz /path/1.fastq.gz /path/2.fastq.gz",
+ "#chromosomes: chr2 chr3 chr1"
+ ],
+ [
+ "versions.yml:md5,e0acb3bd173f64f9984f597571e80eb0"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T11:19:28.360208"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/pairtools/parse/environment.yml b/modules/nf-core/pairtools/parse/environment.yml
new file mode 100644
index 00000000..c03efb71
--- /dev/null
+++ b/modules/nf-core/pairtools/parse/environment.yml
@@ -0,0 +1,6 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
diff --git a/modules/nf-core/pairtools/parse/main.nf b/modules/nf-core/pairtools/parse/main.nf
new file mode 100644
index 00000000..6a508b0f
--- /dev/null
+++ b/modules/nf-core/pairtools/parse/main.nf
@@ -0,0 +1,45 @@
+process PAIRTOOLS_PARSE {
+ tag "$meta.id"
+ label 'process_high'
+
+ // Pinning numpy to 1.23 until https://github.com/open2c/pairtools/issues/170 is resolved
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
+ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(bam)
+ path chromsizes
+
+ output:
+ tuple val(meta), path("*.pairsam.gz") , emit: pairsam
+ tuple val(meta), path("*.pairsam.stat"), emit: stat
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ int decompression_cpus = Math.max(1, Math.ceil(task.cpus/4.0) as int)
+ int compression_cpus = Math.max(1, task.cpus-decompression_cpus-1) as int
+ """
+ pairtools \\
+ parse \\
+ -c $chromsizes \\
+ --nproc-in $decompression_cpus \\
+ --nproc-out $compression_cpus \\
+ $args \\
+ --output-stats ${prefix}.pairsam.stat \\
+ -o ${prefix}.pairsam.gz \\
+ $bam
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairtools: \$(pairtools --version | tr '\\n' ',' | sed 's/.*pairtools.*version //' | sed 's/,\$/\\n/')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/pairtools/parse/meta.yml b/modules/nf-core/pairtools/parse/meta.yml
new file mode 100644
index 00000000..e7e448ef
--- /dev/null
+++ b/modules/nf-core/pairtools/parse/meta.yml
@@ -0,0 +1,48 @@
+name: pairtools_parse
+description: Find ligation junctions in .sam, make .pairs
+keywords:
+ - ligation junctions
+ - parse
+ - pairtools
+tools:
+ - pairtools:
+ description: CLI tools to process mapped Hi-C data
+ homepage: http://pairtools.readthedocs.io/
+ documentation: http://pairtools.readthedocs.io/
+ tool_dev_url: https://github.com/mirnylab/pairtools
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: file
+ description: BAM/CRAM/SAM file
+ pattern: "*.{bam,cram,sam}"
+ - chromsizes:
+ type: file
+ description: chromosome size file
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - pairsam:
+ type: file
+ description: parsed pair file
+ pattern: "*.{pairsam.gz}"
+ - stat:
+ type: file
+ description: stats of the pairs
+ pattern: "*.{pairsam.stat}"
+authors:
+ - "@jianhong"
+maintainers:
+ - "@jianhong"
diff --git a/modules/nf-core/pairtools/parse/pairtools-parse.diff b/modules/nf-core/pairtools/parse/pairtools-parse.diff
new file mode 100644
index 00000000..2a20363a
--- /dev/null
+++ b/modules/nf-core/pairtools/parse/pairtools-parse.diff
@@ -0,0 +1,47 @@
+Changes in module 'nf-core/pairtools/parse'
+--- modules/nf-core/pairtools/parse/environment.yml
++++ modules/nf-core/pairtools/parse/environment.yml
+@@ -2,5 +2,5 @@
+ - conda-forge
+ - bioconda
+ dependencies:
+- - bioconda::pairtools=1.0.2
++ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
+
+--- modules/nf-core/pairtools/parse/main.nf
++++ modules/nf-core/pairtools/parse/main.nf
+@@ -1,13 +1,13 @@
+ process PAIRTOOLS_PARSE {
+ tag "$meta.id"
+- label 'process_low'
++ label 'process_high'
+
+ // Pinning numpy to 1.23 until https://github.com/open2c/pairtools/issues/170 is resolved
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+- 'https://depot.galaxyproject.org/singularity/pairtools:1.0.2--py39h2a9f597_0' :
+- 'biocontainers/pairtools:1.0.2--py39h2a9f597_0' }"
++ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
++ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(bam)
+@@ -24,10 +24,14 @@
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
++ int decompression_cpus = Math.max(1, Math.ceil(task.cpus/4.0) as int)
++ int compression_cpus = Math.max(1, task.cpus-decompression_cpus-1) as int
+ """
+ pairtools \\
+ parse \\
+ -c $chromsizes \\
++ --nproc-in $decompression_cpus \\
++ --nproc-out $compression_cpus \\
+ $args \\
+ --output-stats ${prefix}.pairsam.stat \\
+ -o ${prefix}.pairsam.gz \\
+
+************************************************************
diff --git a/modules/nf-core/pairtools/parse/tests/main.nf.test b/modules/nf-core/pairtools/parse/tests/main.nf.test
new file mode 100644
index 00000000..27f9bc32
--- /dev/null
+++ b/modules/nf-core/pairtools/parse/tests/main.nf.test
@@ -0,0 +1,40 @@
+
+nextflow_process {
+
+ name "Test Process PAIRTOOLS_PARSE"
+ script "../main.nf"
+ process "PAIRTOOLS_PARSE"
+ config "./nextflow.config"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "pairtools"
+ tag "pairtools/parse"
+
+ test("test-pairtools-parse") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.sam', checkIfExists: true) ]
+ input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.chrom.sizes', checkIfExists: true)
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ path(process.out.pairsam[0][1]).linesGzip[3..7],
+ process.out.stat,
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/pairtools/parse/tests/main.nf.test.snap b/modules/nf-core/pairtools/parse/tests/main.nf.test.snap
new file mode 100644
index 00000000..c06e572c
--- /dev/null
+++ b/modules/nf-core/pairtools/parse/tests/main.nf.test.snap
@@ -0,0 +1,30 @@
+{
+ "test-pairtools-parse": {
+ "content": [
+ [
+ "#chromsize: chr1 1000",
+ "#chromsize: chr2 1000",
+ "#samheader: @SQ\tSN:chr1\tLN:1000",
+ "#samheader: @SQ\tSN:chr2\tLN:1000",
+ "#samheader: @PG\tID:mock\tPN:mock\tVN:0.0.0\tCL:mock"
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.raw.pairsam.stat:md5,054bf78ee4f0a4c447ad3eeb81f1f4ae"
+ ]
+ ],
+ [
+ "versions.yml:md5,2c8cb00722749f8e3831464a5057c519"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T11:17:35.185642"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/pairtools/parse/tests/nextflow.config b/modules/nf-core/pairtools/parse/tests/nextflow.config
new file mode 100644
index 00000000..d662e86b
--- /dev/null
+++ b/modules/nf-core/pairtools/parse/tests/nextflow.config
@@ -0,0 +1,5 @@
+process {
+ withName: PAIRTOOLS_PARSE {
+ ext.prefix = { "${meta.id}.raw" }
+ }
+}
diff --git a/modules/nf-core/pairtools/select/environment.yml b/modules/nf-core/pairtools/select/environment.yml
new file mode 100644
index 00000000..e88acbcd
--- /dev/null
+++ b/modules/nf-core/pairtools/select/environment.yml
@@ -0,0 +1,6 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::pairtools=1.0.2
+ - conda-forge::numpy=1.23
diff --git a/modules/nf-core/pairtools/select/main.nf b/modules/nf-core/pairtools/select/main.nf
new file mode 100644
index 00000000..69e8d47f
--- /dev/null
+++ b/modules/nf-core/pairtools/select/main.nf
@@ -0,0 +1,38 @@
+process PAIRTOOLS_SELECT {
+ tag "$meta.id"
+ label 'process_medium'
+
+ // Pinning numpy to 1.23 until https://github.com/open2c/pairtools/issues/170 is resolved
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/pairtools:1.0.2--py39h2a9f597_0' :
+ 'biocontainers/pairtools:1.0.2--py39h2a9f597_0' }"
+
+ input:
+ tuple val(meta), path(input)
+
+ output:
+ tuple val(meta), path("*.selected.pairs.gz") , emit: selected
+ tuple val(meta), path("*.unselected.pairs.gz"), emit: unselected
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ pairtools select \\
+ "$args" \\
+ -o ${prefix}.selected.pairs.gz \\
+ --output-rest ${prefix}.unselected.pairs.gz \\
+ ${input}
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairtools: \$(pairtools --version | tr '\\n' ',' | sed 's/.*pairtools.*version //' | sed 's/,\$/\\n/')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/pairtools/select/meta.yml b/modules/nf-core/pairtools/select/meta.yml
new file mode 100644
index 00000000..e9aef9a2
--- /dev/null
+++ b/modules/nf-core/pairtools/select/meta.yml
@@ -0,0 +1,44 @@
+name: pairtools_select
+description: Select pairs according to given condition by options.args
+keywords:
+ - select
+ - pairs
+ - filter
+tools:
+ - pairtools:
+ description: CLI tools to process mapped Hi-C data
+ homepage: http://pairtools.readthedocs.io/
+ documentation: http://pairtools.readthedocs.io/
+ tool_dev_url: https://github.com/mirnylab/pairtools
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - input:
+ type: file
+ description: pairs file
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - selected:
+ type: file
+ description: Selected pairs file
+ pattern: "*.{selected.pairs.gz}"
+ - unselected:
+ type: file
+ description: Rest pairs file.
+ pattern: "*.{unselected.pairs.gz}"
+authors:
+ - "@jianhong"
+maintainers:
+ - "@jianhong"
diff --git a/modules/nf-core/pairtools/select/tests/main.nf.test b/modules/nf-core/pairtools/select/tests/main.nf.test
new file mode 100644
index 00000000..ec4ece4f
--- /dev/null
+++ b/modules/nf-core/pairtools/select/tests/main.nf.test
@@ -0,0 +1,39 @@
+
+nextflow_process {
+
+ name "Test Process PAIRTOOLS_SELECT"
+ script "../main.nf"
+ process "PAIRTOOLS_SELECT"
+ config "./nextflow.config"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "pairtools"
+ tag "pairtools/select"
+
+ test("test-pairtools-select") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.pairsam', checkIfExists: true) ]
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ path(process.out.selected[0][1]).linesGzip[3..7],
+ path(process.out.unselected[0][1]).linesGzip[3..7],
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/pairtools/select/tests/main.nf.test.snap b/modules/nf-core/pairtools/select/tests/main.nf.test.snap
new file mode 100644
index 00000000..d4361209
--- /dev/null
+++ b/modules/nf-core/pairtools/select/tests/main.nf.test.snap
@@ -0,0 +1,28 @@
+{
+ "test-pairtools-select": {
+ "content": [
+ [
+ "#chromosomes: chr2 chr3 chr1",
+ "#chromsize: chr2 100",
+ "#chromsize: chr3 100",
+ "#chromsize: chr1 100",
+ "#samheader: @SQ\tSN:chr1\tLN:100"
+ ],
+ [
+ "#chromosomes: chr2 chr3 chr1",
+ "#chromsize: chr2 100",
+ "#chromsize: chr3 100",
+ "#chromsize: chr1 100",
+ "#samheader: @SQ\tSN:chr1\tLN:100"
+ ],
+ [
+ "versions.yml:md5,ca2f02d3bd0e277e9f578067ff87c19d"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T11:13:46.44029"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/pairtools/select/tests/nextflow.config b/modules/nf-core/pairtools/select/tests/nextflow.config
new file mode 100644
index 00000000..67ff4e1d
--- /dev/null
+++ b/modules/nf-core/pairtools/select/tests/nextflow.config
@@ -0,0 +1,5 @@
+process {
+ withName: PAIRTOOLS_SELECT {
+ ext.args = "(pair_type == \'RU\') or (pair_type == \'UR\') or (pair_type == \'UU\')"
+ }
+}
diff --git a/modules/nf-core/pairtools/sort/environment.yml b/modules/nf-core/pairtools/sort/environment.yml
new file mode 100644
index 00000000..c03efb71
--- /dev/null
+++ b/modules/nf-core/pairtools/sort/environment.yml
@@ -0,0 +1,6 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
diff --git a/modules/nf-core/pairtools/sort/main.nf b/modules/nf-core/pairtools/sort/main.nf
new file mode 100644
index 00000000..7ec17cc7
--- /dev/null
+++ b/modules/nf-core/pairtools/sort/main.nf
@@ -0,0 +1,40 @@
+process PAIRTOOLS_SORT {
+ tag "$meta.id"
+ label 'process_high'
+
+ // Pinning numpy to 1.23 until https://github.com/open2c/pairtools/issues/170 is resolved
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
+ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(input)
+
+ output:
+ tuple val(meta), path("*.pairs.gz"), emit: sorted
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def buffer = task.memory.toGiga().intdiv(2)
+ """
+ pairtools \\
+ sort \\
+ $args \\
+ --nproc $task.cpus \\
+ --memory ${buffer}G \\
+ -o ${prefix}.pairs.gz \\
+ $input
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairtools: \$(pairtools --version | tr '\\n' ',' | sed 's/.*pairtools.*version //' | sed 's/,\$/\\n/')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/pairtools/sort/meta.yml b/modules/nf-core/pairtools/sort/meta.yml
new file mode 100644
index 00000000..987aebb0
--- /dev/null
+++ b/modules/nf-core/pairtools/sort/meta.yml
@@ -0,0 +1,42 @@
+name: pairtools_sort
+description: Sort a .pairs/.pairsam file
+keywords:
+ - sort
+ - pairs
+ - pairsam
+tools:
+ - pairtools:
+ description: CLI tools to process mapped Hi-C data
+ homepage: http://pairtools.readthedocs.io/
+ documentation: http://pairtools.readthedocs.io/
+ tool_dev_url: https://github.com/mirnylab/pairtools
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - input:
+ type: file
+ description: A pairs file
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - sorted:
+ type: file
+ description: Sorted pairs file
+ pattern: "*.{pairs.gz}"
+authors:
+ - "@jianhong"
+ - "@nservant"
+maintainers:
+ - "@jianhong"
+ - "@nservant"
diff --git a/modules/nf-core/pairtools/sort/pairtools-sort.diff b/modules/nf-core/pairtools/sort/pairtools-sort.diff
new file mode 100644
index 00000000..c916f03b
--- /dev/null
+++ b/modules/nf-core/pairtools/sort/pairtools-sort.diff
@@ -0,0 +1,26 @@
+Changes in module 'nf-core/pairtools/sort'
+--- modules/nf-core/pairtools/sort/environment.yml
++++ modules/nf-core/pairtools/sort/environment.yml
+@@ -2,5 +2,5 @@
+ - conda-forge
+ - bioconda
+ dependencies:
+- - bioconda::pairtools=1.0.2
++ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
+
+--- modules/nf-core/pairtools/sort/main.nf
++++ modules/nf-core/pairtools/sort/main.nf
+@@ -6,8 +6,8 @@
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+- 'https://depot.galaxyproject.org/singularity/pairtools:1.0.2--py39h2a9f597_0' :
+- 'biocontainers/pairtools:1.0.2--py39h2a9f597_0' }"
++ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
++ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(input)
+
+************************************************************
diff --git a/modules/nf-core/pairtools/sort/tests/main.nf.test b/modules/nf-core/pairtools/sort/tests/main.nf.test
new file mode 100644
index 00000000..a4e789bc
--- /dev/null
+++ b/modules/nf-core/pairtools/sort/tests/main.nf.test
@@ -0,0 +1,38 @@
+
+nextflow_process {
+
+ name "Test Process PAIRTOOLS_SORT"
+ script "../main.nf"
+ process "PAIRTOOLS_SORT"
+ config "./nextflow.config"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "pairtools"
+ tag "pairtools/sort"
+
+ test("test-pairtools-sort") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.pairsam', checkIfExists: true) ]
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ path(process.out.sorted[0][1]).linesGzip[3..7],
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/pairtools/sort/tests/main.nf.test.snap b/modules/nf-core/pairtools/sort/tests/main.nf.test.snap
new file mode 100644
index 00000000..1b22f328
--- /dev/null
+++ b/modules/nf-core/pairtools/sort/tests/main.nf.test.snap
@@ -0,0 +1,21 @@
+{
+ "test-pairtools-sort": {
+ "content": [
+ [
+ "#genome_assembly: unknown",
+ "#chromosomes: : chr1 chr2 chr3",
+ "#chromsize: chr2 100",
+ "#chromsize: chr3 100",
+ "#chromsize: chr1 100"
+ ],
+ [
+ "versions.yml:md5,6f5e6b4260ee11d35e306d2e085fb762"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T11:12:01.451816"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/pairtools/sort/tests/nextflow.config b/modules/nf-core/pairtools/sort/tests/nextflow.config
new file mode 100644
index 00000000..566f8da2
--- /dev/null
+++ b/modules/nf-core/pairtools/sort/tests/nextflow.config
@@ -0,0 +1,5 @@
+process {
+ withName: PAIRTOOLS_SORT {
+ ext.prefix = { "${meta.id}.sorted" }
+ }
+}
diff --git a/modules/nf-core/pairtools/split/environment.yml b/modules/nf-core/pairtools/split/environment.yml
new file mode 100644
index 00000000..c03efb71
--- /dev/null
+++ b/modules/nf-core/pairtools/split/environment.yml
@@ -0,0 +1,6 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
diff --git a/modules/nf-core/pairtools/split/main.nf b/modules/nf-core/pairtools/split/main.nf
new file mode 100644
index 00000000..e8a2ce0c
--- /dev/null
+++ b/modules/nf-core/pairtools/split/main.nf
@@ -0,0 +1,69 @@
+process PAIRTOOLS_SPLIT {
+ tag "${meta.id}"
+ label 'process_medium'
+
+ // Pinning numpy to 1.23 until https://github.com/open2c/pairtools/issues/170 is resolved
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+ conda "bioconda::pairtools=1.1.0 conda-forge::numpy=1.23"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
+ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(pairs)
+ tuple val(meta), path(fasta)
+ val sort_bam
+
+ output:
+ tuple val(meta), path("*.split.pairs.gz"), emit:pairs
+ tuple val(meta), path("*.bam") , emit:bam , optional:true
+ tuple val(meta), path("*.cram") , emit: cram, optional:true
+ tuple val(meta), path("*.crai") , emit: crai, optional:true
+ tuple val(meta), path("*.csi") , emit: csi , optional:true
+ path("versions.yml") , emit:versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def samtools_command = sort_bam ? 'sort' : 'view'
+
+ def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/
+ def extension_matcher = (args2 =~ extension_pattern)
+ def extension = extension_matcher.getCount() > 0 ? extension_matcher[0][2].toLowerCase() : "bam"
+ def reference = fasta && extension=="cram" ? "--reference ${fasta}" : ""
+ if (!fasta && extension=="cram") error "Fasta reference is required for CRAM output"
+
+ """
+ export MPLCONFIGDIR=tmp
+ pairtools split \
+ --nproc-in ${task.cpus} --nproc-out ${task.cpus} \
+ --output-pairs ${prefix}.split.pairs.gz \
+ --output-sam - \
+ ${args} \
+ ${pairs} \
+ | samtools $samtools_command $args2 -@ $task.cpus ${reference} -o ${prefix}.split.pairs.${extension} -
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairtools: \$(pairtools --version 2>&1 | sed 's/pairtools, version //')
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ export MPLCONFIGDIR=tmp
+ echo "" | gzip > ${prefix}.split.pairs.gz
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairtools: \$(pairtools --version | sed 's/pairtools, version //')
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+
+}
diff --git a/modules/nf-core/pairtools/split/meta.yml b/modules/nf-core/pairtools/split/meta.yml
new file mode 100644
index 00000000..e659f93a
--- /dev/null
+++ b/modules/nf-core/pairtools/split/meta.yml
@@ -0,0 +1,45 @@
+name: "pairtools_split"
+description: Split a .pairsam file into .pairs and .sam.
+keywords:
+ - split
+ - pairs
+ - bam
+tools:
+ - pairtools:
+ description: CLI tools to process mapped Hi-C data
+ homepage: http://pairtools.readthedocs.io/
+ documentation: http://pairtools.readthedocs.io/
+ tool_dev_url: https://github.com/mirnylab/pairtools
+ licence: ["MIT"]
+
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - pairs:
+ type: file
+ description: pairsam file
+
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - pairs:
+ type: file
+ description: Duplicates removed pairs
+ pattern: "*.{pairs.gz}"
+ - bam:
+ type: file
+ description: Output BAM file
+ pattern: "*.bam"
+
+authors:
+ - "@nservant"
diff --git a/modules/nf-core/pairtools/split/pairtools-split.diff b/modules/nf-core/pairtools/split/pairtools-split.diff
new file mode 100644
index 00000000..b603bd89
--- /dev/null
+++ b/modules/nf-core/pairtools/split/pairtools-split.diff
@@ -0,0 +1,82 @@
+Changes in module 'nf-core/pairtools/split'
+--- modules/nf-core/pairtools/split/environment.yml
++++ modules/nf-core/pairtools/split/environment.yml
+@@ -2,5 +2,5 @@
+ - conda-forge
+ - bioconda
+ dependencies:
+- - bioconda::pairtools=1.0.2
++ - bioconda::pairtools=1.1.0
+ - conda-forge::numpy=1.23
+
+--- modules/nf-core/pairtools/split/main.nf
++++ modules/nf-core/pairtools/split/main.nf
+@@ -4,17 +4,22 @@
+
+ // Pinning numpy to 1.23 until https://github.com/open2c/pairtools/issues/170 is resolved
+ // Not an issue with the biocontainers because they were built prior to numpy 1.24
+- conda "bioconda::pairtools=1.0.2 conda-forge::numpy=1.23"
++ conda "bioconda::pairtools=1.1.0 conda-forge::numpy=1.23"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+- 'https://depot.galaxyproject.org/singularity/pairtools:1.0.2--py39h2a9f597_0' :
+- 'biocontainers/pairtools:1.0.2--py39h2a9f597_0' }"
++ 'https://depot.galaxyproject.org/singularity/pairtools:1.1.0--py39hd5a99d8_2' :
++ 'biocontainers/pairtools:1.1.0--py39hd5a99d8_2' }"
+
+ input:
+ tuple val(meta), path(pairs)
++ tuple val(meta), path(fasta)
++ val sort_bam
+
+ output:
+ tuple val(meta), path("*.split.pairs.gz"), emit:pairs
+- tuple val(meta), path("*.bam") , emit:bam , optional:true
++ tuple val(meta), path("*.bam") , emit:bam , optional:true
++ tuple val(meta), path("*.cram") , emit: cram, optional:true
++ tuple val(meta), path("*.crai") , emit: crai, optional:true
++ tuple val(meta), path("*.csi") , emit: csi , optional:true
+ path("versions.yml") , emit:versions
+
+ when:
+@@ -22,18 +27,30 @@
+
+ script:
+ def args = task.ext.args ?: ''
++ def args2 = task.ext.args2 ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
++ def samtools_command = sort_bam ? 'sort' : 'view'
++
++ def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/
++ def extension_matcher = (args2 =~ extension_pattern)
++ def extension = extension_matcher.getCount() > 0 ? extension_matcher[0][2].toLowerCase() : "bam"
++ def reference = fasta && extension=="cram" ? "--reference ${fasta}" : ""
++ if (!fasta && extension=="cram") error "Fasta reference is required for CRAM output"
++
+ """
+ export MPLCONFIGDIR=tmp
+ pairtools split \
+ --nproc-in ${task.cpus} --nproc-out ${task.cpus} \
+ --output-pairs ${prefix}.split.pairs.gz \
++ --output-sam - \
+ ${args} \
+- ${pairs}
++ ${pairs} \
++ | samtools $samtools_command $args2 -@ $task.cpus ${reference} -o ${prefix}.split.pairs.${extension} -
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairtools: \$(pairtools --version 2>&1 | sed 's/pairtools, version //')
++ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+ stub:
+@@ -45,6 +62,7 @@
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pairtools: \$(pairtools --version | sed 's/pairtools, version //')
++ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+
+
+************************************************************
diff --git a/modules/nf-core/pairtools/split/tests/main.nf.test b/modules/nf-core/pairtools/split/tests/main.nf.test
new file mode 100644
index 00000000..ad050dec
--- /dev/null
+++ b/modules/nf-core/pairtools/split/tests/main.nf.test
@@ -0,0 +1,58 @@
+nextflow_process {
+
+ name "Test Process PAIRTOOLS_SPLIT"
+ script "../main.nf"
+ process "PAIRTOOLS_SPLIT"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "pairtools"
+ tag "pairtools/split"
+
+ test("mock_pairsam") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.pairsam', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out.versions).match() },
+ { assert process.out.pairs.get(0).get(1).endsWith("test.split.pairs.gz") }
+ )
+ }
+
+ }
+
+
+ test("mock_pairsam - stub") {
+
+ options "-stub"
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.pairsam', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/pairtools/split/tests/main.nf.test.snap b/modules/nf-core/pairtools/split/tests/main.nf.test.snap
new file mode 100644
index 00000000..8ede40a3
--- /dev/null
+++ b/modules/nf-core/pairtools/split/tests/main.nf.test.snap
@@ -0,0 +1,55 @@
+{
+ "mock_pairsam": {
+ "content": [
+ [
+ "versions.yml:md5,0a4fa42a3bf8a568f64d3b3c9b9b7097"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.2"
+ },
+ "timestamp": "2024-06-03T09:11:53.240905583"
+ },
+ "mock_pairsam - stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.split.pairs.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
+ ]
+ ],
+ "1": [
+
+ ],
+ "2": [
+ "versions.yml:md5,0a4fa42a3bf8a568f64d3b3c9b9b7097"
+ ],
+ "bam": [
+
+ ],
+ "pairs": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.split.pairs.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,0a4fa42a3bf8a568f64d3b3c9b9b7097"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-05-10T14:06:06.314038764"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/pairtools/split/tests/tags.yml b/modules/nf-core/pairtools/split/tests/tags.yml
new file mode 100644
index 00000000..007ac8f0
--- /dev/null
+++ b/modules/nf-core/pairtools/split/tests/tags.yml
@@ -0,0 +1,2 @@
+pairtools/split:
+ - "modules/nf-core/pairtools/split/**"
diff --git a/modules/nf-core/pretextmap/environment.yml b/modules/nf-core/pretextmap/environment.yml
new file mode 100644
index 00000000..bfbbee2b
--- /dev/null
+++ b/modules/nf-core/pretextmap/environment.yml
@@ -0,0 +1,6 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::pretextmap=0.1.9
+ - bioconda::samtools=1.17
diff --git a/modules/nf-core/pretextmap/main.nf b/modules/nf-core/pretextmap/main.nf
new file mode 100644
index 00000000..b1a4a3f7
--- /dev/null
+++ b/modules/nf-core/pretextmap/main.nf
@@ -0,0 +1,60 @@
+
+process PRETEXTMAP {
+ tag "$meta.id"
+ label 'process_single'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/mulled-v2-f3591ce8609c7b3b33e5715333200aa5c163aa61%3A44321ab4d64f0b6d0c93abbd1406369d1b3da684-0':
+ 'biocontainers/mulled-v2-f3591ce8609c7b3b33e5715333200aa5c163aa61:44321ab4d64f0b6d0c93abbd1406369d1b3da684-0' }"
+
+ input:
+ tuple val(meta), path(input)
+ tuple val(meta2), path(fasta), path(fai)
+
+ output:
+ tuple val(meta), path("*.pretext") , emit: pretext
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def reference = fasta ? "--reference ${fasta}" : ""
+
+ """
+ if [[ $input == *.pairs.gz ]]; then
+ zcat $input | PretextMap \\
+ $args \\
+ -o ${prefix}.pretext
+ else
+ samtools \\
+ view \\
+ $reference \\
+ -h \\
+ $input | PretextMap \\
+ $args \\
+ -o ${prefix}.pretext
+ fi
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pretextmap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version //g')
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//' )
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ touch ${prefix}.pretext
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ pretextmap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version //g')
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/pretextmap/meta.yml b/modules/nf-core/pretextmap/meta.yml
new file mode 100644
index 00000000..d79295cd
--- /dev/null
+++ b/modules/nf-core/pretextmap/meta.yml
@@ -0,0 +1,59 @@
+name: "pretextmap"
+description: converts sam/bam/cram/pairs into genome contact map
+keywords:
+ - contact
+ - bam
+ - map
+tools:
+ - "pretextmap":
+ description: "Paired REad TEXTure Mapper. Converts SAM formatted read pairs into
+ genome contact maps."
+ homepage: "https://github.com/wtsi-hpag/PretextMap"
+ documentation: "https://github.com/wtsi-hpag/PretextMap/blob/master/README.md"
+ licence: ["MIT"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - input:
+ type: file
+ description: BAM/CRAM/SAM file or pairs formatted reads file
+ pattern: "*.{bam,cram,sam,pairs.gz}"
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - fasta:
+ type: file
+ description: Reference sequence file
+ pattern: "*.{fasta,fna,fa}"
+ - fai:
+ type: file
+ description: Reference sequence index file
+ pattern: "*.{fai}"
+output:
+ - pretext:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.pretext":
+ type: file
+ description: pretext map
+ pattern: "*.pretext"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@marrip"
+ - "@getrudeln"
+maintainers:
+ - "@marrip"
+ - "@getrudeln"
diff --git a/modules/nf-core/pretextmap/tests/main.nf.test b/modules/nf-core/pretextmap/tests/main.nf.test
new file mode 100644
index 00000000..cd2c3919
--- /dev/null
+++ b/modules/nf-core/pretextmap/tests/main.nf.test
@@ -0,0 +1,148 @@
+nextflow_process {
+
+ name "Test Process PRETEXTMAP"
+ script "../main.nf"
+ process "PRETEXTMAP"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "pretext"
+ tag "pretextmap"
+
+ test("homo_cram_map") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true)
+ ]
+
+ input[1] = [
+ [ id: 'test2', single_end: false ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("homo_cram_map_nofai") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true)
+ ]
+
+ input[1] = [
+ [ id: 'test2', single_end: false ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true),
+ []
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("homo_bam_map") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true)
+ ]
+
+ input[1] = [
+ [ id: 'test2', single_end: false ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("mapped_pairs_map") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ], // meta map
+ file("https://raw.githubusercontent.com/4dn-dcic/pairix/master/samples/test_4dn.pairs.gz", checkIfExists: true)
+ ]
+
+ input[1] = [
+ [],
+ [],
+ []
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("homo_cram_map_stub") {
+ options "-stub"
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end: false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true)
+ ]
+
+ input[1] = [
+ [ id: 'test2', single_end: false ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/pretextmap/tests/main.nf.test.snap b/modules/nf-core/pretextmap/tests/main.nf.test.snap
new file mode 100644
index 00000000..48697af8
--- /dev/null
+++ b/modules/nf-core/pretextmap/tests/main.nf.test.snap
@@ -0,0 +1,157 @@
+{
+ "homo_cram_map": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ],
+ "pretext": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ]
+ }
+ ],
+ "timestamp": "2024-03-21T10:53:43.322902"
+ },
+ "homo_cram_map_stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ],
+ "pretext": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ]
+ }
+ ],
+ "timestamp": "2024-03-21T11:07:44.32508"
+ },
+ "homo_cram_map_nofai": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ],
+ "pretext": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ]
+ }
+ ],
+ "timestamp": "2024-03-21T10:58:16.804287"
+ },
+ "mapped_pairs_map": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,b47be7fd285a2de68643f73f85ba84f1"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ],
+ "pretext": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,b47be7fd285a2de68643f73f85ba84f1"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ]
+ }
+ ],
+ "timestamp": "2024-03-21T11:07:32.047007"
+ },
+ "homo_bam_map": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ],
+ "pretext": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,894afb81509c847f7d9a58885e086b5c"
+ ]
+ }
+ ],
+ "timestamp": "2024-03-21T11:02:50.120033"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/pretextmap/tests/tags.yml b/modules/nf-core/pretextmap/tests/tags.yml
new file mode 100644
index 00000000..70f7eefc
--- /dev/null
+++ b/modules/nf-core/pretextmap/tests/tags.yml
@@ -0,0 +1,2 @@
+pretextmap:
+ - "modules/nf-core/pretextmap/**"
diff --git a/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml
new file mode 100644
index 00000000..b98cbb99
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/environment.yml
@@ -0,0 +1,7 @@
+channels:
+ - conda-forge
+ - bioconda
+
+dependencies:
+ - bioconda::htslib=1.20
+ - bioconda::samtools=1.20
diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf
new file mode 100644
index 00000000..bdcdbc95
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/main.nf
@@ -0,0 +1,50 @@
+process SAMTOOLS_FAIDX {
+ tag "$fasta"
+ label 'process_single'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' :
+ 'biocontainers/samtools:1.20--h50ea8bc_0' }"
+
+ input:
+ tuple val(meta), path(fasta)
+ tuple val(meta2), path(fai)
+
+ output:
+ tuple val(meta), path ("*.{fa,fasta}") , emit: fa , optional: true
+ tuple val(meta), path ("*.fai") , emit: fai, optional: true
+ tuple val(meta), path ("*.gzi") , emit: gzi, optional: true
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ """
+ samtools \\
+ faidx \\
+ $fasta \\
+ $args
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+
+ stub:
+ def match = (task.ext.args =~ /-o(?:utput)?\s(.*)\s?/).findAll()
+ def fastacmd = match[0] ? "touch ${match[0][1]}" : ''
+ """
+ ${fastacmd}
+ touch ${fasta}.fai
+
+ cat <<-END_VERSIONS > versions.yml
+
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/samtools/faidx/meta.yml b/modules/nf-core/samtools/faidx/meta.yml
new file mode 100644
index 00000000..f3c25de2
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/meta.yml
@@ -0,0 +1,65 @@
+name: samtools_faidx
+description: Index FASTA file
+keywords:
+ - index
+ - fasta
+ - faidx
+tools:
+ - samtools:
+ description: |
+ SAMtools is a set of utilities for interacting with and post-processing
+ short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li.
+ These files are generated as output by short read aligners like BWA.
+ homepage: http://www.htslib.org/
+ documentation: http://www.htslib.org/doc/samtools.html
+ doi: 10.1093/bioinformatics/btp352
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - fasta:
+ type: file
+ description: FASTA file
+ pattern: "*.{fa,fasta}"
+ - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - fai:
+ type: file
+ description: FASTA index file
+ pattern: "*.{fai}"
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - fa:
+ type: file
+ description: FASTA file
+ pattern: "*.{fa}"
+ - fai:
+ type: file
+ description: FASTA index file
+ pattern: "*.{fai}"
+ - gzi:
+ type: file
+ description: Optional gzip index file for compressed inputs
+ pattern: "*.gzi"
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@drpatelh"
+ - "@ewels"
+ - "@phue"
+maintainers:
+ - "@drpatelh"
+ - "@ewels"
+ - "@phue"
diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test b/modules/nf-core/samtools/faidx/tests/main.nf.test
new file mode 100644
index 00000000..17244ef2
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/main.nf.test
@@ -0,0 +1,122 @@
+nextflow_process {
+
+ name "Test Process SAMTOOLS_FAIDX"
+ script "../main.nf"
+ process "SAMTOOLS_FAIDX"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "samtools"
+ tag "samtools/faidx"
+
+ test("test_samtools_faidx") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]
+
+ input[1] = [[],[]]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("test_samtools_faidx_bgzip") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true)]
+
+ input[1] = [[],[]]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("test_samtools_faidx_fasta") {
+
+ config "./nextflow.config"
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]
+
+ input[1] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("test_samtools_faidx_stub_fasta") {
+
+ config "./nextflow2.config"
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]
+
+ input[1] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("test_samtools_faidx_stub_fai") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]
+
+ input[1] = [[],[]]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
new file mode 100644
index 00000000..3223b72b
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
@@ -0,0 +1,249 @@
+{
+ "test_samtools_faidx": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "2": [
+
+ ],
+ "3": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ],
+ "fa": [
+
+ ],
+ "fai": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "gzi": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-05-28T15:42:14.779784761"
+ },
+ "test_samtools_faidx_bgzip": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "2": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474"
+ ]
+ ],
+ "3": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ],
+ "fa": [
+
+ ],
+ "fai": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "gzi": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-05-28T15:42:20.256633877"
+ },
+ "test_samtools_faidx_fasta": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "extract.fa:md5,6a0774a0ad937ba0bfd2ac7457d90f36"
+ ]
+ ],
+ "1": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ],
+ "fa": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "extract.fa:md5,6a0774a0ad937ba0bfd2ac7457d90f36"
+ ]
+ ],
+ "fai": [
+
+ ],
+ "gzi": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-05-28T15:42:25.632577273"
+ },
+ "test_samtools_faidx_stub_fasta": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "extract.fa:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "1": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ],
+ "fa": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "extract.fa:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "fai": [
+
+ ],
+ "gzi": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-05-28T15:42:31.058424849"
+ },
+ "test_samtools_faidx_stub_fai": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "2": [
+
+ ],
+ "3": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ],
+ "fa": [
+
+ ],
+ "fai": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "gzi": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-05-28T15:42:36.479929617"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/faidx/tests/nextflow.config b/modules/nf-core/samtools/faidx/tests/nextflow.config
new file mode 100644
index 00000000..f76a3ba0
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/nextflow.config
@@ -0,0 +1,7 @@
+process {
+
+ withName: SAMTOOLS_FAIDX {
+ ext.args = 'MT192765.1 -o extract.fa'
+ }
+
+}
diff --git a/modules/nf-core/samtools/faidx/tests/nextflow2.config b/modules/nf-core/samtools/faidx/tests/nextflow2.config
new file mode 100644
index 00000000..33ebbd5d
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/nextflow2.config
@@ -0,0 +1,6 @@
+process {
+
+ withName: SAMTOOLS_FAIDX {
+ ext.args = '-o extract.fa'
+ }
+}
diff --git a/modules/nf-core/samtools/faidx/tests/tags.yml b/modules/nf-core/samtools/faidx/tests/tags.yml
new file mode 100644
index 00000000..e4a83948
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/tags.yml
@@ -0,0 +1,2 @@
+samtools/faidx:
+ - modules/nf-core/samtools/faidx/**
diff --git a/modules/nf-core/samtools/merge/environment.yml b/modules/nf-core/samtools/merge/environment.yml
new file mode 100644
index 00000000..62054fc9
--- /dev/null
+++ b/modules/nf-core/samtools/merge/environment.yml
@@ -0,0 +1,8 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::htslib=1.21
+ - bioconda::samtools=1.21
diff --git a/modules/nf-core/samtools/merge/main.nf b/modules/nf-core/samtools/merge/main.nf
new file mode 100644
index 00000000..34da4c7c
--- /dev/null
+++ b/modules/nf-core/samtools/merge/main.nf
@@ -0,0 +1,61 @@
+process SAMTOOLS_MERGE {
+ tag "$meta.id"
+ label 'process_low'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' :
+ 'biocontainers/samtools:1.21--h50ea8bc_0' }"
+
+ input:
+ tuple val(meta), path(input_files, stageAs: "?/*")
+ tuple val(meta2), path(fasta)
+ tuple val(meta3), path(fai)
+
+ output:
+ tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam
+ tuple val(meta), path("${prefix}.cram"), optional:true, emit: cram
+ tuple val(meta), path("*.csi") , optional:true, emit: csi
+ tuple val(meta), path("*.crai") , optional:true, emit: crai
+ path "versions.yml" , emit: versions
+
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ prefix = task.ext.prefix ?: "${meta.id}"
+ def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension()
+ def reference = fasta ? "--reference ${fasta}" : ""
+ """
+ samtools \\
+ merge \\
+ --threads ${task.cpus-1} \\
+ $args \\
+ ${reference} \\
+ ${prefix}.${file_type} \\
+ $input_files
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+
+ stub:
+ def args = task.ext.args ?: ''
+ prefix = task.ext.suffix ? "${meta.id}${task.ext.suffix}" : "${meta.id}"
+ def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension()
+ def index_type = file_type == "bam" ? "csi" : "crai"
+ def index = args.contains("--write-index") ? "touch ${prefix}.${index_type}" : ""
+ """
+ touch ${prefix}.${file_type}
+ ${index}
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/samtools/merge/meta.yml b/modules/nf-core/samtools/merge/meta.yml
new file mode 100644
index 00000000..235aa219
--- /dev/null
+++ b/modules/nf-core/samtools/merge/meta.yml
@@ -0,0 +1,104 @@
+name: samtools_merge
+description: Merge BAM or CRAM file
+keywords:
+ - merge
+ - bam
+ - sam
+ - cram
+tools:
+ - samtools:
+ description: |
+ SAMtools is a set of utilities for interacting with and post-processing
+ short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li.
+ These files are generated as output by short read aligners like BWA.
+ homepage: http://www.htslib.org/
+ documentation: http://www.htslib.org/doc/samtools.html
+ doi: 10.1093/bioinformatics/btp352
+ licence: ["MIT"]
+ identifier: biotools:samtools
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - input_files:
+ type: file
+ description: BAM/CRAM file
+ pattern: "*.{bam,cram,sam}"
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'genome' ]
+ - fasta:
+ type: file
+ description: Reference file the CRAM was created with (optional)
+ pattern: "*.{fasta,fa}"
+ - - meta3:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'genome' ]
+ - fai:
+ type: file
+ description: Index of the reference file the CRAM was created with (optional)
+ pattern: "*.fai"
+output:
+ - bam:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.bam:
+ type: file
+ description: BAM file
+ pattern: "*.{bam}"
+ - cram:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.cram:
+ type: file
+ description: CRAM file
+ pattern: "*.{cram}"
+ - csi:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.csi":
+ type: file
+ description: BAM index file (optional)
+ pattern: "*.csi"
+ - crai:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.crai":
+ type: file
+ description: CRAM index file (optional)
+ pattern: "*.crai"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@drpatelh"
+ - "@yuukiiwa "
+ - "@maxulysse"
+ - "@FriederikeHanssen"
+ - "@ramprasadn"
+maintainers:
+ - "@drpatelh"
+ - "@yuukiiwa "
+ - "@maxulysse"
+ - "@FriederikeHanssen"
+ - "@ramprasadn"
diff --git a/modules/nf-core/samtools/merge/tests/index.config b/modules/nf-core/samtools/merge/tests/index.config
new file mode 100644
index 00000000..8c5668cf
--- /dev/null
+++ b/modules/nf-core/samtools/merge/tests/index.config
@@ -0,0 +1,3 @@
+process {
+ ext.args = "--write-index"
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/merge/tests/main.nf.test b/modules/nf-core/samtools/merge/tests/main.nf.test
new file mode 100644
index 00000000..40b36e82
--- /dev/null
+++ b/modules/nf-core/samtools/merge/tests/main.nf.test
@@ -0,0 +1,137 @@
+nextflow_process {
+
+ name "Test Process SAMTOOLS_MERGE"
+ script "../main.nf"
+ process "SAMTOOLS_MERGE"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "samtools"
+ tag "samtools/merge"
+
+ test("bams") {
+
+ config "./index.config"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true) ]
+ ])
+ input[1] = [[],[]]
+ input[2] = [[],[]]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.bam[0][1]).name).match("bams_bam") },
+ { assert snapshot(process.out.cram).match("bams_cram") },
+ { assert snapshot(file(process.out.csi[0][1]).name).match("bams_csi") },
+ { assert snapshot(process.out.crai).match("bams_crai") },
+ { assert snapshot(process.out.versions).match("bams_versions") }
+ )
+ }
+ }
+
+ test("crams") {
+
+ config "./index.config"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test2.paired_end.recalibrated.sorted.cram', checkIfExists: true) ]
+ ])
+ input[1] = Channel.of([
+ [ id:'genome' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ])
+ input[2] = Channel.of([
+ [ id:'genome' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)
+ ])
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.cram[0][1]).name).match("crams_cram") },
+ { assert snapshot(process.out.bam).match("crams_bam") },
+ { assert snapshot(file(process.out.crai[0][1]).name).match("crams_crai") },
+ { assert snapshot(process.out.csi).match("crams_csi") },
+ { assert snapshot(process.out.versions).match("crams_versions") }
+ )
+ }
+ }
+
+ test("bam") {
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true) ]
+ ])
+ input[1] = [[],[]]
+ input[2] = [[],[]]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.bam[0][1]).name).match("bam_bam") },
+ { assert snapshot(process.out.cram).match("bam_cram") },
+ { assert snapshot(process.out.crai).match("bam_crai") },
+ { assert snapshot(process.out.csi).match("bam_csi") },
+ { assert snapshot(process.out.versions).match("bam_versions") }
+ )
+ }
+ }
+
+ test("bams_stub") {
+
+ config "./index.config"
+ options "-stub"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true) ]
+ ])
+ input[1] = [[],[]]
+ input[2] = [[],[]]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.bam[0][1]).name).match("bams_stub_bam") },
+ { assert snapshot(process.out.cram).match("bams_stub_cram") },
+ { assert snapshot(file(process.out.csi[0][1]).name).match("bams_stub_csi") },
+ { assert snapshot(process.out.crai).match("bams_stub_crai") },
+ { assert snapshot(process.out.versions).match("bams_stub_versions") }
+ )
+ }
+ }
+}
diff --git a/modules/nf-core/samtools/merge/tests/main.nf.test.snap b/modules/nf-core/samtools/merge/tests/main.nf.test.snap
new file mode 100644
index 00000000..0a41e01a
--- /dev/null
+++ b/modules/nf-core/samtools/merge/tests/main.nf.test.snap
@@ -0,0 +1,228 @@
+{
+ "crams_cram": {
+ "content": [
+ "test.cram"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:00.647389"
+ },
+ "bams_stub_cram": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:19.937013"
+ },
+ "bams_crai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:49:24.928616"
+ },
+ "bams_bam": {
+ "content": [
+ "test.bam"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:49:24.923289"
+ },
+ "bams_cram": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:49:24.925716"
+ },
+ "crams_csi": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:00.655959"
+ },
+ "bam_bam": {
+ "content": [
+ "test.bam"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:10.319539"
+ },
+ "bam_versions": {
+ "content": [
+ [
+ "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-16T09:16:30.476887194"
+ },
+ "bams_csi": {
+ "content": [
+ "test.bam.csi"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:49:24.92719"
+ },
+ "bams_stub_csi": {
+ "content": [
+ "test.csi"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:19.940498"
+ },
+ "bam_crai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:10.328852"
+ },
+ "bams_stub_versions": {
+ "content": [
+ [
+ "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-16T09:16:52.203823961"
+ },
+ "bam_cram": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:10.324219"
+ },
+ "bams_stub_bam": {
+ "content": [
+ "test.bam"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:19.933153"
+ },
+ "bams_versions": {
+ "content": [
+ [
+ "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-16T08:29:57.524363148"
+ },
+ "crams_bam": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:00.650652"
+ },
+ "crams_versions": {
+ "content": [
+ [
+ "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-16T09:16:06.977096207"
+ },
+ "bam_csi": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:10.33292"
+ },
+ "crams_crai": {
+ "content": [
+ "test.cram.crai"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:00.653512"
+ },
+ "bams_stub_crai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T18:50:19.943839"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/merge/tests/tags.yml b/modules/nf-core/samtools/merge/tests/tags.yml
new file mode 100644
index 00000000..b869abcb
--- /dev/null
+++ b/modules/nf-core/samtools/merge/tests/tags.yml
@@ -0,0 +1,2 @@
+samtools/merge:
+ - "modules/nf-core/samtools/merge/**"
diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml
new file mode 100644
index 00000000..62054fc9
--- /dev/null
+++ b/modules/nf-core/samtools/sort/environment.yml
@@ -0,0 +1,8 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::htslib=1.21
+ - bioconda::samtools=1.21
diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf
new file mode 100644
index 00000000..caf3c61a
--- /dev/null
+++ b/modules/nf-core/samtools/sort/main.nf
@@ -0,0 +1,72 @@
+process SAMTOOLS_SORT {
+ tag "$meta.id"
+ label 'process_medium'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' :
+ 'biocontainers/samtools:1.21--h50ea8bc_0' }"
+
+ input:
+ tuple val(meta) , path(bam)
+ tuple val(meta2), path(fasta)
+
+ output:
+ tuple val(meta), path("*.bam"), emit: bam, optional: true
+ tuple val(meta), path("*.cram"), emit: cram, optional: true
+ tuple val(meta), path("*.crai"), emit: crai, optional: true
+ tuple val(meta), path("*.csi"), emit: csi, optional: true
+ path "versions.yml", emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def extension = args.contains("--output-fmt sam") ? "sam" :
+ args.contains("--output-fmt cram") ? "cram" :
+ "bam"
+ def reference = fasta ? "--reference ${fasta}" : ""
+ if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!"
+
+ """
+ samtools cat \\
+ ${bam} \\
+ | \\
+ samtools sort \\
+ $args \\
+ -T ${prefix} \\
+ --threads $task.cpus \\
+ ${reference} \\
+ -o ${prefix}.${extension} \\
+ -
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+
+ stub:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def extension = args.contains("--output-fmt sam") ? "sam" :
+ args.contains("--output-fmt cram") ? "cram" :
+ "bam"
+ """
+ touch ${prefix}.${extension}
+ if [ "${extension}" == "bam" ];
+ then
+ touch ${prefix}.${extension}.csi
+ elif [ "${extension}" == "cram" ];
+ then
+ touch ${prefix}.${extension}.crai
+ fi
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml
new file mode 100644
index 00000000..a9dbec5a
--- /dev/null
+++ b/modules/nf-core/samtools/sort/meta.yml
@@ -0,0 +1,92 @@
+name: samtools_sort
+description: Sort SAM/BAM/CRAM file
+keywords:
+ - sort
+ - bam
+ - sam
+ - cram
+tools:
+ - samtools:
+ description: |
+ SAMtools is a set of utilities for interacting with and post-processing
+ short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li.
+ These files are generated as output by short read aligners like BWA.
+ homepage: http://www.htslib.org/
+ documentation: http://www.htslib.org/doc/samtools.html
+ doi: 10.1093/bioinformatics/btp352
+ licence: ["MIT"]
+ identifier: biotools:samtools
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: file
+ description: BAM/CRAM/SAM file(s)
+ pattern: "*.{bam,cram,sam}"
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'genome' ]
+ - fasta:
+ type: file
+ description: Reference genome FASTA file
+ pattern: "*.{fa,fasta,fna}"
+ optional: true
+output:
+ - bam:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.bam":
+ type: file
+ description: Sorted BAM file
+ pattern: "*.{bam}"
+ - cram:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.cram":
+ type: file
+ description: Sorted CRAM file
+ pattern: "*.{cram}"
+ - crai:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.crai":
+ type: file
+ description: CRAM index file (optional)
+ pattern: "*.crai"
+ - csi:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.csi":
+ type: file
+ description: BAM index file (optional)
+ pattern: "*.csi"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@drpatelh"
+ - "@ewels"
+ - "@matthdsm"
+maintainers:
+ - "@drpatelh"
+ - "@ewels"
+ - "@matthdsm"
diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test
new file mode 100644
index 00000000..b05e6691
--- /dev/null
+++ b/modules/nf-core/samtools/sort/tests/main.nf.test
@@ -0,0 +1,192 @@
+nextflow_process {
+
+ name "Test Process SAMTOOLS_SORT"
+ script "../main.nf"
+ process "SAMTOOLS_SORT"
+ tag "modules"
+ tag "modules_nfcore"
+ tag "samtools"
+ tag "samtools/sort"
+
+ test("bam") {
+
+ config "./nextflow.config"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true)
+ ])
+ input[1] = Channel.of([
+ [ id:'fasta' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ ])
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(
+ process.out.bam,
+ process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } },
+ process.out.versions
+ ).match()}
+ )
+ }
+ }
+
+ test("multiple bam") {
+
+ config "./nextflow.config"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ [
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true)
+ ]
+ ])
+ input[1] = Channel.of([
+ [ id:'fasta' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ])
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(
+ process.out.bam,
+ process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } },
+ process.out.versions
+ ).match()}
+ )
+ }
+ }
+
+ test("cram") {
+
+ config "./nextflow_cram.config"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true)
+ ])
+ input[1] = Channel.of([
+ [ id:'fasta' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ])
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(
+ process.out.cram.collect { it.collect { it instanceof Map ? it : file(it).name } },
+ process.out.crai.collect { it.collect { it instanceof Map ? it : file(it).name } },
+ process.out.versions
+ ).match()}
+ )
+ }
+ }
+
+ test("bam - stub") {
+
+ options "-stub"
+ config "./nextflow.config"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true)
+ ])
+ input[1] = Channel.of([
+ [ id:'fasta' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ ])
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("multiple bam - stub") {
+
+ config "./nextflow.config"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ [
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true)
+ ]
+ ])
+ input[1] = Channel.of([
+ [ id:'fasta' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ])
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("cram - stub") {
+
+ options "-stub"
+ config "./nextflow_cram.config"
+
+ when {
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true)
+ ])
+ input[1] = Channel.of([
+ [ id:'fasta' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ])
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+}
diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap
new file mode 100644
index 00000000..469891fe
--- /dev/null
+++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap
@@ -0,0 +1,287 @@
+{
+ "cram": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.cram"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.cram.crai"
+ ]
+ ],
+ [
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-16T08:49:58.207549273"
+ },
+ "bam - stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "1": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "4": [
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
+ ],
+ "bam": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "crai": [
+
+ ],
+ "cram": [
+
+ ],
+ "csi": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-16T08:50:08.630951018"
+ },
+ "cram - stub": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "2": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "3": [
+
+ ],
+ "4": [
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
+ ],
+ "bam": [
+
+ ],
+ "crai": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "cram": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "csi": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-16T08:50:19.061912443"
+ },
+ "multiple bam": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam.csi"
+ ]
+ ],
+ [
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.09.0"
+ },
+ "timestamp": "2024-10-08T11:59:55.479443"
+ },
+ "multiple bam - stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12"
+ ]
+ ],
+ "1": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9"
+ ]
+ ],
+ "4": [
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
+ ],
+ "bam": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12"
+ ]
+ ],
+ "crai": [
+
+ ],
+ "cram": [
+
+ ],
+ "csi": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.09.0"
+ },
+ "timestamp": "2024-10-08T11:36:13.781404"
+ },
+ "bam": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam:md5,34aa85e86abefe637f7a4a9887f016fc"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam.csi"
+ ]
+ ],
+ [
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.09.0"
+ },
+ "timestamp": "2024-10-08T11:59:46.372244"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/sort/tests/nextflow.config b/modules/nf-core/samtools/sort/tests/nextflow.config
new file mode 100644
index 00000000..f642771f
--- /dev/null
+++ b/modules/nf-core/samtools/sort/tests/nextflow.config
@@ -0,0 +1,8 @@
+process {
+
+ withName: SAMTOOLS_SORT {
+ ext.prefix = { "${meta.id}.sorted" }
+ ext.args = "--write-index"
+ }
+
+}
diff --git a/modules/nf-core/samtools/sort/tests/nextflow_cram.config b/modules/nf-core/samtools/sort/tests/nextflow_cram.config
new file mode 100644
index 00000000..3a8c0188
--- /dev/null
+++ b/modules/nf-core/samtools/sort/tests/nextflow_cram.config
@@ -0,0 +1,8 @@
+process {
+
+ withName: SAMTOOLS_SORT {
+ ext.prefix = { "${meta.id}.sorted" }
+ ext.args = "--write-index --output-fmt cram"
+ }
+
+}
diff --git a/modules/nf-core/samtools/sort/tests/tags.yml b/modules/nf-core/samtools/sort/tests/tags.yml
new file mode 100644
index 00000000..cd63ea20
--- /dev/null
+++ b/modules/nf-core/samtools/sort/tests/tags.yml
@@ -0,0 +1,3 @@
+samtools/sort:
+ - modules/nf-core/samtools/sort/**
+ - tests/modules/nf-core/samtools/sort/**
diff --git a/modules/nf-core/seqtk/cutn/environment.yml b/modules/nf-core/seqtk/cutn/environment.yml
new file mode 100644
index 00000000..693aa5c1
--- /dev/null
+++ b/modules/nf-core/seqtk/cutn/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::seqtk=1.4
diff --git a/modules/nf-core/seqtk/cutn/main.nf b/modules/nf-core/seqtk/cutn/main.nf
new file mode 100644
index 00000000..c2344a86
--- /dev/null
+++ b/modules/nf-core/seqtk/cutn/main.nf
@@ -0,0 +1,49 @@
+process SEQTK_CUTN {
+ tag "$meta.id"
+ label 'process_low'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/seqtk:1.4--he4a0461_1' :
+ 'biocontainers/seqtk:1.4--he4a0461_1' }"
+
+ input:
+ tuple val(meta), path(fasta)
+
+ output:
+ tuple val(meta), path("*.bed") , emit: bed
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+
+ """
+ seqtk \\
+ cutN \\
+ $args \\
+ -g $fasta \\
+ > ${prefix}.bed
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ seqtk: \$(echo \$(seqtk 2>&1) | sed 's/^.*Version: //; s/ .*\$//')
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+
+ """
+ touch ${prefix}.bed
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ seqtk: \$(echo \$(seqtk 2>&1) | sed 's/^.*Version: //; s/ .*\$//')
+ END_VERSIONS
+ """
+
+}
diff --git a/modules/nf-core/seqtk/cutn/meta.yml b/modules/nf-core/seqtk/cutn/meta.yml
new file mode 100644
index 00000000..2e39a477
--- /dev/null
+++ b/modules/nf-core/seqtk/cutn/meta.yml
@@ -0,0 +1,46 @@
+name: seqtk_cutn
+description: Generates a BED file containing genomic locations of lengths of N.
+keywords:
+ - cut
+ - fasta
+ - seqtk
+tools:
+ - seqtk:
+ description: Seqtk is a fast and lightweight tool for processing sequences in
+ the FASTA or FASTQ format. Seqtk mergepe command merges pair-end reads into
+ one interleaved file.
+ homepage: https://github.com/lh3/seqtk
+ documentation: https://docs.csc.fi/apps/seqtk/
+ tool_dev_url: https://github.com/lh3/seqtk
+ licence: ["MIT"]
+ identifier: biotools:seqtk
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - fasta:
+ type: file
+ description: A single fasta file to be split.
+ pattern: "*.{fasta}"
+output:
+ - bed:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.bed":
+ type: file
+ description: The output bed which summarised locations of cuts
+ pattern: "*.{bed}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@DLBPointon"
+maintainers:
+ - "@DLBPointon"
diff --git a/modules/nf-core/seqtk/cutn/tests/main.nf.test b/modules/nf-core/seqtk/cutn/tests/main.nf.test
new file mode 100644
index 00000000..46dfff1f
--- /dev/null
+++ b/modules/nf-core/seqtk/cutn/tests/main.nf.test
@@ -0,0 +1,57 @@
+nextflow_process {
+
+ name "Test Process SEQTK_CUTN"
+ script "../main.nf"
+ process "SEQTK_CUTN"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "seqtk"
+ tag "seqtk/cutn"
+
+ test("homo_21_cut") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:true ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() },
+ { assert snapshot(
+ file(process.out.bed[0][1]).name
+ ).match("genome_cut")
+ }
+ )
+ }
+ }
+
+ test("homo_21_cut_stub") {
+ options "-stub"
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:true ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+}
diff --git a/modules/nf-core/seqtk/cutn/tests/main.nf.test.snap b/modules/nf-core/seqtk/cutn/tests/main.nf.test.snap
new file mode 100644
index 00000000..998beda5
--- /dev/null
+++ b/modules/nf-core/seqtk/cutn/tests/main.nf.test.snap
@@ -0,0 +1,70 @@
+{
+ "genome_cut": {
+ "content": [
+ "test.bed"
+ ],
+ "timestamp": "2024-02-22T16:02:14.744148"
+ },
+ "homo_21_cut_stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,3da8ed2738f3c093d1e62d796fd76428"
+ ],
+ "bed": [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,3da8ed2738f3c093d1e62d796fd76428"
+ ]
+ }
+ ],
+ "timestamp": "2024-02-22T16:02:23.596389"
+ },
+ "homo_21_cut": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.bed:md5,16cbba84e3a4bdbb52217afb5051f948"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,3da8ed2738f3c093d1e62d796fd76428"
+ ],
+ "bed": [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.bed:md5,16cbba84e3a4bdbb52217afb5051f948"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,3da8ed2738f3c093d1e62d796fd76428"
+ ]
+ }
+ ],
+ "timestamp": "2024-02-22T16:02:14.695205"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/seqtk/cutn/tests/tags.yml b/modules/nf-core/seqtk/cutn/tests/tags.yml
new file mode 100644
index 00000000..13c64cc3
--- /dev/null
+++ b/modules/nf-core/seqtk/cutn/tests/tags.yml
@@ -0,0 +1,2 @@
+seqtk/cutn:
+ - "modules/nf-core/seqtk/cutn/**"
diff --git a/modules/nf-core/tidk/plot/environment.yml b/modules/nf-core/tidk/plot/environment.yml
new file mode 100644
index 00000000..22eb538b
--- /dev/null
+++ b/modules/nf-core/tidk/plot/environment.yml
@@ -0,0 +1,7 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - "bioconda::tidk=0.2.41"
diff --git a/modules/nf-core/tidk/plot/main.nf b/modules/nf-core/tidk/plot/main.nf
new file mode 100644
index 00000000..ef56f567
--- /dev/null
+++ b/modules/nf-core/tidk/plot/main.nf
@@ -0,0 +1,47 @@
+process TIDK_PLOT {
+ tag "$meta.id"
+ label 'process_single'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/tidk:0.2.41--hdbdd923_0':
+ 'biocontainers/tidk:0.2.41--hdbdd923_0' }"
+
+ input:
+ tuple val(meta), path(tsv)
+
+ output:
+ tuple val(meta), path("*.svg"), emit: svg
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ tidk \\
+ plot \\
+ --output $prefix \\
+ $args \\
+ --tsv "$tsv"
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ tidk: \$(tidk --version | sed 's/tidk //')
+ END_VERSIONS
+ """
+
+ stub:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ touch ${prefix}.svg
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ tidk: \$(tidk --version | sed 's/tidk //')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/tidk/plot/meta.yml b/modules/nf-core/tidk/plot/meta.yml
new file mode 100644
index 00000000..75289b28
--- /dev/null
+++ b/modules/nf-core/tidk/plot/meta.yml
@@ -0,0 +1,50 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json
+name: "tidk_plot"
+description: |
+ Plots telomeric repeat frequency against sliding window location
+ using data produced by `tidk/search`
+keywords:
+ - genomics
+ - telomere
+ - search
+ - plot
+tools:
+ - "tidk":
+ description: tidk is a toolkit to identify and visualise telomeric repeats in
+ genomes
+ homepage: "https://github.com/tolkit/telomeric-identifier"
+ documentation: "https://github.com/tolkit/telomeric-identifier"
+ tool_dev_url: "https://github.com/tolkit/telomeric-identifier"
+ doi: "10.5281/zenodo.10091385"
+ licence: ["MIT"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. `[ id:'sample1' ]`
+ - tsv:
+ type: file
+ description: Search results in TSV format from `tidk search`
+ pattern: "*.tsv"
+output:
+ - svg:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. `[ id:'sample1' ]`
+ - "*.svg":
+ type: file
+ description: Telomere search plot
+ pattern: "*.svg"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@GallVp"
+maintainers:
+ - "@GallVp"
diff --git a/modules/nf-core/tidk/plot/tests/main.nf.test b/modules/nf-core/tidk/plot/tests/main.nf.test
new file mode 100644
index 00000000..e807d7fc
--- /dev/null
+++ b/modules/nf-core/tidk/plot/tests/main.nf.test
@@ -0,0 +1,72 @@
+nextflow_process {
+
+ name "Test Process TIDK_PLOT"
+ script "../main.nf"
+ process "TIDK_PLOT"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "tidk"
+ tag "tidk/search"
+ tag "tidk/plot"
+
+ test("homo_sapiens-genome_21_fasta-success") {
+
+ setup {
+ run("TIDK_SEARCH") {
+ script "../../../../nf-core/tidk/search"
+
+ process {
+ """
+ input[0] = [
+ [ id:'test' ],
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true)
+ ]
+ input[1] = 'TTAGGG'
+ """
+ }
+ }
+ }
+
+ when {
+ process {
+ """
+ input[0] = TIDK_SEARCH.out.tsv
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("stub") {
+
+ options '-stub'
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test' ],
+ []
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/tidk/plot/tests/main.nf.test.snap b/modules/nf-core/tidk/plot/tests/main.nf.test.snap
new file mode 100644
index 00000000..e28d5aea
--- /dev/null
+++ b/modules/nf-core/tidk/plot/tests/main.nf.test.snap
@@ -0,0 +1,68 @@
+{
+ "homo_sapiens-genome_21_fasta-success": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test.svg:md5,e76985fdc220867a05967984c2c4675d"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,b850b0d8b9add80d7863cc62e3f32c99"
+ ],
+ "svg": [
+ [
+ {
+ "id": "test"
+ },
+ "test.svg:md5,e76985fdc220867a05967984c2c4675d"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,b850b0d8b9add80d7863cc62e3f32c99"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2023-12-05T14:29:24.721706"
+ },
+ "stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test.svg:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,b850b0d8b9add80d7863cc62e3f32c99"
+ ],
+ "svg": [
+ [
+ {
+ "id": "test"
+ },
+ "test.svg:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,b850b0d8b9add80d7863cc62e3f32c99"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2023-12-16T18:50:29.344319"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/tidk/plot/tests/tags.yml b/modules/nf-core/tidk/plot/tests/tags.yml
new file mode 100644
index 00000000..91228695
--- /dev/null
+++ b/modules/nf-core/tidk/plot/tests/tags.yml
@@ -0,0 +1,2 @@
+tidk/plot:
+ - "modules/nf-core/tidk/plot/**"
diff --git a/modules/nf-core/tidk/search/environment.yml b/modules/nf-core/tidk/search/environment.yml
new file mode 100644
index 00000000..22eb538b
--- /dev/null
+++ b/modules/nf-core/tidk/search/environment.yml
@@ -0,0 +1,7 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - "bioconda::tidk=0.2.41"
diff --git a/modules/nf-core/tidk/search/main.nf b/modules/nf-core/tidk/search/main.nf
new file mode 100644
index 00000000..820f8fda
--- /dev/null
+++ b/modules/nf-core/tidk/search/main.nf
@@ -0,0 +1,62 @@
+process TIDK_SEARCH {
+ tag "$meta.id"
+ label 'process_single'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/tidk:0.2.41--hdbdd923_0':
+ 'biocontainers/tidk:0.2.41--hdbdd923_0' }"
+
+ input:
+ tuple val(meta), path(fasta)
+ val string
+
+ output:
+ tuple val(meta), path("*.tsv") , emit: tsv , optional: true
+ tuple val(meta), path("*.bedgraph") , emit: bedgraph , optional: true
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ tidk \\
+ search \\
+ --string $string \\
+ --output $prefix \\
+ --dir tidk \\
+ $args \\
+ $fasta
+
+ mv \\
+ tidk/${prefix}_telomeric_repeat_windows.tsv \\
+ ${prefix}.tsv \\
+ || echo "TSV file was not produced"
+
+ mv \\
+ tidk/${prefix}_telomeric_repeat_windows.bedgraph \\
+ ${prefix}.bedgraph \\
+ || echo "BEDGRAPH file was not produced"
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ tidk: \$(tidk --version | sed 's/tidk //')
+ END_VERSIONS
+ """
+
+ stub:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def extension = args.contains("--extension bedgraph") ? 'bedgraph' : 'tsv'
+ """
+ touch ${prefix}.${extension}
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ tidk: \$(tidk --version | sed 's/tidk //')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/tidk/search/meta.yml b/modules/nf-core/tidk/search/meta.yml
new file mode 100644
index 00000000..9a30ff15
--- /dev/null
+++ b/modules/nf-core/tidk/search/meta.yml
@@ -0,0 +1,60 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json
+name: "tidk_search"
+description: Searches a genome for a telomere string such as TTAGGG
+keywords:
+ - genomics
+ - telomere
+ - search
+tools:
+ - "tidk":
+ description: tidk is a toolkit to identify and visualise telomeric repeats in
+ genomes
+ homepage: "https://github.com/tolkit/telomeric-identifier"
+ documentation: "https://github.com/tolkit/telomeric-identifier"
+ tool_dev_url: "https://github.com/tolkit/telomeric-identifier"
+ doi: "10.5281/zenodo.10091385"
+ licence: ["MIT"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. `[ id:'sample1' ]`
+ - fasta:
+ type: file
+ description: The input fasta file
+ pattern: "*.{fsa,fa,fasta}"
+ - - string:
+ type: string
+ description: Search string such as TTAGGG
+output:
+ - tsv:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. `[ id:'sample1' ]`
+ - "*.tsv":
+ type: file
+ description: Search results in TSV format
+ pattern: "*.tsv"
+ - bedgraph:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. `[ id:'sample1' ]`
+ - "*.bedgraph":
+ type: file
+ description: Search results in BEDGRAPH format
+ pattern: "*.bedgraph"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@GallVp"
+maintainers:
+ - "@GallVp"
diff --git a/modules/nf-core/tidk/search/tests/main.nf.test b/modules/nf-core/tidk/search/tests/main.nf.test
new file mode 100644
index 00000000..cb8b5393
--- /dev/null
+++ b/modules/nf-core/tidk/search/tests/main.nf.test
@@ -0,0 +1,111 @@
+nextflow_process {
+
+ name "Test Process TIDK_SEARCH"
+ script "../main.nf"
+ process "TIDK_SEARCH"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "tidk"
+ tag "tidk/search"
+
+ test("homo_sapiens-genome_fasta-bedgraph") {
+
+ config "./nextflow.config"
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ]
+ input[1] = 'TTAGGG'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("homo_sapiens-genome_fasta-tsv") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ]
+ input[1] = 'TTAGGG'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("stub-bedgraph") {
+
+ options '-stub'
+ config "./nextflow.config"
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ]
+ input[1] = 'TTAGGG'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("stub-tsv") {
+
+ options '-stub'
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ]
+ input[1] = 'TTAGGG'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/tidk/search/tests/main.nf.test.snap b/modules/nf-core/tidk/search/tests/main.nf.test.snap
new file mode 100644
index 00000000..69515c83
--- /dev/null
+++ b/modules/nf-core/tidk/search/tests/main.nf.test.snap
@@ -0,0 +1,158 @@
+{
+ "stub-tsv": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "1": [
+
+ ],
+ "2": [
+ "versions.yml:md5,6baeeb0e50c9bea6975173a329179f8e"
+ ],
+ "bedgraph": [
+
+ ],
+ "tsv": [
+ [
+ {
+ "id": "test"
+ },
+ "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,6baeeb0e50c9bea6975173a329179f8e"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-08-08T10:29:23.918538"
+ },
+ "homo_sapiens-genome_fasta-bedgraph": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bedgraph:md5,8277cc74bf083f51584ba6d2b8a8013f"
+ ]
+ ],
+ "2": [
+ "versions.yml:md5,6baeeb0e50c9bea6975173a329179f8e"
+ ],
+ "bedgraph": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bedgraph:md5,8277cc74bf083f51584ba6d2b8a8013f"
+ ]
+ ],
+ "tsv": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,6baeeb0e50c9bea6975173a329179f8e"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-08-08T10:29:11.515308"
+ },
+ "homo_sapiens-genome_fasta-tsv": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test.tsv:md5,5b44a89396f412eb571ea240ef9deedd"
+ ]
+ ],
+ "1": [
+
+ ],
+ "2": [
+ "versions.yml:md5,6baeeb0e50c9bea6975173a329179f8e"
+ ],
+ "bedgraph": [
+
+ ],
+ "tsv": [
+ [
+ {
+ "id": "test"
+ },
+ "test.tsv:md5,5b44a89396f412eb571ea240ef9deedd"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,6baeeb0e50c9bea6975173a329179f8e"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-08-08T10:29:15.661774"
+ },
+ "stub-bedgraph": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "2": [
+ "versions.yml:md5,6baeeb0e50c9bea6975173a329179f8e"
+ ],
+ "bedgraph": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "tsv": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,6baeeb0e50c9bea6975173a329179f8e"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-08-08T10:29:19.802171"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/tidk/search/tests/nextflow.config b/modules/nf-core/tidk/search/tests/nextflow.config
new file mode 100644
index 00000000..5d36acfb
--- /dev/null
+++ b/modules/nf-core/tidk/search/tests/nextflow.config
@@ -0,0 +1,3 @@
+process {
+ ext.args = '--extension bedgraph'
+}
diff --git a/modules/nf-core/tidk/search/tests/tags.yml b/modules/nf-core/tidk/search/tests/tags.yml
new file mode 100644
index 00000000..6d27fc6d
--- /dev/null
+++ b/modules/nf-core/tidk/search/tests/tags.yml
@@ -0,0 +1,2 @@
+tidk/search:
+ - "modules/nf-core/tidk/search/**"
diff --git a/modules/nf-core/yahs/environment.yml b/modules/nf-core/yahs/environment.yml
new file mode 100644
index 00000000..cb2acec8
--- /dev/null
+++ b/modules/nf-core/yahs/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::yahs=1.2a.2
diff --git a/modules/nf-core/yahs/main.nf b/modules/nf-core/yahs/main.nf
index 068fb719..470e5e2c 100644
--- a/modules/nf-core/yahs/main.nf
+++ b/modules/nf-core/yahs/main.nf
@@ -2,7 +2,7 @@ process YAHS {
tag "$meta.id"
label 'process_high'
- conda "bioconda::yahs=1.2a.2"
+ conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'https://depot.galaxyproject.org/singularity/yahs:1.2a.2--h7132678_0':
'biocontainers/yahs:1.2a.2--h7132678_0' }"
diff --git a/modules/nf-core/yahs/meta.yml b/modules/nf-core/yahs/meta.yml
index 0c09bd63..7ddcc778 100644
--- a/modules/nf-core/yahs/meta.yml
+++ b/modules/nf-core/yahs/meta.yml
@@ -12,8 +12,7 @@ tools:
documentation: "https://github.com/c-zhou/yahs"
tool_dev_url: "https://github.com/c-zhou/yahs"
doi: "10.1093/bioinformatics/btac808"
- licence: "['MIT']"
-
+ licence: ["MIT"]
input:
# Only when we have meta
- meta:
@@ -26,17 +25,14 @@ input:
type: file
description: BED file containing coordinates of read alignments
pattern: "*.{bed,bam,bin}"
-
- fasta:
type: file
description: FASTA reference file
pattern: "*.{fasta,fa}"
-
- fai:
type: file
description: index of the reference file
pattern: "*.{fai}"
-
output:
#Only when we have meta
- meta:
@@ -44,28 +40,23 @@ output:
description: |
Groovy Map containing sample information
e.g. [ id:'test' ]
-
- versions:
type: file
description: File containing software versions
pattern: "versions.yml"
-
- scaffolds_fasta:
type: file
description: FASTA file with resulting contigs
pattern: "*scaffolds_final.fa"
-
- scaffolds_agp:
type: file
description: AGP file containing contigs placing coordinates
pattern: "*scaffolds_final.agp"
-
- binary:
type: file
- description: BIN file with alignment results
- of Hi-C reads to the contigs in internal YaHS
- binary format
+ description: BIN file with alignment results of Hi-C reads to the contigs in internal YaHS binary format
pattern: "*bin"
-
authors:
- "@ksenia-krasheninnikova"
+maintainers:
+ - "@ksenia-krasheninnikova"
diff --git a/modules/nf-core/yahs/tests/main.nf.test b/modules/nf-core/yahs/tests/main.nf.test
new file mode 100644
index 00000000..6e09ff00
--- /dev/null
+++ b/modules/nf-core/yahs/tests/main.nf.test
@@ -0,0 +1,36 @@
+
+nextflow_process {
+
+ name "Test Process YAHS"
+ script "../main.nf"
+ process "YAHS"
+ config "./nextflow.config"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "yahs"
+
+ test("sarscov2-bed-fasta-fai") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test' ],
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true)
+ ]
+ input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/yahs/tests/main.nf.test.snap b/modules/nf-core/yahs/tests/main.nf.test.snap
new file mode 100644
index 00000000..a98c16fb
--- /dev/null
+++ b/modules/nf-core/yahs/tests/main.nf.test.snap
@@ -0,0 +1,67 @@
+{
+ "test-yahs": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test_scaffolds_final.fa:md5,a7673a43fb4e3f0a87d2ca2fe48bd442"
+ ]
+ ],
+ "1": [
+ [
+ {
+ "id": "test"
+ },
+ "test_scaffolds_final.agp:md5,7134a33534816100a84a6d32351c2168"
+ ]
+ ],
+ "2": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bin:md5,c60503a616a0f7726176febdad3ae186"
+ ]
+ ],
+ "3": [
+ "versions.yml:md5,007c44dd06fe8686b6f8068314601462"
+ ],
+ "binary": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bin:md5,c60503a616a0f7726176febdad3ae186"
+ ]
+ ],
+ "scaffolds_agp": [
+ [
+ {
+ "id": "test"
+ },
+ "test_scaffolds_final.agp:md5,7134a33534816100a84a6d32351c2168"
+ ]
+ ],
+ "scaffolds_fasta": [
+ [
+ {
+ "id": "test"
+ },
+ "test_scaffolds_final.fa:md5,a7673a43fb4e3f0a87d2ca2fe48bd442"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,007c44dd06fe8686b6f8068314601462"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T08:47:14.869961"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/yahs/tests/nextflow.config b/modules/nf-core/yahs/tests/nextflow.config
new file mode 100644
index 00000000..1691f241
--- /dev/null
+++ b/modules/nf-core/yahs/tests/nextflow.config
@@ -0,0 +1,6 @@
+process {
+ withName: 'test_yahs:YAHS' {
+ ext.prefix = { "${meta.id}" }
+ ext.args = '--no-contig-ec'
+ }
+}
diff --git a/nextflow.config b/nextflow.config
index 3712430b..e091e30d 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -56,10 +56,26 @@ params {
fcs.database = null
fcs.manifest = "https://ftp.ncbi.nlm.nih.gov/genomes/TOOLS/FCS/database/latest/all.manifest"
fcs.ramdisk_path = '/dev/shm/gxdb'
+ // QUARTO
+ quarto_assembly_report = "$projectDir/assets/notebooks/assembly_report.qmd"
// General module configuration
- multiqc.config = "$baseDir/configs/multiqc_conf.yaml"
-
+ multiqc.config = "$projectDir/configs/multiqc_conf.yaml"
+ multiqc_assembly_report_config = "$projectDir/configs/multiqc_assembly_report_config.yml"
+ // define HiC sequencing type [ "arima_v2", "arima_v1", "omnic", "" ]
+ hic_type = 'arima_v2'
+ // define how to sort the final HiC bam file: [ by_coordinate, by_name ]
+ hic_bam_sorting = 'by_name'
+ // define 1000bp bin size for cooler cload intervals
+ cooler_bin_size = 1000
+ // define how to sort the HiC-maps: [ length, name, nosort ]
+ hic_map_sort_by = 'length'
+ // define minimum map quality for HiC alignments
+ hic_map_qv = 0
+ // pacbio hifi coverage cap for pretext and higlass coverage track, e.g. cap repeats at
+ hifi_coverage_cap = 100
+ // telomer motif
+ telomer_motif = "TTAGGG"
}
// Set container registry information
@@ -70,8 +86,22 @@ singularity.registry = 'quay.io'
includeConfig 'configs/nf-core-defaults.config'
+// Set bash options
+process.shell = """\
+bash
+
+set -e # Exit if a tool returns a non-zero status/exit code
+set -u # Treat unset variables and parameters as an error
+set -o pipefail # Returns the status of the last command to exit with a non-zero status or zero if all successfully execute
+set -C # No clobber - prevent output redirection from overwriting files.
+"""
+
profiles {
+ debug {
+ process.beforeScript = 'env'
+ }
+
conda {
conda.enabled = true
}
@@ -88,11 +118,11 @@ profiles {
docker {
docker.enabled = true
- docker.userEmulation = true
+ docker.runOptions = '-u $(id -u):$(id -g)'
}
arm {
- docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64'
+ docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64'
}
singularity {
@@ -105,21 +135,18 @@ profiles {
cpus = 8
memory = 30.GB
}
+ process {
+ resourceLimits = [
+ cpus: 8,
+ memory: 30.GB,
+ time: 1.d
+ ]
+ }
}
// Test profiles
test {
- params {
- input = "$projectDir/assets/test_hsapiens.yml"
- busco_lineages = 'eukaryota'
- }
- }
-
- testdata_full {
- params {
- input = "$projectDir/assets/test_dataset_full.yml"
- busco_lineages = 'eukaryota'
- }
+ includeConfig 'configs/test.config'
}
// Profiles for the Uppmax clusters
diff --git a/nf-test.config b/nf-test.config
new file mode 100644
index 00000000..3b6ab4c6
--- /dev/null
+++ b/nf-test.config
@@ -0,0 +1,9 @@
+config {
+ requires (
+ "nf-test": "0.9.0"
+ )
+ testsDir "tests"
+ workDir ".nf-test"
+ configFile "tests/nextflow.config"
+ profile "docker"
+}
diff --git a/pixi.lock b/pixi.lock
new file mode 100644
index 00000000..4780e68c
--- /dev/null
+++ b/pixi.lock
@@ -0,0 +1,7772 @@
+version: 5
+environments:
+ default:
+ channels:
+ - url: https://conda.anaconda.org/conda-forge/
+ - url: https://conda.anaconda.org/bioconda/
+ packages:
+ linux-64:
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.12-h4ab18f5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attmap-0.13.2-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/biopython-1.84-py312h9a8786e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.3-h4bc722e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-24.1.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-24.7.1-py312h7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.3.0-pyh7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/coreutils-9.5-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.3-py312hda17c39_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.10.1-hbbe4b11_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/eido-0.2.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.3-h5888daf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filetype-1.2.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.4-py312h66e93f0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.47.0-pl5321h59d505e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.43-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd81877a_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.4-hfca40fe_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.1.0-h77fa898_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h69a702a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.1.0-h69a702a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.10-h4cc3d14_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-1.5.10-py312h7fb9e8e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.30-h3509ff9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.1-hadc24fc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.1.0-hc0a3c3a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-h4852527_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/logmuse-0.2.8-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mamba-1.5.10-py312h9460a1c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.1.2-py312h7900ff3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/nextflow-24.04.4-hdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/bioconda/noarch/nf-core-3.0.2-pyhdfd78af_1.tar.bz2
+ - conda: https://conda.anaconda.org/bioconda/noarch/nf-test-0.9.2-h2a3209d_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openjdk-17.0.11-h38bd402_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/oyaml-1.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pephubclient-0.4.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/peppy-0.40.7-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/piper-0.14.3-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pipestat-0.11.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.36-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.36-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h98912ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/pyfaidx-0.8.1.3-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygithub-2.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.0-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py312h66e93f0_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/pyvcf3-1.0.3-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/questionary-2.0.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/refgenconf-0.12.2-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/bioconda/noarch/refgenie-0.12.1-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.4.post0-hd590300_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.4.post0-h59595ed_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.8.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h98912ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h98912ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/textual-0.71.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/trogon-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ubiquerg-0.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ujson-5.10.0-py312h2ec8cdc_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-1.4.3-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/veracitools-0.1.3-py_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-fixesproto-5.0-h7f98852_1002.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-inputproto-2.3.2-h7f98852_1002.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-5.0.3-h7f98852_1004.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.7.10-h4bc722e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.0-hd590300_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h4bc722e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-recordproto-1.14.2-h7f98852_1002.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/yacman-0.9.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda
+ osx-64:
+ - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attmap-0.13.2-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/biopython-1.84-py312hbd25219_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.1-h44e7173_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-24.1.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/conda-24.7.1-py312hb401068_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.3.0-pyh7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/coreutils-9.5-h10d778d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.3-py312h83535b2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/curl-8.10.1-h58e7537_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/eido-0.2.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filetype-1.2.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/fmt-10.2.1-h7728843_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/frozendict-2.4.4-py312hb553811_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/git-2.47.0-pl5321ha198fdc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.43-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd81877a_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.16-ha2f27b4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.7.4-h20e244c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.10.1-h58e7537_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-hd876a4e_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.3-hac325c4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libmamba-1.5.10-hd44d3b3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libmambapy-1.5.10-py312haab923c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libsolv-0.7.30-h69d5d9b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.1-h4b8f8c9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-heaf3512_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/logmuse-0.2.8-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-h10d778d_1001.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/mamba-1.5.10-py312ha12221d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/menuinst-2.1.2-py312hb401068_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/nextflow-24.04.4-hdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/bioconda/noarch/nf-core-3.0.2-pyhdfd78af_1.tar.bz2
+ - conda: https://conda.anaconda.org/bioconda/noarch/nf-test-0.9.2-h2a3209d_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/openjdk-17.0.11-h06b73d1_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.2-h7310d3a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/oyaml-1.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pephubclient-0.4.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/peppy-0.40.7-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.0.0-py312h66fe14f_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/piper-0.14.3-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pipestat-0.11.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.36-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.36-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py312h3d0f464_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/pycosat-0.6.6-py312h104f124_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.23.4-py312h669792a_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/pyfaidx-0.8.1.3-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygithub-2.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.0-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/pynacl-1.5.0-py312hb553811_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/pyvcf3-1.0.3-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/questionary-2.0.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/refgenconf-0.12.2-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/bioconda/noarch/refgenie-0.12.1-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/reproc-14.2.4.post0-h10d778d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/reproc-cpp-14.2.4.post0-h93d8f39_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.8.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h41838bb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h41838bb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/textual-0.71.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/trogon-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ubiquerg-0.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/ujson-5.10.0-py312h5861a67_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-1.4.3-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/veracitools-0.1.3-py_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.16.0-py312hb553811_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h00291cd_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/yacman-0.9.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-cpp-0.8.0-he965462_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda
+ osx-arm64:
+ - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attmap-0.13.2-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/biopython-1.84-py312h7e5086c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.1-hd74edd7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-24.1.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/conda-24.7.1-py312h81bd7bf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.3.0-pyh7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coreutils-9.5-h93a5062_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.3-py312h5fad481_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/curl-8.10.1-h13a7ad3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/eido-0.2.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filetype-1.2.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-10.2.1-h2ffa867_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozendict-2.4.4-py312h024a12e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/git-2.47.0-pl5321hc14f901_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.43-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd81877a_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.7.4-h83d404f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h3ed4263_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmamba-1.5.10-hbfbf5c4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmambapy-1.5.10-py312h1ed1908_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsolv-0.7.30-h6c9b7f8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.1-hc14010f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-h01dff8b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/logmuse-0.2.8-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h93a5062_1001.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mamba-1.5.10-py312h14bc7db_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/menuinst-2.1.2-py312h81bd7bf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/nextflow-24.04.4-hdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/bioconda/noarch/nf-core-3.0.2-pyhdfd78af_1.tar.bz2
+ - conda: https://conda.anaconda.org/bioconda/noarch/nf-test-0.9.2-h2a3209d_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjdk-17.0.11-h8f67a1f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/oyaml-1.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pephubclient-0.4.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/peppy-0.40.7-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/piper-0.14.3-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pipestat-0.11.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.36-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.36-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pycosat-0.6.6-py312h02f2b3b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/pyfaidx-0.8.1.3-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygithub-2.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.0-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynacl-1.5.0-py312h024a12e_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.5-h30c5eda_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/pyvcf3-1.0.3-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/questionary-2.0.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/bioconda/noarch/refgenconf-0.12.2-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/bioconda/noarch/refgenie-0.12.1-pyhdfd78af_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/reproc-14.2.4.post0-h93a5062_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/reproc-cpp-14.2.4.post0-h965bd2d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.8.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312he37b823_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312he37b823_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/textual-0.71.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/trogon-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ubiquerg-0.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ujson-5.10.0-py312hde4cb15_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-1.4.3-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/veracitools-0.1.3-py_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/yacman-0.9.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-cpp-0.8.0-h13dd4ca_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda
+packages:
+- kind: conda
+ name: _libgcc_mutex
+ version: '0.1'
+ build: conda_forge
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
+ sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726
+ md5: d7c89558ba9fa0495403155b64376d81
+ license: None
+ size: 2562
+ timestamp: 1578324546067
+- kind: conda
+ name: _openmp_mutex
+ version: '4.5'
+ build: 2_gnu
+ build_number: 16
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22
+ md5: 73aaf86a425cc6e73fcf236a5a46396d
+ depends:
+ - _libgcc_mutex 0.1 conda_forge
+ - libgomp >=7.5.0
+ constrains:
+ - openmp_impl 9999
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 23621
+ timestamp: 1650670423406
+- kind: conda
+ name: alsa-lib
+ version: 1.2.12
+ build: h4ab18f5_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.12-h4ab18f5_0.conda
+ sha256: 64b95dd06d7ca6b54cea03b02da8f1657b9899ca376d0ca7b47823064f55fb16
+ md5: 7ed427f0871fd41cb1d9c17727c17589
+ depends:
+ - libgcc-ng >=12
+ license: LGPL-2.1-or-later
+ license_family: GPL
+ size: 555868
+ timestamp: 1718118368236
+- kind: conda
+ name: annotated-types
+ version: 0.7.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda
+ sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f
+ md5: 7e9f4612544c8edbfd6afad17f1bd045
+ depends:
+ - python >=3.7
+ - typing-extensions >=4.0.0
+ license: MIT
+ license_family: MIT
+ size: 18235
+ timestamp: 1716290348421
+- kind: conda
+ name: archspec
+ version: 0.2.3
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda
+ sha256: cef4062ea91f07a961a808801d6b34a163632150037f4bd28232310ff0301cd7
+ md5: 192278292e20704f663b9c766909d67b
+ depends:
+ - python >=3.6
+ license: MIT OR Apache-2.0
+ size: 48780
+ timestamp: 1708969700251
+- kind: conda
+ name: attmap
+ version: 0.13.2
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/attmap-0.13.2-pyhd8ed1ab_0.tar.bz2
+ sha256: 571aaeea81effb719738cb5da3929e76e90987571f91e4f69bd252446be4fc61
+ md5: f7e348eb6bd53f544fd7cde87a7ba3c8
+ depends:
+ - python >=3.6
+ - ubiquerg >=0.2.1
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 13597
+ timestamp: 1636190372953
+- kind: conda
+ name: attrs
+ version: 24.2.0
+ build: pyh71513ae_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda
+ sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8
+ md5: 6732fa52eb8e66e5afeb32db8701a791
+ depends:
+ - python >=3.7
+ license: MIT
+ license_family: MIT
+ size: 56048
+ timestamp: 1722977241383
+- kind: conda
+ name: biopython
+ version: '1.84'
+ build: py312h7e5086c_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/biopython-1.84-py312h7e5086c_0.conda
+ sha256: 8500c3cd2a81bd1ca5bd55860e09e2e16a5d2a737edb8b8386bd04706e2ec9e3
+ md5: 8a443eddd816d47495ba591f34906978
+ depends:
+ - __osx >=11.0
+ - numpy
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: LicenseRef-Biopython
+ size: 3387595
+ timestamp: 1720015162059
+- kind: conda
+ name: biopython
+ version: '1.84'
+ build: py312h9a8786e_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/biopython-1.84-py312h9a8786e_0.conda
+ sha256: e6f0ff05963c93855d131cf9da52767cf210a158b197d7cbb8898991fbe047a2
+ md5: 6683d74a08fc106ef44d6ac403dc7aee
+ depends:
+ - libgcc-ng >=12
+ - numpy
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: LicenseRef-Biopython
+ size: 3411650
+ timestamp: 1720015057666
+- kind: conda
+ name: biopython
+ version: '1.84'
+ build: py312hbd25219_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/biopython-1.84-py312hbd25219_0.conda
+ sha256: a2a0f430d6deb404bb07b632cc7fa6e47628b2f152fa5ae45c5600f06f99afe6
+ md5: c44ad24f5f0b0e5c5b264b274ec81e62
+ depends:
+ - __osx >=10.13
+ - numpy
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: LicenseRef-Biopython
+ size: 3426580
+ timestamp: 1720015058197
+- kind: conda
+ name: boltons
+ version: 24.0.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda
+ sha256: e44d07932306392372411ab1261670a552f96077f925af00c1559a18a73a1bdc
+ md5: 61de176bd62041f9cd5bd4fcd09eb0ff
+ depends:
+ - python ==2.7.*|>=3.7
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 297896
+ timestamp: 1711936529147
+- kind: conda
+ name: brotli-python
+ version: 1.1.0
+ build: py312h2ec8cdc_2
+ build_number: 2
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda
+ sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f
+ md5: b0b867af6fc74b2a0aa206da29c0f3cf
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - libbrotlicommon 1.1.0 hb9d3cd8_2
+ license: MIT
+ license_family: MIT
+ size: 349867
+ timestamp: 1725267732089
+- kind: conda
+ name: brotli-python
+ version: 1.1.0
+ build: py312h5861a67_2
+ build_number: 2
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda
+ sha256: 265764ff4ad9e5cfefe7ea85c53d95157bf16ac2c0e5f190c528e4c9c0c1e2d0
+ md5: b95025822e43128835826ec0cc45a551
+ depends:
+ - __osx >=10.13
+ - libcxx >=17
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - libbrotlicommon 1.1.0 h00291cd_2
+ license: MIT
+ license_family: MIT
+ size: 363178
+ timestamp: 1725267893889
+- kind: conda
+ name: brotli-python
+ version: 1.1.0
+ build: py312hde4cb15_2
+ build_number: 2
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda
+ sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af
+ md5: a83c2ef76ccb11bc2349f4f17696b15d
+ depends:
+ - __osx >=11.0
+ - libcxx >=17
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - libbrotlicommon 1.1.0 hd74edd7_2
+ license: MIT
+ license_family: MIT
+ size: 339360
+ timestamp: 1725268143995
+- kind: conda
+ name: bzip2
+ version: 1.0.8
+ build: h4bc722e_7
+ build_number: 7
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
+ sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d
+ md5: 62ee74e96c5ebb0af99386de58cf9553
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=12
+ license: bzip2-1.0.6
+ license_family: BSD
+ size: 252783
+ timestamp: 1720974456583
+- kind: conda
+ name: bzip2
+ version: 1.0.8
+ build: h99b78c6_7
+ build_number: 7
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
+ sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91
+ md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab
+ depends:
+ - __osx >=11.0
+ license: bzip2-1.0.6
+ license_family: BSD
+ size: 122909
+ timestamp: 1720974522888
+- kind: conda
+ name: bzip2
+ version: 1.0.8
+ build: hfdf4475_7
+ build_number: 7
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5
+ md5: 7ed4301d437b59045be7e051a0308211
+ depends:
+ - __osx >=10.13
+ license: bzip2-1.0.6
+ license_family: BSD
+ size: 134188
+ timestamp: 1720974491916
+- kind: conda
+ name: c-ares
+ version: 1.32.3
+ build: h4bc722e_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.3-h4bc722e_0.conda
+ sha256: 3c5a844bb60b0d52d89c3f1bd828c9856417fe33a6102fd8bbd5c13c3351704a
+ md5: 7624e34ee6baebfc80d67bac76cc9d9d
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 179736
+ timestamp: 1721834714515
+- kind: conda
+ name: c-ares
+ version: 1.33.1
+ build: h44e7173_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.1-h44e7173_0.conda
+ sha256: 98b0ac09472e6737fc4685147d1755028cc650d428369cbe3cb74ab38b327095
+ md5: b31a2de5edfddb308dda802eab2956dc
+ depends:
+ - __osx >=10.13
+ license: MIT
+ license_family: MIT
+ size: 163203
+ timestamp: 1724438157472
+- kind: conda
+ name: c-ares
+ version: 1.33.1
+ build: hd74edd7_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.1-hd74edd7_0.conda
+ sha256: ad29a9cffa0504cb4bf7605963816feff3c7833f36b050e1e71912d09c38e3f6
+ md5: 5b69c16ee900aeffcf0103268d708518
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 159389
+ timestamp: 1724438175204
+- kind: conda
+ name: ca-certificates
+ version: 2024.8.30
+ build: h8857fd0_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda
+ sha256: 593f302d0f44c2c771e1614ee6d56fffdc7d616e6f187669c8b0e34ffce3e1ae
+ md5: b7e5424e7f06547a903d28e4651dbb21
+ license: ISC
+ size: 158665
+ timestamp: 1725019059295
+- kind: conda
+ name: ca-certificates
+ version: 2024.8.30
+ build: hbcca054_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda
+ sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea
+ md5: c27d1c142233b5bc9ca570c6e2e0c244
+ license: ISC
+ size: 159003
+ timestamp: 1725018903918
+- kind: conda
+ name: ca-certificates
+ version: 2024.8.30
+ build: hf0a4a13_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda
+ sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709
+ md5: 40dec13fd8348dbe303e57be74bd3d35
+ license: ISC
+ size: 158482
+ timestamp: 1725019034582
+- kind: conda
+ name: cairo
+ version: 1.18.0
+ build: hebfffa5_3
+ build_number: 3
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda
+ sha256: aee5b9e6ef71cdfb2aee9beae3ea91910ca761c01c0ef32052e3f94a252fa173
+ md5: fceaedf1cdbcb02df9699a0d9b005292
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - fontconfig >=2.14.2,<3.0a0
+ - fonts-conda-ecosystem
+ - freetype >=2.12.1,<3.0a0
+ - icu >=75.1,<76.0a0
+ - libgcc-ng >=12
+ - libglib >=2.80.3,<3.0a0
+ - libpng >=1.6.43,<1.7.0a0
+ - libstdcxx-ng >=12
+ - libxcb >=1.16,<2.0.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - pixman >=0.43.2,<1.0a0
+ - xorg-libice >=1.1.1,<2.0a0
+ - xorg-libsm >=1.2.4,<2.0a0
+ - xorg-libx11 >=1.8.9,<2.0a0
+ - xorg-libxext >=1.3.4,<2.0a0
+ - xorg-libxrender >=0.9.11,<0.10.0a0
+ - zlib
+ license: LGPL-2.1-only or MPL-1.1
+ size: 983604
+ timestamp: 1721138900054
+- kind: conda
+ name: cattrs
+ version: 24.1.2
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/cattrs-24.1.2-pyhd8ed1ab_0.conda
+ sha256: 51abcd19174028e3745ae7c16969ae66c321f047f20bc4383b9f6a692e770364
+ md5: ac582de2324988b79870b50c89c91c75
+ depends:
+ - attrs >=23.1.0
+ - exceptiongroup >=1.1.1
+ - python >=3.8
+ - typing-extensions >=4.1.0,!=4.6.3
+ license: MIT
+ license_family: MIT
+ size: 52194
+ timestamp: 1727088983570
+- kind: conda
+ name: certifi
+ version: 2024.8.30
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda
+ sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f
+ md5: 12f7d00853807b0531775e9be891cb11
+ depends:
+ - python >=3.7
+ license: ISC
+ size: 163752
+ timestamp: 1725278204397
+- kind: conda
+ name: cffi
+ version: 1.17.1
+ build: py312h06ac9bb_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda
+ sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457
+ md5: a861504bbea4161a9170b85d4d2be840
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libffi >=3.4,<4.0a0
+ - libgcc >=13
+ - pycparser
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 294403
+ timestamp: 1725560714366
+- kind: conda
+ name: cffi
+ version: 1.17.1
+ build: py312h0fad829_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda
+ sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f
+ md5: 19a5456f72f505881ba493979777b24e
+ depends:
+ - __osx >=11.0
+ - libffi >=3.4,<4.0a0
+ - pycparser
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 281206
+ timestamp: 1725560813378
+- kind: conda
+ name: cffi
+ version: 1.17.1
+ build: py312hf857d28_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda
+ sha256: 94fe49aed25d84997e2630d6e776a75ee2a85bd64f258702c57faa4fe2986902
+ md5: 5bbc69b8194fedc2792e451026cac34f
+ depends:
+ - __osx >=10.13
+ - libffi >=3.4,<4.0a0
+ - pycparser
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 282425
+ timestamp: 1725560725144
+- kind: conda
+ name: cfgv
+ version: 3.3.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
+ sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c
+ md5: ebb5f5f7dc4f1a3780ef7ea7738db08c
+ depends:
+ - python >=3.6.1
+ license: MIT
+ license_family: MIT
+ size: 10788
+ timestamp: 1629909423398
+- kind: conda
+ name: charset-normalizer
+ version: 3.3.2
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
+ sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9
+ md5: 7f4a9e3fcff3f6356ae99244a014da6a
+ depends:
+ - python >=3.7
+ license: MIT
+ license_family: MIT
+ size: 46597
+ timestamp: 1698833765762
+- kind: conda
+ name: click
+ version: 8.1.7
+ build: unix_pyh707e725_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
+ sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec
+ md5: f3ad426304898027fc619827ff428eca
+ depends:
+ - __unix
+ - python >=3.8
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 84437
+ timestamp: 1692311973840
+- kind: conda
+ name: colorama
+ version: 0.4.6
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
+ sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698
+ md5: 3faab06a954c2a04039983f2c4a50d99
+ depends:
+ - python >=3.7
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 25170
+ timestamp: 1666700778190
+- kind: conda
+ name: coloredlogs
+ version: 15.0.1
+ build: pyhd8ed1ab_3
+ build_number: 3
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_3.tar.bz2
+ sha256: 0bb37abbf3367add8a8e3522405efdbd06605acfc674488ef52486968f2c119d
+ md5: 7b4fc18b7f66382257c45424eaf81935
+ depends:
+ - humanfriendly >=9.1
+ - python >=3.7
+ license: MIT
+ license_family: MIT
+ size: 40569
+ timestamp: 1643220223971
+- kind: conda
+ name: conda
+ version: 24.7.1
+ build: py312h7900ff3_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/conda-24.7.1-py312h7900ff3_0.conda
+ sha256: a9ab2197ce45c9a2d418cecc5eea4b41ee99412a2b405a4a87570c396ed2679d
+ md5: e1bf59014e88eaff036101358f63a496
+ depends:
+ - archspec >=0.2.3
+ - boltons >=23.0.0
+ - charset-normalizer
+ - conda-libmamba-solver >=23.11.0
+ - conda-package-handling >=2.2.0
+ - distro >=1.5.0
+ - frozendict >=2.4.2
+ - jsonpatch >=1.32
+ - menuinst >=2
+ - packaging >=23.0
+ - platformdirs >=3.10.0
+ - pluggy >=1.0.0
+ - pycosat >=0.6.3
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - requests >=2.28.0,<3
+ - ruamel.yaml >=0.11.14,<0.19
+ - setuptools >=60.0.0
+ - tqdm >=4
+ - truststore >=0.8.0
+ - zstandard >=0.19.0
+ constrains:
+ - conda-env >=2.6
+ - conda-build >=24.3
+ - conda-content-trust >=0.1.1
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 1219758
+ timestamp: 1722273265556
+- kind: conda
+ name: conda
+ version: 24.7.1
+ build: py312h81bd7bf_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/conda-24.7.1-py312h81bd7bf_0.conda
+ sha256: 71c075328c13382cfcdf81bae9cfe064f52f53318f9f5a218531b216c6920a0f
+ md5: 901803f9834eaf3fcbb21d3f221b4d83
+ depends:
+ - archspec >=0.2.3
+ - boltons >=23.0.0
+ - charset-normalizer
+ - conda-libmamba-solver >=23.11.0
+ - conda-package-handling >=2.2.0
+ - distro >=1.5.0
+ - frozendict >=2.4.2
+ - jsonpatch >=1.32
+ - menuinst >=2
+ - packaging >=23.0
+ - platformdirs >=3.10.0
+ - pluggy >=1.0.0
+ - pycosat >=0.6.3
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - requests >=2.28.0,<3
+ - ruamel.yaml >=0.11.14,<0.19
+ - setuptools >=60.0.0
+ - tqdm >=4
+ - truststore >=0.8.0
+ - zstandard >=0.19.0
+ constrains:
+ - conda-env >=2.6
+ - conda-content-trust >=0.1.1
+ - conda-build >=24.3
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 1222099
+ timestamp: 1722273469549
+- kind: conda
+ name: conda
+ version: 24.7.1
+ build: py312hb401068_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/conda-24.7.1-py312hb401068_0.conda
+ sha256: 0fed930a019d6ad407cb9e98d552026686219ef21510ba1d622f329484aa5359
+ md5: 2337afa089fb528723069d900e8ca6a3
+ depends:
+ - archspec >=0.2.3
+ - boltons >=23.0.0
+ - charset-normalizer
+ - conda-libmamba-solver >=23.11.0
+ - conda-package-handling >=2.2.0
+ - distro >=1.5.0
+ - frozendict >=2.4.2
+ - jsonpatch >=1.32
+ - menuinst >=2
+ - packaging >=23.0
+ - platformdirs >=3.10.0
+ - pluggy >=1.0.0
+ - pycosat >=0.6.3
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - requests >=2.28.0,<3
+ - ruamel.yaml >=0.11.14,<0.19
+ - setuptools >=60.0.0
+ - tqdm >=4
+ - truststore >=0.8.0
+ - zstandard >=0.19.0
+ constrains:
+ - conda-build >=24.3
+ - conda-env >=2.6
+ - conda-content-trust >=0.1.1
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 1222420
+ timestamp: 1722273360724
+- kind: conda
+ name: conda-libmamba-solver
+ version: 24.7.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.7.0-pyhd8ed1ab_0.conda
+ sha256: e0cb57f5f86a18dc75045946ad3543a4e219a7b61b8f94fa2eba901c13b5cd69
+ md5: 857c9e25f0a77c0bd7eb622d46d9418f
+ depends:
+ - boltons >=23.0.0
+ - conda >=23.7.4
+ - libmambapy >=1.5.6,<2.0a0
+ - python >=3.8
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 40890
+ timestamp: 1721292570796
+- kind: conda
+ name: conda-package-handling
+ version: 2.3.0
+ build: pyh7900ff3_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.3.0-pyh7900ff3_0.conda
+ sha256: c85a76ffd08608c3c61d1ca6c82be9f45ab31a5e108a1aec0872d84b3546e4f1
+ md5: 0a7dce281ae2be81acab0aa963e6bb99
+ depends:
+ - conda-package-streaming >=0.9.0
+ - python >=3.8
+ - zstandard >=0.15
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 256238
+ timestamp: 1717678729709
+- kind: conda
+ name: conda-package-streaming
+ version: 0.10.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.10.0-pyhd8ed1ab_0.conda
+ sha256: 69674f1389168be29964e2d89c9597c7903462bf7525727a2df93dbd9f960934
+ md5: 3480386e00995f7a1dfb3b9aa2fe70fd
+ depends:
+ - python >=3.7
+ - zstandard >=0.15
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 19401
+ timestamp: 1717678620472
+- kind: conda
+ name: coreutils
+ version: '9.5'
+ build: h10d778d_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/coreutils-9.5-h10d778d_0.conda
+ sha256: 7a29ae82cf1c455b4956c8311ae97832460c3585f0d8789fd82161dd2a20d1fd
+ md5: 8332c7ae324c9fc4b22cc3d84a0582e8
+ license: GPL-3.0-or-later
+ license_family: GPL
+ size: 1374585
+ timestamp: 1711655512907
+- kind: conda
+ name: coreutils
+ version: '9.5'
+ build: h93a5062_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/coreutils-9.5-h93a5062_0.conda
+ sha256: 70e50f2f1458e7c172c9b1c149a4289e8eecc9b53e06ab9de0b3572cdbd30a61
+ md5: 75840e25e62a109b1d25043c63a4f36c
+ license: GPL-3.0-or-later
+ license_family: GPL
+ size: 1478098
+ timestamp: 1711655465375
+- kind: conda
+ name: coreutils
+ version: '9.5'
+ build: hd590300_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/coreutils-9.5-hd590300_0.conda
+ sha256: 7cd3b0f55aa55bb27b045c30f32b3f6b874ecc006f3abcb274c71a3bcbacb358
+ md5: 126d457e0e7a535278e808a7d8960015
+ depends:
+ - libgcc-ng >=12
+ license: GPL-3.0-or-later
+ license_family: GPL
+ size: 3014238
+ timestamp: 1711655132451
+- kind: conda
+ name: cryptography
+ version: 43.0.3
+ build: py312h5fad481_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.3-py312h5fad481_0.conda
+ sha256: 2c1e7da2c6035978ba94e7252d6422337fe84ce94a7926a513a5559f01443372
+ md5: 0533de15db4534b192e41ce3e947d4c0
+ depends:
+ - __osx >=11.0
+ - cffi >=1.12
+ - openssl >=3.3.2,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __osx >=11.0
+ license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT
+ license_family: BSD
+ size: 1352160
+ timestamp: 1729287304072
+- kind: conda
+ name: cryptography
+ version: 43.0.3
+ build: py312h83535b2_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.3-py312h83535b2_0.conda
+ sha256: 904f0bc21c2801f8162e6f7031e3bf1785ff3b17a2500568c672913e4bd6af60
+ md5: 3161e0eac36f8c0bd5f3b292491e708c
+ depends:
+ - __osx >=10.13
+ - cffi >=1.12
+ - openssl >=3.3.2,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __osx >=10.13
+ license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT
+ license_family: BSD
+ size: 1373672
+ timestamp: 1729287159528
+- kind: conda
+ name: cryptography
+ version: 43.0.3
+ build: py312hda17c39_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.3-py312hda17c39_0.conda
+ sha256: ba9e5aced2e7dc0bbc48f60bf38f514839424a01975fb2aed30e9246c2f82c7c
+ md5: 2abada8c216dd6e32514535a3fa245d4
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cffi >=1.12
+ - libgcc >=13
+ - openssl >=3.3.2,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __glibc >=2.17
+ license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT
+ license_family: BSD
+ size: 1488388
+ timestamp: 1729286882127
+- kind: conda
+ name: curl
+ version: 8.10.1
+ build: h13a7ad3_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/curl-8.10.1-h13a7ad3_0.conda
+ sha256: 182f7058b3ef0d7fbf7f3a659a0902f20744411a9f9a974931c3cd25f58a7447
+ md5: f1290779c05f1af99f6723ad6faffa50
+ depends:
+ - __osx >=11.0
+ - krb5 >=1.21.3,<1.22.0a0
+ - libcurl 8.10.1 h13a7ad3_0
+ - libssh2 >=1.11.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: curl
+ license_family: MIT
+ size: 157383
+ timestamp: 1726660054429
+- kind: conda
+ name: curl
+ version: 8.10.1
+ build: h58e7537_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/curl-8.10.1-h58e7537_0.conda
+ sha256: 314ef19bca95a69396780cdc97bd8fcb72215e434873161c8bfd97a3e88187f4
+ md5: c21fe6ee51849309dc7b3651ca3c75ad
+ depends:
+ - __osx >=10.13
+ - krb5 >=1.21.3,<1.22.0a0
+ - libcurl 8.10.1 h58e7537_0
+ - libssh2 >=1.11.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: curl
+ license_family: MIT
+ size: 159638
+ timestamp: 1726660283789
+- kind: conda
+ name: curl
+ version: 8.10.1
+ build: hbbe4b11_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/curl-8.10.1-hbbe4b11_0.conda
+ sha256: f2c6de198ae7505ab33ce7e86b7767f6492489cfb5635cad164822a9d73f3a5e
+ md5: 73c561c6b84bda71776c9fa21517e7eb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - krb5 >=1.21.3,<1.22.0a0
+ - libcurl 8.10.1 hbbe4b11_0
+ - libgcc >=13
+ - libssh2 >=1.11.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: curl
+ license_family: MIT
+ size: 173268
+ timestamp: 1726659802291
+- kind: conda
+ name: deprecated
+ version: 1.2.15
+ build: pyhff2d567_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda
+ sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee
+ md5: ca75e235b44ab995655fae392f99595e
+ depends:
+ - python >=2.7
+ - wrapt <2,>=1.10
+ license: MIT
+ license_family: MIT
+ size: 14182
+ timestamp: 1731836933516
+- kind: conda
+ name: distlib
+ version: 0.3.9
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda
+ sha256: 300b2e714f59403df0560174f5ef6c19db8b4a3b74a7244862cf771f07dee8fb
+ md5: fe521c1608280cc2803ebd26dc252212
+ depends:
+ - python 2.7|>=3.6
+ license: Apache-2.0
+ license_family: APACHE
+ size: 276214
+ timestamp: 1728557312342
+- kind: conda
+ name: distro
+ version: 1.9.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda
+ sha256: ae1c13d709c8001331b5b9345e4bcd77e9ae712d25f7958b2ebcbe0b068731b7
+ md5: bbdb409974cd6cb30071b1d978302726
+ depends:
+ - python >=3.6
+ license: Apache-2.0
+ license_family: APACHE
+ size: 42039
+ timestamp: 1704321683916
+- kind: conda
+ name: eido
+ version: 0.2.4
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/eido-0.2.4-pyhd8ed1ab_0.conda
+ sha256: f4875fa1fc8feab88bdfc05f7a705b2416dfdd974f3eb19608af18c38691779e
+ md5: fc815854ab62482e2f2f0d8fab786a1c
+ depends:
+ - jsonschema >=3.0.1
+ - logmuse >=0.2.5
+ - peppy >=0.40.6
+ - python >=3.8
+ - ubiquerg >=0.6.2
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 20005
+ timestamp: 1729011115644
+- kind: conda
+ name: exceptiongroup
+ version: 1.2.2
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda
+ sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5
+ md5: d02ae936e42063ca46af6cdad2dbd1e0
+ depends:
+ - python >=3.7
+ license: MIT and PSF-2.0
+ size: 20418
+ timestamp: 1720869435725
+- kind: conda
+ name: expat
+ version: 2.6.3
+ build: h5888daf_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.3-h5888daf_0.conda
+ sha256: 65bd479c75ce876f26600cb230d6ebc474086e31fa384af9b4282b36842ed7e2
+ md5: 6595440079bed734b113de44ffd3cd0a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libexpat 2.6.3 h5888daf_0
+ - libgcc >=13
+ license: MIT
+ license_family: MIT
+ size: 137891
+ timestamp: 1725568750673
+- kind: conda
+ name: filelock
+ version: 3.16.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda
+ sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4
+ md5: 916f8ec5dd4128cd5f207a3c4c07b2c6
+ depends:
+ - python >=3.7
+ license: Unlicense
+ size: 17357
+ timestamp: 1726613593584
+- kind: conda
+ name: filetype
+ version: 1.2.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/filetype-1.2.0-pyhd8ed1ab_0.tar.bz2
+ sha256: 4bb954cd07db9faa08c937df963483f34a964e8d5bcea957d16ef456a761432f
+ md5: 8db22d14ef51223a783383b45c63fbe0
+ depends:
+ - python >3.6
+ license: MIT
+ license_family: MIT
+ size: 19980
+ timestamp: 1667445885369
+- kind: conda
+ name: fmt
+ version: 10.2.1
+ build: h00ab1b0_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda
+ sha256: 7b9ba098a3661e023c3555e01554354ac4891af8f8998e85f0fcbfdac79fc0d4
+ md5: 35ef8bc24bd34074ebae3c943d551728
+ depends:
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 193853
+ timestamp: 1704454679950
+- kind: conda
+ name: fmt
+ version: 10.2.1
+ build: h2ffa867_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-10.2.1-h2ffa867_0.conda
+ sha256: 8570ae6fb7cd1179c646e2c48105e91b3ed8ba15855f12965cc5c9719753c06f
+ md5: 8cccde6755bdd787f9840f38a34b4e7d
+ depends:
+ - libcxx >=15
+ license: MIT
+ license_family: MIT
+ size: 174209
+ timestamp: 1704454873305
+- kind: conda
+ name: fmt
+ version: 10.2.1
+ build: h7728843_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/fmt-10.2.1-h7728843_0.conda
+ sha256: 2faeccfe2b9f7c028cf271f66757365fe43b15a1234084c16f159646a646ccbc
+ md5: ab205d53bda43d03f5c5b993ccb406b3
+ depends:
+ - libcxx >=15
+ license: MIT
+ license_family: MIT
+ size: 181468
+ timestamp: 1704454938658
+- kind: conda
+ name: font-ttf-dejavu-sans-mono
+ version: '2.37'
+ build: hab24e00_0
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b
+ md5: 0c96522c6bdaed4b1566d11387caaf45
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 397370
+ timestamp: 1566932522327
+- kind: conda
+ name: font-ttf-inconsolata
+ version: '3.000'
+ build: h77eed37_0
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c
+ md5: 34893075a5c9e55cdafac56607368fc6
+ license: OFL-1.1
+ license_family: Other
+ size: 96530
+ timestamp: 1620479909603
+- kind: conda
+ name: font-ttf-source-code-pro
+ version: '2.038'
+ build: h77eed37_0
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139
+ md5: 4d59c254e01d9cde7957100457e2d5fb
+ license: OFL-1.1
+ license_family: Other
+ size: 700814
+ timestamp: 1620479612257
+- kind: conda
+ name: font-ttf-ubuntu
+ version: '0.83'
+ build: h77eed37_2
+ build_number: 2
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda
+ sha256: c940f6e969143e13a3a9660abb3c7e7e23b8319efb29dbdd5dee0b9939236e13
+ md5: cbbe59391138ea5ad3658c76912e147f
+ license: LicenseRef-Ubuntu-Font-Licence-Version-1.0
+ license_family: Other
+ size: 1622566
+ timestamp: 1714483134319
+- kind: conda
+ name: fontconfig
+ version: 2.14.2
+ build: h14ed4e7_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda
+ sha256: 155d534c9037347ea7439a2c6da7c24ffec8e5dd278889b4c57274a1d91e0a83
+ md5: 0f69b688f52ff6da70bccb7ff7001d1d
+ depends:
+ - expat >=2.5.0,<3.0a0
+ - freetype >=2.12.1,<3.0a0
+ - libgcc-ng >=12
+ - libuuid >=2.32.1,<3.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ license: MIT
+ license_family: MIT
+ size: 272010
+ timestamp: 1674828850194
+- kind: conda
+ name: fonts-conda-ecosystem
+ version: '1'
+ build: '0'
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61
+ md5: fee5683a3f04bd15cbd8318b096a27ab
+ depends:
+ - fonts-conda-forge
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 3667
+ timestamp: 1566974674465
+- kind: conda
+ name: fonts-conda-forge
+ version: '1'
+ build: '0'
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
+ sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38
+ md5: f766549260d6815b0c52253f1fb1bb29
+ depends:
+ - font-ttf-dejavu-sans-mono
+ - font-ttf-inconsolata
+ - font-ttf-source-code-pro
+ - font-ttf-ubuntu
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 4102
+ timestamp: 1566932280397
+- kind: conda
+ name: freetype
+ version: 2.12.1
+ build: h267a509_2
+ build_number: 2
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda
+ sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6
+ md5: 9ae35c3d96db2c94ce0cef86efdfa2cb
+ depends:
+ - libgcc-ng >=12
+ - libpng >=1.6.39,<1.7.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ license: GPL-2.0-only OR FTL
+ size: 634972
+ timestamp: 1694615932610
+- kind: conda
+ name: freetype
+ version: 2.12.1
+ build: h60636b9_2
+ build_number: 2
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda
+ sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e
+ md5: 25152fce119320c980e5470e64834b50
+ depends:
+ - libpng >=1.6.39,<1.7.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ license: GPL-2.0-only OR FTL
+ size: 599300
+ timestamp: 1694616137838
+- kind: conda
+ name: freetype
+ version: 2.12.1
+ build: hadb7bae_2
+ build_number: 2
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda
+ sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9
+ md5: e6085e516a3e304ce41a8ee08b9b89ad
+ depends:
+ - libpng >=1.6.39,<1.7.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ license: GPL-2.0-only OR FTL
+ size: 596430
+ timestamp: 1694616332835
+- kind: conda
+ name: frozendict
+ version: 2.4.4
+ build: py312h024a12e_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/frozendict-2.4.4-py312h024a12e_1.conda
+ sha256: b297ca44cf2969e012d45de8a096c7257462012a7a057509c99c5c8d453b3bbc
+ md5: 391521cd740cc45e6fa79345b07c7e31
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: LGPL-3.0-only
+ license_family: LGPL
+ size: 30768
+ timestamp: 1726948941708
+- kind: conda
+ name: frozendict
+ version: 2.4.4
+ build: py312h66e93f0_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.4-py312h66e93f0_1.conda
+ sha256: 640707e935f593f5b5b1620f6d5f0add2cb0338f20528274a564189d84bf5637
+ md5: 82a14d06575c4023a5df6b0798acff71
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: LGPL-3.0-only
+ license_family: LGPL
+ size: 30590
+ timestamp: 1726948796784
+- kind: conda
+ name: frozendict
+ version: 2.4.4
+ build: py312hb553811_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/frozendict-2.4.4-py312hb553811_1.conda
+ sha256: 90a00ddf9a7c9c48f7aa2d3a3367260caa5e460a5a976268303a73c075be9e63
+ md5: bbeca593389899b298674e67f9a9a16c
+ depends:
+ - __osx >=10.13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: LGPL-3.0-only
+ license_family: LGPL
+ size: 30678
+ timestamp: 1726948836390
+- kind: conda
+ name: future
+ version: 1.0.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda
+ sha256: 8c918a63595ae01575b738ddf0bff10dc23a5002d4af4c8b445d1179a76a8efd
+ md5: 650a7807e689642dddd3590eb817beed
+ depends:
+ - python >=3.8
+ license: MIT
+ license_family: MIT
+ size: 364081
+ timestamp: 1708610254418
+- kind: conda
+ name: giflib
+ version: 5.2.2
+ build: hd590300_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda
+ sha256: aac402a8298f0c0cc528664249170372ef6b37ac39fdc92b40601a6aed1e32ff
+ md5: 3bf7b9fd5a7136126e0234db4b87c8b6
+ depends:
+ - libgcc-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 77248
+ timestamp: 1712692454246
+- kind: conda
+ name: git
+ version: 2.47.0
+ build: pl5321h59d505e_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/git-2.47.0-pl5321h59d505e_0.conda
+ sha256: ec0e20ae0aa8146895a107adf7ef9949759942617f5cbecb783284528df6b06c
+ md5: 5cb49c00a7aa5f400b70e95b84d90595
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libcurl >=8.10.1,<9.0a0
+ - libexpat >=2.6.3,<3.0a0
+ - libgcc >=13
+ - libiconv >=1.17,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ - pcre2 >=10.44,<10.45.0a0
+ - perl 5.*
+ license: GPL-2.0-or-later and LGPL-2.1-or-later
+ size: 10510958
+ timestamp: 1728491333125
+- kind: conda
+ name: git
+ version: 2.47.0
+ build: pl5321ha198fdc_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/git-2.47.0-pl5321ha198fdc_0.conda
+ sha256: 7653f335aa92c335d7ac13844272e3d2608f8198496904a5a99a97c90cc8062d
+ md5: 2d3d0e373bbebdecd4200f3c4d508df0
+ depends:
+ - __osx >=10.10
+ - libcurl >=8.10.1,<9.0a0
+ - libexpat >=2.6.3,<3.0a0
+ - libiconv >=1.17,<2.0a0
+ - libintl >=0.22.5,<1.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ - pcre2 >=10.44,<10.45.0a0
+ - perl 5.*
+ license: GPL-2.0-or-later and LGPL-2.1-or-later
+ size: 10496131
+ timestamp: 1728491563268
+- kind: conda
+ name: git
+ version: 2.47.0
+ build: pl5321hc14f901_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/git-2.47.0-pl5321hc14f901_0.conda
+ sha256: fe682467bb2d711f19fe46eb5410d2b47fdd44b913e006ac197ee7c2206e7c84
+ md5: 3fc5a24d1d6e8ba834f9ad4e7dece48e
+ depends:
+ - __osx >=11.0
+ - libcurl >=8.10.1,<9.0a0
+ - libexpat >=2.6.3,<3.0a0
+ - libiconv >=1.17,<2.0a0
+ - libintl >=0.22.5,<1.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ - pcre2 >=10.44,<10.45.0a0
+ - perl 5.*
+ license: GPL-2.0-or-later and LGPL-2.1-or-later
+ size: 11649267
+ timestamp: 1728491451793
+- kind: conda
+ name: gitdb
+ version: 4.0.11
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
+ sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b
+ md5: 623b19f616f2ca0c261441067e18ae40
+ depends:
+ - python >=3.7
+ - smmap >=3.0.1,<6
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 52872
+ timestamp: 1697791718749
+- kind: conda
+ name: gitpython
+ version: 3.1.43
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.43-pyhd8ed1ab_0.conda
+ sha256: cbb2802641a009ce9bcc2a047e817fd8816f9c842036a42f4730398d8e4cda2a
+ md5: 0b2154c1818111e17381b1df5b4b0176
+ depends:
+ - gitdb >=4.0.1,<5
+ - python >=3.7
+ - typing_extensions >=3.7.4.3
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 156827
+ timestamp: 1711991122366
+- kind: conda
+ name: graphite2
+ version: 1.3.13
+ build: h59595ed_1003
+ build_number: 1003
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda
+ sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add
+ md5: f87c7b7c2cb45f323ffbce941c78ab7c
+ depends:
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ size: 96855
+ timestamp: 1711634169756
+- kind: conda
+ name: h2
+ version: 4.1.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
+ sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a
+ md5: b748fbf7060927a6e82df7cb5ee8f097
+ depends:
+ - hpack >=4.0,<5
+ - hyperframe >=6.0,<7
+ - python >=3.6.1
+ license: MIT
+ license_family: MIT
+ size: 46754
+ timestamp: 1634280590080
+- kind: conda
+ name: harfbuzz
+ version: 9.0.0
+ build: hda332d3_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda
+ sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767
+ md5: 76b32dcf243444aea9c6b804bcfa40b8
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cairo >=1.18.0,<2.0a0
+ - freetype >=2.12.1,<3.0a0
+ - graphite2
+ - icu >=75.1,<76.0a0
+ - libgcc-ng >=12
+ - libglib >=2.80.3,<3.0a0
+ - libstdcxx-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 1603653
+ timestamp: 1721186240105
+- kind: conda
+ name: hpack
+ version: 4.0.0
+ build: pyh9f0ad1d_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
+ sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8
+ md5: 914d6646c4dbb1fd3ff539830a12fd71
+ depends:
+ - python
+ license: MIT
+ license_family: MIT
+ size: 25341
+ timestamp: 1598856368685
+- kind: conda
+ name: humanfriendly
+ version: '10.0'
+ build: pyhd81877a_7
+ build_number: 7
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd81877a_7.conda
+ sha256: dcbe5f1dd08ca2ad6664f76e37dc397138b7343b7ee5296656a6c697dcf022e3
+ md5: 74fbff91ca7c1b9a36b15903f2242f86
+ depends:
+ - __unix
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ size: 73296
+ timestamp: 1731259242894
+- kind: conda
+ name: hyperframe
+ version: 6.0.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
+ sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330
+ md5: 9f765cbfab6870c8435b9eefecd7a1f4
+ depends:
+ - python >=3.6
+ license: MIT
+ license_family: MIT
+ size: 14646
+ timestamp: 1619110249723
+- kind: conda
+ name: icu
+ version: '75.1'
+ build: h120a0e1_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda
+ sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7
+ md5: d68d48a3060eb5abdc1cdc8e2a3a5966
+ depends:
+ - __osx >=10.13
+ license: MIT
+ license_family: MIT
+ size: 11761697
+ timestamp: 1720853679409
+- kind: conda
+ name: icu
+ version: '75.1'
+ build: he02047a_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
+ sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e
+ md5: 8b189310083baabfb622af68fd9d3ae3
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 12129203
+ timestamp: 1720853576813
+- kind: conda
+ name: icu
+ version: '75.1'
+ build: hfee45f7_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
+ sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620
+ md5: 5eb22c1d7b3fc4abb50d92d621583137
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 11857802
+ timestamp: 1720853997952
+- kind: conda
+ name: identify
+ version: 2.6.2
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda
+ sha256: 4e3f1c381ad65b476a98d03c0f6c73df04ae4095b501f51129ba6f2a7660179c
+ md5: 636950f839e065401e2031624a414f0b
+ depends:
+ - python >=3.6
+ - ukkonen
+ license: MIT
+ license_family: MIT
+ size: 78376
+ timestamp: 1731187862708
+- kind: conda
+ name: idna
+ version: '3.8'
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda
+ sha256: 8660d38b272d3713ec8ac5ae918bc3bc80e1b81e1a7d61df554bded71ada6110
+ md5: 99e164522f6bdf23c177c8d9ae63f975
+ depends:
+ - python >=3.6
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 49275
+ timestamp: 1724450633325
+- kind: conda
+ name: importlib-metadata
+ version: 8.5.0
+ build: pyha770c72_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda
+ sha256: 7194700ce1a5ad2621fd68e894dd8c1ceaff9a38723e6e0e5298fdef13017b1c
+ md5: 54198435fce4d64d8a89af22573012a8
+ depends:
+ - python >=3.8
+ - zipp >=0.5
+ license: Apache-2.0
+ license_family: APACHE
+ size: 28646
+ timestamp: 1726082927916
+- kind: conda
+ name: importlib_resources
+ version: 6.4.5
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda
+ sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1
+ md5: c808991d29b9838fb4d96ce8267ec9ec
+ depends:
+ - python >=3.8
+ - zipp >=3.1.0
+ constrains:
+ - importlib-resources >=6.4.5,<6.4.6.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ size: 32725
+ timestamp: 1725921462405
+- kind: conda
+ name: iniconfig
+ version: 2.0.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
+ sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666
+ md5: f800d2da156d08e289b14e87e43c1ae5
+ depends:
+ - python >=3.7
+ license: MIT
+ license_family: MIT
+ size: 11101
+ timestamp: 1673103208955
+- kind: conda
+ name: itsdangerous
+ version: 2.2.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_0.conda
+ sha256: 4e933e36e9b0401b62ea8fd63393827ebeb4250de77a56687afb387d504523c5
+ md5: ff7ca04134ee8dde1d7cf491a78ef7c7
+ depends:
+ - python >=3.8
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 19333
+ timestamp: 1713372766463
+- kind: conda
+ name: jinja2
+ version: 3.1.4
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda
+ sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d
+ md5: 7b86ecb7d3557821c649b3c31e3eb9f2
+ depends:
+ - markupsafe >=2.0
+ - python >=3.7
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 111565
+ timestamp: 1715127275924
+- kind: conda
+ name: jsonpatch
+ version: '1.33'
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda
+ sha256: fbb17e33ace3225c6416d1604637c1058906b8223da968cc015128985336b2b4
+ md5: bfdb7c5c6ad1077c82a69a8642c87aff
+ depends:
+ - jsonpointer >=1.9
+ - python >=3.8
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 17366
+ timestamp: 1695536420928
+- kind: conda
+ name: jsonpointer
+ version: 3.0.0
+ build: py312h7900ff3_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda
+ sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4
+ md5: 6b51f7459ea4073eeb5057207e2e1e3d
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 17277
+ timestamp: 1725303032027
+- kind: conda
+ name: jsonpointer
+ version: 3.0.0
+ build: py312h81bd7bf_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda
+ sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947
+ md5: 80f403c03290e1662be03e026fb5f8ab
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 17865
+ timestamp: 1725303130815
+- kind: conda
+ name: jsonpointer
+ version: 3.0.0
+ build: py312hb401068_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda
+ sha256: 52fcb1db44a935bba26988cc17247a0f71a8ad2fbc2b717274a8c8940856ee0d
+ md5: 5dcf96bca4649d496d818a0f5cfb962e
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 17560
+ timestamp: 1725303027769
+- kind: conda
+ name: jsonschema
+ version: 4.23.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda
+ sha256: 7d0c4c0346b26be9f220682b7c5c0d84606d48c6dbc36fc238e4452dda733aff
+ md5: da304c192ad59975202859b367d0f6a2
+ depends:
+ - attrs >=22.2.0
+ - importlib_resources >=1.4.0
+ - jsonschema-specifications >=2023.03.6
+ - pkgutil-resolve-name >=1.3.10
+ - python >=3.8
+ - referencing >=0.28.4
+ - rpds-py >=0.7.1
+ license: MIT
+ license_family: MIT
+ size: 74323
+ timestamp: 1720529611305
+- kind: conda
+ name: jsonschema-specifications
+ version: 2024.10.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda
+ sha256: 82f8bed0f21dc0b3aff40dd4e39d77e85b93b0417bc5659b001e0109341b8b98
+ md5: 720745920222587ef942acfbc578b584
+ depends:
+ - python >=3.8
+ - referencing >=0.31.0
+ license: MIT
+ license_family: MIT
+ size: 16165
+ timestamp: 1728418976382
+- kind: conda
+ name: keyutils
+ version: 1.6.1
+ build: h166bdaf_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2
+ sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb
+ md5: 30186d27e2c9fa62b45fb1476b7200e3
+ depends:
+ - libgcc-ng >=10.3.0
+ license: LGPL-2.1-or-later
+ size: 117831
+ timestamp: 1646151697040
+- kind: conda
+ name: krb5
+ version: 1.21.3
+ build: h237132a_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda
+ sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b
+ md5: c6dc8a0fdec13a0565936655c33069a1
+ depends:
+ - __osx >=11.0
+ - libcxx >=16
+ - libedit >=3.1.20191231,<3.2.0a0
+ - libedit >=3.1.20191231,<4.0a0
+ - openssl >=3.3.1,<4.0a0
+ license: MIT
+ license_family: MIT
+ size: 1155530
+ timestamp: 1719463474401
+- kind: conda
+ name: krb5
+ version: 1.21.3
+ build: h37d8d59_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda
+ sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c
+ md5: d4765c524b1d91567886bde656fb514b
+ depends:
+ - __osx >=10.13
+ - libcxx >=16
+ - libedit >=3.1.20191231,<3.2.0a0
+ - libedit >=3.1.20191231,<4.0a0
+ - openssl >=3.3.1,<4.0a0
+ license: MIT
+ license_family: MIT
+ size: 1185323
+ timestamp: 1719463492984
+- kind: conda
+ name: krb5
+ version: 1.21.3
+ build: h659f571_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
+ sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238
+ md5: 3f43953b7d3fb3aaa1d0d0723d91e368
+ depends:
+ - keyutils >=1.6.1,<2.0a0
+ - libedit >=3.1.20191231,<3.2.0a0
+ - libedit >=3.1.20191231,<4.0a0
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ - openssl >=3.3.1,<4.0a0
+ license: MIT
+ license_family: MIT
+ size: 1370023
+ timestamp: 1719463201255
+- kind: conda
+ name: lcms2
+ version: '2.16'
+ build: ha0e7c42_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda
+ sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4
+ md5: 66f6c134e76fe13cce8a9ea5814b5dd5
+ depends:
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libtiff >=4.6.0,<4.8.0a0
+ license: MIT
+ license_family: MIT
+ size: 211959
+ timestamp: 1701647962657
+- kind: conda
+ name: lcms2
+ version: '2.16'
+ build: ha2f27b4_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.16-ha2f27b4_0.conda
+ sha256: 222ebc0a55544b9922f61e75015d02861e65b48f12113af41d48ba0814e14e4e
+ md5: 1442db8f03517834843666c422238c9b
+ depends:
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libtiff >=4.6.0,<4.8.0a0
+ license: MIT
+ license_family: MIT
+ size: 224432
+ timestamp: 1701648089496
+- kind: conda
+ name: lcms2
+ version: '2.16'
+ build: hb7c19ff_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda
+ sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041
+ md5: 51bb7010fc86f70eee639b4bb7a894f5
+ depends:
+ - libgcc-ng >=12
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libtiff >=4.6.0,<4.8.0a0
+ license: MIT
+ license_family: MIT
+ size: 245247
+ timestamp: 1701647787198
+- kind: conda
+ name: ld_impl_linux-64
+ version: '2.40'
+ build: hf3520f5_7
+ build_number: 7
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda
+ sha256: 764b6950aceaaad0c67ef925417594dd14cd2e22fff864aeef455ac259263d15
+ md5: b80f2f396ca2c28b8c14c437a4ed1e74
+ constrains:
+ - binutils_impl_linux-64 2.40
+ license: GPL-3.0-only
+ license_family: GPL
+ size: 707602
+ timestamp: 1718625640445
+- kind: conda
+ name: lerc
+ version: 4.0.0
+ build: h27087fc_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2
+ sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12
+ md5: 76bbff344f0134279f225174e9064c8f
+ depends:
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: Apache-2.0
+ license_family: Apache
+ size: 281798
+ timestamp: 1657977462600
+- kind: conda
+ name: lerc
+ version: 4.0.0
+ build: h9a09cb3_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2
+ sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958
+ md5: de462d5aacda3b30721b512c5da4e742
+ depends:
+ - libcxx >=13.0.1
+ license: Apache-2.0
+ license_family: Apache
+ size: 215721
+ timestamp: 1657977558796
+- kind: conda
+ name: lerc
+ version: 4.0.0
+ build: hb486fe8_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2
+ sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497
+ md5: f9d6a4c82889d5ecedec1d90eb673c55
+ depends:
+ - libcxx >=13.0.1
+ license: Apache-2.0
+ license_family: Apache
+ size: 290319
+ timestamp: 1657977526749
+- kind: conda
+ name: libarchive
+ version: 3.7.4
+ build: h20e244c_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.7.4-h20e244c_0.conda
+ sha256: 9e46db25e976630e6738b351d76d9b79047ae232638b82f9f45eba774caaef8a
+ md5: 82a85fa38e83366009b7f4b2cef4deb8
+ depends:
+ - __osx >=10.13
+ - bzip2 >=1.0.8,<2.0a0
+ - libiconv >=1.17,<2.0a0
+ - libxml2 >=2.12.7,<3.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ - lz4-c >=1.9.3,<1.10.0a0
+ - lzo >=2.10,<3.0a0
+ - openssl >=3.3.0,<4.0a0
+ - xz >=5.2.6,<6.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 742682
+ timestamp: 1716394747351
+- kind: conda
+ name: libarchive
+ version: 3.7.4
+ build: h83d404f_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.7.4-h83d404f_0.conda
+ sha256: 5301d7dc52c2e1f87b229606033c475caf87cd94ef5a5efb3af565a62b88127e
+ md5: 8b604ee634caafd92f2ff2fab6a1f75a
+ depends:
+ - __osx >=11.0
+ - bzip2 >=1.0.8,<2.0a0
+ - libiconv >=1.17,<2.0a0
+ - libxml2 >=2.12.7,<3.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ - lz4-c >=1.9.3,<1.10.0a0
+ - lzo >=2.10,<3.0a0
+ - openssl >=3.3.0,<4.0a0
+ - xz >=5.2.6,<6.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 775700
+ timestamp: 1716394811506
+- kind: conda
+ name: libarchive
+ version: 3.7.4
+ build: hfca40fe_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.4-hfca40fe_0.conda
+ sha256: c30970e5e6515c662d00bb74e7c1b09ebe0c8c92c772b952a41a5725e2dcc936
+ md5: 32ddb97f897740641d8d46a829ce1704
+ depends:
+ - bzip2 >=1.0.8,<2.0a0
+ - libgcc-ng >=12
+ - libxml2 >=2.12.7,<3.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ - lz4-c >=1.9.3,<1.10.0a0
+ - lzo >=2.10,<3.0a0
+ - openssl >=3.3.0,<4.0a0
+ - xz >=5.2.6,<6.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 871853
+ timestamp: 1716394516418
+- kind: conda
+ name: libblas
+ version: 3.9.0
+ build: 25_linux64_openblas
+ build_number: 25
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda
+ sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450
+ md5: 8ea26d42ca88ec5258802715fe1ee10b
+ depends:
+ - libopenblas >=0.3.28,<0.3.29.0a0
+ - libopenblas >=0.3.28,<1.0a0
+ constrains:
+ - liblapack 3.9.0 25_linux64_openblas
+ - libcblas 3.9.0 25_linux64_openblas
+ - blas * openblas
+ - liblapacke 3.9.0 25_linux64_openblas
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15677
+ timestamp: 1729642900350
+- kind: conda
+ name: libblas
+ version: 3.9.0
+ build: 25_osx64_openblas
+ build_number: 25
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda
+ sha256: 1b22b5322a311a775bca637b26317645cf07e35f125cede9278c6c45db6e7105
+ md5: da0a6f87958893e1d2e2bbc7e7a6541f
+ depends:
+ - libopenblas >=0.3.28,<0.3.29.0a0
+ - libopenblas >=0.3.28,<1.0a0
+ constrains:
+ - liblapack 3.9.0 25_osx64_openblas
+ - liblapacke 3.9.0 25_osx64_openblas
+ - blas * openblas
+ - libcblas 3.9.0 25_osx64_openblas
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15952
+ timestamp: 1729643159199
+- kind: conda
+ name: libblas
+ version: 3.9.0
+ build: 25_osxarm64_openblas
+ build_number: 25
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda
+ sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11
+ md5: f8cf4d920ff36ce471619010eff59cac
+ depends:
+ - libopenblas >=0.3.28,<0.3.29.0a0
+ - libopenblas >=0.3.28,<1.0a0
+ constrains:
+ - blas * openblas
+ - liblapack 3.9.0 25_osxarm64_openblas
+ - liblapacke 3.9.0 25_osxarm64_openblas
+ - libcblas 3.9.0 25_osxarm64_openblas
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15913
+ timestamp: 1729643265495
+- kind: conda
+ name: libcblas
+ version: 3.9.0
+ build: 25_linux64_openblas
+ build_number: 25
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda
+ sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd
+ md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11
+ depends:
+ - libblas 3.9.0 25_linux64_openblas
+ constrains:
+ - liblapack 3.9.0 25_linux64_openblas
+ - blas * openblas
+ - liblapacke 3.9.0 25_linux64_openblas
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15613
+ timestamp: 1729642905619
+- kind: conda
+ name: libcblas
+ version: 3.9.0
+ build: 25_osx64_openblas
+ build_number: 25
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda
+ sha256: b04ae297aa5396df3135514866db72845b111c92524570f923625473f11cfbe2
+ md5: ab304b75ea67f850cf7adf9156e3f62f
+ depends:
+ - libblas 3.9.0 25_osx64_openblas
+ constrains:
+ - liblapack 3.9.0 25_osx64_openblas
+ - liblapacke 3.9.0 25_osx64_openblas
+ - blas * openblas
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15842
+ timestamp: 1729643166929
+- kind: conda
+ name: libcblas
+ version: 3.9.0
+ build: 25_osxarm64_openblas
+ build_number: 25
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda
+ sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218
+ md5: 4df0fae81f0b5bf47d48c882b086da11
+ depends:
+ - libblas 3.9.0 25_osxarm64_openblas
+ constrains:
+ - blas * openblas
+ - liblapack 3.9.0 25_osxarm64_openblas
+ - liblapacke 3.9.0 25_osxarm64_openblas
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15837
+ timestamp: 1729643270793
+- kind: conda
+ name: libcups
+ version: 2.3.3
+ build: h4637d8d_4
+ build_number: 4
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda
+ sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4
+ md5: d4529f4dff3057982a7617c7ac58fde3
+ depends:
+ - krb5 >=1.21.1,<1.22.0a0
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ - libzlib >=1.2.13,<2.0.0a0
+ license: Apache-2.0
+ license_family: Apache
+ size: 4519402
+ timestamp: 1689195353551
+- kind: conda
+ name: libcurl
+ version: 8.10.1
+ build: h13a7ad3_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda
+ sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a
+ md5: d84030d0863ffe7dea00b9a807fee961
+ depends:
+ - __osx >=11.0
+ - krb5 >=1.21.3,<1.22.0a0
+ - libnghttp2 >=1.58.0,<2.0a0
+ - libssh2 >=1.11.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: curl
+ license_family: MIT
+ size: 379948
+ timestamp: 1726660033582
+- kind: conda
+ name: libcurl
+ version: 8.10.1
+ build: h58e7537_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.10.1-h58e7537_0.conda
+ sha256: 662fe145459ed58dee882e525588d1da4dcc4cbd10cfca0725d1fc3840461798
+ md5: 6c8669d8228a2bbd0283911cc6d6726e
+ depends:
+ - __osx >=10.13
+ - krb5 >=1.21.3,<1.22.0a0
+ - libnghttp2 >=1.58.0,<2.0a0
+ - libssh2 >=1.11.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: curl
+ license_family: MIT
+ size: 402588
+ timestamp: 1726660264675
+- kind: conda
+ name: libcurl
+ version: 8.10.1
+ build: hbbe4b11_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda
+ sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99
+ md5: 6e801c50a40301f6978c53976917b277
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - krb5 >=1.21.3,<1.22.0a0
+ - libgcc >=13
+ - libnghttp2 >=1.58.0,<2.0a0
+ - libssh2 >=1.11.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: curl
+ license_family: MIT
+ size: 424900
+ timestamp: 1726659794676
+- kind: conda
+ name: libcxx
+ version: 18.1.8
+ build: h3ed4263_7
+ build_number: 7
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h3ed4263_7.conda
+ sha256: 15b4abaa249f0965ce42aeb4a1a2b1b5df9a1f402e7c5bd8156272fd6cad2878
+ md5: e0e7d9a2ec0f9509ffdfd5f48da522fb
+ depends:
+ - __osx >=11.0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 436921
+ timestamp: 1725403628507
+- kind: conda
+ name: libcxx
+ version: 18.1.8
+ build: hd876a4e_7
+ build_number: 7
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-hd876a4e_7.conda
+ sha256: ca43fcc18bff98cbf456ccc76fe113b2afe01d4156c2899b638fd1bc0323d239
+ md5: c346ae5c96382a12563e3b0c403c8c4a
+ depends:
+ - __osx >=10.13
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 439306
+ timestamp: 1725403678987
+- kind: conda
+ name: libdeflate
+ version: '1.22'
+ build: h00291cd_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda
+ sha256: 681035346974c3315685dc40898e26f65f1c00cbb0b5fd80cc2599e207a34b31
+ md5: a15785ccc62ae2a8febd299424081efb
+ depends:
+ - __osx >=10.13
+ license: MIT
+ license_family: MIT
+ size: 70407
+ timestamp: 1728177128525
+- kind: conda
+ name: libdeflate
+ version: '1.22'
+ build: hb9d3cd8_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda
+ sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6
+ md5: b422943d5d772b7cc858b36ad2a92db5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: MIT
+ license_family: MIT
+ size: 72242
+ timestamp: 1728177071251
+- kind: conda
+ name: libdeflate
+ version: '1.22'
+ build: hd74edd7_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda
+ sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda
+ md5: 2d3e3f3d8ab315748420ef58d5a3ae0f
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 54089
+ timestamp: 1728177149927
+- kind: conda
+ name: libedit
+ version: 3.1.20191231
+ build: h0678c8f_2
+ build_number: 2
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2
+ sha256: dbd3c3f2eca1d21c52e4c03b21930bbce414c4592f8ce805801575b9e9256095
+ md5: 6016a8a1d0e63cac3de2c352cd40208b
+ depends:
+ - ncurses >=6.2,<7.0.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 105382
+ timestamp: 1597616576726
+- kind: conda
+ name: libedit
+ version: 3.1.20191231
+ build: hc8eb9b7_2
+ build_number: 2
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2
+ sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca
+ md5: 30e4362988a2623e9eb34337b83e01f9
+ depends:
+ - ncurses >=6.2,<7.0.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 96607
+ timestamp: 1597616630749
+- kind: conda
+ name: libedit
+ version: 3.1.20191231
+ build: he28a2e2_2
+ build_number: 2
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2
+ sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf
+ md5: 4d331e44109e3f0e19b4cb8f9b82f3e1
+ depends:
+ - libgcc-ng >=7.5.0
+ - ncurses >=6.2,<7.0.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 123878
+ timestamp: 1597616541093
+- kind: conda
+ name: libev
+ version: '4.33'
+ build: h10d778d_2
+ build_number: 2
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda
+ sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43
+ md5: 899db79329439820b7e8f8de41bca902
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 106663
+ timestamp: 1702146352558
+- kind: conda
+ name: libev
+ version: '4.33'
+ build: h93a5062_2
+ build_number: 2
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
+ sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f
+ md5: 36d33e440c31857372a72137f78bacf5
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 107458
+ timestamp: 1702146414478
+- kind: conda
+ name: libev
+ version: '4.33'
+ build: hd590300_2
+ build_number: 2
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda
+ sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4
+ md5: 172bf1cd1ff8629f2b1179945ed45055
+ depends:
+ - libgcc-ng >=12
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 112766
+ timestamp: 1702146165126
+- kind: conda
+ name: libexpat
+ version: 2.6.3
+ build: h5888daf_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda
+ sha256: 4bb47bb2cd09898737a5211e2992d63c555d63715a07ba56eae0aff31fb89c22
+ md5: 59f4c43bb1b5ef1c71946ff2cbf59524
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ constrains:
+ - expat 2.6.3.*
+ license: MIT
+ license_family: MIT
+ size: 73616
+ timestamp: 1725568742634
+- kind: conda
+ name: libexpat
+ version: 2.6.3
+ build: hac325c4_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.3-hac325c4_0.conda
+ sha256: dd22dffad6731c352f4c14603868c9cce4d3b50ff5ff1e50f416a82dcb491947
+ md5: c1db99b0a94a2f23bd6ce39e2d314e07
+ depends:
+ - __osx >=10.13
+ constrains:
+ - expat 2.6.3.*
+ license: MIT
+ license_family: MIT
+ size: 70517
+ timestamp: 1725568864316
+- kind: conda
+ name: libexpat
+ version: 2.6.3
+ build: hf9b8971_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda
+ sha256: 5cbe5a199fba14ade55457a468ce663aac0b54832c39aa54470b3889b4c75c4a
+ md5: 5f22f07c2ab2dea8c66fe9585a062c96
+ depends:
+ - __osx >=11.0
+ constrains:
+ - expat 2.6.3.*
+ license: MIT
+ license_family: MIT
+ size: 63895
+ timestamp: 1725568783033
+- kind: conda
+ name: libffi
+ version: 3.4.2
+ build: h0d85af4_5
+ build_number: 5
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2
+ sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f
+ md5: ccb34fb14960ad8b125962d3d79b31a9
+ license: MIT
+ license_family: MIT
+ size: 51348
+ timestamp: 1636488394370
+- kind: conda
+ name: libffi
+ version: 3.4.2
+ build: h3422bc3_5
+ build_number: 5
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
+ sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca
+ md5: 086914b672be056eb70fd4285b6783b6
+ license: MIT
+ license_family: MIT
+ size: 39020
+ timestamp: 1636488587153
+- kind: conda
+ name: libffi
+ version: 3.4.2
+ build: h7f98852_5
+ build_number: 5
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
+ sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e
+ md5: d645c6d2ac96843a2bfaccd2d62b3ac3
+ depends:
+ - libgcc-ng >=9.4.0
+ license: MIT
+ license_family: MIT
+ size: 58292
+ timestamp: 1636488182923
+- kind: conda
+ name: libgcc
+ version: 14.1.0
+ build: h77fa898_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.1.0-h77fa898_1.conda
+ sha256: 10fa74b69266a2be7b96db881e18fa62cfa03082b65231e8d652e897c4b335a3
+ md5: 002ef4463dd1e2b44a94a4ace468f5d2
+ depends:
+ - _libgcc_mutex 0.1 conda_forge
+ - _openmp_mutex >=4.5
+ constrains:
+ - libgomp 14.1.0 h77fa898_1
+ - libgcc-ng ==14.1.0=*_1
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 846380
+ timestamp: 1724801836552
+- kind: conda
+ name: libgcc-ng
+ version: 14.1.0
+ build: h69a702a_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h69a702a_1.conda
+ sha256: b91f7021e14c3d5c840fbf0dc75370d6e1f7c7ff4482220940eaafb9c64613b7
+ md5: 1efc0ad219877a73ef977af7dbb51f17
+ depends:
+ - libgcc 14.1.0 h77fa898_1
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 52170
+ timestamp: 1724801842101
+- kind: conda
+ name: libgfortran
+ version: 5.0.0
+ build: 13_2_0_h97931a8_3
+ build_number: 3
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda
+ sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d
+ md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5
+ depends:
+ - libgfortran5 13.2.0 h2873a65_3
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 110106
+ timestamp: 1707328956438
+- kind: conda
+ name: libgfortran
+ version: 5.0.0
+ build: 13_2_0_hd922786_3
+ build_number: 3
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
+ sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b
+ md5: 4a55d9e169114b2b90d3ec4604cd7bbf
+ depends:
+ - libgfortran5 13.2.0 hf226fd6_3
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 110233
+ timestamp: 1707330749033
+- kind: conda
+ name: libgfortran
+ version: 14.1.0
+ build: h69a702a_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.1.0-h69a702a_1.conda
+ sha256: ed77f04f873e43a26e24d443dd090631eedc7d0ace3141baaefd96a123e47535
+ md5: 591e631bc1ae62c64f2ab4f66178c097
+ depends:
+ - libgfortran5 14.1.0 hc5f4f2c_1
+ constrains:
+ - libgfortran-ng ==14.1.0=*_1
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 52142
+ timestamp: 1724801872472
+- kind: conda
+ name: libgfortran-ng
+ version: 14.1.0
+ build: h69a702a_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_1.conda
+ sha256: a2dc35cb7f87bb5beebf102d4085574c6a740e1df58e743185d4434cc5e4e0ae
+ md5: 16cec94c5992d7f42ae3f9fa8b25df8d
+ depends:
+ - libgfortran 14.1.0 h69a702a_1
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 52212
+ timestamp: 1724802086021
+- kind: conda
+ name: libgfortran5
+ version: 13.2.0
+ build: h2873a65_3
+ build_number: 3
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda
+ sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b
+ md5: e4fb4d23ec2870ff3c40d10afe305aec
+ depends:
+ - llvm-openmp >=8.0.0
+ constrains:
+ - libgfortran 5.0.0 13_2_0_*_3
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 1571379
+ timestamp: 1707328880361
+- kind: conda
+ name: libgfortran5
+ version: 13.2.0
+ build: hf226fd6_3
+ build_number: 3
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
+ sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a
+ md5: 66ac81d54e95c534ae488726c1f698ea
+ depends:
+ - llvm-openmp >=8.0.0
+ constrains:
+ - libgfortran 5.0.0 13_2_0_*_3
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 997381
+ timestamp: 1707330687590
+- kind: conda
+ name: libgfortran5
+ version: 14.1.0
+ build: hc5f4f2c_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_1.conda
+ sha256: c40d7db760296bf9c776de12597d2f379f30e890b9ae70c1de962ff2aa1999f6
+ md5: 10a0cef64b784d6ab6da50ebca4e984d
+ depends:
+ - libgcc >=14.1.0
+ constrains:
+ - libgfortran 14.1.0
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 1459939
+ timestamp: 1724801851300
+- kind: conda
+ name: libglib
+ version: 2.80.3
+ build: h315aac3_2
+ build_number: 2
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda
+ sha256: 7470e664b780b91708bed356cc634874dfc3d6f17cbf884a1d6f5d6d59c09f91
+ md5: b0143a3e98136a680b728fdf9b42a258
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libffi >=3.4,<4.0a0
+ - libgcc-ng >=12
+ - libiconv >=1.17,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - pcre2 >=10.44,<10.45.0a0
+ constrains:
+ - glib 2.80.3 *_2
+ license: LGPL-2.1-or-later
+ size: 3922900
+ timestamp: 1723208802469
+- kind: conda
+ name: libgomp
+ version: 14.1.0
+ build: h77fa898_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_1.conda
+ sha256: c96724c8ae4ee61af7674c5d9e5a3fbcf6cd887a40ad5a52c99aa36f1d4f9680
+ md5: 23c255b008c4f2ae008f81edcabaca89
+ depends:
+ - _libgcc_mutex 0.1 conda_forge
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 460218
+ timestamp: 1724801743478
+- kind: conda
+ name: libiconv
+ version: '1.17'
+ build: h0d3ecfb_2
+ build_number: 2
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda
+ sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304
+ md5: 69bda57310071cf6d2b86caf11573d2d
+ license: LGPL-2.1-only
+ size: 676469
+ timestamp: 1702682458114
+- kind: conda
+ name: libiconv
+ version: '1.17'
+ build: hd590300_2
+ build_number: 2
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
+ sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9
+ md5: d66573916ffcf376178462f1b61c941e
+ depends:
+ - libgcc-ng >=12
+ license: LGPL-2.1-only
+ size: 705775
+ timestamp: 1702682170569
+- kind: conda
+ name: libiconv
+ version: '1.17'
+ build: hd75f5a5_2
+ build_number: 2
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda
+ sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23
+ md5: 6c3628d047e151efba7cf08c5e54d1ca
+ license: LGPL-2.1-only
+ size: 666538
+ timestamp: 1702682713201
+- kind: conda
+ name: libintl
+ version: 0.22.5
+ build: h8414b35_3
+ build_number: 3
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda
+ sha256: 7c1d238d4333af385e594c89ebcb520caad7ed83a735c901099ec0970a87a891
+ md5: 3b98ec32e91b3b59ad53dbb9c96dd334
+ depends:
+ - __osx >=11.0
+ - libiconv >=1.17,<2.0a0
+ license: LGPL-2.1-or-later
+ size: 81171
+ timestamp: 1723626968270
+- kind: conda
+ name: libintl
+ version: 0.22.5
+ build: hdfe23c8_3
+ build_number: 3
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda
+ sha256: 0dbb662440a73e20742f12d88e51785a5a5117b8b150783a032b8818a8c043af
+ md5: 52d4d643ed26c07599736326c46bf12f
+ depends:
+ - __osx >=10.13
+ - libiconv >=1.17,<2.0a0
+ license: LGPL-2.1-or-later
+ size: 88086
+ timestamp: 1723626826235
+- kind: conda
+ name: libjpeg-turbo
+ version: 3.0.0
+ build: h0dc2134_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda
+ sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f
+ md5: 72507f8e3961bc968af17435060b6dd6
+ constrains:
+ - jpeg <0.0.0a
+ license: IJG AND BSD-3-Clause AND Zlib
+ size: 579748
+ timestamp: 1694475265912
+- kind: conda
+ name: libjpeg-turbo
+ version: 3.0.0
+ build: hb547adb_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
+ sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993
+ md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1
+ constrains:
+ - jpeg <0.0.0a
+ license: IJG AND BSD-3-Clause AND Zlib
+ size: 547541
+ timestamp: 1694475104253
+- kind: conda
+ name: libjpeg-turbo
+ version: 3.0.0
+ build: hd590300_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
+ sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f
+ md5: ea25936bb4080d843790b586850f82b8
+ depends:
+ - libgcc-ng >=12
+ constrains:
+ - jpeg <0.0.0a
+ license: IJG AND BSD-3-Clause AND Zlib
+ size: 618575
+ timestamp: 1694474974816
+- kind: conda
+ name: liblapack
+ version: 3.9.0
+ build: 25_linux64_openblas
+ build_number: 25
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda
+ sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e
+ md5: 4dc03a53fc69371a6158d0ed37214cd3
+ depends:
+ - libblas 3.9.0 25_linux64_openblas
+ constrains:
+ - liblapacke 3.9.0 25_linux64_openblas
+ - libcblas 3.9.0 25_linux64_openblas
+ - blas * openblas
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15608
+ timestamp: 1729642910812
+- kind: conda
+ name: liblapack
+ version: 3.9.0
+ build: 25_osx64_openblas
+ build_number: 25
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda
+ sha256: 2a9a6143d103e7e21511cbf439521645bdd506bfabfcac9d6398dd0562c6905c
+ md5: dda0e24b4605ebbd381e48606a107bed
+ depends:
+ - libblas 3.9.0 25_osx64_openblas
+ constrains:
+ - liblapacke 3.9.0 25_osx64_openblas
+ - blas * openblas
+ - libcblas 3.9.0 25_osx64_openblas
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15852
+ timestamp: 1729643174413
+- kind: conda
+ name: liblapack
+ version: 3.9.0
+ build: 25_osxarm64_openblas
+ build_number: 25
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda
+ sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7
+ md5: 19bbddfec972d401838330453186108d
+ depends:
+ - libblas 3.9.0 25_osxarm64_openblas
+ constrains:
+ - blas * openblas
+ - liblapacke 3.9.0 25_osxarm64_openblas
+ - libcblas 3.9.0 25_osxarm64_openblas
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15823
+ timestamp: 1729643275943
+- kind: conda
+ name: libmamba
+ version: 1.5.10
+ build: h4cc3d14_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.10-h4cc3d14_0.conda
+ sha256: a569c4863471076c703e66fbf75255115a951288be2bed2f46ccfb094004ec93
+ md5: 25a7e8d5f17b4d90f4ae224d9bd5800a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - fmt >=10.2.1,<11.0a0
+ - libarchive >=3.7.4,<3.8.0a0
+ - libcurl >=8.10.1,<9.0a0
+ - libgcc >=13
+ - libsolv >=0.7.23
+ - libsolv >=0.7.30,<0.8.0a0
+ - libstdcxx >=13
+ - openssl >=3.3.2,<4.0a0
+ - reproc >=14.2,<15.0a0
+ - reproc-cpp >=14.2,<15.0a0
+ - yaml-cpp >=0.8.0,<0.9.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 1706952
+ timestamp: 1727078473344
+- kind: conda
+ name: libmamba
+ version: 1.5.10
+ build: hbfbf5c4_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libmamba-1.5.10-hbfbf5c4_0.conda
+ sha256: 023696a2c0f28f9e858cd3a09faceb771fbb9040ef1341c6cdd63a2f8d3f4a3a
+ md5: b3f99eb308d5f284d940f6939fbcff3b
+ depends:
+ - __osx >=11.0
+ - fmt >=10.2.1,<11.0a0
+ - libarchive >=3.7.4,<3.8.0a0
+ - libcurl >=8.10.1,<9.0a0
+ - libcxx >=17
+ - libsolv >=0.7.23
+ - libsolv >=0.7.30,<0.8.0a0
+ - openssl >=3.3.2,<4.0a0
+ - reproc >=14.2,<15.0a0
+ - reproc-cpp >=14.2,<15.0a0
+ - yaml-cpp >=0.8.0,<0.9.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 1252388
+ timestamp: 1727078559406
+- kind: conda
+ name: libmamba
+ version: 1.5.10
+ build: hd44d3b3_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libmamba-1.5.10-hd44d3b3_0.conda
+ sha256: 89af88dca254227fdf167919ce82c66afb28530f7d25627dd89a7ffc72f4f2f8
+ md5: 45587040e8340d164bf67fba5004f9de
+ depends:
+ - __osx >=10.13
+ - fmt >=10.2.1,<11.0a0
+ - libarchive >=3.7.4,<3.8.0a0
+ - libcurl >=8.10.1,<9.0a0
+ - libcxx >=17
+ - libsolv >=0.7.23
+ - libsolv >=0.7.30,<0.8.0a0
+ - openssl >=3.3.2,<4.0a0
+ - reproc >=14.2,<15.0a0
+ - reproc-cpp >=14.2,<15.0a0
+ - yaml-cpp >=0.8.0,<0.9.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 1348362
+ timestamp: 1727078661263
+- kind: conda
+ name: libmambapy
+ version: 1.5.10
+ build: py312h1ed1908_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libmambapy-1.5.10-py312h1ed1908_0.conda
+ sha256: c87aa67e91ef8304595b4e330e519be7ab51e63e72229156aab7f1d134e04b69
+ md5: aeb339ac524c0eb7ccb5e1f541bbb997
+ depends:
+ - __osx >=11.0
+ - fmt >=10.2.1,<11.0a0
+ - libcxx >=17
+ - libmamba 1.5.10 hbfbf5c4_0
+ - openssl >=3.3.2,<4.0a0
+ - pybind11-abi 4
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - yaml-cpp >=0.8.0,<0.9.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 266594
+ timestamp: 1727078755508
+- kind: conda
+ name: libmambapy
+ version: 1.5.10
+ build: py312h7fb9e8e_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-1.5.10-py312h7fb9e8e_0.conda
+ sha256: 1f5f5fbc62c41329e08066a65e15f36f17963ea0d304570c8b069fdf9fd56e8c
+ md5: 8adc624b536015a70086572167721155
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - fmt >=10.2.1,<11.0a0
+ - libgcc >=13
+ - libmamba 1.5.10 h4cc3d14_0
+ - libstdcxx >=13
+ - openssl >=3.3.2,<4.0a0
+ - pybind11-abi 4
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - yaml-cpp >=0.8.0,<0.9.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 326216
+ timestamp: 1727078741246
+- kind: conda
+ name: libmambapy
+ version: 1.5.10
+ build: py312haab923c_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libmambapy-1.5.10-py312haab923c_0.conda
+ sha256: dd6b8604feb0794ba703e6955a8a7b516a67c5f796ef200532598295a4494bc0
+ md5: 67291131a061d1b0529fd61e828790c4
+ depends:
+ - __osx >=10.13
+ - fmt >=10.2.1,<11.0a0
+ - libcxx >=17
+ - libmamba 1.5.10 hd44d3b3_0
+ - openssl >=3.3.2,<4.0a0
+ - pybind11-abi 4
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - yaml-cpp >=0.8.0,<0.9.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 287491
+ timestamp: 1727078987727
+- kind: conda
+ name: libnghttp2
+ version: 1.58.0
+ build: h47da74e_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda
+ sha256: 1910c5306c6aa5bcbd623c3c930c440e9c77a5a019008e1487810e3c1d3716cb
+ md5: 700ac6ea6d53d5510591c4344d5c989a
+ depends:
+ - c-ares >=1.23.0,<2.0a0
+ - libev >=4.33,<4.34.0a0
+ - libev >=4.33,<5.0a0
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ - libzlib >=1.2.13,<2.0.0a0
+ - openssl >=3.2.0,<4.0a0
+ license: MIT
+ license_family: MIT
+ size: 631936
+ timestamp: 1702130036271
+- kind: conda
+ name: libnghttp2
+ version: 1.58.0
+ build: h64cf6d3_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda
+ sha256: 412fd768e787e586602f8e9ea52bf089f3460fc630f6987f0cbd89b70e9a4380
+ md5: faecc55c2a8155d9ff1c0ff9a0fef64f
+ depends:
+ - __osx >=10.9
+ - c-ares >=1.23.0,<2.0a0
+ - libcxx >=16.0.6
+ - libev >=4.33,<4.34.0a0
+ - libev >=4.33,<5.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ - openssl >=3.2.0,<4.0a0
+ license: MIT
+ license_family: MIT
+ size: 599736
+ timestamp: 1702130398536
+- kind: conda
+ name: libnghttp2
+ version: 1.58.0
+ build: ha4dd798_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda
+ sha256: fc97aaaf0c6d0f508be313d86c2705b490998d382560df24be918b8e977802cd
+ md5: 1813e066bfcef82de579a0be8a766df4
+ depends:
+ - __osx >=10.9
+ - c-ares >=1.23.0,<2.0a0
+ - libcxx >=16.0.6
+ - libev >=4.33,<4.34.0a0
+ - libev >=4.33,<5.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ - openssl >=3.2.0,<4.0a0
+ license: MIT
+ license_family: MIT
+ size: 565451
+ timestamp: 1702130473930
+- kind: conda
+ name: libnsl
+ version: 2.0.1
+ build: hd590300_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
+ sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6
+ md5: 30fd6e37fe21f86f4bd26d6ee73eeec7
+ depends:
+ - libgcc-ng >=12
+ license: LGPL-2.1-only
+ license_family: GPL
+ size: 33408
+ timestamp: 1697359010159
+- kind: conda
+ name: libopenblas
+ version: 0.3.28
+ build: openmp_hbf64a52_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda
+ sha256: cef5856952688ce9303f85f5bc62c99e8c2256b4c679f63afdfb381f222e90c7
+ md5: cd2c572c02a73b88c4d378eb31110e85
+ depends:
+ - __osx >=10.13
+ - libgfortran 5.*
+ - libgfortran5 >=13.2.0
+ - llvm-openmp >=18.1.8
+ constrains:
+ - openblas >=0.3.28,<0.3.29.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 6165715
+ timestamp: 1730773348340
+- kind: conda
+ name: libopenblas
+ version: 0.3.28
+ build: openmp_hf332438_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
+ sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373
+ md5: 40803a48d947c8639da6704e9a44d3ce
+ depends:
+ - __osx >=11.0
+ - libgfortran 5.*
+ - libgfortran5 >=13.2.0
+ - llvm-openmp >=18.1.8
+ constrains:
+ - openblas >=0.3.28,<0.3.29.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 4165774
+ timestamp: 1730772154295
+- kind: conda
+ name: libopenblas
+ version: 0.3.28
+ build: pthreads_h94d23a6_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_0.conda
+ sha256: 1e41a6d63e07be996238a1e840a426f86068956a45e0c0bb24e49a8dad9874c1
+ md5: 9ebc9aedafaa2515ab247ff6bb509458
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=14
+ - libgfortran-ng
+ - libgfortran5 >=14.1.0
+ constrains:
+ - openblas >=0.3.28,<0.3.29.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 5572213
+ timestamp: 1723932528810
+- kind: conda
+ name: libpng
+ version: 1.6.43
+ build: h2797004_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda
+ sha256: 502f6ff148ac2777cc55ae4ade01a8fc3543b4ffab25c4e0eaa15f94e90dd997
+ md5: 009981dd9cfcaa4dbfa25ffaed86bcae
+ depends:
+ - libgcc-ng >=12
+ - libzlib >=1.2.13,<2.0.0a0
+ license: zlib-acknowledgement
+ size: 288221
+ timestamp: 1708780443939
+- kind: conda
+ name: libpng
+ version: 1.6.44
+ build: h4b8f8c9_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda
+ sha256: 12b44e58f8832798d7a5c0a7480c95e905dbd6c3558dec09739062411f9e08d1
+ md5: f32ac2c8dd390dbf169f550887ed09d9
+ depends:
+ - __osx >=10.13
+ - libzlib >=1.3.1,<2.0a0
+ license: zlib-acknowledgement
+ size: 268073
+ timestamp: 1726234803010
+- kind: conda
+ name: libpng
+ version: 1.6.44
+ build: hc14010f_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda
+ sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1
+ md5: fb36e93f0ea6a6f5d2b99984f34b049e
+ depends:
+ - __osx >=11.0
+ - libzlib >=1.3.1,<2.0a0
+ license: zlib-acknowledgement
+ size: 263385
+ timestamp: 1726234714421
+- kind: conda
+ name: libsodium
+ version: 1.0.20
+ build: h4ab18f5_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda
+ sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161
+ md5: a587892d3c13b6621a6091be690dbca2
+ depends:
+ - libgcc-ng >=12
+ license: ISC
+ size: 205978
+ timestamp: 1716828628198
+- kind: conda
+ name: libsodium
+ version: 1.0.20
+ build: h99b78c6_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda
+ sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1
+ md5: a7ce36e284c5faaf93c220dfc39e3abd
+ depends:
+ - __osx >=11.0
+ license: ISC
+ size: 164972
+ timestamp: 1716828607917
+- kind: conda
+ name: libsodium
+ version: 1.0.20
+ build: hfdf4475_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda
+ sha256: d3975cfe60e81072666da8c76b993af018cf2e73fe55acba2b5ba0928efaccf5
+ md5: 6af4b059e26492da6013e79cbcb4d069
+ depends:
+ - __osx >=10.13
+ license: ISC
+ size: 210249
+ timestamp: 1716828641383
+- kind: conda
+ name: libsolv
+ version: 0.7.30
+ build: h3509ff9_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.30-h3509ff9_0.conda
+ sha256: 1dddbde791efdfc34c8fefa74dc2f910eac9cf87bf37ee6c3c9132eb96a0e7d4
+ md5: 02539b77d25aa4f65b20246549e256c3
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 470810
+ timestamp: 1720790097030
+- kind: conda
+ name: libsolv
+ version: 0.7.30
+ build: h69d5d9b_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libsolv-0.7.30-h69d5d9b_0.conda
+ sha256: d0c8a8a448dc8b01aecc023b8e6a26f8cdd03f04263ca0a282a057d636b47b3c
+ md5: 8f8fd9f1740c8cb7dcfebf1a1ed7e678
+ depends:
+ - __osx >=10.13
+ - libcxx >=16
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 415636
+ timestamp: 1720790194490
+- kind: conda
+ name: libsolv
+ version: 0.7.30
+ build: h6c9b7f8_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libsolv-0.7.30-h6c9b7f8_0.conda
+ sha256: e5ffda8a71a334edff7af4f194aa6c72df2f0763321250270f9f68dfc8eaf439
+ md5: a5795a7ca73c9c99f112abce7864b500
+ depends:
+ - __osx >=11.0
+ - libcxx >=16
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 387085
+ timestamp: 1720790391931
+- kind: conda
+ name: libsqlite
+ version: 3.46.1
+ build: h4b8f8c9_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.1-h4b8f8c9_0.conda
+ sha256: 1d075cb823f0cad7e196871b7c57961d669cbbb6cd0e798bf50cbf520dda65fb
+ md5: 84de0078b58f899fc164303b0603ff0e
+ depends:
+ - __osx >=10.13
+ - libzlib >=1.3.1,<2.0a0
+ license: Unlicense
+ size: 908317
+ timestamp: 1725353652135
+- kind: conda
+ name: libsqlite
+ version: 3.46.1
+ build: hadc24fc_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.1-hadc24fc_0.conda
+ sha256: 9851c049abafed3ee329d6c7c2033407e2fc269d33a75c071110ab52300002b0
+ md5: 36f79405ab16bf271edb55b213836dac
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libzlib >=1.3.1,<2.0a0
+ license: Unlicense
+ size: 865214
+ timestamp: 1725353659783
+- kind: conda
+ name: libsqlite
+ version: 3.46.1
+ build: hc14010f_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.1-hc14010f_0.conda
+ sha256: 3725f962f490c5d44dae326d5f5b2e3c97f71a6322d914ccc85b5ddc2e50d120
+ md5: 58050ec1724e58668d0126a1615553fa
+ depends:
+ - __osx >=11.0
+ - libzlib >=1.3.1,<2.0a0
+ license: Unlicense
+ size: 829500
+ timestamp: 1725353720793
+- kind: conda
+ name: libssh2
+ version: 1.11.0
+ build: h0841786_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda
+ sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d
+ md5: 1f5a58e686b13bcfde88b93f547d23fe
+ depends:
+ - libgcc-ng >=12
+ - libzlib >=1.2.13,<2.0.0a0
+ - openssl >=3.1.1,<4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 271133
+ timestamp: 1685837707056
+- kind: conda
+ name: libssh2
+ version: 1.11.0
+ build: h7a5bd25_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda
+ sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015
+ md5: 029f7dc931a3b626b94823bc77830b01
+ depends:
+ - libzlib >=1.2.13,<2.0.0a0
+ - openssl >=3.1.1,<4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 255610
+ timestamp: 1685837894256
+- kind: conda
+ name: libssh2
+ version: 1.11.0
+ build: hd019ec5_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda
+ sha256: f3886763b88f4b24265db6036535ef77b7b77ce91b1cbe588c0fbdd861eec515
+ md5: ca3a72efba692c59a90d4b9fc0dfe774
+ depends:
+ - libzlib >=1.2.13,<2.0.0a0
+ - openssl >=3.1.1,<4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 259556
+ timestamp: 1685837820566
+- kind: conda
+ name: libstdcxx
+ version: 14.1.0
+ build: hc0a3c3a_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.1.0-hc0a3c3a_1.conda
+ sha256: 44decb3d23abacf1c6dd59f3c152a7101b7ca565b4ef8872804ceaedcc53a9cd
+ md5: 9dbb9699ea467983ba8a4ba89b08b066
+ depends:
+ - libgcc 14.1.0 h77fa898_1
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 3892781
+ timestamp: 1724801863728
+- kind: conda
+ name: libstdcxx-ng
+ version: 14.1.0
+ build: h4852527_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-h4852527_1.conda
+ sha256: a2dc44f97290740cc187bfe94ce543e6eb3c2ea8964d99f189a1d8c97b419b8c
+ md5: bd2598399a70bb86d8218e95548d735e
+ depends:
+ - libstdcxx 14.1.0 hc0a3c3a_1
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ size: 52219
+ timestamp: 1724801897766
+- kind: conda
+ name: libtiff
+ version: 4.7.0
+ build: h583c2ba_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda
+ sha256: 4d58c695dfed6f308d0fd3ff552e0078bb98bc0be2ea0bf55820eb6e86fa5355
+ md5: 4b78bcdcc8780cede8b3d090deba874d
+ depends:
+ - __osx >=10.13
+ - lerc >=4.0.0,<5.0a0
+ - libcxx >=17
+ - libdeflate >=1.22,<1.23.0a0
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libwebp-base >=1.4.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - xz >=5.2.6,<6.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: HPND
+ size: 395980
+ timestamp: 1728232302162
+- kind: conda
+ name: libtiff
+ version: 4.7.0
+ build: he137b08_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda
+ sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4
+ md5: 63872517c98aa305da58a757c443698e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - lerc >=4.0.0,<5.0a0
+ - libdeflate >=1.22,<1.23.0a0
+ - libgcc >=13
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libstdcxx >=13
+ - libwebp-base >=1.4.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - xz >=5.2.6,<6.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: HPND
+ size: 428156
+ timestamp: 1728232228989
+- kind: conda
+ name: libtiff
+ version: 4.7.0
+ build: hfce79cd_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda
+ sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d
+ md5: b9abf45f7c64caf3303725f1aa0e9a4d
+ depends:
+ - __osx >=11.0
+ - lerc >=4.0.0,<5.0a0
+ - libcxx >=17
+ - libdeflate >=1.22,<1.23.0a0
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libwebp-base >=1.4.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - xz >=5.2.6,<6.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: HPND
+ size: 366323
+ timestamp: 1728232400072
+- kind: conda
+ name: libuuid
+ version: 2.38.1
+ build: h0b41bf4_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18
+ md5: 40b61aab5c7ba9ff276c41cfffe6b80b
+ depends:
+ - libgcc-ng >=12
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 33601
+ timestamp: 1680112270483
+- kind: conda
+ name: libwebp-base
+ version: 1.4.0
+ build: h10d778d_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda
+ sha256: 7bafd8f4c637778cd0aa390bf3a894feef0e1fcf6ea6000c7ffc25c4c5a65538
+ md5: b2c0047ea73819d992484faacbbe1c24
+ constrains:
+ - libwebp 1.4.0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 355099
+ timestamp: 1713200298965
+- kind: conda
+ name: libwebp-base
+ version: 1.4.0
+ build: h93a5062_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda
+ sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5
+ md5: c0af0edfebe780b19940e94871f1a765
+ constrains:
+ - libwebp 1.4.0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 287750
+ timestamp: 1713200194013
+- kind: conda
+ name: libwebp-base
+ version: 1.4.0
+ build: hd590300_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda
+ sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f
+ md5: b26e8aa824079e1be0294e7152ca4559
+ depends:
+ - libgcc-ng >=12
+ constrains:
+ - libwebp 1.4.0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 438953
+ timestamp: 1713199854503
+- kind: conda
+ name: libxcb
+ version: 1.17.0
+ build: h8a09558_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda
+ sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa
+ md5: 92ed62436b625154323d40d5f2f11dd7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - pthread-stubs
+ - xorg-libxau >=1.0.11,<2.0a0
+ - xorg-libxdmcp
+ license: MIT
+ license_family: MIT
+ size: 395888
+ timestamp: 1727278577118
+- kind: conda
+ name: libxcb
+ version: 1.17.0
+ build: hdb1d25a_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda
+ sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71
+ md5: af523aae2eca6dfa1c8eec693f5b9a79
+ depends:
+ - __osx >=11.0
+ - pthread-stubs
+ - xorg-libxau >=1.0.11,<2.0a0
+ - xorg-libxdmcp
+ license: MIT
+ license_family: MIT
+ size: 323658
+ timestamp: 1727278733917
+- kind: conda
+ name: libxcb
+ version: 1.17.0
+ build: hf1f96e2_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda
+ sha256: 8896cd5deff6f57d102734f3e672bc17120613647288f9122bec69098e839af7
+ md5: bbeca862892e2898bdb45792a61c4afc
+ depends:
+ - __osx >=10.13
+ - pthread-stubs
+ - xorg-libxau >=1.0.11,<2.0a0
+ - xorg-libxdmcp
+ license: MIT
+ license_family: MIT
+ size: 323770
+ timestamp: 1727278927545
+- kind: conda
+ name: libxcrypt
+ version: 4.4.36
+ build: hd590300_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
+ sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c
+ md5: 5aa797f8787fe7a17d1b0821485b5adc
+ depends:
+ - libgcc-ng >=12
+ license: LGPL-2.1-or-later
+ size: 100393
+ timestamp: 1702724383534
+- kind: conda
+ name: libxml2
+ version: 2.12.7
+ build: h01dff8b_4
+ build_number: 4
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-h01dff8b_4.conda
+ sha256: a9a76cdc6e93c0182bc2ac58b1ea0152be1a16a5d23f4dc7b8df282a7aef8d20
+ md5: 1265488dc5035457b729583119ad4a1b
+ depends:
+ - __osx >=11.0
+ - icu >=75.1,<76.0a0
+ - libiconv >=1.17,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - xz >=5.2.6,<6.0a0
+ license: MIT
+ license_family: MIT
+ size: 588990
+ timestamp: 1721031045514
+- kind: conda
+ name: libxml2
+ version: 2.12.7
+ build: he7c6b58_4
+ build_number: 4
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda
+ sha256: 10e9e0ac52b9a516a17edbc07f8d559e23778e54f1a7721b2e0e8219284fed3b
+ md5: 08a9265c637230c37cb1be4a6cad4536
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - icu >=75.1,<76.0a0
+ - libgcc-ng >=12
+ - libiconv >=1.17,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - xz >=5.2.6,<6.0a0
+ license: MIT
+ license_family: MIT
+ size: 707169
+ timestamp: 1721031016143
+- kind: conda
+ name: libxml2
+ version: 2.12.7
+ build: heaf3512_4
+ build_number: 4
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-heaf3512_4.conda
+ sha256: ed18a2d8d428c0b88d47751ebcc7cc4e6202f99c3948fffd776cba83c4f0dad3
+ md5: ea1be6ecfe814da889e882c8b6ead79d
+ depends:
+ - __osx >=10.13
+ - icu >=75.1,<76.0a0
+ - libiconv >=1.17,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - xz >=5.2.6,<6.0a0
+ license: MIT
+ license_family: MIT
+ size: 619901
+ timestamp: 1721031175411
+- kind: conda
+ name: libzlib
+ version: 1.3.1
+ build: h4ab18f5_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda
+ sha256: adf6096f98b537a11ae3729eaa642b0811478f0ea0402ca67b5108fe2cb0010d
+ md5: 57d7dc60e9325e3de37ff8dffd18e814
+ depends:
+ - libgcc-ng >=12
+ constrains:
+ - zlib 1.3.1 *_1
+ license: Zlib
+ license_family: Other
+ size: 61574
+ timestamp: 1716874187109
+- kind: conda
+ name: libzlib
+ version: 1.3.1
+ build: h87427d6_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda
+ sha256: 80a62db652b1da0ccc100812a1d86e94f75028968991bfb17f9536f3aa72d91d
+ md5: b7575b5aa92108dcc9aaab0f05f2dbce
+ depends:
+ - __osx >=10.13
+ constrains:
+ - zlib 1.3.1 *_1
+ license: Zlib
+ license_family: Other
+ size: 57372
+ timestamp: 1716874211519
+- kind: conda
+ name: libzlib
+ version: 1.3.1
+ build: hfb2fe0b_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda
+ sha256: c34365dd37b0eab27b9693af32a1f7f284955517c2cc91f1b88a7ef4738ff03e
+ md5: 636077128927cf79fd933276dc3aed47
+ depends:
+ - __osx >=11.0
+ constrains:
+ - zlib 1.3.1 *_1
+ license: Zlib
+ license_family: Other
+ size: 46921
+ timestamp: 1716874262512
+- kind: conda
+ name: linkify-it-py
+ version: 2.0.3
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_0.conda
+ sha256: aa99d44e8c83865026575a8af253141c53e0b3ab05f053befaa7757c8525064f
+ md5: f1b64ca4faf563605cf6f6ca93f9ff3f
+ depends:
+ - python >=3.7
+ - uc-micro-py
+ license: MIT
+ license_family: MIT
+ size: 24035
+ timestamp: 1707129321841
+- kind: conda
+ name: llvm-openmp
+ version: 19.1.4
+ build: ha54dae1_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda
+ sha256: 69fca4a9318d7367ec3e0e7d6e6023a46ae1113dbd67da6d0f93fffa0ef54497
+ md5: 193715d512f648fe0865f6f13b1957e3
+ depends:
+ - __osx >=10.13
+ constrains:
+ - openmp 19.1.4|19.1.4.*
+ license: Apache-2.0 WITH LLVM-exception
+ size: 305132
+ timestamp: 1732102427054
+- kind: conda
+ name: llvm-openmp
+ version: 19.1.4
+ build: hdb05f8b_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda
+ sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a
+ md5: 76ca179ec970bea6e275e2fa477c2d3c
+ depends:
+ - __osx >=11.0
+ constrains:
+ - openmp 19.1.4|19.1.4.*
+ license: Apache-2.0 WITH LLVM-exception
+ size: 281554
+ timestamp: 1732102484807
+- kind: conda
+ name: logmuse
+ version: 0.2.8
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/logmuse-0.2.8-pyhd8ed1ab_0.conda
+ sha256: 52cc2d94cde2830133c7a3cb42d82aec9b5513d034338c77d0be4a8fb4deaf60
+ md5: 36460a82251aae67f02e976ccd8b911b
+ depends:
+ - python >=3.8
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 13455
+ timestamp: 1728929621314
+- kind: conda
+ name: lz4-c
+ version: 1.9.4
+ build: hb7217d7_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda
+ sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24
+ md5: 45505bec548634f7d05e02fb25262cb9
+ depends:
+ - libcxx >=14.0.6
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 141188
+ timestamp: 1674727268278
+- kind: conda
+ name: lz4-c
+ version: 1.9.4
+ build: hcb278e6_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda
+ sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f
+ md5: 318b08df404f9c9be5712aaa5a6f0bb0
+ depends:
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 143402
+ timestamp: 1674727076728
+- kind: conda
+ name: lz4-c
+ version: 1.9.4
+ build: hf0c8a7f_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda
+ sha256: 39aa0c01696e4e202bf5e337413de09dfeec061d89acd5f28e9968b4e93c3f48
+ md5: aa04f7143228308662696ac24023f991
+ depends:
+ - libcxx >=14.0.6
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 156415
+ timestamp: 1674727335352
+- kind: conda
+ name: lzo
+ version: '2.10'
+ build: h10d778d_1001
+ build_number: 1001
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-h10d778d_1001.conda
+ sha256: 4006c57f805ca6aec72ee0eb7166b2fd648dd1bf3721b9de4b909cd374196643
+ md5: bfecd73e4a2dc18ffd5288acf8a212ab
+ license: GPL-2.0-or-later
+ license_family: GPL2
+ size: 146405
+ timestamp: 1713516112292
+- kind: conda
+ name: lzo
+ version: '2.10'
+ build: h93a5062_1001
+ build_number: 1001
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h93a5062_1001.conda
+ sha256: b68160b0a8ec374cea12de7afb954ca47419cdc300358232e19cec666d60b929
+ md5: 915996063a7380c652f83609e970c2a7
+ license: GPL-2.0-or-later
+ license_family: GPL2
+ size: 131447
+ timestamp: 1713516009610
+- kind: conda
+ name: lzo
+ version: '2.10'
+ build: hd590300_1001
+ build_number: 1001
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda
+ sha256: 88433b98a9dd9da315400e7fb9cd5f70804cb17dca8b1c85163a64f90f584126
+ md5: ec7398d21e2651e0dcb0044d03b9a339
+ depends:
+ - libgcc-ng >=12
+ license: GPL-2.0-or-later
+ license_family: GPL2
+ size: 171416
+ timestamp: 1713515738503
+- kind: conda
+ name: mamba
+ version: 1.5.10
+ build: py312h14bc7db_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/mamba-1.5.10-py312h14bc7db_0.conda
+ sha256: 6677426c2d7ba0354f3afa943bd5ac9fc7e6379ae2ad21a26f72274df097e7e4
+ md5: c8a7212b8f783c324100f2ed812f36f2
+ depends:
+ - conda >=24,<25
+ - libmambapy 1.5.10 py312h1ed1908_0
+ - openssl >=3.3.2,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 65296
+ timestamp: 1727079040040
+- kind: conda
+ name: mamba
+ version: 1.5.10
+ build: py312h9460a1c_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/mamba-1.5.10-py312h9460a1c_0.conda
+ sha256: 0e43570ea17384f5eb50831ffdb4b0beab42f734e7b08562c3daf35e7508845e
+ md5: 34744dc9ca51dc9337dc07cbd5ed12c7
+ depends:
+ - conda >=24,<25
+ - libmambapy 1.5.10 py312h7fb9e8e_0
+ - openssl >=3.3.2,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 64360
+ timestamp: 1727078788346
+- kind: conda
+ name: mamba
+ version: 1.5.10
+ build: py312ha12221d_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/mamba-1.5.10-py312ha12221d_0.conda
+ sha256: 0a364b33157777c48bd27e7dc9095a10ba75a0d7f5ee3fadc97b7f33e7849bed
+ md5: 316e91e4376f34ecf8f10d41fdd8bfd1
+ depends:
+ - conda >=24,<25
+ - libmambapy 1.5.10 py312haab923c_0
+ - openssl >=3.3.2,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 64608
+ timestamp: 1727079147799
+- kind: conda
+ name: markdown
+ version: '3.6'
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda
+ sha256: fce1fde00359696983989699c00f9891194c4ebafea647a8d21b7e2e3329b56e
+ md5: 06e9bebf748a0dea03ecbe1f0e27e909
+ depends:
+ - importlib-metadata >=4.4
+ - python >=3.6
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 78331
+ timestamp: 1710435316163
+- kind: conda
+ name: markdown-it-py
+ version: 3.0.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
+ sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962
+ md5: 93a8e71256479c62074356ef6ebf501b
+ depends:
+ - mdurl >=0.1,<1
+ - python >=3.8
+ license: MIT
+ license_family: MIT
+ size: 64356
+ timestamp: 1686175179621
+- kind: conda
+ name: markupsafe
+ version: 3.0.2
+ build: py312h178313f_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda
+ sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6
+ md5: a755704ea0e2503f8c227d84829a8e81
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - jinja2 >=3.0.0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 24878
+ timestamp: 1729351558563
+- kind: conda
+ name: markupsafe
+ version: 3.0.2
+ build: py312ha0ccf2a_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda
+ sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d
+ md5: c6ff9f291d011c9d4f0b840f49435c64
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - jinja2 >=3.0.0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 24495
+ timestamp: 1729351534830
+- kind: conda
+ name: markupsafe
+ version: 3.0.2
+ build: py312hbe3f5e4_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda
+ sha256: b2fb54718159055fdf89da7d9f0c6743ef84b31960617a56810920d17616d944
+ md5: c6238833d7dc908ec295bc490b80d845
+ depends:
+ - __osx >=10.13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - jinja2 >=3.0.0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 23889
+ timestamp: 1729351468966
+- kind: conda
+ name: mdurl
+ version: 0.1.2
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda
+ sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1
+ md5: 776a8dd9e824f77abac30e6ef43a8f7a
+ depends:
+ - python >=3.6
+ license: MIT
+ license_family: MIT
+ size: 14680
+ timestamp: 1704317789138
+- kind: conda
+ name: menuinst
+ version: 2.1.2
+ build: py312h7900ff3_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.1.2-py312h7900ff3_1.conda
+ sha256: 8338f243a5a501b02c1443b4c0f664313f99c802ea23b7d4676c99317c96ff00
+ md5: c6575ae996f2bc0369c73b632db5ca61
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause AND MIT
+ size: 166320
+ timestamp: 1725359138771
+- kind: conda
+ name: menuinst
+ version: 2.1.2
+ build: py312h81bd7bf_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/menuinst-2.1.2-py312h81bd7bf_1.conda
+ sha256: 507808a93543aa246d2e8def5b3a6ca674fa5b3c9289f087b71efb735c0d1157
+ md5: 98d68002c338054a1f366a9758f99719
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause AND MIT
+ size: 166601
+ timestamp: 1725359231719
+- kind: conda
+ name: menuinst
+ version: 2.1.2
+ build: py312hb401068_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/menuinst-2.1.2-py312hb401068_1.conda
+ sha256: 8f0a371bb9d6fc22445da0ef6f2de7a9944232b7ef4d7c8f1edc8ce7eb399f19
+ md5: b5e65130ede50120d04c12a7dcfc9131
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause AND MIT
+ size: 166634
+ timestamp: 1725359092783
+- kind: conda
+ name: ncurses
+ version: '6.5'
+ build: h7bae524_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda
+ sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc
+ md5: cb2b0ea909b97b3d70cd3921d1445e1a
+ depends:
+ - __osx >=11.0
+ license: X11 AND BSD-3-Clause
+ size: 802321
+ timestamp: 1724658775723
+- kind: conda
+ name: ncurses
+ version: '6.5'
+ build: he02047a_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda
+ sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a
+ md5: 70caf8bb6cf39a0b6b7efc885f51c0fe
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=12
+ license: X11 AND BSD-3-Clause
+ size: 889086
+ timestamp: 1724658547447
+- kind: conda
+ name: ncurses
+ version: '6.5'
+ build: hf036a51_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda
+ sha256: b0b3180039ef19502525a2abd5833c00f9624af830fd391f851934d57bffb9af
+ md5: e102bbf8a6ceeaf429deab8032fc8977
+ depends:
+ - __osx >=10.13
+ license: X11 AND BSD-3-Clause
+ size: 822066
+ timestamp: 1724658603042
+- kind: conda
+ name: nextflow
+ version: 24.04.4
+ build: hdfd78af_0
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/bioconda/noarch/nextflow-24.04.4-hdfd78af_0.tar.bz2
+ sha256: 40fd1422c7b3756023b1623e3dfe9a571f6777144e2937831220025a94bbbdfa
+ md5: 6653531f694b0a8d91411b3352916a2d
+ depends:
+ - coreutils
+ - curl
+ - openjdk >=11,<=21
+ license: Apache-2.0
+ size: 32305470
+ timestamp: 1722504218797
+- kind: conda
+ name: nf-core
+ version: 3.0.2
+ build: pyhdfd78af_1
+ build_number: 1
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/bioconda/noarch/nf-core-3.0.2-pyhdfd78af_1.tar.bz2
+ sha256: 799373ead70c82b5ece0aaebf3917e922bd18386f55240b735ce5124178eea1d
+ md5: 74d52a99d2f6c3fac7bc47926874b986
+ depends:
+ - click
+ - filetype
+ - git
+ - gitpython
+ - jinja2
+ - jsonschema >=4.0
+ - linkify-it-py >=1,<3
+ - markdown >=3.3
+ - nextflow >=24.04.4
+ - nf-test
+ - packaging
+ - pillow
+ - pre-commit
+ - prompt_toolkit >=3.0.36
+ - pydantic >=2.2.1
+ - pygithub
+ - python >=3.8
+ - pyyaml
+ - questionary >=2.0.1
+ - refgenie
+ - requests
+ - requests-cache
+ - rich >=13.3.1
+ - rich-click 1.8.*
+ - ruamel.yaml
+ - tabulate
+ - textual 0.71.0
+ - trogon
+ license: MIT
+ license_family: MIT
+ size: 467559
+ timestamp: 1730231679837
+- kind: conda
+ name: nf-test
+ version: 0.9.2
+ build: h2a3209d_0
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/bioconda/noarch/nf-test-0.9.2-h2a3209d_0.tar.bz2
+ sha256: c1cc25467606726cd566e188437f85afab40fa77cfdbd33a77543333b671ad00
+ md5: 398af3d1d5b35a0c1bdf803735a43bb6
+ depends:
+ - coreutils
+ - curl
+ - openjdk >=11,<=18
+ license: MIT
+ size: 25618647
+ timestamp: 1730740418891
+- kind: conda
+ name: nodeenv
+ version: 1.9.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda
+ sha256: 85ee07342ab055dc081f3de8292c5e7195e43e046db9c5750f242f928f6bb8f2
+ md5: dfe0528d0f1c16c1f7c528ea5536ab30
+ depends:
+ - python 2.7|>=3.7
+ - setuptools
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 34489
+ timestamp: 1717585382642
+- kind: conda
+ name: numpy
+ version: 2.1.3
+ build: py312h58c1407_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda
+ sha256: e4c14f71588a5627a6935d3e7d9ca78a8387229ec8ebc91616b0988ce57ba0dc
+ md5: dfdbc12e6d81889ba4c494a23f23eba8
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libgcc >=13
+ - liblapack >=3.9.0,<4.0a0
+ - libstdcxx >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 8388631
+ timestamp: 1730588649810
+- kind: conda
+ name: numpy
+ version: 2.1.3
+ build: py312h94ee1e1_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda
+ sha256: cd287b6c270ee8af77d200c46d56fdfe1e2a9deeff68044439718b8d073214dd
+ md5: a2af54c86582e08718805c69af737897
+ depends:
+ - __osx >=11.0
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=18
+ - liblapack >=3.9.0,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 6398123
+ timestamp: 1730588490904
+- kind: conda
+ name: numpy
+ version: 2.1.3
+ build: py312hfc93d17_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda
+ sha256: 2f120e958da2d6ab7e4785a42515b4f65f70422b8b722e1a75654962fcfb26e9
+ md5: 011118baf131914d1cb48e07317f0946
+ depends:
+ - __osx >=10.13
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=18
+ - liblapack >=3.9.0,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 7538388
+ timestamp: 1730588494493
+- kind: conda
+ name: openjdk
+ version: 17.0.11
+ build: h06b73d1_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/openjdk-17.0.11-h06b73d1_1.conda
+ sha256: e72b399eb973f0439fa43e2162c523dcc0859ce9b56cd42570406ccf1a2758b4
+ md5: 2b8f4207bd8dcf539ca3cd006a1addfe
+ depends:
+ - libzlib >=1.3.1,<2.0a0
+ license: GPL-2.0-or-later WITH Classpath-exception-2.0
+ license_family: GPL
+ size: 166224475
+ timestamp: 1721718702244
+- kind: conda
+ name: openjdk
+ version: 17.0.11
+ build: h38bd402_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/openjdk-17.0.11-h38bd402_1.conda
+ sha256: ecef5b63d9dfac4ddecb52d4e1d3fb8ed2d8d5dd397af0bcfc2376c51c0b10de
+ md5: 660531a395453ecf47c5b95d5dc4eeba
+ depends:
+ - alsa-lib >=1.2.12,<1.2.13.0a0
+ - alsa-lib >=1.2.12,<1.3.0a0
+ - fontconfig >=2.14.2,<3.0a0
+ - fonts-conda-ecosystem
+ - freetype >=2.12.1,<3.0a0
+ - giflib >=5.2.2,<5.3.0a0
+ - harfbuzz >=9.0.0,<10.0a0
+ - lcms2 >=2.16,<3.0a0
+ - libcups >=2.3.3,<2.4.0a0
+ - libgcc-ng >=12
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libpng >=1.6.43,<1.7.0a0
+ - libstdcxx-ng >=12
+ - libzlib >=1.3.1,<2.0a0
+ - xorg-libx11 >=1.8.9,<2.0a0
+ - xorg-libxext >=1.3.4,<2.0a0
+ - xorg-libxi
+ - xorg-libxrender >=0.9.11,<0.10.0a0
+ - xorg-libxt >=1.3.0,<2.0a0
+ - xorg-libxtst >=1.2.3,<2.0a0
+ license: GPL-2.0-or-later WITH Classpath-exception-2.0
+ license_family: GPL
+ size: 169277582
+ timestamp: 1721721096990
+- kind: conda
+ name: openjdk
+ version: 17.0.11
+ build: h8f67a1f_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/openjdk-17.0.11-h8f67a1f_1.conda
+ sha256: 40de98deb981758ca4eb56866d1e4f8c1cb454dd2fdeb650477c7278e3b576fb
+ md5: d4db3a5f52953bff6ea488b75e71cfc4
+ depends:
+ - libzlib >=1.3.1,<2.0a0
+ license: GPL-2.0-or-later WITH Classpath-exception-2.0
+ license_family: GPL
+ size: 164478241
+ timestamp: 1721718503108
+- kind: conda
+ name: openjpeg
+ version: 2.5.2
+ build: h488ebb8_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda
+ sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2
+ md5: 7f2e286780f072ed750df46dc2631138
+ depends:
+ - libgcc-ng >=12
+ - libpng >=1.6.43,<1.7.0a0
+ - libstdcxx-ng >=12
+ - libtiff >=4.6.0,<4.8.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 341592
+ timestamp: 1709159244431
+- kind: conda
+ name: openjpeg
+ version: 2.5.2
+ build: h7310d3a_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.2-h7310d3a_0.conda
+ sha256: dc9c405119b9b54f8ca5984da27ba498bd848ab4f0f580da6f293009ca5adc13
+ md5: 05a14cc9d725dd74995927968d6547e3
+ depends:
+ - libcxx >=16
+ - libpng >=1.6.43,<1.7.0a0
+ - libtiff >=4.6.0,<4.8.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 331273
+ timestamp: 1709159538792
+- kind: conda
+ name: openjpeg
+ version: 2.5.2
+ build: h9f1df11_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda
+ sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463
+ md5: 5029846003f0bc14414b9128a1f7c84b
+ depends:
+ - libcxx >=16
+ - libpng >=1.6.43,<1.7.0a0
+ - libtiff >=4.6.0,<4.8.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 316603
+ timestamp: 1709159627299
+- kind: conda
+ name: openssl
+ version: 3.3.2
+ build: h8359307_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda
+ sha256: 940fa01c4dc6152158fe8943e05e55a1544cab639df0994e3b35937839e4f4d1
+ md5: 1773ebccdc13ec603356e8ff1db9e958
+ depends:
+ - __osx >=11.0
+ - ca-certificates
+ license: Apache-2.0
+ license_family: Apache
+ size: 2882450
+ timestamp: 1725410638874
+- kind: conda
+ name: openssl
+ version: 3.3.2
+ build: hb9d3cd8_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda
+ sha256: cee91036686419f6dd6086902acf7142b4916e1c4ba042e9ca23e151da012b6d
+ md5: 4d638782050ab6faa27275bed57e9b4e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - ca-certificates
+ - libgcc >=13
+ license: Apache-2.0
+ license_family: Apache
+ size: 2891789
+ timestamp: 1725410790053
+- kind: conda
+ name: openssl
+ version: 3.3.2
+ build: hd23fc13_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda
+ sha256: 2b75d4b56e45992adf172b158143742daeb316c35274b36f385ccb6644e93268
+ md5: 2ff47134c8e292868a4609519b1ea3b6
+ depends:
+ - __osx >=10.13
+ - ca-certificates
+ license: Apache-2.0
+ license_family: Apache
+ size: 2544654
+ timestamp: 1725410973572
+- kind: conda
+ name: oyaml
+ version: '1.0'
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/oyaml-1.0-pyhd8ed1ab_0.tar.bz2
+ sha256: a234072ec9840b83a1e1a4a2672f8a52a0bdae53b00904a60838adb7511d7730
+ md5: 98c4dd307dbff3b69a2277dc1a55fd8d
+ depends:
+ - python >=2.7
+ - pyyaml
+ license: MIT
+ license_family: MIT
+ size: 6606
+ timestamp: 1604443652010
+- kind: conda
+ name: packaging
+ version: '24.1'
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda
+ sha256: 36aca948219e2c9fdd6d80728bcc657519e02f06c2703d8db3446aec67f51d81
+ md5: cbe1bb1f21567018ce595d9c2be0f0db
+ depends:
+ - python >=3.8
+ license: Apache-2.0
+ license_family: APACHE
+ size: 50290
+ timestamp: 1718189540074
+- kind: conda
+ name: pandas
+ version: 2.2.3
+ build: py312h98e817e_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda
+ sha256: 86c252ce5718b55129303f7d5c9a8664d8f0b23e303579142d09fcfd701e4fbe
+ md5: a7f7c58bbbfcdf820edb6e544555fe8f
+ depends:
+ - __osx >=10.13
+ - libcxx >=17
+ - numpy >=1.19,<3
+ - numpy >=1.22.4
+ - python >=3.12,<3.13.0a0
+ - python-dateutil >=2.8.1
+ - python-tzdata >=2022a
+ - python_abi 3.12.* *_cp312
+ - pytz >=2020.1,<2024.2
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 14575645
+ timestamp: 1726879062042
+- kind: conda
+ name: pandas
+ version: 2.2.3
+ build: py312hcd31e36_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda
+ sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457
+ md5: c68bfa69e6086c381c74e16fd72613a8
+ depends:
+ - __osx >=11.0
+ - libcxx >=17
+ - numpy >=1.19,<3
+ - numpy >=1.22.4
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python-dateutil >=2.8.1
+ - python-tzdata >=2022a
+ - python_abi 3.12.* *_cp312
+ - pytz >=2020.1,<2024.2
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 14470437
+ timestamp: 1726878887799
+- kind: conda
+ name: pandas
+ version: 2.2.3
+ build: py312hf9745cd_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda
+ sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e
+ md5: 8bce4f6caaf8c5448c7ac86d87e26b4b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
+ - numpy >=1.19,<3
+ - numpy >=1.22.4
+ - python >=3.12,<3.13.0a0
+ - python-dateutil >=2.8.1
+ - python-tzdata >=2022a
+ - python_abi 3.12.* *_cp312
+ - pytz >=2020.1,<2024.2
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 15436913
+ timestamp: 1726879054912
+- kind: conda
+ name: pcre2
+ version: '10.44'
+ build: h297a79d_2
+ build_number: 2
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda
+ sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796
+ md5: 147c83e5e44780c7492998acbacddf52
+ depends:
+ - __osx >=11.0
+ - bzip2 >=1.0.8,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 618973
+ timestamp: 1723488853807
+- kind: conda
+ name: pcre2
+ version: '10.44'
+ build: h7634a1b_2
+ build_number: 2
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda
+ sha256: 336057fce69d45e1059f138beb38d60eb87ba858c3ad729ed49d9ecafd23669f
+ md5: 58cde0663f487778bcd7a0c8daf50293
+ depends:
+ - __osx >=10.13
+ - bzip2 >=1.0.8,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 854306
+ timestamp: 1723488807216
+- kind: conda
+ name: pcre2
+ version: '10.44'
+ build: hba22ea6_2
+ build_number: 2
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda
+ sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d
+ md5: df359c09c41cd186fffb93a2d87aa6f5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - bzip2 >=1.0.8,<2.0a0
+ - libgcc-ng >=12
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 952308
+ timestamp: 1723488734144
+- kind: conda
+ name: pephubclient
+ version: 0.4.4
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pephubclient-0.4.4-pyhd8ed1ab_0.conda
+ sha256: 03660b33cffb76da14e77176aad109ba0fe50d824e0bd95973ab159696a10c86
+ md5: 1fb0b63ececc327dda75c29633429d12
+ depends:
+ - coloredlogs >=15.0.1
+ - pandas >=2.0.0
+ - peppy >=0.40.5
+ - pydantic >=2.5.0
+ - python >=3.8
+ - requests >=2.28.2
+ - typer >=0.7.0
+ - ubiquerg >=0.6.3
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 22193
+ timestamp: 1728675175037
+- kind: conda
+ name: peppy
+ version: 0.40.7
+ build: pyhd8ed1ab_1
+ build_number: 1
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/peppy-0.40.7-pyhd8ed1ab_1.conda
+ sha256: 576f605077590eacb948bc4cfb7c9b3a04ac7932624901618766c53134812ebe
+ md5: 6e6e5fa522000fb52544768e212820eb
+ depends:
+ - logmuse >=0.2
+ - pandas >=0.24.2
+ - pephubclient >=0.4.2
+ - python >=3.8
+ - pyyaml >=5
+ - rich
+ - ubiquerg >=0.5.2
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 29442
+ timestamp: 1729011123771
+- kind: conda
+ name: perl
+ version: 5.32.1
+ build: 7_h10d778d_perl5
+ build_number: 7
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda
+ sha256: 8ebd35e2940055a93135b9fd11bef3662cecef72d6ee651f68d64a2f349863c7
+ md5: dc442e0885c3a6b65e61c61558161a9e
+ license: GPL-1.0-or-later OR Artistic-1.0-Perl
+ size: 12334471
+ timestamp: 1703311001432
+- kind: conda
+ name: perl
+ version: 5.32.1
+ build: 7_h4614cfb_perl5
+ build_number: 7
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda
+ sha256: b0c55040d2994fd6bf2f83786561d92f72306d982d6ea12889acad24a9bf43b8
+ md5: ba3cbe93f99e896765422cc5f7c3a79e
+ license: GPL-1.0-or-later OR Artistic-1.0-Perl
+ size: 14439531
+ timestamp: 1703311335652
+- kind: conda
+ name: perl
+ version: 5.32.1
+ build: 7_hd590300_perl5
+ build_number: 7
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda
+ sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9
+ md5: f2cfec9406850991f4e3d960cc9e3321
+ depends:
+ - libgcc-ng >=12
+ - libxcrypt >=4.4.36
+ license: GPL-1.0-or-later OR Artistic-1.0-Perl
+ size: 13344463
+ timestamp: 1703310653947
+- kind: conda
+ name: pillow
+ version: 11.0.0
+ build: py312h66fe14f_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.0.0-py312h66fe14f_0.conda
+ sha256: 5e531eded0bb784c745abe3a1187c6c33478e153755bf8a8496aebff60801150
+ md5: 1e49b81b5aae7af9d74bcdac0cd0d174
+ depends:
+ - __osx >=10.13
+ - freetype >=2.12.1,<3.0a0
+ - lcms2 >=2.16,<3.0a0
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libtiff >=4.7.0,<4.8.0a0
+ - libwebp-base >=1.4.0,<2.0a0
+ - libxcb >=1.17.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openjpeg >=2.5.2,<3.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - tk >=8.6.13,<8.7.0a0
+ license: HPND
+ size: 42189378
+ timestamp: 1729065985392
+- kind: conda
+ name: pillow
+ version: 11.0.0
+ build: py312h7b63e92_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda
+ sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224
+ md5: 385f46a4df6f97892503a841121a9acf
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - freetype >=2.12.1,<3.0a0
+ - lcms2 >=2.16,<3.0a0
+ - libgcc >=13
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libtiff >=4.7.0,<4.8.0a0
+ - libwebp-base >=1.4.0,<2.0a0
+ - libxcb >=1.17.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openjpeg >=2.5.2,<3.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - tk >=8.6.13,<8.7.0a0
+ license: HPND
+ size: 41948418
+ timestamp: 1729065846594
+- kind: conda
+ name: pillow
+ version: 11.0.0
+ build: py312haf37ca6_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda
+ sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8
+ md5: dc9b51fbd2b6f7fea9b5123458864dbb
+ depends:
+ - __osx >=11.0
+ - freetype >=2.12.1,<3.0a0
+ - lcms2 >=2.16,<3.0a0
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libtiff >=4.7.0,<4.8.0a0
+ - libwebp-base >=1.4.0,<2.0a0
+ - libxcb >=1.17.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openjpeg >=2.5.2,<3.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - tk >=8.6.13,<8.7.0a0
+ license: HPND
+ size: 41737424
+ timestamp: 1729065920347
+- kind: conda
+ name: piper
+ version: 0.14.3
+ build: pyhdfd78af_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/bioconda/noarch/piper-0.14.3-pyhdfd78af_0.tar.bz2
+ sha256: 14b294c0da26d84aaccf42d2400a8150a898a68224aec38d8217276123e0a790
+ md5: 5b0621bbe6a258fb47e517c23faeb22b
+ depends:
+ - attmap >=0.12.5
+ - logmuse >=0.2.4
+ - pandas
+ - pipestat >=0.9.a1
+ - psutil
+ - python >=3
+ - ubiquerg >=0.8.0
+ - yacman >=0.9.3
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 67350
+ timestamp: 1727893686906
+- kind: conda
+ name: pipestat
+ version: 0.11.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pipestat-0.11.0-pyhd8ed1ab_0.conda
+ sha256: 31d7a429cf67e44d9faabcb7736465cff00269e2c837a95b50b7bd6e28baa0c0
+ md5: 3ea3600ccc83d88f1b350dca89c82e22
+ depends:
+ - eido
+ - jinja2
+ - jsonschema
+ - logmuse >=0.2.5
+ - pandas
+ - python >=3.8
+ - pyyaml
+ - setuptools
+ - ubiquerg >=0.6.1
+ - yacman >=0.9.3
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 67452
+ timestamp: 1727916200790
+- kind: conda
+ name: pixman
+ version: 0.43.2
+ build: h59595ed_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda
+ sha256: 366d28e2a0a191d6c535e234741e0cd1d94d713f76073d8af4a5ccb2a266121e
+ md5: 71004cbf7924e19c02746ccde9fd7123
+ depends:
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 386826
+ timestamp: 1706549500138
+- kind: conda
+ name: pkgutil-resolve-name
+ version: 1.3.10
+ build: pyhd8ed1ab_1
+ build_number: 1
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
+ sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a
+ md5: 405678b942f2481cecdb3e010f4925d9
+ depends:
+ - python >=3.6
+ license: MIT AND PSF-2.0
+ size: 10778
+ timestamp: 1694617398467
+- kind: conda
+ name: platformdirs
+ version: 4.3.2
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda
+ sha256: 3aef5bb863a2db94e47272fd5ec5a5e4b240eafba79ebb9df7a162797cf035a3
+ md5: e1a2dfcd5695f0744f1bcd3bbfe02523
+ depends:
+ - python >=3.8
+ license: MIT
+ license_family: MIT
+ size: 20623
+ timestamp: 1725821846879
+- kind: conda
+ name: pluggy
+ version: 1.5.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda
+ sha256: 33eaa3359948a260ebccf9cdc2fd862cea5a6029783289e13602d8e634cd9a26
+ md5: d3483c8fc2dc2cc3f5cf43e26d60cabf
+ depends:
+ - python >=3.8
+ license: MIT
+ license_family: MIT
+ size: 23815
+ timestamp: 1713667175451
+- kind: conda
+ name: pre-commit
+ version: 4.0.1
+ build: pyha770c72_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda
+ sha256: 2490b18ec802d8f085f2de8298a3d275451f7db17769353080dfb121fe386675
+ md5: 5971cc64048943605f352f7f8612de6c
+ depends:
+ - cfgv >=2.0.0
+ - identify >=1.0.0
+ - nodeenv >=0.11.1
+ - python >=3.9
+ - pyyaml >=5.1
+ - virtualenv >=20.10.0
+ license: MIT
+ license_family: MIT
+ size: 194633
+ timestamp: 1728420305558
+- kind: conda
+ name: prompt-toolkit
+ version: 3.0.36
+ build: pyha770c72_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.36-pyha770c72_0.conda
+ sha256: 6bd3626799c9467d7aa8ed5f95043e4cea614a1329580980ddcf40cfed3ee860
+ md5: 4d79ec192e0bfd530a254006d123b9a6
+ depends:
+ - python >=3.6
+ - wcwidth
+ constrains:
+ - prompt_toolkit 3.0.36
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 271530
+ timestamp: 1670414885944
+- kind: conda
+ name: prompt_toolkit
+ version: 3.0.36
+ build: hd8ed1ab_0
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.36-hd8ed1ab_0.conda
+ sha256: 8685763bf7b3299be8b1e6fccad1282217733c8fcf1d682397323e2e08a00a68
+ md5: 482c15eb65dde2f899c4d68eaa938b1d
+ depends:
+ - prompt-toolkit >=3.0.36,<3.0.37.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 6372
+ timestamp: 1670414891579
+- kind: conda
+ name: psutil
+ version: 6.1.0
+ build: py312h0bf5046_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda
+ sha256: 143a40f9c72d803744ebd6a60801c5cd17af152b293f8d59e90111ce62b53569
+ md5: 61566f5c6e1d29d1d12882eb93e28532
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 493431
+ timestamp: 1729847279283
+- kind: conda
+ name: psutil
+ version: 6.1.0
+ build: py312h3d0f464_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py312h3d0f464_0.conda
+ sha256: a2c2d8a8665cce8a1c2b186b2580e1ef3e3414aa67b2d48ac46f0582434910c3
+ md5: 1df95544dc6aeb33af591146f44d9293
+ depends:
+ - __osx >=10.13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 493463
+ timestamp: 1729847222797
+- kind: conda
+ name: psutil
+ version: 6.1.0
+ build: py312h66e93f0_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda
+ sha256: 0f309b435174e037d5cfe5ed26c1c5ad8152c68cfe61af17709ec31ec3d9f096
+ md5: 0524eb91d3d78d76d671c6e3cd7cee82
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 488462
+ timestamp: 1729847159916
+- kind: conda
+ name: pthread-stubs
+ version: '0.4'
+ build: h00291cd_1002
+ build_number: 1002
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda
+ sha256: 05944ca3445f31614f8c674c560bca02ff05cb51637a96f665cb2bbe496099e5
+ md5: 8bcf980d2c6b17094961198284b8e862
+ depends:
+ - __osx >=10.13
+ license: MIT
+ license_family: MIT
+ size: 8364
+ timestamp: 1726802331537
+- kind: conda
+ name: pthread-stubs
+ version: '0.4'
+ build: h36c2ea0_1001
+ build_number: 1001
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2
+ sha256: 67c84822f87b641d89df09758da498b2d4558d47b920fd1d3fe6d3a871e000ff
+ md5: 22dad4df6e8630e8dff2428f6f6a7036
+ depends:
+ - libgcc-ng >=7.5.0
+ license: MIT
+ license_family: MIT
+ size: 5625
+ timestamp: 1606147468727
+- kind: conda
+ name: pthread-stubs
+ version: '0.4'
+ build: hd74edd7_1002
+ build_number: 1002
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda
+ sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3
+ md5: 415816daf82e0b23a736a069a75e9da7
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 8381
+ timestamp: 1726802424786
+- kind: conda
+ name: pybind11-abi
+ version: '4'
+ build: hd8ed1ab_3
+ build_number: 3
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2
+ sha256: d4fb485b79b11042a16dc6abfb0c44c4f557707c2653ac47c81e5d32b24a3bb0
+ md5: 878f923dd6acc8aeb47a75da6c4098be
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 9906
+ timestamp: 1610372835205
+- kind: conda
+ name: pycosat
+ version: 0.6.6
+ build: py312h02f2b3b_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pycosat-0.6.6-py312h02f2b3b_0.conda
+ sha256: 79622e905c3185fe96c57bf6c57b20c545e86b3a6e7da88f24dc50d03ddbe3a6
+ md5: 4d07092345b6e66e580ce3cd9141c6da
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 86424
+ timestamp: 1696356256622
+- kind: conda
+ name: pycosat
+ version: 0.6.6
+ build: py312h104f124_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/pycosat-0.6.6-py312h104f124_0.conda
+ sha256: b37afbc13d4216dde3a613ded3a1688adae3d74ab98ea55cc6914b39d2417d55
+ md5: 106c2d37708757f4c23ff1f487bf5a3f
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 89221
+ timestamp: 1696356180943
+- kind: conda
+ name: pycosat
+ version: 0.6.6
+ build: py312h98912ed_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h98912ed_0.conda
+ sha256: b973d39eb9fd9625fe97e2fbb4b6f758ea47aa288f5f8c7769e3f36a3acbb5da
+ md5: 8f1c372e7b843167be885dc8229931c1
+ depends:
+ - libgcc-ng >=12
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 88549
+ timestamp: 1696355931150
+- kind: conda
+ name: pycparser
+ version: '2.22'
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda
+ sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64
+ md5: 844d9eb3b43095b031874477f7d70088
+ depends:
+ - python >=3.8
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 105098
+ timestamp: 1711811634025
+- kind: conda
+ name: pydantic
+ version: 2.9.2
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda
+ sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a
+ md5: 1eb533bb8eb2199e3fef3e4aa147319f
+ depends:
+ - annotated-types >=0.6.0
+ - pydantic-core 2.23.4
+ - python >=3.7
+ - typing-extensions >=4.6.1
+ license: MIT
+ license_family: MIT
+ size: 300649
+ timestamp: 1726601202431
+- kind: conda
+ name: pydantic-core
+ version: 2.23.4
+ build: py312h12e396e_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda
+ sha256: 365fde689865087b2a9da636f36678bd59617b324ce7a538b4806e90602b20f1
+ md5: 0845ab52d4ea209049129a6a91bc74ba
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - typing-extensions >=4.6.0,!=4.7.0
+ constrains:
+ - __glibc >=2.17
+ license: MIT
+ license_family: MIT
+ size: 1611784
+ timestamp: 1726525286507
+- kind: conda
+ name: pydantic-core
+ version: 2.23.4
+ build: py312h669792a_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.23.4-py312h669792a_0.conda
+ sha256: 46b17406772d7403ce454c1005e493a2723a189403dd2a70a3566ac4b1f82a4a
+ md5: 14806afd8ed78812d83e8b9ea4b549c0
+ depends:
+ - __osx >=10.13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - typing-extensions >=4.6.0,!=4.7.0
+ constrains:
+ - __osx >=10.13
+ license: MIT
+ license_family: MIT
+ size: 1535259
+ timestamp: 1726525537029
+- kind: conda
+ name: pydantic-core
+ version: 2.23.4
+ build: py312he431725_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda
+ sha256: d6edd3d0f9e701c8299519d412ad3dc900c7d893a134f2582203cf43585decca
+ md5: 3148052477686acc581b20a34b478eeb
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - typing-extensions >=4.6.0,!=4.7.0
+ constrains:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 1431747
+ timestamp: 1726525575527
+- kind: conda
+ name: pyfaidx
+ version: 0.8.1.3
+ build: pyhdfd78af_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/bioconda/noarch/pyfaidx-0.8.1.3-pyhdfd78af_0.tar.bz2
+ sha256: 00e960f12330c3bc44fccac0417f2602143d145a5ad0e6ac7599b002ec7f1cf4
+ md5: b7235b21bc5dd12cd480a23201cc8886
+ depends:
+ - biopython
+ - importlib-metadata
+ - packaging
+ - python >=3.7
+ - pyvcf3
+ - setuptools
+ - six
+ license: BSD License
+ license_family: BSD
+ size: 33958
+ timestamp: 1728570263915
+- kind: conda
+ name: pygithub
+ version: 2.5.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pygithub-2.5.0-pyhd8ed1ab_0.conda
+ sha256: 50a0239c584ba3beedbbf7498bc8f9368076dbb3b35c23ffbff1ade64e1b8ee4
+ md5: e1017f2fc08b01b036153feb5d77b8cb
+ depends:
+ - cryptography >=3.4.0
+ - deprecated
+ - pyjwt >=2.4.0
+ - pynacl >=1.4.0
+ - python >=3.7
+ - python-dateutil
+ - requests >=2.14.0
+ - typing-extensions >=4.0.0
+ - urllib3 >=1.26.0
+ license: LGPL-3.0-only
+ license_family: LGPL
+ size: 154118
+ timestamp: 1730939163197
+- kind: conda
+ name: pygments
+ version: 2.18.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda
+ sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b
+ md5: b7f5c092b8f9800150d998a71b76d5a1
+ depends:
+ - python >=3.8
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 879295
+ timestamp: 1714846885370
+- kind: conda
+ name: pyjwt
+ version: 2.10.0
+ build: pyhff2d567_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.0-pyhff2d567_0.conda
+ sha256: 49a20637a285f7c9acb2064b91d8c63bce5821f007598cfa64e3913ed4264354
+ md5: ae45081e9e726f978c514ae1977bd1fb
+ depends:
+ - python >=3.9
+ constrains:
+ - cryptography >=3.4.0
+ license: MIT
+ license_family: MIT
+ size: 25075
+ timestamp: 1731859287237
+- kind: conda
+ name: pynacl
+ version: 1.5.0
+ build: py312h024a12e_4
+ build_number: 4
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pynacl-1.5.0-py312h024a12e_4.conda
+ sha256: 1cadc99e88105400acb41c4297d43026bf3aaaa386c72a4e2a7512c2ea70f4be
+ md5: 7febc246a29d77449bdb3e7a18382788
+ depends:
+ - __osx >=11.0
+ - cffi >=1.4.1
+ - libsodium >=1.0.20,<1.0.21.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - six
+ license: Apache-2.0
+ license_family: Apache
+ size: 1176387
+ timestamp: 1725739476286
+- kind: conda
+ name: pynacl
+ version: 1.5.0
+ build: py312h66e93f0_4
+ build_number: 4
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py312h66e93f0_4.conda
+ sha256: 9b3849d530055c1dff2a068628a4570f55d02156d78ec00b8efbc37af396aee9
+ md5: c47ede9450b5347c1933ccb552fca707
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cffi >=1.4.1
+ - libgcc >=13
+ - libsodium >=1.0.20,<1.0.21.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - six
+ license: Apache-2.0
+ license_family: Apache
+ size: 1186774
+ timestamp: 1725739367009
+- kind: conda
+ name: pynacl
+ version: 1.5.0
+ build: py312hb553811_4
+ build_number: 4
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/pynacl-1.5.0-py312hb553811_4.conda
+ sha256: 32d959bd5b7e403fd38abc1137000d1106502cb90e6ef58c71e0301ac15b6803
+ md5: 88be5bbe28b39b591eb61520d12658d0
+ depends:
+ - __osx >=10.13
+ - cffi >=1.4.1
+ - libsodium >=1.0.20,<1.0.21.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - six
+ license: Apache-2.0
+ license_family: Apache
+ size: 1144466
+ timestamp: 1725739414221
+- kind: conda
+ name: pysocks
+ version: 1.7.1
+ build: pyha2e5f31_6
+ build_number: 6
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
+ sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b
+ md5: 2a7de29fb590ca14b5243c4c812c8025
+ depends:
+ - __unix
+ - python >=3.8
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 18981
+ timestamp: 1661604969727
+- kind: conda
+ name: pytest
+ version: 8.3.3
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda
+ sha256: e99376d0068455712109d233f5790458ff861aeceb458bfda74e353338e4d815
+ md5: c03d61f31f38fdb9facf70c29958bf7a
+ depends:
+ - colorama
+ - exceptiongroup >=1.0.0rc8
+ - iniconfig
+ - packaging
+ - pluggy <2,>=1.5
+ - python >=3.8
+ - tomli >=1
+ constrains:
+ - pytest-faulthandler >=2
+ license: MIT
+ license_family: MIT
+ size: 258293
+ timestamp: 1725977334143
+- kind: conda
+ name: python
+ version: 3.12.5
+ build: h2ad013b_0_cpython
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda
+ sha256: e2aad83838988725d4ffba4e9717b9328054fd18a668cff3377e0c50f109e8bd
+ md5: 9c56c4df45f6571b13111d8df2448692
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - bzip2 >=1.0.8,<2.0a0
+ - ld_impl_linux-64 >=2.36.1
+ - libexpat >=2.6.2,<3.0a0
+ - libffi >=3.4,<4.0a0
+ - libgcc-ng >=12
+ - libnsl >=2.0.1,<2.1.0a0
+ - libsqlite >=3.46.0,<4.0a0
+ - libuuid >=2.38.1,<3.0a0
+ - libxcrypt >=4.4.36
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.3.1,<4.0a0
+ - readline >=8.2,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ - xz >=5.2.6,<6.0a0
+ constrains:
+ - python_abi 3.12.* *_cp312
+ license: Python-2.0
+ size: 31663253
+ timestamp: 1723143721353
+- kind: conda
+ name: python
+ version: 3.12.5
+ build: h30c5eda_0_cpython
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.5-h30c5eda_0_cpython.conda
+ sha256: 1319e918fb54c9491832a9731cad00235a76f61c6f9b23fc0f70cdfb74c950ea
+ md5: 5e315581e2948dfe3bcac306540e9803
+ depends:
+ - __osx >=11.0
+ - bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.6.2,<3.0a0
+ - libffi >=3.4,<4.0a0
+ - libsqlite >=3.46.0,<4.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.3.1,<4.0a0
+ - readline >=8.2,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ - xz >=5.2.6,<6.0a0
+ constrains:
+ - python_abi 3.12.* *_cp312
+ license: Python-2.0
+ size: 12926356
+ timestamp: 1723142203193
+- kind: conda
+ name: python
+ version: 3.12.5
+ build: h37a9e06_0_cpython
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda
+ sha256: c0f39e625b2fd65f70a9cc086fe4b25cc72228453dbbcd92cd5d140d080e38c5
+ md5: 517cb4e16466f8d96ba2a72897d14c48
+ depends:
+ - __osx >=10.13
+ - bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.6.2,<3.0a0
+ - libffi >=3.4,<4.0a0
+ - libsqlite >=3.46.0,<4.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.3.1,<4.0a0
+ - readline >=8.2,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ - xz >=5.2.6,<6.0a0
+ constrains:
+ - python_abi 3.12.* *_cp312
+ license: Python-2.0
+ size: 12173272
+ timestamp: 1723142761765
+- kind: conda
+ name: python-dateutil
+ version: 2.9.0.post0
+ build: pyhff2d567_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda
+ sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54
+ md5: b6dfd90a2141e573e4b6a81630b56df5
+ depends:
+ - python >=3.9
+ - six >=1.5
+ license: Apache-2.0
+ license_family: APACHE
+ size: 221925
+ timestamp: 1731919374686
+- kind: conda
+ name: python-tzdata
+ version: '2024.2'
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda
+ sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4
+ md5: 986287f89929b2d629bd6ef6497dc307
+ depends:
+ - python >=3.6
+ license: Apache-2.0
+ license_family: APACHE
+ size: 142527
+ timestamp: 1727140688093
+- kind: conda
+ name: python_abi
+ version: '3.12'
+ build: 5_cp312
+ build_number: 5
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda
+ sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0
+ md5: 0424ae29b104430108f5218a66db7260
+ constrains:
+ - python 3.12.* *_cpython
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 6238
+ timestamp: 1723823388266
+- kind: conda
+ name: python_abi
+ version: '3.12'
+ build: 5_cp312
+ build_number: 5
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda
+ sha256: 4da26c7508d5bc5d8621e84dc510284402239df56aab3587a7d217de9d3c806d
+ md5: c34dd4920e0addf7cfcc725809f25d8e
+ constrains:
+ - python 3.12.* *_cpython
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 6312
+ timestamp: 1723823137004
+- kind: conda
+ name: python_abi
+ version: '3.12'
+ build: 5_cp312
+ build_number: 5
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda
+ sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4
+ md5: b76f9b1c862128e56ac7aa8cd2333de9
+ constrains:
+ - python 3.12.* *_cpython
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 6278
+ timestamp: 1723823099686
+- kind: conda
+ name: pytz
+ version: '2024.1'
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
+ sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41
+ md5: 3eeeeb9e4827ace8c0c1419c85d590ad
+ depends:
+ - python >=3.7
+ license: MIT
+ license_family: MIT
+ size: 188538
+ timestamp: 1706886944988
+- kind: conda
+ name: pyvcf3
+ version: 1.0.3
+ build: pyhdfd78af_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/bioconda/noarch/pyvcf3-1.0.3-pyhdfd78af_0.tar.bz2
+ sha256: 5283bca618cea395f5aabdc40a9a136c0203c247e16935a2b250e84670e1dccb
+ md5: 2471bf4fad9f15602ad24164adf1a22a
+ depends:
+ - python 3.*
+ license: MIT
+ size: 979534
+ timestamp: 1650931704574
+- kind: conda
+ name: pyyaml
+ version: 6.0.2
+ build: py312h024a12e_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda
+ sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3
+ md5: 1ee23620cf46cb15900f70a1300bae55
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - yaml >=0.2.5,<0.3.0a0
+ license: MIT
+ license_family: MIT
+ size: 187143
+ timestamp: 1725456547263
+- kind: conda
+ name: pyyaml
+ version: 6.0.2
+ build: py312h66e93f0_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda
+ sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa
+ md5: 549e5930e768548a89c23f595dac5a95
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - yaml >=0.2.5,<0.3.0a0
+ license: MIT
+ license_family: MIT
+ size: 206553
+ timestamp: 1725456256213
+- kind: conda
+ name: pyyaml
+ version: 6.0.2
+ build: py312hb553811_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda
+ sha256: 455ce40588b35df654cb089d29cc3f0d3c78365924ffdfc6ee93dba80cea5f33
+ md5: 66514594817d51c78db7109a23ad322f
+ depends:
+ - __osx >=10.13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - yaml >=0.2.5,<0.3.0a0
+ license: MIT
+ license_family: MIT
+ size: 189347
+ timestamp: 1725456465705
+- kind: conda
+ name: questionary
+ version: 2.0.1
+ build: pyhd8ed1ab_1
+ build_number: 1
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/questionary-2.0.1-pyhd8ed1ab_1.conda
+ sha256: e1b22276ab3a33ed24b606e95099506269c09205278e4174823c51e5e4579eab
+ md5: 375950ebdf7945b4d3d57fad0cbe52e6
+ depends:
+ - prompt_toolkit <=3.0.36,>=2.0
+ - python >=3.6
+ license: MIT
+ license_family: MIT
+ size: 29421
+ timestamp: 1694359940547
+- kind: conda
+ name: readline
+ version: '8.2'
+ build: h8228510_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda
+ sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7
+ md5: 47d31b792659ce70f470b5c82fdfb7a4
+ depends:
+ - libgcc-ng >=12
+ - ncurses >=6.3,<7.0a0
+ license: GPL-3.0-only
+ license_family: GPL
+ size: 281456
+ timestamp: 1679532220005
+- kind: conda
+ name: readline
+ version: '8.2'
+ build: h92ec313_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
+ sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884
+ md5: 8cbb776a2f641b943d413b3e19df71f4
+ depends:
+ - ncurses >=6.3,<7.0a0
+ license: GPL-3.0-only
+ license_family: GPL
+ size: 250351
+ timestamp: 1679532511311
+- kind: conda
+ name: readline
+ version: '8.2'
+ build: h9e318b2_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda
+ sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568
+ md5: f17f77f2acf4d344734bda76829ce14e
+ depends:
+ - ncurses >=6.3,<7.0a0
+ license: GPL-3.0-only
+ license_family: GPL
+ size: 255870
+ timestamp: 1679532707590
+- kind: conda
+ name: referencing
+ version: 0.35.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda
+ sha256: be8d6d9e86b1a3fef5424127ff81782f8ca63d3058980859609f6f1ecdd34cb3
+ md5: 0fc8b52192a8898627c3efae1003e9f6
+ depends:
+ - attrs >=22.2.0
+ - python >=3.8
+ - rpds-py >=0.7.0
+ license: MIT
+ license_family: MIT
+ size: 42210
+ timestamp: 1714619625532
+- kind: conda
+ name: refgenconf
+ version: 0.12.2
+ build: pyhdfd78af_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/bioconda/noarch/refgenconf-0.12.2-pyhdfd78af_0.tar.bz2
+ sha256: 247a48ab5af2406a87c666a5e567fc8eae6ec25b179395d2bf0bf520da17bba7
+ md5: f37671eb2b4044fe04eb7d5690e6c64d
+ depends:
+ - future
+ - jsonschema >=3.0.1
+ - python >=3.6
+ - pyyaml
+ - requests
+ - rich >=9.0.1
+ - yacman >=0.8.0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 54115
+ timestamp: 1652985912896
+- kind: conda
+ name: refgenie
+ version: 0.12.1
+ build: pyhdfd78af_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/bioconda/noarch/refgenie-0.12.1-pyhdfd78af_0.tar.bz2
+ sha256: 91063a62219f5505bc583b9adc7432229778e14bc4facdcb02e6e73d30bdf419
+ md5: 5780440946d4d20c750b6276f12d08d7
+ depends:
+ - logmuse >=0.2.6
+ - piper >=0.12.1
+ - pyfaidx >=0.5.5.2
+ - python >=3.6
+ - refgenconf >=0.10.0
+ - yacman >=0.8.0
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 33591
+ timestamp: 1636046429400
+- kind: conda
+ name: reproc
+ version: 14.2.4.post0
+ build: h10d778d_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/reproc-14.2.4.post0-h10d778d_1.conda
+ sha256: 41c7fb3ef17684c98c1d2c50d0eaba388beed400dbc4cc099a9f31a2819ef594
+ md5: d7c3258e871481be5bbaf28b4729e29f
+ license: MIT
+ license_family: MIT
+ size: 32403
+ timestamp: 1698242540515
+- kind: conda
+ name: reproc
+ version: 14.2.4.post0
+ build: h93a5062_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/reproc-14.2.4.post0-h93a5062_1.conda
+ sha256: e12534c909613b56c539eed6f4cd55da2eb03086435101fad79c383a9c3df527
+ md5: ef7ae6d7bb50c8c735551d825e1ea287
+ license: MIT
+ license_family: MIT
+ size: 32026
+ timestamp: 1698242638367
+- kind: conda
+ name: reproc
+ version: 14.2.4.post0
+ build: hd590300_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.4.post0-hd590300_1.conda
+ sha256: bb2e4e0ce93bc61bc7c03c4f66abcb8161b0a4f1c41b5156cf1e5e17892b05d8
+ md5: 82ca53502dfd5a64a80dee76dae14685
+ depends:
+ - libgcc-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 33928
+ timestamp: 1698242272153
+- kind: conda
+ name: reproc-cpp
+ version: 14.2.4.post0
+ build: h59595ed_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.4.post0-h59595ed_1.conda
+ sha256: 8f0c6852471c0f2b02ab21d7c2877e30fc7f4d7d8034ca90bd9fdc3a22277fe9
+ md5: 715e1d720ec1a03715bebd237972fca5
+ depends:
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ - reproc 14.2.4.post0 hd590300_1
+ license: MIT
+ license_family: MIT
+ size: 25379
+ timestamp: 1698242302911
+- kind: conda
+ name: reproc-cpp
+ version: 14.2.4.post0
+ build: h93d8f39_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/reproc-cpp-14.2.4.post0-h93d8f39_1.conda
+ sha256: dfdf987c7584d61a690a390872f89f968fb25ba44c76a9417f73e09bba1da3bc
+ md5: a32e95ada0ee860c91e87266700970c3
+ depends:
+ - __osx >=10.9
+ - libcxx >=16.0.6
+ - reproc 14.2.4.post0 h10d778d_1
+ license: MIT
+ license_family: MIT
+ size: 24313
+ timestamp: 1698242598504
+- kind: conda
+ name: reproc-cpp
+ version: 14.2.4.post0
+ build: h965bd2d_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/reproc-cpp-14.2.4.post0-h965bd2d_1.conda
+ sha256: 83736a55ff9cf3a54591aa44c3ee1181cd570c0a452b8d8a2ab113f3e0b0974b
+ md5: f81d00496e13ee828f84b3ef17e41346
+ depends:
+ - __osx >=10.9
+ - libcxx >=16.0.6
+ - reproc 14.2.4.post0 h93a5062_1
+ license: MIT
+ license_family: MIT
+ size: 24527
+ timestamp: 1698242706531
+- kind: conda
+ name: requests
+ version: 2.32.3
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda
+ sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc
+ md5: 5ede4753180c7a550a443c430dc8ab52
+ depends:
+ - certifi >=2017.4.17
+ - charset-normalizer >=2,<4
+ - idna >=2.5,<4
+ - python >=3.8
+ - urllib3 >=1.21.1,<3
+ constrains:
+ - chardet >=3.0.2,<6
+ license: Apache-2.0
+ license_family: APACHE
+ size: 58810
+ timestamp: 1717057174842
+- kind: conda
+ name: requests-cache
+ version: 1.2.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.1-pyhd8ed1ab_0.conda
+ sha256: 30104bfcb6a7dbb9bd9889568d81fc2e47d47aa30a27f18d4a80b0649d8ed636
+ md5: c6089540fed51a9a829aa19590fa925b
+ depends:
+ - attrs >=21.2
+ - cattrs >=22.2
+ - itsdangerous >=2.0
+ - platformdirs >=2.5
+ - python >=3.8
+ - pyyaml >=6.0.1
+ - requests >=2.22
+ - ujson >=5.4
+ - url-normalize >=1.4
+ - urllib3 >=1.25.5
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 50797
+ timestamp: 1718753425508
+- kind: conda
+ name: rich
+ version: 13.9.4
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda
+ sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8
+ md5: bcf8cc8924b5d20ead3d122130b8320b
+ depends:
+ - markdown-it-py >=2.2.0
+ - pygments >=2.13.0,<3.0.0
+ - python >=3.8
+ - typing_extensions >=4.0.0,<5.0.0
+ license: MIT
+ license_family: MIT
+ size: 185481
+ timestamp: 1730592349978
+- kind: conda
+ name: rich-click
+ version: 1.8.3
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.8.3-pyhd8ed1ab_0.conda
+ sha256: e83ebdc82e5787cb2dacd4380e0ca7c1ce4e7f356a0be0ccbac2ebcff1032efa
+ md5: ad6cdc745c76535e7cc56aab865b1fc5
+ depends:
+ - click >=7,<9
+ - python >=3.7
+ - rich >=10
+ license: MIT
+ license_family: MIT
+ size: 33837
+ timestamp: 1718026216838
+- kind: conda
+ name: rpds-py
+ version: 0.21.0
+ build: py312h0d0de52_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda
+ sha256: ff4c1d70c78085a2abb8f8fc1dc283a60eafe61e03c3367d7cbface6190fe7ab
+ md5: dae0ad51ccb74a37f0b64ed6e6f82840
+ depends:
+ - __osx >=10.13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __osx >=10.13
+ license: MIT
+ license_family: MIT
+ size: 303838
+ timestamp: 1730922939375
+- kind: conda
+ name: rpds-py
+ version: 0.21.0
+ build: py312h12e396e_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda
+ sha256: 6a2c3808b0922e453b450cc092f5e5da9d2466f48acce224da90432a94146c12
+ md5: 37f4ad7cb4214c799f32e5f411c6c69f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __glibc >=2.17
+ license: MIT
+ license_family: MIT
+ size: 336759
+ timestamp: 1730922756033
+- kind: conda
+ name: rpds-py
+ version: 0.21.0
+ build: py312hcd83bfe_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda
+ sha256: a3d885b49b03259ff7306855466933f9ba06e3f4c327cd0122e9a43b68910555
+ md5: 8ea53395d5403ae5ec1adabb1a74719a
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 295817
+ timestamp: 1730922974629
+- kind: conda
+ name: ruamel.yaml
+ version: 0.18.6
+ build: py312h41838bb_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h41838bb_0.conda
+ sha256: 27ab446d39a46f7db365265a48ce74929c672e14c86b1ce8955f59e2d92dff39
+ md5: 9db93e711729ec70dacdfa58bf970cfd
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - ruamel.yaml.clib >=0.1.2
+ license: MIT
+ license_family: MIT
+ size: 268460
+ timestamp: 1707298596313
+- kind: conda
+ name: ruamel.yaml
+ version: 0.18.6
+ build: py312h98912ed_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h98912ed_0.conda
+ sha256: 26856daba883254736b7f3767c08f445b5d010eebbf4fc7aa384ee80e24aa663
+ md5: a99a06a875138829ef65f44bbe2c30ca
+ depends:
+ - libgcc-ng >=12
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - ruamel.yaml.clib >=0.1.2
+ license: MIT
+ license_family: MIT
+ size: 268015
+ timestamp: 1707298336196
+- kind: conda
+ name: ruamel.yaml
+ version: 0.18.6
+ build: py312he37b823_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312he37b823_0.conda
+ sha256: 4a27b50445842e97a31e3f412816d4a0d576b4f1ee327b9a892a183ba5c60f6f
+ md5: cb9f9b4797001b2c52383f4007fa1f4b
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - ruamel.yaml.clib >=0.1.2
+ license: MIT
+ license_family: MIT
+ size: 268637
+ timestamp: 1707298502612
+- kind: conda
+ name: ruamel.yaml.clib
+ version: 0.2.8
+ build: py312h41838bb_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h41838bb_0.conda
+ sha256: c0a321d14505b3621d6301e1ed9bc0129b4c8b2812e7520040d2609aaeb07845
+ md5: a134bf1778eb7add92ea760e801dc245
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 118650
+ timestamp: 1707314908121
+- kind: conda
+ name: ruamel.yaml.clib
+ version: 0.2.8
+ build: py312h98912ed_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h98912ed_0.conda
+ sha256: 5965302881d8b1049291e3ba3912286cdc72cb82303230cbbf0a048c6f6dd7c1
+ md5: 05f31c2a79ba61df8d6d903ce4a4ce7b
+ depends:
+ - libgcc-ng >=12
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 135640
+ timestamp: 1707314642857
+- kind: conda
+ name: ruamel.yaml.clib
+ version: 0.2.8
+ build: py312he37b823_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312he37b823_0.conda
+ sha256: c3138824f484cca2804d22758c75965b578cd35b35243ff02e64da06bda03477
+ md5: 2fa02324046cfcb7a67fae30fd06a945
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 111221
+ timestamp: 1707315016121
+- kind: conda
+ name: setuptools
+ version: 73.0.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda
+ sha256: c9f5e110e3fe5a7c4cd5b9da445c05a1fae000b43ab3a97cb6a501f4267515fc
+ md5: f0b618d7673d1b2464f600b34d912f6f
+ depends:
+ - python >=3.8
+ license: MIT
+ license_family: MIT
+ size: 1460460
+ timestamp: 1725348602179
+- kind: conda
+ name: shellingham
+ version: 1.5.4
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+ sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb
+ md5: d08db09a552699ee9e7eec56b4eb3899
+ depends:
+ - python >=3.7
+ license: MIT
+ license_family: MIT
+ size: 14568
+ timestamp: 1698144516278
+- kind: conda
+ name: six
+ version: 1.16.0
+ build: pyh6c4a22f_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
+ sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6
+ md5: e5f25f8dbc060e9a8d912e432202afc2
+ depends:
+ - python
+ license: MIT
+ license_family: MIT
+ size: 14259
+ timestamp: 1620240338595
+- kind: conda
+ name: smmap
+ version: 5.0.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
+ sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16
+ md5: 62f26a3d1387acee31322208f0cfa3e0
+ depends:
+ - python >=3.5
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 22483
+ timestamp: 1634310465482
+- kind: conda
+ name: tabulate
+ version: 0.9.0
+ build: pyhd8ed1ab_1
+ build_number: 1
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
+ sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620
+ md5: 4759805cce2d914c38472f70bf4d8bcb
+ depends:
+ - python >=3.7
+ license: MIT
+ license_family: MIT
+ size: 35912
+ timestamp: 1665138565317
+- kind: conda
+ name: textual
+ version: 0.71.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/textual-0.71.0-pyhd8ed1ab_0.conda
+ sha256: f6e832c56204b5dec130741bfcad76196463ff75f98cea7301d6c72dfa566c96
+ md5: b9ccda60d7cb74bf9bd23a8713383d94
+ depends:
+ - markdown-it-py >=2.1.0
+ - python >=3.8.0,<4.0.0
+ - rich >=13.3.3
+ - typing-extensions >=4.4.0,<5.0.0
+ constrains:
+ - tree-sitter >=0.20.1,<0.21.0
+ - tree_sitter_languages =1.10.2
+ license: MIT
+ license_family: MIT
+ size: 388340
+ timestamp: 1719675039552
+- kind: conda
+ name: tk
+ version: 8.6.13
+ build: h1abcd95_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda
+ sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5
+ md5: bf830ba5afc507c6232d4ef0fb1a882d
+ depends:
+ - libzlib >=1.2.13,<2.0.0a0
+ license: TCL
+ license_family: BSD
+ size: 3270220
+ timestamp: 1699202389792
+- kind: conda
+ name: tk
+ version: 8.6.13
+ build: h5083fa2_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
+ sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8
+ md5: b50a57ba89c32b62428b71a875291c9b
+ depends:
+ - libzlib >=1.2.13,<2.0.0a0
+ license: TCL
+ license_family: BSD
+ size: 3145523
+ timestamp: 1699202432999
+- kind: conda
+ name: tk
+ version: 8.6.13
+ build: noxft_h4845f30_101
+ build_number: 101
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
+ sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e
+ md5: d453b98d9c83e71da0741bb0ff4d76bc
+ depends:
+ - libgcc-ng >=12
+ - libzlib >=1.2.13,<2.0.0a0
+ license: TCL
+ license_family: BSD
+ size: 3318875
+ timestamp: 1699202167581
+- kind: conda
+ name: tomli
+ version: 2.1.0
+ build: pyhff2d567_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda
+ sha256: 354b8a64d4f3311179d85aefc529ca201a36afc1af090d0010c46be7b79f9a47
+ md5: 3fa1089b4722df3a900135925f4519d9
+ depends:
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ size: 18741
+ timestamp: 1731426862834
+- kind: conda
+ name: tqdm
+ version: 4.66.5
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.5-pyhd8ed1ab_0.conda
+ sha256: f2384902cef72048b0e9bad5c03d7a843de02ba6bc8618a9ecab6ff81a131312
+ md5: c6e94fc2b2ec71ea33fe7c7da259acb4
+ depends:
+ - colorama
+ - python >=3.7
+ license: MPL-2.0 or MIT
+ size: 89519
+ timestamp: 1722737568509
+- kind: conda
+ name: trogon
+ version: 0.6.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/trogon-0.6.0-pyhd8ed1ab_0.conda
+ sha256: ac0516c083801c18795fcd1f6361a9453b88e53189666f894ab19834b5812dc5
+ md5: fa72e0757e478d620590ce4257a81d7e
+ depends:
+ - click >=8.0.0
+ - python >=3.7.0,<4.0.0
+ - textual >=0.26.0
+ license: MIT
+ license_family: MIT
+ size: 27559
+ timestamp: 1727974628468
+- kind: conda
+ name: truststore
+ version: 0.9.2
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/truststore-0.9.2-pyhd8ed1ab_0.conda
+ sha256: 04be82b30b57ac21b509e1dc6829ee9eb1b92c54366a64a256b0eedabfec1ac8
+ md5: f14e46d1bf271e748ff556d8b872e28a
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ size: 21086
+ timestamp: 1724771094952
+- kind: conda
+ name: typer
+ version: 0.13.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda
+ sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb
+ md5: 82a4704166144f27e9c83803bff5bf53
+ depends:
+ - python >=3.9
+ - typer-slim-standard 0.13.1 hd8ed1ab_0
+ license: MIT
+ license_family: MIT
+ size: 55352
+ timestamp: 1732084066966
+- kind: conda
+ name: typer-slim
+ version: 0.13.1
+ build: pyhff2d567_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda
+ sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1
+ md5: 85283fb942fa2604c3db03483027ced2
+ depends:
+ - click >=8.0.0
+ - python >=3.9
+ - typing_extensions >=3.7.4.3
+ constrains:
+ - shellingham >=1.3.0
+ - typer >=0.13.1,<0.13.2.0a0
+ - rich >=10.11.0
+ license: MIT
+ license_family: MIT
+ size: 43463
+ timestamp: 1732084053693
+- kind: conda
+ name: typer-slim-standard
+ version: 0.13.1
+ build: hd8ed1ab_0
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda
+ sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a
+ md5: a9bf95ed3c65bf936292d944bf3df36d
+ depends:
+ - rich
+ - shellingham
+ - typer-slim 0.13.1 pyhff2d567_0
+ license: MIT
+ license_family: MIT
+ size: 48744
+ timestamp: 1732084054211
+- kind: conda
+ name: typing-extensions
+ version: 4.12.2
+ build: hd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda
+ sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73
+ md5: 52d648bd608f5737b123f510bb5514b5
+ depends:
+ - typing_extensions 4.12.2 pyha770c72_0
+ license: PSF-2.0
+ license_family: PSF
+ size: 10097
+ timestamp: 1717802659025
+- kind: conda
+ name: typing_extensions
+ version: 4.12.2
+ build: pyha770c72_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda
+ sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb
+ md5: ebe6952715e1d5eb567eeebf25250fa7
+ depends:
+ - python >=3.8
+ license: PSF-2.0
+ license_family: PSF
+ size: 39888
+ timestamp: 1717802653893
+- kind: conda
+ name: tzdata
+ version: 2024a
+ build: h8827d51_1
+ build_number: 1
+ subdir: noarch
+ noarch: generic
+ url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda
+ sha256: 7d21c95f61319dba9209ca17d1935e6128af4235a67ee4e57a00908a1450081e
+ md5: 8bfdead4e0fff0383ae4c9c50d0531bd
+ license: LicenseRef-Public-Domain
+ size: 124164
+ timestamp: 1724736371498
+- kind: conda
+ name: ubiquerg
+ version: 0.8.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/ubiquerg-0.8.0-pyhd8ed1ab_0.conda
+ sha256: ad56b48194d59a640be34432b0acdebe6e5520a86f5e2d0eabab567fc4976d53
+ md5: 41408dc37271d5d0f99e2e10336cf40d
+ depends:
+ - python >=3.6
+ - veracitools
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 20698
+ timestamp: 1719492750373
+- kind: conda
+ name: uc-micro-py
+ version: 1.0.3
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_0.conda
+ sha256: 54293cd94da3a6b978b353eb7897555055d925ad0008bc73e85cca19e2587ed0
+ md5: 3b7fc78d7be7b450952aaa916fb78877
+ depends:
+ - python >=3.6
+ license: MIT
+ license_family: MIT
+ size: 11162
+ timestamp: 1707507514699
+- kind: conda
+ name: ujson
+ version: 5.10.0
+ build: py312h2ec8cdc_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/ujson-5.10.0-py312h2ec8cdc_1.conda
+ sha256: 2c4a907fa335fe7c1062a15704e54416ae2411db43fa523fb761b1d7e0195858
+ md5: 96226f62dddc63226472b7477d783967
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 51845
+ timestamp: 1724954533808
+- kind: conda
+ name: ujson
+ version: 5.10.0
+ build: py312h5861a67_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/ujson-5.10.0-py312h5861a67_1.conda
+ sha256: 46a3a88a39f50901a552876bd62e0ddfca28dace001b8987c19e7bbbc95e6f0e
+ md5: f1a05dfc4f626da6e6a3d29dc66dbec1
+ depends:
+ - __osx >=10.13
+ - libcxx >=17
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 59268
+ timestamp: 1724954584216
+- kind: conda
+ name: ujson
+ version: 5.10.0
+ build: py312hde4cb15_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ujson-5.10.0-py312hde4cb15_1.conda
+ sha256: 6bd2a9a6d63e45fa7418cbad01fe502b65a8a13da86630f420dd8993dc7c47dc
+ md5: e0f2dfba17ab64ec0724f821584b1ea3
+ depends:
+ - __osx >=11.0
+ - libcxx >=17
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 56734
+ timestamp: 1724954674979
+- kind: conda
+ name: ukkonen
+ version: 1.0.1
+ build: py312h6142ec9_5
+ build_number: 5
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda
+ sha256: 1e4452b4a12d8a69c237f14b876fbf0cdc456914170b49ba805779c749c31eca
+ md5: 2b485a809d1572cbe7f0ad9ee107e4b0
+ depends:
+ - __osx >=11.0
+ - cffi
+ - libcxx >=17
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 13605
+ timestamp: 1725784243533
+- kind: conda
+ name: ukkonen
+ version: 1.0.1
+ build: py312h68727a3_5
+ build_number: 5
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda
+ sha256: 9fb020083a7f4fee41f6ece0f4840f59739b3e249f157c8a407bb374ffb733b5
+ md5: f9664ee31aed96c85b7319ab0a693341
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cffi
+ - libgcc >=13
+ - libstdcxx >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 13904
+ timestamp: 1725784191021
+- kind: conda
+ name: ukkonen
+ version: 1.0.1
+ build: py312hc5c4d5f_5
+ build_number: 5
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda
+ sha256: f6433143294c1ca52410bf8bbca6029a04f2061588d32e6d2b67c7fd886bc4e0
+ md5: f270aa502d8817e9cb3eb33541f78418
+ depends:
+ - __osx >=10.13
+ - cffi
+ - libcxx >=17
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ size: 13031
+ timestamp: 1725784199719
+- kind: conda
+ name: url-normalize
+ version: 1.4.3
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/url-normalize-1.4.3-pyhd8ed1ab_0.tar.bz2
+ sha256: 118fa3e16771f895e95112f3139a216b73d8d916905c5b259ca893bd68bcf24a
+ md5: 7c4076e494f0efe76705154ac9302ba6
+ depends:
+ - python >=3.6
+ - six
+ license: MIT
+ license_family: MIT
+ size: 10172
+ timestamp: 1619201525069
+- kind: conda
+ name: urllib3
+ version: 2.2.2
+ build: pyhd8ed1ab_1
+ build_number: 1
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda
+ sha256: 00c47c602c03137e7396f904eccede8cc64cc6bad63ce1fc355125df8882a748
+ md5: e804c43f58255e977093a2298e442bb8
+ depends:
+ - brotli-python >=1.0.9
+ - h2 >=4,<5
+ - pysocks >=1.5.6,<2.0,!=1.5.7
+ - python >=3.8
+ - zstandard >=0.18.0
+ license: MIT
+ license_family: MIT
+ size: 95048
+ timestamp: 1719391384778
+- kind: conda
+ name: veracitools
+ version: 0.1.3
+ build: py_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/veracitools-0.1.3-py_0.tar.bz2
+ sha256: f2222d612da9a362b8ff13c8411faa8077dff54fa2e71813c341aa0823b41b24
+ md5: f2c8d44ea78cf639ab4810aedba43ab5
+ depends:
+ - pytest
+ - python
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 6108
+ timestamp: 1572717780817
+- kind: conda
+ name: virtualenv
+ version: 20.27.1
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda
+ sha256: 189b935224732267df10dc116bce0835bd76fcdb20c30f560591c92028d513b0
+ md5: dae21509d62aa7bf676279ced3edcb3f
+ depends:
+ - distlib <1,>=0.3.7
+ - filelock <4,>=3.12.2
+ - platformdirs <5,>=3.9.1
+ - python >=3.8
+ license: MIT
+ license_family: MIT
+ size: 2965442
+ timestamp: 1730204927840
+- kind: conda
+ name: wcwidth
+ version: 0.2.13
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda
+ sha256: b6cd2fee7e728e620ec736d8dfee29c6c9e2adbd4e695a31f1d8f834a83e57e3
+ md5: 68f0738df502a14213624b288c60c9ad
+ depends:
+ - python >=3.8
+ license: MIT
+ license_family: MIT
+ size: 32709
+ timestamp: 1704731373922
+- kind: conda
+ name: wrapt
+ version: 1.16.0
+ build: py312h024a12e_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda
+ sha256: 54a5d3d9e1b45022b28c5ca3ceaa7ec2db4a40968b2b556804becfdff98f4efe
+ md5: f97c9abfeb8292f5f8353607ca8a1127
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 59642
+ timestamp: 1724958200454
+- kind: conda
+ name: wrapt
+ version: 1.16.0
+ build: py312h66e93f0_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda
+ sha256: 3a15a399eb61a999f0f14b4d243acc14e2dff1ead92ef52fcff30c84be89b21c
+ md5: 2eebcffe80e2a7bb2f0a77e621a7f124
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 62624
+ timestamp: 1724958046744
+- kind: conda
+ name: wrapt
+ version: 1.16.0
+ build: py312hb553811_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.16.0-py312hb553811_1.conda
+ sha256: 31e3fdd934cdb8ac47764d1daf13edddd7844a17b229e8ef438fc16e06576b00
+ md5: 6385725172f8712d54b5af6b86bf8236
+ depends:
+ - __osx >=10.13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 58290
+ timestamp: 1724958107514
+- kind: conda
+ name: xorg-fixesproto
+ version: '5.0'
+ build: h7f98852_1002
+ build_number: 1002
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-fixesproto-5.0-h7f98852_1002.tar.bz2
+ sha256: 5d2af1b40f82128221bace9466565eca87c97726bb80bbfcd03871813f3e1876
+ md5: 65ad6e1eb4aed2b0611855aff05e04f6
+ depends:
+ - libgcc-ng >=9.3.0
+ - xorg-xextproto
+ license: MIT
+ license_family: MIT
+ size: 9122
+ timestamp: 1617479697350
+- kind: conda
+ name: xorg-inputproto
+ version: 2.3.2
+ build: h7f98852_1002
+ build_number: 1002
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-inputproto-2.3.2-h7f98852_1002.tar.bz2
+ sha256: 6c8c2803de0f643f8bad16ece3f9a7259e4a49247543239c182d66d5e3a129a7
+ md5: bcd1b3396ec6960cbc1d2855a9e60b2b
+ depends:
+ - libgcc-ng >=9.3.0
+ license: MIT
+ license_family: MIT
+ size: 19602
+ timestamp: 1610027678228
+- kind: conda
+ name: xorg-kbproto
+ version: 1.0.7
+ build: h7f98852_1002
+ build_number: 1002
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2
+ sha256: e90b0a6a5d41776f11add74aa030f789faf4efd3875c31964d6f9cfa63a10dd1
+ md5: 4b230e8381279d76131116660f5a241a
+ depends:
+ - libgcc-ng >=9.3.0
+ license: MIT
+ license_family: MIT
+ size: 27338
+ timestamp: 1610027759842
+- kind: conda
+ name: xorg-libice
+ version: 1.1.1
+ build: hd590300_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda
+ sha256: 5aa9b3682285bb2bf1a8adc064cb63aff76ef9178769740d855abb42b0d24236
+ md5: b462a33c0be1421532f28bfe8f4a7514
+ depends:
+ - libgcc-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 58469
+ timestamp: 1685307573114
+- kind: conda
+ name: xorg-libsm
+ version: 1.2.4
+ build: h7391055_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda
+ sha256: 089ad5f0453c604e18985480218a84b27009e9e6de9a0fa5f4a20b8778ede1f1
+ md5: 93ee23f12bc2e684548181256edd2cf6
+ depends:
+ - libgcc-ng >=12
+ - libuuid >=2.38.1,<3.0a0
+ - xorg-libice >=1.1.1,<2.0a0
+ license: MIT
+ license_family: MIT
+ size: 27433
+ timestamp: 1685453649160
+- kind: conda
+ name: xorg-libx11
+ version: 1.8.10
+ build: h4f16b4b_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda
+ sha256: c4650634607864630fb03696474a0535f6fce5fda7d81a6462346e071b53dfa7
+ md5: 0b666058a179b744a622d0a4a0c56353
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libxcb >=1.17.0,<2.0a0
+ - xorg-xorgproto
+ license: MIT
+ license_family: MIT
+ size: 838308
+ timestamp: 1727356837875
+- kind: conda
+ name: xorg-libxau
+ version: 1.0.11
+ build: h00291cd_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h00291cd_1.conda
+ sha256: 96177823ec38336b0f4b7e7c2413da61f8d008d800cc4a5b8ad21f9128fb7de0
+ md5: c6cc91149a08402bbb313c5dc0142567
+ depends:
+ - __osx >=10.13
+ license: MIT
+ license_family: MIT
+ size: 13176
+ timestamp: 1727034772877
+- kind: conda
+ name: xorg-libxau
+ version: 1.0.11
+ build: hd590300_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda
+ sha256: 309751371d525ce50af7c87811b435c176915239fc9e132b99a25d5e1703f2d4
+ md5: 2c80dc38fface310c9bd81b17037fee5
+ depends:
+ - libgcc-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 14468
+ timestamp: 1684637984591
+- kind: conda
+ name: xorg-libxau
+ version: 1.0.11
+ build: hd74edd7_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda
+ sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289
+ md5: 7e0125f8fb619620a0011dc9297e2493
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 13515
+ timestamp: 1727034783560
+- kind: conda
+ name: xorg-libxdmcp
+ version: 1.1.3
+ build: h7f98852_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2
+ sha256: 4df7c5ee11b8686d3453e7f3f4aa20ceef441262b49860733066c52cfd0e4a77
+ md5: be93aabceefa2fac576e971aef407908
+ depends:
+ - libgcc-ng >=9.3.0
+ license: MIT
+ license_family: MIT
+ size: 19126
+ timestamp: 1610071769228
+- kind: conda
+ name: xorg-libxdmcp
+ version: 1.1.5
+ build: h00291cd_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda
+ sha256: bb4d1ef9cafef535494adf9296130b6193b3a44375883185b5167de03eb1ac7f
+ md5: 9f438e1b6f4e73fd9e6d78bfe7c36743
+ depends:
+ - __osx >=10.13
+ license: MIT
+ license_family: MIT
+ size: 18465
+ timestamp: 1727794980957
+- kind: conda
+ name: xorg-libxdmcp
+ version: 1.1.5
+ build: hd74edd7_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda
+ sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8
+ md5: 77c447f48cab5d3a15ac224edb86a968
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 18487
+ timestamp: 1727795205022
+- kind: conda
+ name: xorg-libxext
+ version: 1.3.4
+ build: h0b41bf4_2
+ build_number: 2
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda
+ sha256: 73e5cfbdff41ef8a844441f884412aa5a585a0f0632ec901da035a03e1fe1249
+ md5: 82b6df12252e6f32402b96dacc656fec
+ depends:
+ - libgcc-ng >=12
+ - xorg-libx11 >=1.7.2,<2.0a0
+ - xorg-xextproto
+ license: MIT
+ license_family: MIT
+ size: 50143
+ timestamp: 1677036907815
+- kind: conda
+ name: xorg-libxfixes
+ version: 5.0.3
+ build: h7f98852_1004
+ build_number: 1004
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-5.0.3-h7f98852_1004.tar.bz2
+ sha256: 1e426a1abb774ef1dcf741945ed5c42ad12ea2dc7aeed7682d293879c3e1e4c3
+ md5: e9a21aa4d5e3e5f1aed71e8cefd46b6a
+ depends:
+ - libgcc-ng >=9.3.0
+ - xorg-fixesproto
+ - xorg-libx11 >=1.7.0,<2.0a0
+ license: MIT
+ license_family: MIT
+ size: 18145
+ timestamp: 1617717802636
+- kind: conda
+ name: xorg-libxi
+ version: 1.7.10
+ build: h4bc722e_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.7.10-h4bc722e_1.conda
+ sha256: e1416eb435e3d903bc658e3c637f0e87efd2dca290fe70daf29738b3a3d1f8ff
+ md5: 749baebe7e2ff3360630e069175e528b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=12
+ - xorg-inputproto
+ - xorg-libx11 >=1.8.9,<2.0a0
+ - xorg-libxext 1.3.*
+ - xorg-libxext >=1.3.4,<2.0a0
+ - xorg-libxfixes 5.0.*
+ - xorg-xextproto >=7.3.0,<8.0a0
+ license: MIT
+ license_family: MIT
+ size: 46794
+ timestamp: 1722108216651
+- kind: conda
+ name: xorg-libxrender
+ version: 0.9.11
+ build: hd590300_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda
+ sha256: 26da4d1911473c965c32ce2b4ff7572349719eaacb88a066db8d968a4132c3f7
+ md5: ed67c36f215b310412b2af935bf3e530
+ depends:
+ - libgcc-ng >=12
+ - xorg-libx11 >=1.8.6,<2.0a0
+ - xorg-renderproto
+ license: MIT
+ license_family: MIT
+ size: 37770
+ timestamp: 1688300707994
+- kind: conda
+ name: xorg-libxt
+ version: 1.3.0
+ build: hd590300_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.0-hd590300_1.conda
+ sha256: e7648d1efe2e858c4bc63ccf4a637c841dc971b37ded85a01be97a5e240fecfa
+ md5: ae92aab42726eb29d16488924f7312cb
+ depends:
+ - libgcc-ng >=12
+ - xorg-kbproto
+ - xorg-libice >=1.1.1,<2.0a0
+ - xorg-libsm >=1.2.4,<2.0a0
+ - xorg-libx11 >=1.8.6,<2.0a0
+ - xorg-xproto
+ license: MIT
+ license_family: MIT
+ size: 379256
+ timestamp: 1690288540492
+- kind: conda
+ name: xorg-libxtst
+ version: 1.2.5
+ build: h4bc722e_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h4bc722e_0.conda
+ sha256: 0139b52c3cbce57bfd1d120c41637bc239430faff4aa0445f58de0adf4c4b976
+ md5: 185159d666308204eca00295599b0a5c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=12
+ - xorg-inputproto
+ - xorg-libx11 >=1.8.9,<2.0a0
+ - xorg-libxext 1.3.*
+ - xorg-libxext >=1.3.4,<2.0a0
+ - xorg-libxi 1.7.*
+ - xorg-libxi >=1.7.10,<2.0a0
+ - xorg-recordproto
+ license: MIT
+ license_family: MIT
+ size: 32931
+ timestamp: 1722575571554
+- kind: conda
+ name: xorg-recordproto
+ version: 1.14.2
+ build: h7f98852_1002
+ build_number: 1002
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-recordproto-1.14.2-h7f98852_1002.tar.bz2
+ sha256: 4b91d48fed368c83eafd03891ebfd5bae0a03adc087ebea8a680ae22da99a85f
+ md5: 2f835e6c386e73c6faaddfe9eda67e98
+ depends:
+ - libgcc-ng >=9.3.0
+ license: MIT
+ license_family: MIT
+ size: 8014
+ timestamp: 1621340029114
+- kind: conda
+ name: xorg-renderproto
+ version: 0.11.1
+ build: h7f98852_1002
+ build_number: 1002
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2
+ sha256: 38942930f233d1898594dd9edf4b0c0786f3dbc12065a0c308634c37fd936034
+ md5: 06feff3d2634e3097ce2fe681474b534
+ depends:
+ - libgcc-ng >=9.3.0
+ license: MIT
+ license_family: MIT
+ size: 9621
+ timestamp: 1614866326326
+- kind: conda
+ name: xorg-xextproto
+ version: 7.3.0
+ build: h0b41bf4_1003
+ build_number: 1003
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda
+ sha256: b8dda3b560e8a7830fe23be1c58cc41f407b2e20ae2f3b6901eb5842ba62b743
+ md5: bce9f945da8ad2ae9b1d7165a64d0f87
+ depends:
+ - libgcc-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 30270
+ timestamp: 1677036833037
+- kind: conda
+ name: xorg-xorgproto
+ version: '2024.1'
+ build: hb9d3cd8_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda
+ sha256: 1316680be6edddee0156b86ec1102fc8286f51c1a5440366ed1db596a2dc3731
+ md5: 7c21106b851ec72c037b162c216d8f05
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: MIT
+ license_family: MIT
+ size: 565425
+ timestamp: 1726846388217
+- kind: conda
+ name: xorg-xproto
+ version: 7.0.31
+ build: h7f98852_1007
+ build_number: 1007
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2
+ sha256: f197bb742a17c78234c24605ad1fe2d88b1d25f332b75d73e5ba8cf8fbc2a10d
+ md5: b4a4381d54784606820704f7b5f05a15
+ depends:
+ - libgcc-ng >=9.3.0
+ license: MIT
+ license_family: MIT
+ size: 74922
+ timestamp: 1607291557628
+- kind: conda
+ name: xz
+ version: 5.2.6
+ build: h166bdaf_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2
+ sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162
+ md5: 2161070d867d1b1204ea749c8eec4ef0
+ depends:
+ - libgcc-ng >=12
+ license: LGPL-2.1 and GPL-2.0
+ size: 418368
+ timestamp: 1660346797927
+- kind: conda
+ name: xz
+ version: 5.2.6
+ build: h57fd34a_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2
+ sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec
+ md5: 39c6b54e94014701dd157f4f576ed211
+ license: LGPL-2.1 and GPL-2.0
+ size: 235693
+ timestamp: 1660346961024
+- kind: conda
+ name: xz
+ version: 5.2.6
+ build: h775f41a_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2
+ sha256: eb09823f34cc2dd663c0ec4ab13f246f45dcd52e5b8c47b9864361de5204a1c8
+ md5: a72f9d4ea13d55d745ff1ed594747f10
+ license: LGPL-2.1 and GPL-2.0
+ size: 238119
+ timestamp: 1660346964847
+- kind: conda
+ name: yacman
+ version: 0.9.3
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/yacman-0.9.3-pyhd8ed1ab_0.conda
+ sha256: 3d7ea83e66e571422a9214a99f57fb67b4cc918f858521155f49d74b95ea0799
+ md5: 6ceb3db62ea950288d0f435a5d42f599
+ depends:
+ - attmap >=0.12.9
+ - jsonschema >=3.2.0
+ - oyaml
+ - python >=3.6
+ - pyyaml >=3.13
+ - ubiquerg >=0.6.1
+ license: BSD-2-Clause
+ license_family: BSD
+ size: 22551
+ timestamp: 1706835585893
+- kind: conda
+ name: yaml
+ version: 0.2.5
+ build: h0d85af4_2
+ build_number: 2
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148
+ md5: d7e08fcf8259d742156188e8762b4d20
+ license: MIT
+ license_family: MIT
+ size: 84237
+ timestamp: 1641347062780
+- kind: conda
+ name: yaml
+ version: 0.2.5
+ build: h3422bc3_2
+ build_number: 2
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
+ sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7
+ md5: 4bb3f014845110883a3c5ee811fd84b4
+ license: MIT
+ license_family: MIT
+ size: 88016
+ timestamp: 1641347076660
+- kind: conda
+ name: yaml
+ version: 0.2.5
+ build: h7f98852_2
+ build_number: 2
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
+ sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535
+ md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae
+ depends:
+ - libgcc-ng >=9.4.0
+ license: MIT
+ license_family: MIT
+ size: 89141
+ timestamp: 1641346969816
+- kind: conda
+ name: yaml-cpp
+ version: 0.8.0
+ build: h13dd4ca_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-cpp-0.8.0-h13dd4ca_0.conda
+ sha256: e65a52fb1c9821ba3a7a670d650314f8ff983865e77ba9f69f74e0906844943d
+ md5: e783a232972a5c7dca549111e63a78b2
+ depends:
+ - libcxx >=15.0.7
+ license: MIT
+ license_family: MIT
+ size: 130329
+ timestamp: 1695712959746
+- kind: conda
+ name: yaml-cpp
+ version: 0.8.0
+ build: h59595ed_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda
+ sha256: a65bb5284369e548a15a44b14baf1f7ac34fa4718d7d987dd29032caba2ecf20
+ md5: 965eaacd7c18eb8361fd12bb9e7a57d7
+ depends:
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 204867
+ timestamp: 1695710312002
+- kind: conda
+ name: yaml-cpp
+ version: 0.8.0
+ build: he965462_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/yaml-cpp-0.8.0-he965462_0.conda
+ sha256: 6e5e4afa1011a1ad5a734e895b8d2b2ad0fbc9ef6538aac8f852b33b2ebe44a8
+ md5: 1bb3addc859ed1338370da6e2996ef47
+ depends:
+ - libcxx >=15.0.7
+ license: MIT
+ license_family: MIT
+ size: 130328
+ timestamp: 1695710502498
+- kind: conda
+ name: zipp
+ version: 3.21.0
+ build: pyhd8ed1ab_0
+ subdir: noarch
+ noarch: python
+ url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda
+ sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec
+ md5: fee389bf8a4843bd7a2248ce11b7f188
+ depends:
+ - python >=3.8
+ license: MIT
+ license_family: MIT
+ size: 21702
+ timestamp: 1731262194278
+- kind: conda
+ name: zlib
+ version: 1.3.1
+ build: h4ab18f5_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda
+ sha256: cee16ab07a11303de721915f0a269e8c7a54a5c834aa52f74b1cc3a59000ade8
+ md5: 9653f1bf3766164d0e65fa723cabbc54
+ depends:
+ - libgcc-ng >=12
+ - libzlib 1.3.1 h4ab18f5_1
+ license: Zlib
+ license_family: Other
+ size: 93004
+ timestamp: 1716874213487
+- kind: conda
+ name: zstandard
+ version: 0.23.0
+ build: py312h15fbf35_1
+ build_number: 1
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda
+ sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb
+ md5: a4cde595509a7ad9c13b1a3809bcfe51
+ depends:
+ - __osx >=11.0
+ - cffi >=1.11
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - zstd >=1.5.6,<1.5.7.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 330788
+ timestamp: 1725305806565
+- kind: conda
+ name: zstandard
+ version: 0.23.0
+ build: py312h7122b0e_1
+ build_number: 1
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda
+ sha256: 2685dde42478fae0780fba5d1f8a06896a676ae105f215d32c9f9e76f3c6d8fd
+ md5: bd132ba98f3fc0a6067f355f8efe4cb6
+ depends:
+ - __osx >=10.13
+ - cffi >=1.11
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - zstd >=1.5.6,<1.5.7.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 410873
+ timestamp: 1725305688706
+- kind: conda
+ name: zstandard
+ version: 0.23.0
+ build: py312hef9b889_1
+ build_number: 1
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda
+ sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b
+ md5: 8b7069e9792ee4e5b4919a7a306d2e67
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cffi >=1.11
+ - libgcc >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - zstd >=1.5.6,<1.5.7.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 419552
+ timestamp: 1725305670210
+- kind: conda
+ name: zstd
+ version: 1.5.6
+ build: h915ae27_0
+ subdir: osx-64
+ url: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda
+ sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96
+ md5: 4cb2cd56f039b129bb0e491c1164167e
+ depends:
+ - __osx >=10.9
+ - libzlib >=1.2.13,<2.0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 498900
+ timestamp: 1714723303098
+- kind: conda
+ name: zstd
+ version: 1.5.6
+ build: ha6fb4c9_0
+ subdir: linux-64
+ url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda
+ sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b
+ md5: 4d056880988120e29d75bfff282e0f45
+ depends:
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ - libzlib >=1.2.13,<2.0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 554846
+ timestamp: 1714722996770
+- kind: conda
+ name: zstd
+ version: 1.5.6
+ build: hb46c0d2_0
+ subdir: osx-arm64
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda
+ sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09
+ md5: d96942c06c3e84bfcc5efb038724a7fd
+ depends:
+ - __osx >=11.0
+ - libzlib >=1.2.13,<2.0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ size: 405089
+ timestamp: 1714723101397
diff --git a/pixi.toml b/pixi.toml
new file mode 100644
index 00000000..cb51f924
--- /dev/null
+++ b/pixi.toml
@@ -0,0 +1,27 @@
+[project]
+name = "Earth-Biogenome-Project-pilot"
+version = "0.1.0"
+description = "Add a short description here"
+authors = ["Mahesh Binzer-Panchal "]
+channels = ["conda-forge", "bioconda"]
+platforms = ["linux-64", "osx-64", "osx-arm64"]
+
+[tasks]
+# Run Nextflow directly
+test-docker = "nextflow run main.nf -profile docker,test"
+test-singularity = "nextflow run main.nf -profile singularity,docker"
+dev = "nextflow run main.nf -profile docker,test,debug"
+# Run nf-tests
+nftest-docker = "nf-test test tests/main.nf.test"
+nftest-singularity = "nf-test test tests/main.nf.test --profile singularity"
+# Clean up
+clean-unused = "nextflow clean -f -before $(nextflow log -q | tail -n 1) && find work/ -type d -empty -delete"
+clean-nf = "rm -rf .nextflow* work/"
+clean-results = "rm -rf results/"
+clean-nftest = "rm -rf .nf-test/"
+clean-all = { depends-on = [ "clean-nf", "clean-results", "clean-nftest" ] }
+
+[dependencies]
+nextflow = ">=24.4.4,<24.5"
+mamba = ">=1.5.10,<1.6"
+nf-core = ">=3.0.2,<3.1"
diff --git a/subworkflows/local/assemble/main.nf b/subworkflows/local/assemble/main.nf
index 2dd94e01..d73ecdf5 100644
--- a/subworkflows/local/assemble/main.nf
+++ b/subworkflows/local/assemble/main.nf
@@ -10,8 +10,10 @@ workflow ASSEMBLE {
// TODO: Make strategy check
ASSEMBLE_HIFI( hifi_reads )
ch_raw_assemblies = ASSEMBLE_HIFI.out.assemblies
+ ch_versions = ch_versions.mix( ASSEMBLE_HIFI.out.versions )
emit:
raw_assemblies = ch_raw_assemblies
- versions = ch_versions
+ versions = ch_versions
+ logs = ASSEMBLE_HIFI.out.logs
}
\ No newline at end of file
diff --git a/subworkflows/local/assemble_hifi/main.nf b/subworkflows/local/assemble_hifi/main.nf
index aa0607a4..97ad2514 100644
--- a/subworkflows/local/assemble_hifi/main.nf
+++ b/subworkflows/local/assemble_hifi/main.nf
@@ -51,38 +51,42 @@ workflow ASSEMBLE_HIFI {
[] // SAK instructions
)
- gfa_ch = params.use_phased ?
- HIFIASM.out.paternal_contigs
- .join( HIFIASM.out.maternal_contigs )
- .map { meta, pgfa, mgfa -> [ meta, [ pgfa, mgfa ] ] } :
- HIFIASM.out.processed_contigs
- assemblies_ch = GFATOOLS_GFA2FA.out.fasta.groupTuple( sort: { it.name } )
- .join( gfa_ch )
- .map { meta, fasta, gfa ->
- [ meta, meta.assembly + (
- params.use_phased ?
- [
- pri_fasta: fasta[0],
- alt_fasta: fasta[1],
- pri_gfa: gfa[0],
- alt_gfa: gfa[1]
- ] :
- [
- pri_fasta: fasta[0],
- alt_fasta: null,
- pri_gfa: gfa,
- alt_gfa: null
- ]
- ) ]
- }
- .dump( tag: "Assemblies: Pre-purge", pretty: true )
+ gfa_ch = params.use_phased ?
+ HIFIASM.out.paternal_contigs
+ .join( HIFIASM.out.maternal_contigs )
+ .map { meta, pgfa, mgfa -> [ meta, [ pgfa, mgfa ] ] } :
+ HIFIASM.out.processed_contigs
+ assemblies_ch = GFATOOLS_GFA2FA.out.fasta.groupTuple( sort: { it.name } )
+ .join( gfa_ch )
+ .map { meta, fasta, gfa ->
+ [ meta, meta.assembly + (
+ params.use_phased ?
+ [
+ pri_fasta: fasta[0],
+ alt_fasta: fasta[1],
+ pri_gfa: gfa[0],
+ alt_gfa: gfa[1]
+ ] :
+ [
+ pri_fasta: fasta[0],
+ alt_fasta: null,
+ pri_gfa: gfa,
+ alt_gfa: null
+ ]
+ ) ]
+ }
+ .dump( tag: "Assemblies: Pre-purge", pretty: true )
+ HIFIASM.out.log
+ .mix( GFASTATS.out.assembly_summary )
+ .map { meta, log -> log }
+ .set { logs }
versions_ch = HIFIASM.out.versions.first()
.mix( GFASTATS.out.versions.first() )
.mix( GFATOOLS_GFA2FA.out.versions.first() )
emit:
assemblies = assemblies_ch
+ logs
versions = versions_ch
-
}
\ No newline at end of file
diff --git a/subworkflows/local/assembly_report/main.nf b/subworkflows/local/assembly_report/main.nf
index 1e91184b..d992c64e 100644
--- a/subworkflows/local/assembly_report/main.nf
+++ b/subworkflows/local/assembly_report/main.nf
@@ -4,21 +4,21 @@ include { REPORT_GENOMETRAITS } from "$projectDir/modules/local/report/ge
include { REPORT_SOFTWAREVERSIONS } from "$projectDir/modules/local/report/softwareversions"
// include { QUARTO as QUARTO_DTOL } from "$projectDir/modules/local/quarto"
// include { QUARTO as QUARTO_GENESCOPE } from "$projectDir/modules/local/quarto"
-include { QUARTO } from "$projectDir/modules/local/quarto"
+include { QUARTO_NOTEBOOK } from "$projectDir/modules/local/quarto/notebook/main.nf"
// include { MULTIQC as MULTIQC_FULL } from "$projectDir/modules/nf-core/multiqc/main"
// include { MULTIQC as MULTIQC_SUMMARY } from "$projectDir/modules/nf-core/multiqc/main"
-include { MULTIQC } from "$projectDir/modules/nf-core/multiqc/main"
+// include { MULTIQC } from "$projectDir/modules/nf-core/multiqc/main"
workflow ASSEMBLY_REPORT {
take:
- meta
- logs
- quarto_files // [ meta, notebook, files ]
- versions
+ notebook // Channel: [ meta:Map, notebook:Path ]
+ logs // Channel: Path
+ versions // Channel: Path
+ executed_steps // Object: Map
main:
// DTOL table
- REPORT_DTOL( TOL_SEARCH( meta.map{ meta -> meta.sample.taxid } ).json )
+ REPORT_DTOL( TOL_SEARCH( notebook.map{ meta, notebook -> meta.sample.taxid } ).json )
// Genome traits table
// Expected vs Observed
@@ -26,10 +26,10 @@ workflow ASSEMBLY_REPORT {
// Haploid Number // GOAT vs HiC
// Ploidy // GOAT vs HiC
// Sample Sex // GOAT vs HiC
- REPORT_GENOMETRAITS( meta )
+ REPORT_GENOMETRAITS( notebook.map{ meta, notebook -> meta } )
// MultiQC panels from Quarto
- QUARTO( quarto_files )
+ // QUARTO( quarto_files )
// Data profile
// Input
// GenomeScope jsons // plots?
@@ -52,16 +52,23 @@ workflow ASSEMBLY_REPORT {
REPORT_GENOMETRAITS.out.tsv,
REPORT_SOFTWAREVERSIONS(
versions
- .mix( QUARTO.out.versions.first() )
.collect()
).yml,
- QUARTO.out.html
)
- MULTIQC(
+
+ QUARTO_NOTEBOOK(
+ notebook.collect(),
mqc_files.collect().dump(tag:'MultiQC'),
- file("$projectDir/configs/multiqc_summary_report_config.yml", checkIfExists: true),
- params.multiqc.summary_report_extra_config ? file(params.multiqc.summary_report_extra_config, checkIfExists: true) : [],
- []
+ Channel.value(executed_steps.collect{ k, v -> "$k: ${v}" }.join('\n')).collectFile(),
)
+ // MULTIQC(
+ // mqc_files.collect().dump(tag:'MultiQC'),
+ // file("$projectDir/configs/multiqc_summary_report_config.yml", checkIfExists: true),
+ // params.multiqc.summary_report_extra_config ? file(params.multiqc.summary_report_extra_config, checkIfExists: true) : [],
+ // []
+ // )
+
+ emit:
+ report = QUARTO_NOTEBOOK.out.html
}
\ No newline at end of file
diff --git a/subworkflows/local/build_fastk_database/main.nf b/subworkflows/local/build_fastk_database/main.nf
index 677c9394..b0595ff4 100644
--- a/subworkflows/local/build_fastk_database/main.nf
+++ b/subworkflows/local/build_fastk_database/main.nf
@@ -8,10 +8,12 @@ workflow BUILD_FASTK_DATABASE {
main:
FASTK_FASTK ( fastx_data )
- fkdb_ch = FASTK_FASTK.out.hist.groupTuple()
- .join( FASTK_FASTK.out.ktab.groupTuple(), remainder: true )
- .join( FASTK_FASTK.out.prof.groupTuple(), remainder: true )
- .map { meta, hist, ktab, prof -> [meta.findAll { it.key != 'single_end' } , hist, ktab ? ktab.flatten() : [] , prof ? prof.flatten() : [] ] }
+ fkdb_ch = FASTK_FASTK.out.hist
+ .join( FASTK_FASTK.out.ktab, remainder: true )
+ .join( FASTK_FASTK.out.prof, remainder: true )
+ .map { meta, hist, ktab, prof -> [ meta.subMap(meta.keySet()-['single_end', 'pair_id'] ) , hist, ktab , prof ] }
+ .groupTuple()
+ .map { meta, hist, ktab, prof -> [ meta , hist, ktab.head() ? ktab.flatten() : [] , prof.head() ? prof.flatten() : [] ] }
.branch { meta, hist, ktab, prof ->
single_hist: hist.size() == 1
multi_hist : hist.size() > 1
diff --git a/subworkflows/local/compare_assemblies/main.nf b/subworkflows/local/compare_assemblies/main.nf
index 8cb38a43..e08509b3 100644
--- a/subworkflows/local/compare_assemblies/main.nf
+++ b/subworkflows/local/compare_assemblies/main.nf
@@ -15,7 +15,7 @@ workflow COMPARE_ASSEMBLIES {
)
versions_ch = QUAST.out.versions
QUAST.out.tsv
- .map { it[1] } // Remove meta
+ .map { meta, tsv -> tsv }
.set { logs }
emit:
diff --git a/subworkflows/local/compare_libraries/main.nf b/subworkflows/local/compare_libraries/main.nf
index 6a98f8b6..982f0e6e 100644
--- a/subworkflows/local/compare_libraries/main.nf
+++ b/subworkflows/local/compare_libraries/main.nf
@@ -10,6 +10,6 @@ workflow COMPARE_LIBRARIES {
versions_ch = MERQURYFK_KATCOMP.out.versions.first()
emit:
- versions = versions_ch
-
+ versions = versions_ch
+ logs = MERQURYFK_KATCOMP.out.stacked_png.map{ meta, img -> img }
}
\ No newline at end of file
diff --git a/subworkflows/local/decontaminate/main.nf b/subworkflows/local/decontaminate/main.nf
index 170a9947..b2954545 100644
--- a/subworkflows/local/decontaminate/main.nf
+++ b/subworkflows/local/decontaminate/main.nf
@@ -28,7 +28,8 @@ workflow DECONTAMINATE {
)
ch_cleaned_assemblies = constructAssemblyRecord(
FCSGX_CLEAN.out.clean_fasta
- .map { meta, asm -> [ meta.subMap(meta.keySet()-['haplotype']), asm ] }
+ .map { meta, asm -> [ meta.subMap(meta.keySet()-['haplotype']), asm ] },
+ true
)
emit:
diff --git a/subworkflows/local/evaluate_assembly/main.nf b/subworkflows/local/evaluate_assembly/main.nf
index 0eb43db0..bca512e7 100644
--- a/subworkflows/local/evaluate_assembly/main.nf
+++ b/subworkflows/local/evaluate_assembly/main.nf
@@ -2,7 +2,7 @@ include { combineByMetaKeys } from "$projectDir/modules/local/functions"
include { getEachAssembly } from "$projectDir/modules/local/functions"
include { getPrimaryAssembly } from "$projectDir/modules/local/functions"
include { BUSCO } from "$projectDir/modules/nf-core/busco/main"
-include { MERQURYFK_MERQURYFK } from "$projectDir/modules/local/merquryfk/merquryfk"
+include { MERQURYFK_MERQURYFK } from "$projectDir/modules/nf-core/merquryfk/merquryfk"
include { MERQURY } from "$projectDir/modules/nf-core/merqury/main"
// include { INSPECTOR } from "$projectDir/modules/local/inspector/inspector"
@@ -22,7 +22,14 @@ workflow EVALUATE_ASSEMBLY {
getEachAssembly(assembly_ch),
keySet: ['id','sample'],
meta: 'rhs'
- ) // [ meta, hist, ktab, assembly ]
+ ) // TODO: Change the function so we don't need the map
+ .map{ meta, hist, ktab, assembly ->
+ assembly instanceof Path ?
+ tuple(meta, hist, ktab, assembly, []) :
+ tuple(meta, hist, ktab, assembly.head(), assembly.last())
+ }, // [ meta, hist, ktab, assembly ]
+ [],
+ [],
)
MERQURY (
@@ -58,9 +65,21 @@ workflow EVALUATE_ASSEMBLY {
[]
)
- // TODO: Add Merqury stats to logs
BUSCO.out.short_summaries_txt
- .map { it[1] } // Remove meta
+ .mix(
+ MERQURYFK_MERQURYFK.out.stats,
+ MERQURYFK_MERQURYFK.out.qv,
+ // MERQURYFK_MERQURYFK.out.assembly_qv, // Contig names are missing in first column
+ MERQURYFK_MERQURYFK.out.full_spectra_cn_st.join(
+ MERQURYFK_MERQURYFK.out.part_spectra_cn_st, remainder: true
+ ).map { meta, full, part -> full ? tuple(meta, full): tuple(meta, part) },
+ MERQURYFK_MERQURYFK.out.spectra_asm_st,
+ MERQURYFK_MERQURYFK.out.false_duplications,
+ MERQURY.out.scaffold_qv,
+ MERQURY.out.spectra_cn_st_png,
+ MERQURY.out.spectra_asm_st_png,
+ )
+ .map { meta, file -> file }
.set { logs }
MERQURYFK_MERQURYFK.out.versions.first().mix(
MERQURY.out.versions.first(),
diff --git a/subworkflows/local/genome_properties/main.nf b/subworkflows/local/genome_properties/main.nf
index cb0e598a..1215bd25 100644
--- a/subworkflows/local/genome_properties/main.nf
+++ b/subworkflows/local/genome_properties/main.nf
@@ -20,23 +20,21 @@ workflow GENOME_PROPERTIES {
FASTK_HISTEX ( fastk_hist_ktab.map { meta, hist, ktab -> [ meta, hist ] } )
GENESCOPEFK ( FASTK_HISTEX.out.hist )
- GENESCOPEFK.out.linear_plot
- .join( GENESCOPEFK.out.log_plot )
- .join( GENESCOPEFK.out.transformed_linear_plot )
- .join( GENESCOPEFK.out.transformed_log_plot )
- .map { meta, linplot, logplot, tlinplot, tlogplot -> [ meta, file("$projectDir/assets/notebooks/genescope.qmd", checkIfExists: true), [ linplot, logplot, tlinplot, tlogplot ] ] }
- .set { quarto_files }
-
// Generate Smudgeplot
MERQURYFK_PLOIDYPLOT ( fastk_hist_ktab )
// Generage GC plot
MERQURYFK_KATGC ( fastk_hist_ktab )
- MERQURYFK_PLOIDYPLOT.out.stacked_ploidy_plot_png
- .mix( MERQURYFK_KATGC.out.stacked_gc_plot_png )
- .map { it[1] } // Remove meta
- .set { logs }
+ GENESCOPEFK.out.linear_plot.mix (
+ GENESCOPEFK.out.log_plot,
+ GENESCOPEFK.out.transformed_linear_plot,
+ GENESCOPEFK.out.transformed_log_plot,
+ MERQURYFK_PLOIDYPLOT.out.stacked_ploidy_plot_png,
+ MERQURYFK_KATGC.out.stacked_gc_plot_png
+ )
+ .map { meta, img -> img }
+ .set { logs }
FASTK_HISTEX.out.versions.first().mix(
GENESCOPEFK.out.versions.first(),
@@ -45,8 +43,7 @@ workflow GENOME_PROPERTIES {
).set { versions }
emit:
- kmer_cov = GENESCOPEFK.out.kmer_cov
- quarto_files
+ kmer_cov = GENESCOPEFK.out.kmer_cov
logs
versions
}
diff --git a/subworkflows/local/inspect_data/main.nf b/subworkflows/local/inspect_data/main.nf
index e59735cc..aa08d17c 100644
--- a/subworkflows/local/inspect_data/main.nf
+++ b/subworkflows/local/inspect_data/main.nf
@@ -13,11 +13,16 @@ workflow INSPECT_DATA {
// QC Steps
GENOME_PROPERTIES ( hifi_histogram )
COMPARE_LIBRARIES ( hifi_histogram.join( hic_histogram ) )
- SCREEN_READS (
- hifi_reads,
- // TODO:: Allow custom database ala nf-core/genomeassembler.
- file( params.mash.screen_db, checkIfExists: true )
- )
+ ch_versions = GENOME_PROPERTIES.out.versions.mix(
+ COMPARE_LIBRARIES.out.versions)
+ if ( 'screen' in params.steps.tokenize(",") ) {
+ SCREEN_READS (
+ hifi_reads,
+ // TODO:: Allow custom database ala nf-core/genomeassembler.
+ file( params.mash.screen_db, checkIfExists: true )
+ )
+ ch_versions = ch_versions.mix(SCREEN_READS.out.versions)
+ }
ch_hifi_with_kmer_cov = combineByMetaKeys(
hifi_reads,
@@ -27,18 +32,12 @@ workflow INSPECT_DATA {
)
.map { meta, reads, kmer_cov -> [ meta + [ kmercov: kmer_cov ], reads ] }
- GENOME_PROPERTIES.out.quarto_files
- .set { quarto_files }
GENOME_PROPERTIES.out.logs
+ .mix( COMPARE_LIBRARIES.out.logs )
.set { logs }
- GENOME_PROPERTIES.out.versions.mix(
- COMPARE_LIBRARIES.out.versions,
- SCREEN_READS.out.versions
- ).set { versions }
emit:
hifi = ch_hifi_with_kmer_cov
- quarto_files
logs
- versions
+ versions = ch_versions
}
\ No newline at end of file
diff --git a/subworkflows/local/prepare_input/main.nf b/subworkflows/local/prepare_input/main.nf
index 17e97d74..f2a8edc0 100644
--- a/subworkflows/local/prepare_input/main.nf
+++ b/subworkflows/local/prepare_input/main.nf
@@ -201,7 +201,7 @@ workflow PREPARE_INPUT {
// Combine Hi-C channels
input.hic_ch.filter { !it.isEmpty() }
- .transpose()
+ .flatMap { meta, hic_pairs -> hic_pairs.withIndex().collect{ pair, index -> [ meta + [pair_id: index], pair ] } }
.set { hic_fastx_ch }
// Prepare PacBio HiFi channel
diff --git a/subworkflows/local/purge_dups/main.nf b/subworkflows/local/purge_dups/main.nf
index 44253d82..af91c1d2 100644
--- a/subworkflows/local/purge_dups/main.nf
+++ b/subworkflows/local/purge_dups/main.nf
@@ -28,6 +28,7 @@ workflow PURGE_DUPLICATES {
ch_hifi // [ meta, hifi ]
main:
+ ch_versions = Channel.empty()
reads_plus_assembly_ch = combineByMetaKeys (
ch_hifi,
ch_assemblies,
@@ -79,6 +80,7 @@ workflow PURGE_DUPLICATES {
.join( PURGEDUPS_PURGEDUPS_PRIMARY.out.bed )
)
def ch_to_format = PURGEDUPS_GETSEQS_PRIMARY.out.purged
+ .mix( PURGEDUPS_GETSEQS_PRIMARY.out.haplotigs )
if( params.use_phased ){
// Purge alternate contigs.
@@ -109,13 +111,32 @@ workflow PURGE_DUPLICATES {
PURGEDUPS_SPLITFA_ALTERNATE.out.merged_fasta
.join( PURGEDUPS_PURGEDUPS_ALTERNATE.out.bed )
)
- ch_to_format = ch_to_format.mix( PURGEDUPS_GETSEQS_ALTERNATE.out.purged )
+ ch_to_format = PURGEDUPS_GETSEQS_PRIMARY.out.purged.mix( PURGEDUPS_GETSEQS_ALTERNATE.out.purged )
}
// Format sequences and enforce line breaks
SEQKIT_SEQ( ch_to_format )
- ch_purged_assemblies = constructAssemblyRecord( SEQKIT_SEQ.out.fastx )
+ // If phased [ meta, [*hap.fa, *purged.fa] ] // don't sort by name
+ // else [ meta, [*hap1.fa, *hap2.fa] ] // sort by name
+ ch_purged_assemblies = constructAssemblyRecord( SEQKIT_SEQ.out.fastx, params.use_phased )
+
+ PURGEDUPS_HISTPLOT.out.png
+ .mix( PURGEDUPS_PURGEDUPS_PRIMARY.out.bed )
+ .map { meta, file -> file }
+ .set { logs }
+
+ MINIMAP2_ALIGN_READS.out.versions.first().mix(
+ PURGEDUPS_PBCSTAT.out.versions.first(),
+ PURGEDUPS_CALCUTS.out.versions.first(),
+ PURGEDUPS_HISTPLOT.out.versions.first(),
+ PURGEDUPS_SPLITFA_PRIMARY.out.versions.first(),
+ MINIMAP2_ALIGN_ASSEMBLY_PRIMARY.out.versions.first(),
+ PURGEDUPS_PURGEDUPS_PRIMARY.out.versions.first(),
+ PURGEDUPS_GETSEQS_PRIMARY.out.versions.first()
+ ).set { versions }
emit:
assemblies = ch_purged_assemblies
coverage = PURGEDUPS_PBCSTAT.out.basecov
+ logs
+ versions
}
\ No newline at end of file
diff --git a/subworkflows/local/scaffold/main.nf b/subworkflows/local/scaffold/main.nf
new file mode 100644
index 00000000..d7a516af
--- /dev/null
+++ b/subworkflows/local/scaffold/main.nf
@@ -0,0 +1,154 @@
+include { constructAssemblyRecord } from "$projectDir/modules/local/functions"
+include { getPrimaryAssembly } from "$projectDir/modules/local/functions"
+include { joinByMetaKeys } from "$projectDir/modules/local/functions"
+include { combineByMetaKeys } from "$projectDir/modules/local/functions"
+include { BWAMEM2_INDEX as BWAMEM2_INDEX_SCAFFOLD } from "$projectDir/modules/nf-core/bwamem2/index/main"
+include { BWAMEM2_MEM as BWAMEM2_MEM_SCAFFOLD } from "$projectDir/modules/nf-core/bwamem2/mem/main"
+include { SAMTOOLS_FAIDX } from "$projectDir/modules/nf-core/samtools/faidx/main"
+include { PAIRTOOLS_PARSE } from "$projectDir/modules/nf-core/pairtools/parse/main"
+include { PAIRTOOLS_SORT } from "$projectDir/modules/nf-core/pairtools/sort/main"
+include { PAIRTOOLS_MERGE } from "$projectDir/modules/nf-core/pairtools/merge/main"
+include { PAIRTOOLS_DEDUP } from "$projectDir/modules/nf-core/pairtools/dedup/main"
+include { PAIRTOOLS_SPLIT } from "$projectDir/modules/nf-core/pairtools/split/main"
+include { YAHS } from "$projectDir/modules/nf-core/yahs/main.nf"
+
+
+workflow SCAFFOLD {
+ take:
+ ch_assemblies // [ meta, assembly ]
+ ch_hic // [ meta, hic-pairs ]
+
+ main:
+
+ BWAMEM2_INDEX_SCAFFOLD ( getPrimaryAssembly(ch_assemblies) )
+
+ SAMTOOLS_FAIDX (
+ getPrimaryAssembly(ch_assemblies),
+ [ [ ], [ ] ]
+ )
+
+ combineByMetaKeys( // Combine (Hi-C + index) with Assembly
+ combineByMetaKeys( // Combine Hi-C reads with BWA index
+ ch_hic,
+ BWAMEM2_INDEX_SCAFFOLD.out.index,
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ ),
+ getPrimaryAssembly( ch_assemblies ),
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ ).multiMap{ meta, hic_reads, index, fasta ->
+ reads: [ meta, hic_reads ]
+ index: [ meta, index ]
+ fasta: [ meta, fasta ]
+ }.set{ bwamem2_input }
+
+ BWAMEM2_MEM_SCAFFOLD (
+ bwamem2_input.reads,
+ bwamem2_input.index,
+ bwamem2_input.fasta,
+ false
+ )
+
+ SAMTOOLS_FAIDX.out.fai
+ .map{ meta, fai ->
+ fai.splitCsv( sep: '\t', header: false )
+ .collect{ row -> row[ 0..1 ].join('\t') }
+ .join('\n')
+ }.collectFile()
+ .set { chrom_sizes }
+
+ // Combine hi-c alignment with chrom sizes
+ BWAMEM2_MEM_SCAFFOLD.out.bam.combine(chrom_sizes)
+ .multiMap{ meta, hic_bam, chr_lengths ->
+ hicbams: [ meta, hic_bam ]
+ lengths: chr_lengths
+ }.set{ pairtools_parse_input }
+
+ PAIRTOOLS_PARSE (
+ pairtools_parse_input.hicbams,
+ pairtools_parse_input.lengths
+ )
+ PAIRTOOLS_SORT(PAIRTOOLS_PARSE.out.pairsam)
+ PAIRTOOLS_SORT.out.sorted.groupTuple()
+ .branch { meta, pairsam ->
+ single: pairsam.size() == 1
+ return [ meta, *pairsam ]
+ multi: true
+ return [ meta, pairsam ]
+ }
+ .set { pairtools_sorted }
+ PAIRTOOLS_MERGE(pairtools_sorted.multi)
+ PAIRTOOLS_DEDUP(
+ PAIRTOOLS_MERGE.out.pairs.mix(
+ pairtools_sorted.single
+ )
+ )
+
+ joinByMetaKeys(
+ PAIRTOOLS_DEDUP.out.pairs,
+ getPrimaryAssembly(ch_assemblies),
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ ).multiMap{ meta, pairs, fasta ->
+ pairs: [ meta, pairs ]
+ fasta: [ meta, fasta ]
+ }.set { pairtools_split_input }
+
+ PAIRTOOLS_SPLIT(
+ pairtools_split_input.pairs,
+ pairtools_split_input.fasta,
+ true // sort_bam
+ )
+
+ combineByMetaKeys( // Combine (bam + assembly) with fai
+ combineByMetaKeys( // Combine bams with assembly
+ PAIRTOOLS_SPLIT.out.bam,
+ getPrimaryAssembly(ch_assemblies),
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ ),
+ SAMTOOLS_FAIDX.out.fai,
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ ).multiMap{ meta, bam, fasta, fai ->
+ bam: [ meta, bam ]
+ fasta: [ fasta ]
+ fai: [ fai ]
+ }.set{ yahs_input }
+
+ YAHS(
+ yahs_input.bam,
+ yahs_input.fasta,
+ yahs_input.fai
+ )
+
+ // Consensus case:
+ // Preserve haplotigs from purge dups
+ ch_scaff_and_alt = ch_assemblies.map { meta, assembly -> [ meta, assembly.alt_fasta ] }
+ .mix( YAHS.out.scaffolds_fasta )
+ ch_scaffolded_assemblies = constructAssemblyRecord( ch_scaff_and_alt, false )
+
+ PAIRTOOLS_PARSE.out.stat
+ .mix (
+ PAIRTOOLS_DEDUP.out.stat
+ )
+ .map { meta, stats -> stats }
+ .set { logs }
+
+ ch_versions = BWAMEM2_INDEX_SCAFFOLD.out.versions.first().mix(
+ SAMTOOLS_FAIDX.out.versions.first(),
+ BWAMEM2_MEM_SCAFFOLD.out.versions.first(),
+ PAIRTOOLS_PARSE.out.versions.first(),
+ PAIRTOOLS_SORT.out.versions.first(),
+ PAIRTOOLS_MERGE.out.versions.first(),
+ PAIRTOOLS_DEDUP.out.versions.first(),
+ PAIRTOOLS_SPLIT.out.versions.first(),
+ YAHS.out.versions.first()
+ )
+
+ emit:
+ assemblies = ch_scaffolded_assemblies
+ logs
+ versions = ch_versions
+}
\ No newline at end of file
diff --git a/subworkflows/local/scaffold_curation/main.nf b/subworkflows/local/scaffold_curation/main.nf
new file mode 100644
index 00000000..80ca3e55
--- /dev/null
+++ b/subworkflows/local/scaffold_curation/main.nf
@@ -0,0 +1,335 @@
+include { constructAssemblyRecord } from "$projectDir/modules/local/functions"
+include { getPrimaryAssembly } from "$projectDir/modules/local/functions"
+include { combineByMetaKeys } from "$projectDir/modules/local/functions"
+include { joinByMetaKeys } from "$projectDir/modules/local/functions"
+include { BWAMEM2_INDEX } from "$projectDir/modules/nf-core/bwamem2/index/main"
+include { BWAMEM2_MEM as BWAMEM2_MEM_CURATION } from "$projectDir/modules/nf-core/bwamem2/mem/main"
+include { FILTER_FIVE_END } from "$projectDir/modules/local/hic_curation/filter_five_end"
+include { TWOREADCOMBINER_FIXMATE_SORT } from "$projectDir/modules/local/hic_curation/tworeadcombiner_fixmate_sort"
+include { BIOBAMBAM_BAMMARKDUPLICATES2 } from "$projectDir/modules/nf-core/biobambam/bammarkduplicates2/main"
+include { SAMTOOLS_FAIDX } from "$projectDir/modules/nf-core/samtools/faidx/main"
+include { SAMTOOLS_MERGE as SAMTOOLS_MERGE_HIC } from "$projectDir/modules/nf-core/samtools/merge/main"
+include { SAMTOOLS_MERGE as SAMTOOLS_MERGE_HIFI } from "$projectDir/modules/nf-core/samtools/merge/main"
+include { SAMTOOLS_SORT } from "$projectDir/modules/nf-core/samtools/sort/main"
+include { BAM2BED_SORT } from "$projectDir/modules/local/hic_curation/bam2bed_sort"
+include { COOLER_CLOAD } from "$projectDir/modules/nf-core/cooler/cload/main"
+include { COOLER_ZOOMIFY } from "$projectDir/modules/nf-core/cooler/zoomify/main"
+include { CREATE_CHROMOSOME_SIZES_FILE } from "$projectDir/modules/local/hic_curation/create_chromosome_sizes"
+include { PRETEXTMAP } from "$projectDir/modules/nf-core/pretextmap/main"
+include { MINIMAP2_INDEX } from "$projectDir/modules/nf-core/minimap2/index/main"
+include { MINIMAP2_ALIGN } from "$projectDir/modules/nf-core/minimap2/align/main"
+include { BAM2COVERAGE_TRACKS } from "$projectDir/modules/local/hic_curation/bam2coverageTracks"
+include { SEQTK_CUTN } from "$projectDir/modules/nf-core/seqtk/cutn/main"
+include { CREATE_GAP_TRACKS } from "$projectDir/modules/local/hic_curation/create_gap_tracks"
+include { TIDK_SEARCH as TIDK_SEARCH_BEDGRAPH } from "$projectDir/modules/nf-core/tidk/search/main"
+include { TIDK_SEARCH as TIDK_SEARCH_TSV } from "$projectDir/modules/nf-core/tidk/search/main"
+include { TIDK_PLOT } from "$projectDir/modules/nf-core/tidk/plot/main"
+include { CREATE_TELOMER_BIGWIG_TRACK } from "$projectDir/modules/local/hic_curation/create_telomer_bigwig_track"
+include { PRETEXT_TRACKS_INGESTION } from "$projectDir/modules/local/hic_curation/pretext_tracks_ingestion"
+
+workflow SCAFFOLD_CURATION {
+ take:
+ ch_assemblies // [ meta, assembly ]
+ ch_hic // [ meta, hic-pairs ]
+ ch_hifi // [ meta, hifi-reads ]
+
+ main:
+
+ ch_versions = Channel.empty()
+
+ BWAMEM2_INDEX ( getPrimaryAssembly(ch_assemblies) )
+ ch_versions = ch_versions.mix( BWAMEM2_INDEX.out.versions )
+
+ SAMTOOLS_FAIDX (
+ getPrimaryAssembly(ch_assemblies), // [meta, fasta]
+ [ [ ], [ ] ] // [meta2, fai]
+ )
+ ch_versions = ch_versions.mix( SAMTOOLS_FAIDX.out.versions )
+
+ combineByMetaKeys( // Combine (Hi-C + index) with Assembly
+ combineByMetaKeys( // Combine Hi-C reads with BWA index
+ ch_hic, BWAMEM2_INDEX.out.index,
+ keySet: ['id','sample'],
+ meta: 'merge'
+ ),
+ getPrimaryAssembly( ch_assemblies ),
+ keySet: ['id','sample'],
+ meta: 'merge'
+ ).transpose(by:1) // by meta info: [id, sample, settings, single_end, pair_id, assembly]
+ .multiMap{ meta, hic_reads, index, fasta ->
+ reads: [ meta, hic_reads ]
+ index: [ meta, index ]
+ fasta: [ meta, fasta ]
+ }.set{ bwamem2_input }
+
+ BWAMEM2_MEM_CURATION (bwamem2_input.reads, bwamem2_input.index, bwamem2_input.fasta, false)
+ ch_versions = ch_versions.mix( BWAMEM2_MEM_CURATION.out.versions )
+
+ // filter alignments
+ FILTER_FIVE_END(BWAMEM2_MEM_CURATION.out.bam)
+ ch_versions = ch_versions.mix( FILTER_FIVE_END.out.versions )
+
+ // combine reads
+ FILTER_FIVE_END.out.bam
+ .map { meta, bam -> [ meta.subMap('id', 'sample', 'assembly', 'pair_id'), bam ] }
+ .groupTuple( sort: {a, b -> a.name <=> b.name } )
+ .set { combine_input }
+
+ TWOREADCOMBINER_FIXMATE_SORT(combine_input)
+ ch_versions = ch_versions.mix( TWOREADCOMBINER_FIXMATE_SORT.out.versions )
+
+ // merge bam files in case multiple HIC paired-end libraries are present
+ TWOREADCOMBINER_FIXMATE_SORT.out.bam
+ .map { meta, bam_list -> [ meta - meta.subMap( 'pair_id' ), bam_list ] }
+ .groupTuple()
+ .branch { meta, bam_list ->
+ multiples: bam_list.size() > 1
+ singleton: true
+ }
+ .set { merge_bam }
+
+ SAMTOOLS_MERGE_HIC(
+ merge_bam.multiples,
+ [ [], [] ], // [meta2, fasta]
+ [ [], [] ] // [meta2, fai]
+ )
+ ch_versions = ch_versions.mix( SAMTOOLS_MERGE_HIC.out.versions )
+
+ merge_bam.singleton
+ .map { meta, bam -> [ meta, *bam ] } // the spread operator (*) flattens the bam list
+ .mix( SAMTOOLS_MERGE_HIC.out.bam)
+ .set { dedup_bam }
+
+ // dedupliucate bam file
+ BIOBAMBAM_BAMMARKDUPLICATES2(dedup_bam)
+ ch_versions = ch_versions.mix( BIOBAMBAM_BAMMARKDUPLICATES2.out.versions )
+
+ // convert bam to sorted bed file
+ BAM2BED_SORT(BIOBAMBAM_BAMMARKDUPLICATES2.out.bam)
+ ch_versions = ch_versions.mix( BAM2BED_SORT.out.versions )
+
+ // create chrome sizes file from fai file
+ CREATE_CHROMOSOME_SIZES_FILE(SAMTOOLS_FAIDX.out.fai, params.hic_map_sort_by)
+ ch_versions = ch_versions.mix( CREATE_CHROMOSOME_SIZES_FILE.out.versions )
+
+ // create cooler files
+ // tuple val(meta), path(pairs), path(index), val(cool_bin)
+ // path chromsizes
+ BAM2BED_SORT.out.pairs
+ .map { meta, pairs -> [ meta, pairs, [ ] ] }
+ .combine(
+ Channel.value(params.cooler_bin_size)
+ )
+ .set { pairs_idx_binsize_ch }
+
+ combineByMetaKeys( // Combine Hi-C reads with BWA index
+ pairs_idx_binsize_ch, CREATE_CHROMOSOME_SIZES_FILE.out.sizes,
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ )
+ .multiMap { meta, pairs, fake_index, cool_bin, chrom_sizes ->
+ cload_in : [ meta, pairs, fake_index, cool_bin ]
+ chrom_sizes : chrom_sizes
+ }
+ .set { cooler_cload_ch }
+
+ COOLER_CLOAD(
+ cooler_cload_ch.cload_in,
+ cooler_cload_ch.chrom_sizes
+ )
+ ch_versions = ch_versions.mix( COOLER_CLOAD.out.versions )
+
+ COOLER_CLOAD.out.cool.map { meta, cool, cool_bin -> [ meta, cool ] }
+ .set { cooler_zoomify_ch }
+
+ COOLER_ZOOMIFY(cooler_zoomify_ch)
+ ch_versions = ch_versions.mix( COOLER_ZOOMIFY.out.versions )
+
+ // create pretext maps
+ joinByMetaKeys(joinByMetaKeys(
+ getPrimaryAssembly(ch_assemblies),
+ SAMTOOLS_FAIDX.out.fai,
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ ), BIOBAMBAM_BAMMARKDUPLICATES2.out.bam,
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ )
+ .multiMap { meta, fasta, fai, bam ->
+ bam : [ meta, bam ]
+ fasta_fai : [ meta, fasta, fai ]
+ }
+ .set { pretext_ch }
+
+ PRETEXTMAP(
+ pretext_ch.bam,
+ pretext_ch.fasta_fai
+ )
+ ch_versions = ch_versions.mix( PRETEXTMAP.out.versions )
+
+ // create tracks for PretextMap:
+ // coverage, gap, telomer
+
+ joinByMetaKeys(
+ ch_hifi,
+ getPrimaryAssembly( ch_assemblies ),
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ )
+ .multiMap { meta, hifi_reads, fasta ->
+ hifi_reads: [ meta, hifi_reads ]
+ reference : fasta
+ }
+ .set{ asm_hifi_ch }
+
+ // Coverage-track: create minimap2 index
+ MINIMAP2_INDEX(getPrimaryAssembly( ch_assemblies ))
+ ch_versions = ch_versions.mix( MINIMAP2_INDEX.out.versions )
+
+ // Coverage-track: align HiFi reads
+ MINIMAP2_ALIGN(
+ asm_hifi_ch.hifi_reads, // [ meta, reads ]
+ asm_hifi_ch.reference, // reference
+ 1, // bam_format
+ 0, // cigar_paf_format
+ 0 // cigar_ba,
+ )
+ ch_versions = ch_versions.mix( MINIMAP2_ALIGN.out.versions )
+
+ // Coverage-track: merge hifi-bam files (if multiple hifi reads are present)
+ MINIMAP2_ALIGN.out.bam
+ .groupTuple()
+ .branch { meta, bam_list ->
+ multiples: bam_list.size() > 1
+ singleton: true
+ }
+ .set { merge_hifi_bam }
+
+ SAMTOOLS_MERGE_HIFI(
+ merge_hifi_bam.multiples,
+ [ [], [] ],
+ [ [], [] ]
+ )
+ ch_versions = ch_versions.mix( SAMTOOLS_MERGE_HIFI.out.versions )
+
+ joinByMetaKeys(
+ ch_hifi,
+ getPrimaryAssembly( ch_assemblies ),
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ )
+ .multiMap { meta, hifi_reads, fasta ->
+ hifi_reads: [ meta, hifi_reads ]
+ reference : fasta
+ }
+ .set{ asm_hifi_ch }
+
+ joinByMetaKeys(
+ merge_hifi_bam.singleton
+ .map { meta, bam -> [ meta, *bam ] } // the spread operator (*) flattens the bam list
+ .mix( SAMTOOLS_MERGE_HIFI.out.bam),
+ CREATE_CHROMOSOME_SIZES_FILE.out.sizes,
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ )
+ .multiMap { meta, bam, chrom_sizes ->
+ merged_bam : [ meta, bam ]
+ chrom_sizes : chrom_sizes
+ }
+ .set { bam2coverage_ch }
+
+ // Coverage-track: create hitile- and bed-coverage tracks
+ BAM2COVERAGE_TRACKS(
+ bam2coverage_ch.merged_bam,
+ bam2coverage_ch.chrom_sizes,
+ params.hifi_coverage_cap
+ )
+ ch_versions = ch_versions.mix( BAM2COVERAGE_TRACKS.out.versions )
+
+ // Gap-track: create bedtrack
+ SEQTK_CUTN(getPrimaryAssembly( ch_assemblies ))
+ ch_versions = ch_versions.mix( SEQTK_CUTN.out.versions )
+
+ // Gap-track: create beddb- and bed-gap tracks
+ joinByMetaKeys(
+ SEQTK_CUTN.out.bed,
+ CREATE_CHROMOSOME_SIZES_FILE.out.sizes,
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ )
+ .multiMap { meta, bed, chrom_sizes ->
+ bed : [ meta, bed ]
+ chrom_sizes : chrom_sizes
+ }
+ .set { bed2gap_ch }
+
+ CREATE_GAP_TRACKS(
+ bed2gap_ch.bed,
+ bed2gap_ch.chrom_sizes
+ )
+ ch_versions = ch_versions.mix( CREATE_GAP_TRACKS.out.versions )
+
+ // Telomer-track: create track
+ TIDK_SEARCH_BEDGRAPH(
+ getPrimaryAssembly( ch_assemblies ),
+ params.telomer_motif
+ )
+ ch_versions = ch_versions.mix( TIDK_SEARCH_BEDGRAPH.out.versions )
+
+ TIDK_SEARCH_TSV(
+ getPrimaryAssembly( ch_assemblies ),
+ params.telomer_motif
+ )
+ ch_versions = ch_versions.mix( TIDK_SEARCH_TSV.out.versions )
+
+ // Telomer-track: create plot - thats not really necessary, but nice to have
+ TIDK_PLOT(TIDK_SEARCH_TSV.out.tsv)
+ ch_versions = ch_versions.mix( TIDK_PLOT.out.versions )
+
+ // Telomer-track: convert telomer bedgraph into beddb file that can be ingested into HiGlass
+ joinByMetaKeys(
+ TIDK_SEARCH_BEDGRAPH.out.bedgraph,
+ CREATE_CHROMOSOME_SIZES_FILE.out.sizes,
+ keySet: ['id','sample'],
+ meta: 'rhs'
+ )
+ .multiMap { meta, bedgraph, chrom_sizes ->
+ bedgraph : [ meta, bedgraph ]
+ chrom_sizes : chrom_sizes
+ }
+ .set { bedgraph_telomer_ch }
+
+ CREATE_TELOMER_BIGWIG_TRACK(
+ bedgraph_telomer_ch.bedgraph,
+ bedgraph_telomer_ch.chrom_sizes
+ )
+ ch_versions = ch_versions.mix( CREATE_TELOMER_BIGWIG_TRACK.out.versions )
+
+ // ingest coverage, gap and telomer track into Pretext
+ // for each assembly always join:
+ // 1-PretextMap with 1-CoverageTrack with 1-TelomereTrack with 1-GapTrack
+ joinByMetaKeys(
+ joinByMetaKeys(
+ joinByMetaKeys(
+ PRETEXTMAP.out.pretext,
+ BAM2COVERAGE_TRACKS.out.capped_bed,
+ keySet: ['id','sample', 'assembly'],
+ meta: 'rhs'
+ ),
+ TIDK_SEARCH_BEDGRAPH.out.bedgraph,
+ keySet: ['id','sample','assembly'],
+ meta: 'rhs'
+ ),
+ CREATE_GAP_TRACKS.out.bedgraph,
+ keySet: ['id','sample','assembly'],
+ meta: 'rhs'
+ )
+ .set { pretext_tracks_ch }
+
+ PRETEXT_TRACKS_INGESTION(pretext_tracks_ch)
+ ch_versions = ch_versions.mix( PRETEXT_TRACKS_INGESTION.out.versions )
+
+ emit:
+ assemblies = Channel.empty()
+ versions = ch_versions
+}
\ No newline at end of file
diff --git a/tests/configs/test_data.config b/tests/configs/test_data.config
index da2e062b..5c18c678 100644
--- a/tests/configs/test_data.config
+++ b/tests/configs/test_data.config
@@ -320,7 +320,7 @@ params {
hello = "${test_data_dir}/generic/txt/hello.txt"
}
'cnn' {
- reference = "${test_data_dir}/generic/cnn/reference.cnn"
+ reference = "${test_data_dir}/generic/cnn/reference.cnn"
}
'cooler'{
test_pairix_pair_gz = "${test_data_dir}/genomics/homo_sapiens/cooler/cload/hg19/hg19.GM12878-MboI.pairs.subsample.blksrt.txt.gz"
diff --git a/tests/data/tiny/README.md b/tests/data/tiny/README.md
new file mode 100644
index 00000000..ef57eeab
--- /dev/null
+++ b/tests/data/tiny/README.md
@@ -0,0 +1,21 @@
+# Test data set provenance
+
+## Authors
+
+- Guilherme Dias
+- Martin Pippel
+
+## Provenance
+
+- species: _Drosophila melanogaster_
+- PacBio HiFi data was downloaded from NBCI´s SRA [SRR10238607](https://www.ncbi.nlm.nih.gov/sra/SRR10238607)
+- Illumina HiC data was downloaded from NBCI´s SRA [SRR10512944](https://www.ncbi.nlm.nih.gov/sra/SRR10512944)
+
+- PacBio HiFi data were randomly subsampled to 15X read coverage and assembled with [hifiasm version 0.19.8](https://github.com/chhylp123/hifiasm)
+- PacBio reads were mapped back to the genome assembly with minimap2
+- Illumina HiC reads were mapped back to the genome assembly with bwa mem
+
+- PacBio and HiC reads were extracted from the alignment bam files:
+ - from a 2Mb region within a 28Mb contig
+ - a 20Kb gap was introduces at Position 1Mb and all PacBio and HiC reads that mapped into that region were filtered out
+ - HiC reads were further filtered down to 50%, representing a 38X coverage
diff --git a/tests/data/tiny/test_ci_Dmelanogaster.yml b/tests/data/tiny/test_ci_Dmelanogaster.yml
new file mode 100644
index 00000000..5e46b17e
--- /dev/null
+++ b/tests/data/tiny/test_ci_Dmelanogaster.yml
@@ -0,0 +1,15 @@
+# Data set generated by Guilherme Dias and Martin Pippel.
+# See README.md for data provenance.
+sample:
+ name: 'Drosophila melanogaster'
+hic:
+ - read1: 'https://raw.githubusercontent.com/NBISweden/Earth-Biogenome-Project-pilot/main/tests/data/tiny/HIC/dmel_2Mb_p1_R1.fastq.gz'
+ read2: 'https://raw.githubusercontent.com/NBISweden/Earth-Biogenome-Project-pilot/main/tests/data/tiny/HIC/dmel_2Mb_p1_R2.fastq.gz'
+ - read1: 'https://raw.githubusercontent.com/NBISweden/Earth-Biogenome-Project-pilot/main/tests/data/tiny/HIC/dmel_2Mb_p2_R1.fastq.gz'
+ read2: 'https://raw.githubusercontent.com/NBISweden/Earth-Biogenome-Project-pilot/main/tests/data/tiny/HIC/dmel_2Mb_p2_R2.fastq.gz'
+hifi:
+ - reads: 'https://raw.githubusercontent.com/NBISweden/Earth-Biogenome-Project-pilot/main/tests/data/tiny/PB_HIFI/dmel_2Mb.fasta.gz'
+# rnaseq:
+# - /path/to/reads
+# isoseq:
+# - /path/to/reads
diff --git a/tests/main.nf.test b/tests/main.nf.test
new file mode 100644
index 00000000..2472a541
--- /dev/null
+++ b/tests/main.nf.test
@@ -0,0 +1,21 @@
+nextflow_pipeline {
+
+ name "Test Workflow main.nf - Tiny"
+ script "main.nf"
+ profile "+test"
+
+ test("Tiny dataset") {
+
+ when {
+ params {
+ // Params are supplied by -profile test
+ }
+ }
+
+ then {
+ assert workflow.success
+ }
+
+ }
+
+}
diff --git a/tests/modules/blobtoolkit/test_blobtoolkit.nf b/tests/modules/blobtoolkit/test_blobtoolkit.nf
deleted file mode 100644
index ecf164b6..00000000
--- a/tests/modules/blobtoolkit/test_blobtoolkit.nf
+++ /dev/null
@@ -1,24 +0,0 @@
-#! /usr/bin/env nextflow
-
-nextflow.enable.dsl = 2
-
-include { BLOBTOOLKIT } from '../../../../modules/local/blobtoolkit/blobtoolkit'
-
-workflow TEST_BLOBTOOLKIT {
-
- input = [
- [ id: 'test' ],
- [
- file( params.test_data['homo_sapiens']['pacbio']['hifi'], checkIfExists: true ),
- ],
- file( params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true )
- ]
- BLOBTOOLKIT(
- input,
- 'eukaryota_odb10', // busco lineages
- params.busco_lineages_path,
- params.uniprot_path
- params.ncbi_nt_path
- params.ncbi_taxonomy_path
- )
-}
\ No newline at end of file
diff --git a/tests/modules/inspector/nextflow.config b/tests/modules/inspector/nextflow.config
deleted file mode 100644
index 7dc6ef83..00000000
--- a/tests/modules/inspector/nextflow.config
+++ /dev/null
@@ -1,5 +0,0 @@
-process {
- withName: 'INSPECTOR' {
- ext.args = '-d hifi'
- }
-}
diff --git a/tests/modules/inspector/test_inspector.nf b/tests/modules/inspector/test_inspector.nf
deleted file mode 100644
index dfd1af5b..00000000
--- a/tests/modules/inspector/test_inspector.nf
+++ /dev/null
@@ -1,18 +0,0 @@
-#! /usr/bin/env nextflow
-
-nextflow.enable.dsl = 2
-
-include { INSPECTOR } from '../../../modules/inspector/inspector'
-
-workflow TEST_INSPECTOR {
-
- input = [
- [ id: 'test' ],
- [
- file( params.test_data['homo_sapiens']['pacbio']['hifi'], checkIfExists: true )
- ],
- file( params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true )
- ]
- // Test: No reference file
- INSPECTOR( input, [] )
-}
diff --git a/tests/modules/kat/kat_comp/test_kat_comp.nf b/tests/modules/kat/kat_comp/test_kat_comp.nf
deleted file mode 100644
index f005ecf5..00000000
--- a/tests/modules/kat/kat_comp/test_kat_comp.nf
+++ /dev/null
@@ -1,18 +0,0 @@
-#! /usr/bin/env nextflow
-
-nextflow.enable.dsl = 2
-
-include { KAT_COMP } from '../../../../modules/kat/kat_comp/kat_comp'
-
-workflow TEST_KAT_COMP {
-
- input = [
- [ id: 'test' ],
- [
- file( params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true ),
- file( params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true )
- ],
- file( params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true )
- ]
- KAT_COMP( input )
-}
\ No newline at end of file
diff --git a/tests/nextflow.config b/tests/nextflow.config
new file mode 100644
index 00000000..c19b1ad0
--- /dev/null
+++ b/tests/nextflow.config
@@ -0,0 +1,5 @@
+/*
+========================================================================================
+ Nextflow config file for running tests
+========================================================================================
+*/