Examples not working?

Software Repositories #

In addition to the core software tools that are available by default, additional software is available via environment modules. For example, although MATLAB is installed on the system, it is not available by default. Instead, we need to “load” its module first, e.g.

[alice@dev1 ~]$ module load matlab
[alice@dev1 ~]$ module list

Currently Loaded Modules:
  1) matlab/2021a

Then we can launch MATLAB using:

[alice@dev1 ~]$ matlab -nosplash -nodesktop

To see what other “built-in” modules are available, use:

[alice@dev1 ~]$ module avail

In additional a set of built-in environment modules, there are also modules for software tools that are installed and maintained by other users or research groups. To access these, we first need to load the corresponding “Software Repository” module. For example, to get access to the repository and the software shared by the UCSF Computation Biology and Informatics core (CBI), make sure to load (“enable”) the repository first, e.g.

module load CBI

Then use module avail to list what modules and versions are available (or see below). Next, to actually get access to one or more of the shared software modules, use module load <name> or module load <name>/<version>. Here are a few examples:

module load bowtie2
module load bowtie2/2.4.2
module load r

It is possible to (i) enable a software repository and (ii) load a set of software tools in one call, e.g.

module load CBI r bwa bowtie2/2.4.2

Below are 3 software repositories, each providing a set of software tools.

Module Software Repository: built-in (6) #

Maintained by: Wynton Systems Administrators, Wynton HPC
Enable repository: this software repository is always enabled

amber #

Versions: 20, 22
Module code: view
#%Module 1.0

module-whatis "Amber: Tools for Molecular Simulations"
setenv        AMBERHOME       /usr/local/amber22
prepend-path  PATH            /usr/local/amber22/bin
prepend-path  LD_LIBRARY_PATH /usr/local/amber22/lib
prepend-path  PERL5LIB        /usr/local/amber22/lib/perl
prepend-path  PYTHONPATH      /usr/local/amber22/lib/python3.6/site-packages
setenv        QUICK_BASIS     /usr/local/amber22/AmberTools/src/quick/basis

cuda #

Versions: 7.5, 8.0, 9.1, 9.2, 10.1, 11.0, 11.3, 11.4, 11.5, 11.8, 12.2, 12.5
Module code: view
#%Module 1.0

module-whatis "NVIDIA CUDA Toolkit libraries"
prepend-path  PATH               /usr/local/cuda-12.5/bin
prepend-path  LD_LIBRARY_PATH    /usr/local/cuda-12.5/lib64
setenv        CUDA_LIB_PATH      /usr/local/cuda-12.5/lib64

julia #

Versions: 0.6.4, 1.6.0
Module code: view
#%Module 1.0

module-whatis "Julia programming language"
prepend-path  PATH      /usr/local/julia-1.6.0/bin
prepend-path  MANPATH   /usr/local/julia-1.6.0/share/man

matlab #

Versions: 2018b, 2019a, 2019b, 2020a, 2020b, 2021a, 2021b, 2022a, 2022b, 2023a, 2023b
Module code: view
#%Module 1.0

module-whatis "Language for technical computing"
prepend-path  PATH                /usr/local/matlab/R2023b/bin
setenv        MLM_LICENSE_FILE    27000@matl1.wynton.ucsf.edu:27000@matl2.wynton.ucsf.edu

matlab-runtime #

Versions: 2018b, 2019a, 2019b, 2020a, 2020b, 2021a, 2021b, 2022a, 2022b, 2023a, 2023b
Module code: view
#%Module 1.0

module-whatis "MATLAB Runtime for making use of MATLAB Compiler applications"
prepend-path  LD_LIBRARY_PATH     /usr/local/matlab/R2023b/runtime/glnxa64:/usr/local/matlab/R2023b/bin/glnxa64:/usr/local/matlab/R2023b/sys/os/glnxa64:/usr/local/matlab/R2023b/extern/bin/glnxa64

openjdk #

openjdk: Open Java Development Kit
OpenJDK is a free and open-source implementation of the Java Platform, Standard Edition. It is the result of an effort Sun Microsystems began in 2006.
Example: java -version and javac -version (SDK only).
Note: This module loads the Software Development Kit (SDK) version, if available, otherwise the Run-Time Environment (JRE).
URL: https://openjdk.java.net/, https://openjdk.java.net/projects/jdk/ (changelog), https://github.com/openjdk/jdk (source code)
Versions: 1.8.0, 11, 17
Module code: view
help("openjdk: Open Java Development Kit")

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: programming, java")
whatis("URL: https://openjdk.java.net/, https://openjdk.java.net/projects/jdk/ (changelog), https://github.com/openjdk/jdk (source code)")
whatis([[
Description: OpenJDK is a free and open-source implementation of the Java Platform, Standard Edition. It is the result of an effort Sun Microsystems began in 2006.
Examples: `java -version` and `javac -version` (SDK only).
Note: This module loads the Software Development Kit (SDK) version, if available, otherwise the Run-Time Environment (JRE).
]])

local root = "/usr/lib/jvm"

-- Use SDK, if available, otherwise JRE
local home = pathJoin(root, "java" .. "-" .. version)
if not isDir(home) then -- isDir() supports symlinked folders
    home = pathJoin(root, "jre" .. "-" .. version)
end

-- Assert that OpenJDK version still exists, because
-- it happens at times that older versions are removed
if not isDir(home) then
  LmodError("INTERNAL ERROR: Module " .. name .. "/" .. version .. " is broken, because folder " .. home .. " does not exist on host " .. os.getenv("HOSTNAME") .. ". Please report this to the sysadms.")
end

setenv("JAVA_HOME", home)
prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))
prepend_path("CPATH", pathJoin(home, "include"))

Module Software Repository: CBI (101) #

Maintained by: Henrik Bengtsson, Computational Biology and Informatics
Enable repository: module load CBI

apache-ant #

Apache Ant: A Java Library and Command-Line Tool to Build Software
Apache Ant is a Java library and command-line tool that help building software.
Example: ant -h
URL: https://ant.apache.org/bindownload.cgi, https://ant.apache.org/antnews.html (changelog)
Versions: 1.10.12, 1.10.15
Module code: view
help([[
Apache Ant: A Java Library and Command-Line Tool to Build Software
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: programming")
whatis("URL: https://ant.apache.org/bindownload.cgi, https://ant.apache.org/antnews.html (changelog)")
whatis([[
Description: Apache Ant is a Java library and command-line tool that help building software.
Examples: `ant -h`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))


asciigenome #

ASCIIGenome: Text Only Genome Viewer
ASCIIGenome is a genome browser based on command line interface and designed for running from console terminals. Since ASCIIGenome does not require a graphical interface it is particularly useful for quickly visualizing genomic data on remote servers while offering flexibility similar to popular GUI viewers like IGV.
Example: ASCIIGenome --help, and ASCIIGenome bigWigExample.bw.
URL: https://github.com/dariober/ASCIIGenome, https://github.com/dariober/ASCIIGenome/blob/master/CHANGELOG.md (changelog), https://asciigenome.readthedocs.io/en/latest/ (documentation)
Warning: Only the most recent version of this software will be kept.
Versions: 1.18.0
Module code: view
help([[
ASCIIGenome: Text Only Genome Viewer
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, viewer, cli, tui")
whatis("URL: https://github.com/dariober/ASCIIGenome, https://github.com/dariober/ASCIIGenome/blob/master/CHANGELOG.md (changelog), https://asciigenome.readthedocs.io/en/latest/ (documentation)")
whatis([[
Description: ASCIIGenome is a genome browser based on command line interface and designed for running from console terminals. Since ASCIIGenome does not require a graphical interface it is particularly useful for quickly visualizing genomic data on remote servers while offering flexibility similar to popular GUI viewers like IGV.
Examples: `ASCIIGenome --help`, and `ASCIIGenome bigWigExample.bw`.
Warning: Only the most recent version of this software will be kept.
]])
-- too long for small screens: `ASCIIGenome http://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20130502/supporting/functional_annotation/filtered/ALL.chr21.phase3_shapeit2_mvncall_integrated_v5.20130502.sites.annotation.vcf.gz`

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, "ASCIIGenome" .. "-" .. version)
prepend_path("PATH", home)


bamutil #

bamUtil: Programs for Working on SAM/BAM Files
bamUtil is a repository that contains several programs that perform operations on SAM/BAM files. All of these programs are built into a single executable, bam.
Example: bam help.
URL: https://genome.sph.umich.edu/wiki/BamUtil, https://github.com/statgen/bamUtil
Versions: 1.0.14
Module code: view
help([[
bamUtil: Programs for Working on SAM/BAM Files
]])

local name = "bamUtil"
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: version control")
whatis("URL: https://genome.sph.umich.edu/wiki/BamUtil, https://github.com/statgen/bamUtil")
whatis("Description: bamUtil is a repository that contains several programs that perform operations on SAM/BAM files. All of these programs are built into a single executable, `bam`. Example: `bam help`.")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

bat #

bat: A cat(1) Clone with Syntax Highlighting and Git Integration
A cat(1) clone with syntax highlighting and Git integration.
Example: bat README.md, bat scripts/*.sh, and bat src/*.c.
URL: https://github.com/sharkdp/bat, https://github.com/sharkdp/bat/blob/master/CHANGELOG.md (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 0.24.0
Module code: view
help([[
bat: A cat(1) Clone with Syntax Highlighting and Git Integration
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, file viewer, cli, tui")
whatis("URL: https://github.com/sharkdp/bat, https://github.com/sharkdp/bat/blob/master/CHANGELOG.md (changelog)")
whatis([[
Description: A cat(1) clone with syntax highlighting and Git integration.
Examples: `bat README.md`, `bat scripts/*.sh`, and `bat src/*.c`.
Warning: Only the most recent version of this software will be kept.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)
prepend_path("MANPATH", pathJoin(home, "share", "man", "man1"))

bats-assert #

bats-assert: Assertion Library for Bats (Bash Automated Testing System)
This is a helper library providing common assertions for Bats.
Example: In Bats setup() function: load "${BATS_SUPPORT_HOME}/load.bash" and load "${BATS_ASSERT_HOME}/load.bash"
URL: https://github.com/bats-core/bats-assert, https://github.com/bats-core/bats-assert/releases (changelog), https://bats-core.readthedocs.io/en/stable/faq.html?highlight=assert#how-can-i-use-helper-libraries-like-bats-assert (documentation)
Versions: 2.1.0
Module code: view
help([[
bats-assert: Assertion Library for Bats (Bash Automated Testing System)
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: bash, shell, testing")
whatis("URL: https://github.com/bats-core/bats-assert, https://github.com/bats-core/bats-assert/releases (changelog), https://bats-core.readthedocs.io/en/stable/faq.html?highlight=assert#how-can-i-use-helper-libraries-like-bats-assert (documentation)")
whatis([[
Description: This is a helper library providing common assertions for Bats.
Examples: In Bats `setup()` function: `load "${BATS_SUPPORT_HOME}/load.bash"` and `load "${BATS_ASSERT_HOME}/load.bash"`
]])

depends_on("bats-support")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("BATS_ASSERT_HOME", home)

bats-core #

bats: Bash Automated Testing System
Bats is a TAP-compliant testing framework for Bash. It provides a simple way to verify that the UNIX programs you write behave as expected.
Example: bats --version, bats --help, man bats, man 7 bats, and bats tests/.
URL: https://github.com/bats-core/bats-core, https://github.com/bats-core/bats-core/blob/master/docs/CHANGELOG.md (changelog), https://bats-core.readthedocs.io/en/stable/ (documentation)
Versions: 1.10.0, 1.11.0, 1.11.1
Module code: view
help([[
bats: Bash Automated Testing System
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: bash, shell, testing")
whatis("URL: https://github.com/bats-core/bats-core, https://github.com/bats-core/bats-core/blob/master/docs/CHANGELOG.md (changelog), https://bats-core.readthedocs.io/en/stable/ (documentation)")
whatis([[
Description: Bats is a TAP-compliant testing framework for Bash. It provides a simple way to verify that the UNIX programs you write behave as expected.
Examples: `bats --version`, `bats --help`, `man bats`, `man 7 bats`, and `bats tests/`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))

bats-file #

bats-file: File-System Assertion Library for Bats (Bash Automated Testing System)
This is a helper library providing common filesystem related assertions and helpers foor Bats.
Example: In Bats setup() function: load "${BATS_SUPPORT_HOME}/load.bash" and load "${BATS_FILE_HOME}/load.bash"
URL: https://github.com/bats-core/bats-file, https://github.com/bats-core/bats-file/releases (changelog), https://bats-core.readthedocs.io/en/stable/faq.html?highlight=assert#how-can-i-use-helper-libraries-like-bats-file (documentation)
Versions: 0.4.0
Module code: view
help([[
bats-file: File-System Assertion Library for Bats (Bash Automated Testing System)
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: bash, shell, testing")
whatis("URL: https://github.com/bats-core/bats-file, https://github.com/bats-core/bats-file/releases (changelog), https://bats-core.readthedocs.io/en/stable/faq.html?highlight=assert#how-can-i-use-helper-libraries-like-bats-file (documentation)")
whatis([[
Description: This is a helper library providing common filesystem related assertions and helpers foor Bats.
Examples: In Bats `setup()` function: `load "${BATS_SUPPORT_HOME}/load.bash"` and `load "${BATS_FILE_HOME}/load.bash"`
]])

depends_on("bats-support")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("BATS_FILE_HOME", home)

bats-support #

bats-support: Supporting Library for Bats (Bash Automated Testing System)
This is a supporting library providing common functions to test helper libraries written for Bats.
Example: In Bats setup() function: load "${BATS_SUPPORT_HOME}/load.bash"
URL: https://github.com/bats-core/bats-support, https://github.com/bats-core/bats-support/releases (changelog), https://bats-core.readthedocs.io/en/stable/faq.html?highlight=assert#how-can-i-use-helper-libraries-like-bats-assert (documentation)
Versions: 0.3.0
Module code: view
help([[
bats-support: Supporting Library for Bats (Bash Automated Testing System)
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: bash, shell, testing")
whatis("URL: https://github.com/bats-core/bats-support, https://github.com/bats-core/bats-support/releases (changelog), https://bats-core.readthedocs.io/en/stable/faq.html?highlight=assert#how-can-i-use-helper-libraries-like-bats-assert (documentation)")
whatis([[
Description: This is a supporting library providing common functions to test helper libraries written for Bats.
Examples: In Bats `setup()` function: `load "${BATS_SUPPORT_HOME}/load.bash"`
]])

depends_on("bats-core")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("BATS_SUPPORT_HOME", home)

bcftools #

BCFtools: Utilities for Variant Calling and Manipulating VCFs and BCFs
BCFtools is a set of utilities that manipulate variant calls in the Variant Call Format (VCF) and its binary counterpart BCF. All commands work transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed.
Example: bcftools --version
URL: https://www.htslib.org/, https://github.com/samtools/bcftools/blob/develop/NEWS (changelog), https://github.com/samtools/bcftools (source code)
Versions: 1.9, 1.10, 1.10.2, 1.11, 1.13, 1.14, 1.15, 1.15.1, 1.16, 1.17, 1.18, 1.19, 1.20, 1.21
Module code: view
help([[
BCFtools: Utilities for Variant Calling and Manipulating VCFs and BCFs
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://www.htslib.org/, https://github.com/samtools/bcftools/blob/develop/NEWS (changelog), https://github.com/samtools/bcftools (source code)")
whatis([[
Description: BCFtools is a set of utilities that manipulate variant calls in the Variant Call Format (VCF) and its binary counterpart BCF. All commands work transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed.
Examples: `bcftools --version`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
pushenv("BCFTOOLS_PLUGINS", pathJoin(home, "libexec", name))


-- Warn about bug https://github.com/samtools/htslib/issues/1236
if (mode() == "load" and version == "1.11") then
  LmodMessage("MODULE WARNING: " .. name .. " " .. version .. " has a bug that results in valid but incorrect CIGAR strings. Because of this, it is recommended to use an older or a newer version instead. For details, see https://github.com/samtools/htslib/issues/1236")
end

bcl2fastq #

bcl2fastq: Illumina Conversion Software
bcl2fastq Conversion Software both demultiplexes data and converts BCL files generated by Illumina sequencing systems to standard FASTQ file formats for downstream analysis.
Example: bcl2fastq --version
URL: https://support.illumina.com/sequencing/sequencing_software/bcl2fastq-conversion-software.html, https://support.illumina.com/sequencing/sequencing_software/bcl2fastq-conversion-software/downloads.html (changelog)
Versions: 2.20.0
Module code: view
help([[
bcl2fastq: Illumina Conversion Software
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, Illumina")
whatis("URL: https://support.illumina.com/sequencing/sequencing_software/bcl2fastq-conversion-software.html, https://support.illumina.com/sequencing/sequencing_software/bcl2fastq-conversion-software/downloads.html (changelog)")
whatis([[
Description: bcl2fastq Conversion Software both demultiplexes data and converts BCL files generated by Illumina sequencing systems to standard FASTQ file formats for downstream analysis.
Examples: `bcl2fastq --version`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

bedops #

BEDOPS: The Fast, Highly Scalable and Easily-Parallelizable Genome Analysis Toolkit
BEDOPS is an open-source command-line toolkit that performs highly efficient and scalable Boolean and other set operations, statistical calculations, archiving, conversion and other management of genomic data of arbitrary scale. Tasks can be easily split by chromosome for distributing whole-genome analyses across a computational cluster.
Example: bedops --version
URL: https://bedops.readthedocs.io/, https://bedops.readthedocs.io/en/latest/content/revision-history.html (changelog), https://github.com/bedops/bedops (source code)
Versions: 2.4.36, 2.4.37, 2.4.38, 2.4.39, 2.4.40, 2.4.41
Module code: view
help([[
BEDOPS: The Fast, Highly Scalable and Easily-Parallelizable Genome Analysis Toolkit
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: ")
whatis("URL: https://bedops.readthedocs.io/, https://bedops.readthedocs.io/en/latest/content/revision-history.html (changelog), https://github.com/bedops/bedops (source code)")
whatis([[
Description: BEDOPS is an open-source command-line toolkit that performs highly efficient and scalable Boolean and other set operations, statistical calculations, archiving, conversion and other management of genomic data of arbitrary scale. Tasks can be easily split by chromosome for distributing whole-genome analyses across a computational cluster.
Examples: `bedops --version`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

bedtools2 #

bedtools2: The Swiss Army Knife for Genome Arithmetic
Collectively, the bedtools utilities are a swiss-army knife of tools for a wide-range of genomics analysis tasks. The most widely-used tools enable genome arithmetic: that is, set theory on the genome. For example, bedtools allows one to intersect, merge, count, complement, and shuffle genomic intervals from multiple files in widely-used genomic file formats such as BAM, BED, GFF/GTF, VCF.
Example: bedtools --version and ls $BEDTOOLS2_HOME/genomes/.
URL: https://github.com/arq5x/bedtools2/, https://bedtools.readthedocs.io/en/latest/content/history.html (changelog), https://bedtools.readthedocs.org (documentation), https://code.google.com/archive/p/bedtools/downloads (legacy)
Versions: 2.26.0, 2.28.0, 2.29.1, 2.29.2, 2.30.0, 2.31.1
Module code: view
help([[
bedtools2: The Swiss Army Knife for Genome Arithmetic
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://github.com/arq5x/bedtools2/, https://bedtools.readthedocs.io/en/latest/content/history.html (changelog), https://bedtools.readthedocs.org (documentation), https://code.google.com/archive/p/bedtools/downloads (legacy)")
whatis([[
Description: Collectively, the bedtools utilities are a swiss-army knife of tools for a wide-range of genomics analysis tasks. The most widely-used tools enable genome arithmetic: that is, set theory on the genome. For example, bedtools allows one to intersect, merge, count, complement, and shuffle genomic intervals from multiple files in widely-used genomic file formats such as BAM, BED, GFF/GTF, VCF.
Examples: `bedtools --version` and `ls $BEDTOOLS2_HOME/genomes/`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

-- custom; helps find $BEDTOOLS2_HOME/genomes
pushenv("BEDTOOLS2_HOME", home)






blast #

BLAST+: Basic Local Alignment Search Tool
BLAST finds regions of similarity between biological sequences. The program compares nucleotide or protein sequences to sequence databases and calculates the statistical significance.
Example: blastx -version
URL: https://blast.ncbi.nlm.nih.gov/Blast.cgi, https://www.ncbi.nlm.nih.gov/books/NBK131777/ (changelog)
Versions: 2.9.0, 2.10.1, 2.11.0, 2.12.0, 2.13.0, 2.14.0, 2.14.1, 2.15.0, 2.16.0
Module code: view
help([[
BLAST+: Basic Local Alignment Search Tool
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: programming, scripting")
whatis("URL: https://blast.ncbi.nlm.nih.gov/Blast.cgi, https://www.ncbi.nlm.nih.gov/books/NBK131777/ (changelog)")
whatis([[
Description: BLAST finds regions of similarity between biological sequences. The program compares nucleotide or protein sequences to sequence databases and calculates the statistical significance.
Examples: `blastx -version`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", pathJoin(home, "bin"))

blat #

BLAT: Fast Sequence Search Command Line Tool
BLAT - client and server combined into a single program, first building the index, then using the index, and then exiting.
Example: blat
URL: https://genome.ucsc.edu/goldenPath/help/blatSpec.html (documentation), https://genome.ucsc.edu/FAQ/FAQblat.html (faq), https://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/blat/ (download), https://github.com/ucscGenomeBrowser/kent/tree/master/src/blat (source code)
Versions: 36x4, 37x1, 39x1
Module code: view
help([[
BLAT: Fast Sequence Search Command Line Tool
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, alignment")
whatis("URL: https://genome.ucsc.edu/goldenPath/help/blatSpec.html (documentation), https://genome.ucsc.edu/FAQ/FAQblat.html (faq), https://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/blat/ (download), https://github.com/ucscGenomeBrowser/kent/tree/master/src/blat (source code)")
whatis([[
Description: BLAT - client and server combined into a single program, first building the index, then using the index, and then exiting.
Examples: `blat`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", home)

bowtie #

Bowtie: A Fast and Sensitive Gapped Read Aligner
Bowtie is an ultrafast, memory-efficient short read aligner.
Example: bowtie --version and ls $BOWTIE_HOME/{genomes,indexes}
Note: This is Bowtie v1 - not v2.
URL: https://bowtie-bio.sourceforge.net/index.shtml, https://bowtie-bio.sourceforge.net/index.shtml (changelog), https://github.com/BenLangmead/bowtie (source code)
Versions: 1.2.3, 1.3.0, 1.3.1
Module code: view
help([[
Bowtie: A Fast and Sensitive Gapped Read Aligner
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://bowtie-bio.sourceforge.net/index.shtml, https://bowtie-bio.sourceforge.net/index.shtml (changelog), https://github.com/BenLangmead/bowtie (source code)")
whatis([[
Description: Bowtie is an ultrafast, memory-efficient short read aligner.
Examples: `bowtie --version` and `ls $BOWTIE_HOME/{genomes,indexes}`
Note: This is Bowtie v1 - _not v2_.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", home)
pushenv("BOWTIE_HOME", home)

bowtie2 #

Bowtie 2: A Fast and Sensitive Gapped Read Aligner
Bowtie 2 is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences.
Example: bowtie2 --version
URL: https://bowtie-bio.sourceforge.net/bowtie2/index.shtml, https://bowtie-bio.sourceforge.net/bowtie2/index.shtml (changelog), https://github.com/BenLangmead/bowtie2 (source code)
Versions: 2.3.5, 2.3.5.1, 2.4.1, 2.4.2, 2.4.4, 2.4.5, 2.5.0, 2.5.1, 2.5.2, 2.5.4
Module code: view
help([[
Bowtie 2: A Fast and Sensitive Gapped Read Aligner
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://bowtie-bio.sourceforge.net/bowtie2/index.shtml, https://bowtie-bio.sourceforge.net/bowtie2/index.shtml (changelog), https://github.com/BenLangmead/bowtie2 (source code)")
whatis([[
Description: Bowtie 2 is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences.
Examples: `bowtie2 --version`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

bwa #

BWA: Burrows-Wheeler Aligner
Burrows-Wheeler Aligner (BWA) is a software package for mapping low-divergent sequences against a large reference genome, such as the human genome.
Example: bwa.
URL: http://bio-bwa.sourceforge.net/, https://github.com/lh3/bwa/blob/master/NEWS.md (changelog), https://github.com/lh3/bwa (source code)
Versions: 0.7.12, 0.7.17, 0.7.18
Module code: view
help([[
BWA: Burrows-Wheeler Aligner
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: http://bio-bwa.sourceforge.net/, https://github.com/lh3/bwa/blob/master/NEWS.md (changelog), https://github.com/lh3/bwa (source code)")
whatis([[
Description: Burrows-Wheeler Aligner (BWA) is a software package for mapping low-divergent sequences against a large reference genome, such as the human genome.
Examples: `bwa`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)
prepend_path("MANPATH", pathJoin(home, "man"))

byobu #

byobu: Elegant Enhancement of the Otherwise Functional, Plain, Practical GNU Screen
Byobu is an elegant enhancement of the otherwise functional, plain, practical GNU Screen. Byobu includes an enhanced profile, configuration utilities, and system status notifications for the GNU screen window manager as well as the Tmux terminal multiplexer.
Example: byobu --version.
URL: https://www.byobu.org/, https://bazaar.launchpad.net/~kirkland/byobu/trunk/view/head:/debian/changelog (changelog), https://github.com/dustinkirkland/byobu (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 5.133
Module code: view
help([[
byobu: Elegant Enhancement of the Otherwise Functional, Plain, Practical GNU Screen
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: terminal, SSH")
whatis("URL: https://www.byobu.org/, https://bazaar.launchpad.net/~kirkland/byobu/trunk/view/head:/debian/changelog (changelog), https://github.com/dustinkirkland/byobu (source code)")
whatis([[
Description: Byobu is an elegant enhancement of the otherwise functional, plain, practical GNU Screen. Byobu includes an enhanced profile, configuration utilities, and system status notifications for the GNU screen window manager as well as the Tmux terminal multiplexer.
Examples: `byobu --version`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH",  pathJoin(home, "bin"))
prepend_path("MANPATH",  pathJoin(home, "share", "man"))

cellranger #

Cell Ranger: 10x Genomics Pipeline for Single-Cell Data Analysis
Cell Ranger is a set of analysis pipelines that process Chromium Single Cell 3' RNA-seq output to align reads, generate gene-cell matrices and perform clustering and gene expression analysis.
Example: cellranger --help and cellranger --version.
URL: https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/what-is-cell-ranger, https://www.10xgenomics.com/support/software/cell-ranger/latest/release-notes/cr-release-notes (changelog), https://github.com/10XGenomics/cellranger (source code)
Warning: To prevent a single Cell Ranger process from hijacking all CPU and RAM by default, this module sets environment variable MROFLAGS='--localcores=1 --localmem=8 --limit-loadavg' making those the default.
Versions: 2.1.0, 3.0.2, 3.1.0, 4.0.0, 5.0.1, 6.1.1, 6.1.2, 7.0.0, 7.0.1, 7.1.0, 7.2.0, 8.0.0, 8.0.1, 9.0.0
Module code: view
help([[
Cell Ranger: 10x Genomics Pipeline for Single-Cell Data Analysis
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, 10x genomics")
whatis("URL: https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/what-is-cell-ranger, https://www.10xgenomics.com/support/software/cell-ranger/latest/release-notes/cr-release-notes (changelog), https://github.com/10XGenomics/cellranger (source code)")
whatis([[
Description: Cell Ranger is a set of analysis pipelines that process Chromium Single Cell 3' RNA-seq output to align reads, generate gene-cell matrices and perform clustering and gene expression analysis.
Examples: `cellranger --help` and `cellranger --version`.
Warning: To prevent a single Cell Ranger process from hijacking all CPU and RAM by default, this module sets environment variable `MROFLAGS='--localcores=1 --localmem=8 --limit-loadavg'` making those the default.
]])

load("bcl2fastq")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

-- Make CellRanger run on a single core with little memory by default
-- This prevents a single Cell Ranger process from hijacking all
-- available CPU and memory resources.
-- REFERENCES:
-- * https://martian-lang.org/advanced-features/#job-management
pushenv("MROFLAGS", "--localcores=1 --localmem=8 --limit-loadavg")

-- Assert that the current machine supports x86-64 v2 or greater
setenv("X86_64_LEVEL_ASSERT", "2")
try_load("x86-64-level")
setenv("X86_64_LEVEL_ASSERT", "")

chafa #

chafa: Chafa (Character Art Facsimile) Terminal Graphics and Character Art Generator
Chafa is a command-line utility that converts image data, including animated GIFs, into graphics formats or ANSI/Unicode character art suitable for display in a terminal. Supports modern terminal graphics formats (Sixels, Kitty, iTerm2, Unicode mosaics) - pick the one that your local terminal supports.
Example: chafa image.png, chafa --format=iterm image.png, chafa --format=kitty image.png, chafa --version and chafa --help.
URL: https://hpjansson.org/chafa/, https://github.com/hpjansson/chafa/blob/master/NEWS (changelog) https://github.com/hpjansson/chafa/releases (releases), https://github.com/hpjansson/chafa (source code)
Versions: 1.14.4-1
Module code: view
help([[
chafa: Chafa (Character Art Facsimile) Terminal Graphics and Character Art Generator
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: cli, shell")
whatis("URL: https://hpjansson.org/chafa/, https://github.com/hpjansson/chafa/blob/master/NEWS (changelog) https://github.com/hpjansson/chafa/releases (releases), https://github.com/hpjansson/chafa (source code)")
whatis([[
Description: Chafa is a command-line utility that converts image data, including animated GIFs, into graphics formats or ANSI/Unicode character art suitable for display in a terminal. Supports modern terminal graphics formats (Sixels, Kitty, iTerm2, Unicode mosaics) - pick the one that your local terminal supports.
Examples: `chafa image.png`, `chafa --format=iterm image.png`, `chafa --format=kitty image.png`, `chafa --version` and `chafa --help`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

cmake #

CMake: Open-source, Cross-platform Family of Tools Designed to Build, Test and Package Software
CMake is cross-platform free and open-source software for managing the build process of software using a compiler-independent method. It supports directory hierarchies and applications that depend on multiple libraries.
Example: cmake --version.
URL: https://cmake.org/, https://cmake.org/cmake/help/latest/release/index.html (changelog) https://github.com/Kitware/CMake/releases (download)
Versions: 3.29.0, 3.30.2
Module code: view
help([[
CMake: Open-source, Cross-platform Family of Tools Designed to Build, Test and Package Software
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: development, make")
whatis("URL: https://cmake.org/, https://cmake.org/cmake/help/latest/release/index.html (changelog) https://github.com/Kitware/CMake/releases (download)")
whatis([[
Description: CMake is cross-platform free and open-source software for managing the build process of software using a compiler-independent method. It supports directory hierarchies and applications that depend on multiple libraries.
Examples: `cmake --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH",  pathJoin(home, "bin"))
prepend_path("MANPATH",  pathJoin(home, "man"))

conda-stage #

conda-stage: Stage Conda Environment on Local Disk
The 'conda-stage' tool stages a Conda environment to local disk. Working with a Conda environment on local disk can greatly improve the performance as local disk is often much faster than a global, network-based file system, including multi-tenant parallel file systems such as BeeGFS and Lustre often found in high-performance compute (HPC) environments.
Example: conda-stage --auto-stage=enable, and conda-stage --help.
URL: https://github.com/HenrikBengtsson/conda-stage, https://github.com/HenrikBengtsson/conda-stage/blob/develop/NEWS.md (changelog), https://github.com/HenrikBengtsson/conda-stage/tags (releases)
Warning: This is work under construction. Your milage may vary! /HB 2022-04-13
Versions: 0.7.2
Module code: view
help([[
conda-stage: Stage Conda Environment on Local Disk
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: cli, shell")
whatis("URL: https://github.com/HenrikBengtsson/conda-stage, https://github.com/HenrikBengtsson/conda-stage/blob/develop/NEWS.md (changelog), https://github.com/HenrikBengtsson/conda-stage/tags (releases)")
whatis([[
Description: The 'conda-stage' tool stages a Conda environment to local disk. Working with a Conda environment on local disk can greatly improve the performance as local disk is often much faster than a global, network-based file system, including multi-tenant parallel file systems such as BeeGFS and Lustre often found in high-performance compute (HPC) environments.
Examples: `conda-stage --auto-stage=enable`, and `conda-stage --help`.
Warning: This is work under construction. Your milage may vary! /HB 2022-04-13
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")

-- WORKAROUND: For some reasons, this is required in order for
-- the 'root' part to be included in the 'home' path below in
-- *some* cases. For example, if we do 'conda activate base',
-- 'conda deactivate', and then 'module load conda-stage' we
-- would, for unknown reasons, end up with an empty 'root'.
-- The below seems to force the correct value of 'root'.
-- /HB 2022-09-22
if not isDir(root) then
  LmodError("Environment variable 'SOFTWARE_ROOT_CBI' does not specify an existing folder: " .. os.getenv("SOFTWARE_ROOT_CBI"))
end

local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

pushenv("CONDA_STAGE_PROLOGUE", "module load CBI " .. name)

local script = pathJoin(home, "bin", "conda-stage." .. myShellType())
if not isFile(script) then
  LmodError("The " .. name .. " module is not supported for your shell (" .. myShellType() .. "; SHELL=" .. os.getenv("SHELL") .. "). No such file: " .. script)
end

-- Create conda-stage() function, which will overwrite itself after the
-- first invocation
local body = 'source "' .. script .. '"; '
body = body .. 'conda-stage "$@"'
set_shell_function("conda-stage", body, '')

control-freec #

Control FREEC: Control-FREE Copy Number and Genotype Caller
Prediction of copy numbers and allelic content using deep-sequencing data.
Example: freec
URL: http://boevalab.com/FREEC/, https://github.com/BoevaLab/FREEC/releases (changelog), https://github.com/BoevaLab/FREEC/ (source code)
Versions: 11.5, 11.6
Module code: view
help([[
Control FREEC: Control-FREE Copy Number and Genotype Caller
]])

local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: ")
whatis("URL: http://boevalab.com/FREEC/, https://github.com/BoevaLab/FREEC/releases (changelog), https://github.com/BoevaLab/FREEC/ (source code)")
whatis([[
Description: Prediction of copy numbers and allelic content using deep-sequencing data.
Examples: `freec`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local name = "FREEC"
local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", pathJoin(home, "bin"))


Cufflinks: Transcriptome Assembly and Differential Expression Analysis for RNA-Seq
Cufflinks assembles transcripts, estimates their abundances, and tests for differential expression and regulation in RNA-Seq samples. It accepts aligned RNA-Seq reads and assembles the alignments into a parsimonious set of transcripts. Cufflinks then estimates the relative abundances of these transcripts based on how many reads support each one, taking into account biases in library preparation protocols.
Example: cufflinks
URL: http://cole-trapnell-lab.github.io/cufflinks/, https://github.com/cole-trapnell-lab/cufflinks (source code)
Versions: 2.2.1
Module code: view
help([[
Cufflinks: Transcriptome Assembly and Differential Expression Analysis for RNA-Seq
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: http://cole-trapnell-lab.github.io/cufflinks/, https://github.com/cole-trapnell-lab/cufflinks (source code)")
whatis([[
Description: Cufflinks assembles transcripts, estimates their abundances, and tests for differential expression and regulation in RNA-Seq samples. It accepts aligned RNA-Seq reads and assembles the alignments into a parsimonious set of transcripts. Cufflinks then estimates the relative abundances of these transcripts based on how many reads support each one, taking into account biases in library preparation protocols.
Examples: `cufflinks`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

cutadapt #

Cutadapt: Remove Adapter Sequences from Sequencing Reads
Cutadapt finds and removes adapter sequences, primers, poly-A tails and other types of unwanted sequence from your high-throughput sequencing reads.
Example: cutadapt --version and cutadapt --help.
URL: https://cutadapt.readthedocs.io/en/stable/, https://github.com/marcelm/cutadapt/blob/main/CHANGES.rst (changelog), https://github.com/marcelm/cutadapt (source code)
Requirement: CentOS 7.
Versions: 3.7, 4.9
Module code: view
help([[
Cutadapt: Remove Adapter Sequences from Sequencing Reads 
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, genome")
whatis("URL: https://cutadapt.readthedocs.io/en/stable/, https://github.com/marcelm/cutadapt/blob/main/CHANGES.rst (changelog), https://github.com/marcelm/cutadapt (source code)")
whatis([[
Description: Cutadapt finds and removes adapter sequences, primers, poly-A tails and other types of unwanted sequence from your high-throughput sequencing reads.
Requirements: CentOS 7.
Examples: `cutadapt --version` and `cutadapt --help`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
-- Specific to the Linux distribution?
if string.match(myFileName(), "/_" .. os.getenv("CBI_LINUX") .. "/") then
  root = pathJoin(root, "_" .. os.getenv("CBI_LINUX"))
end

-- if os.getenv("CBI_LINUX") ~= "centos7" then
--   LmodError("The '" .. name .. "' module is not yet supported on " .. os.getenv("CBI_LINUX") .. ". See https://github.com/HenrikBengtsson/CBI-software/issues/102 for updates on this problem.")
-- end

local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", pathJoin(home, "bin"))




easycatfs #

easycatfs: Easy Read-Only Mounting of Slow Folders onto a Local Drive
This is Linux command-line tool for mounting one or more folders on a network file system on a local disk such that the local-disk folders mirrors everything (read-only) on the network folder. This will result in (i) faster repeated access to files, and (ii) decreased load on the network file system. This is particularly beneficial when working on high-performance compute (HPC) clusters used by hundreds and thousands of processes and users simultaneously.
Example: easycatfs --help and easycatfs mount /shared/data.
URL: https://github.com/HenrikBengtsson/easycatfs
Warning: Only the most recent version of this software will be kept.
Versions: 0.1.5
Module code: view
help([[
easycatfs: Easy Read-Only Mounting of Slow Folders onto a Local Drive
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, files, hpc")
whatis("URL: https://github.com/HenrikBengtsson/easycatfs")
whatis([[
Description: This is Linux command-line tool for mounting one or more folders on a network file system on a local disk such that the local-disk folders mirrors everything (read-only) on the network folder. This will result in (i) faster repeated access to files, and (ii) decreased load on the network file system. This is particularly beneficial when working on high-performance compute (HPC) clusters used by hundreds and thousands of processes and users simultaneously.
Examples: `easycatfs --help` and `easycatfs mount /shared/data`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

emacs #

GNU Emacs: An Extensible, Customizable, Free/Libre Text Editor
At its core is an interpreter for Emacs Lisp, a dialect of the Lisp programming language with extensions to support text editing.
Example: emacs --version and emacs -nw.
URL: https://www.gnu.org/software/emacs/, https://www.gnu.org/savannah-checkouts/gnu/emacs/emacs.html#Releases (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 29.4
Module code: view
help([[
GNU Emacs: An Extensible, Customizable, Free/Libre Text Editor
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: editor, text, cli, tui")
whatis("URL: https://www.gnu.org/software/emacs/, https://www.gnu.org/savannah-checkouts/gnu/emacs/emacs.html#Releases (changelog)")
whatis([[
Description: At its core is an interpreter for Emacs Lisp, a dialect of the Lisp programming language with extensions to support text editing.
Examples: `emacs --version` and `emacs -nw`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")

-- Specific to the Linux distribution?
if string.match(myFileName(), "/_" .. os.getenv("CBI_LINUX") .. "/") then
  root = pathJoin(root, "_" .. os.getenv("CBI_LINUX"))
end

local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))

expect #

expect: Programmed Dialogue with Interactive Programs
Expect is a tool for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect really makes this stuff trivial. Expect is also useful for testing these same applications.
Example: expect -version, and man expect.
URL: https://core.tcl-lang.org/expect/index, https://core.tcl-lang.org/expect/file?name=ChangeLog&ci=tip (changelog), https://core.tcl-lang.org/expect/dir?ci=tip (source code), https://sourceforge.net/projects/expect/files/Expect/ (download)
Versions: 5.45.4
Module code: view
help([[
expect: Programmed Dialogue with Interactive Programs
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: scripting, programming")
whatis("URL: https://core.tcl-lang.org/expect/index, https://core.tcl-lang.org/expect/file?name=ChangeLog&ci=tip (changelog), https://core.tcl-lang.org/expect/dir?ci=tip (source code), https://sourceforge.net/projects/expect/files/Expect/ (download)")
whatis([[
Description: Expect is a tool for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect really makes this stuff trivial. Expect is also useful for testing these same applications.
Examples: `expect -version`, and `man expect`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")

-- Specific to the Linux distribution?
if string.match(myFileName(), "/_" .. os.getenv("CBI_LINUX") .. "/") then
  root = pathJoin(root, "_" .. os.getenv("CBI_LINUX"))
end

local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "libs"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))

fastqc #

FastQC: A Quality Control Analysis Tool for High Throughput Sequencing Data
FastQC is a program designed to spot potential problems in high throughput sequencing datasets. It runs a set of analyses on one or more raw sequence files in fastq or bam format and produces a report which summarises the results.
Example: fastqc --version.
URL: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/, https://raw.githubusercontent.com/s-andrews/FastQC/master/RELEASE_NOTES.txt (changelog), https://github.com/s-andrews/FastQC/ (source code)
Versions: 0.11.8, 0.11.9, 0.12.1
Module code: view
help([[
FastQC: A Quality Control Analysis Tool for High Throughput Sequencing Data
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, qc")
whatis("URL: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/, https://raw.githubusercontent.com/s-andrews/FastQC/master/RELEASE_NOTES.txt (changelog), https://github.com/s-andrews/FastQC/ (source code)")
whatis([[
Description: FastQC is a program designed to spot potential problems in high throughput sequencing datasets. It runs a set of analyses on one or more raw sequence files in fastq or bam format and produces a report which summarises the results.
Examples: `fastqc --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, "FastQC" .. "-" .. version)

prepend_path("PATH", home)

fclones #

fclones: Efficient Duplicate File Finder
'fclones' is a command line utility that identifies groups of identical files and gets rid of the file copies you no longer need. It comes with plenty of configuration options for controlling the search scope and offers many ways of removing duplicates.
Example: fclones --version, fclones --help, fclones group . --threads main:1, and fclones group . --depth 1 --threads main:1.
URL: https://github.com/pkolaczk/fclones, https://github.com/pkolaczk/fclones/releases (releases), https://docs.rs/fclones/latest/fclones/ (Rust API documentation)
Versions: 0.34.0
Module code: view
help([[
fclones: Efficient Duplicate File Finder
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, cli, files")
whatis("URL: https://github.com/pkolaczk/fclones, https://github.com/pkolaczk/fclones/releases (releases), https://docs.rs/fclones/latest/fclones/ (Rust API documentation)")
whatis([[
Description: 'fclones' is a command line utility that identifies groups of identical files and gets rid of the file copies you no longer need. It comes with plenty of configuration options for controlling the search scope and offers many ways of removing duplicates.
Examples: `fclones --version`, `fclones --help`, `fclones group . --threads main:1`, and `fclones group . --depth 1 --threads main:1`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

fzf #

fzf: A Command-Line Fuzzy Finder
fzf is a general-purpose command-line fuzzy finder. It's an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.
Example: fzf --version and emacs "$(fzf)".
Note: To install tab completions and key bindinds to your shell, call $FZF_HOME/install. To uninstall, use $FZF_HOME/uninstall.
URL: https://github.com/junegunn/fzf, https://github.com/junegunn/fzf/wiki (documentation), https://github.com/junegunn/fzf/blob/master/CHANGELOG.md (changelog), https://github.com/junegunn/fzf/releases (download)
Warning: Only the most recent version of this software will be kept.
Versions: 0.56.3
Module code: view
help([[
fzf: A Command-Line Fuzzy Finder
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: , cli, tui, shell")
whatis("URL: https://github.com/junegunn/fzf, https://github.com/junegunn/fzf/wiki (documentation), https://github.com/junegunn/fzf/blob/master/CHANGELOG.md (changelog), https://github.com/junegunn/fzf/releases (download)")
whatis([[
Description: fzf is a general-purpose command-line fuzzy finder. It's an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.
Examples: `fzf --version` and `emacs "$(fzf)"`. Note: To install tab completions and key bindinds to your shell, call `$FZF_HOME/install`. To uninstall, use `$FZF_HOME/uninstall`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "man"))

-- Custom
pushenv("FZF_HOME", home)

gatk #

Genome Analysis Toolkit (GATK): Variant Discovery in High-Throughput Sequencing Data
Developed in the Data Sciences Platform at the Broad Institute, the toolkit offers a wide variety of tools with a primary focus on variant discovery and genotyping. Its powerful processing engine and high-performance computing features make it capable of taking on projects of any size.
Example: gatk --help and gatk --list.
URL: https://gatk.broadinstitute.org/hc/en-us, https://github.com/broadinstitute/gatk (source code), https://github.com/broadinstitute/gatk/releases (changelog), https://github.com/broadgsa/gatk (legacy), https://console.cloud.google.com/storage/browser/gatk-software/package-archive (legacy), ftp://ftp.broadinstitute.org/pub/gsa/GenomeAnalysisTK/ (legacy)
Requirement: Modern GATK versions require Java (>= 17).
Versions: 4.1.0.0, 4.1.2.0, 4.1.3.0, 4.1.4.0, 4.1.6.0, 4.1.7.0, 4.1.9.0, 4.2.2.0, 4.2.4.1, 4.2.5.0, 4.2.6.0, 4.2.6.1, 4.3.0.0, 4.4.0.0, 4.5.0.0, 4.6.0.0, 4.6.1.0
Module code: view
help([[
Genome Analysis Toolkit (GATK): Variant Discovery in High-Throughput Sequencing Data
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, genome")
whatis("URL: https://gatk.broadinstitute.org/hc/en-us, https://github.com/broadinstitute/gatk (source code), https://github.com/broadinstitute/gatk/releases (changelog), https://github.com/broadgsa/gatk (legacy), https://console.cloud.google.com/storage/browser/gatk-software/package-archive (legacy), ftp://ftp.broadinstitute.org/pub/gsa/GenomeAnalysisTK/ (legacy)")
whatis([[
Description: Developed in the Data Sciences Platform at the Broad Institute, the toolkit offers a wide variety of tools with a primary focus on variant discovery and genotyping. Its powerful processing engine and high-performance computing features make it capable of taking on projects of any size.
Requirements: Modern GATK versions require Java (>= 17).
Examples: `gatk --help` and `gatk --list`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

local version_x = string.gsub(version, "[.].*", "")
if version_x == "1" then
  -- GATK v1.* requires Java (<= 1.7)
  local cluster = os.getenv("CLUSTER") or ""
  if (cluster == "tipcc") then
    load("jdk/1.7.0")
  else
    depends_on("openjdk/1.6.0")
  end
  pushenv("GATK_HOME", home)
elseif version_x == "4" then
  if mode() == "load" then
    local success=false

    -- try all possible openjdk/(>= 17) versions
    for version = 17,30 do
      module="openjdk/" .. version
      if isAvail(module) then
        load(module)
        success=true
        break
      end
    end
    
    -- try oraclejdk/(>= 17) versions
    if not success then
      for version = 17,30 do
        module="oraclejdk/" .. version
        if isAvail(module) then
          load(module)
          success=true
          break
        end
      end
    end
    
    if not success then
      LmodError(name .. " requires openjdk/17 or newer, but that is not available on " .. os.getenv("CBI_LINUX") .. " machine " .. os.getenv("HOSTNAME"))
    end
  end
  prepend_path("PATH", home)
else
  prepend_path("PATH", home)
end

-- Tweak Java for the current environment
depends_on("java-tweaks")

gcta #

GCTA: Genome-wide Complex Trait Analysis
A tool for Genome-wide Complex Trait Analysis (GCTA).
Example: gcta64.
URL: https://yanglab.westlake.edu.cn/software/gcta/#Overview, https://cnsgenomics.com/software/gcta/, https://github.com/jianyangqt/gcta (source code)
Versions: 1.26.0, 1.92.3beta3, 1.92.4beta, 1.93.2beta, 1.94.0beta
Module code: view
help([[
GCTA: Genome-wide Complex Trait Analysis
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: genome")
whatis("URL: https://yanglab.westlake.edu.cn/software/gcta/#Overview, https://cnsgenomics.com/software/gcta/, https://github.com/jianyangqt/gcta (source code)")
whatis([[
Description: A tool for Genome-wide Complex Trait Analysis (GCTA).
Examples: `gcta64`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

geos #

GEOS: Geometry Engine, Open Source
GEOS (Geometry Engine - Open Source) is a C++ port of the JTS Topology Suite (JTS). It aims to contain the complete functionality of JTS in C++. This includes all the OpenGIS Simple Features for SQL spatial predicate functions and spatial operators, as well as specific JTS enhanced functions. GEOS provides spatial functionality to many other projects and products.
Example: geos-config --version.
URL: https://libgeos.org/, https://libgeos.org/usage/download/ (changelog), https://github.com/libgeos/geos/issues (bug reports)
Versions: 3.5.2, 3.7.3, 3.8.1, 3.9.1, 3.9.3, 3.9.4
Module code: view
help([[
GEOS: Geometry Engine, Open Source
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: statistics, spatial")
whatis("URL: https://libgeos.org/, https://libgeos.org/usage/download/ (changelog), https://github.com/libgeos/geos/issues (bug reports)")
whatis([[
Description: GEOS (Geometry Engine - Open Source) is a C++ port of the JTS Topology Suite (JTS). It aims to contain the complete functionality of JTS in C++. This includes all the OpenGIS Simple Features for SQL spatial predicate functions and spatial operators, as well as specific JTS enhanced functions. GEOS provides spatial functionality to many other projects and products.
Examples: `geos-config --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

-- execution
prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))
-- linking
prepend_path("LD_RUN_PATH", pathJoin(home, "lib"))
-- building
prepend_path("CPATH",  pathJoin(home, "include"))
prepend_path("CFLAGS", "-I" .. pathJoin(home, "include"), " ")
prepend_path("LDFLAGS", "-L" .. pathJoin(home, "lib"), " ")

git-extras #

git-extras: Little Git Extras
GIT utilities -- repo summary, repl, changelog population, author commit percentages and more.
Example: git extras --version and git extras --help.
URL: https://github.com/tj/git-extras, https://github.com/tj/git-extras/releases (releases), https://github.com/tj/git-extras/blob/main/History.md (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 7.2.0, 7.3.0
Module code: view
help([[
git-extras: Little Git Extras
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: version control")
whatis("URL: https://github.com/tj/git-extras, https://github.com/tj/git-extras/releases (releases), https://github.com/tj/git-extras/blob/main/History.md (changelog)")
whatis(
[[Description: GIT utilities -- repo summary, repl, changelog population, author commit percentages and more.
Examples: `git extras --version` and `git extras --help`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))

git-flow #

git-flow: Git Extension Git Flow (AVH Edition)
A collection of Git extensions to provide high-level repository operations for Vincent Driessen's branching model.
Example: git flow.
URL: https://github.com/petervanderdoes/gitflow-avh, https://github.com/petervanderdoes/gitflow-avh/blob/develop/CHANGELOG.md (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 1.12.3
Module code: view
help([[
git-flow: Git Extension Git Flow (AVH Edition)
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: version control")
whatis("URL: https://github.com/petervanderdoes/gitflow-avh, https://github.com/petervanderdoes/gitflow-avh/blob/develop/CHANGELOG.md (changelog)")
whatis(
[[Description: A collection of Git extensions to provide high-level repository operations for Vincent Driessen's branching model.
Examples: `git flow`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

github-cli #

github-cli: GitHub's Official Command Line Tool
gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with git and your code.
Example: gh --version, gh --help, gh auth login, and gh extension install dlvhdr/gh-dash.
URL: https://cli.github.com/, https://cli.github.com/manual/ (documentation), https://github.com/cli/cli/releases (changelog), https://github.com/cli/cli/ (source code), https://github.com/topics/gh-extension (GitHub CLI extensions)
Warning: Only the most recent version of this software will be kept.
Versions: 2.62.0, 2.63.0, 2.63.2
Module code: view
help([[
github-cli: GitHub's Official Command Line Tool 
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, file viewer, cli, tui")
whatis("URL: https://cli.github.com/, https://cli.github.com/manual/ (documentation), https://github.com/cli/cli/releases (changelog), https://github.com/cli/cli/ (source code), https://github.com/topics/gh-extension (GitHub CLI extensions)")
whatis([[
Description: `gh` is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with `git` and your code.
Examples: `gh --version`, `gh --help`, `gh auth login`, and `gh extension install dlvhdr/gh-dash`.
Warning: Only the most recent version of this software will be kept.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man", "man1"))

gitleaks #

gitleaks: Protect and Discover Secrets using Gitleaks
Examples: gitleaks --version, and gitleaks --help.
URL: https://gitleaks.io/, https://github.com/gitleaks/gitleaks/releases (releases), https://github.com/gitleaks/gitleaks (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 8.20.0, 8.21.2
Module code: view
help([[
gitleaks: Protect and Discover Secrets using Gitleaks
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, cli")
whatis("URL: https://gitleaks.io/, https://github.com/gitleaks/gitleaks/releases (releases), https://github.com/gitleaks/gitleaks (source code)")
whatis([[
Description: 
Examples: `gitleaks --version`, and `gitleaks --help`.
Warning: Only the most recent version of this software will be kept.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

gitui #

gitui: Blazing Fast Terminal-UI for Git Written in Rust
GitUI provides you with the comfort of a git GUI but right in your terminal.
Example: gitui --help, gitui --version, and gitui.
URL: https://github.com/extrawurst/gitui/blob/master/CHANGELOG.md (changelog), https://github.com/extrawurst/gitui (source code)
Versions: 0.26.3
Module code: view
help([[
gitui: Blazing Fast Terminal-UI for Git Written in Rust
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, git")
whatis("URL: https://github.com/extrawurst/gitui/blob/master/CHANGELOG.md (changelog), https://github.com/extrawurst/gitui (source code)")
whatis([[
Description: GitUI provides you with the comfort of a git GUI but right in your terminal.
Examples: `gitui --help`, `gitui --version`, and `gitui`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)


glow #

glow: Render Markdown on the CLI, with Pizzazz!
Glow is a terminal based markdown reader designed from the ground up to bring out the beauty—and power—of the CLI. Use it to discover markdown files, read documentation directly on the command line and stash markdown files to your own private collection so you can read them anywhere. Glow will find local markdown files in subdirectories or a local Git repository.
Example: glow README.md, glow --pager README.md.
URL: https://github.com/charmbracelet/glow, https://github.com/charmbracelet/glow/releases (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 2.0.0
Module code: view
help([[
glow: Render Markdown on the CLI, with Pizzazz!
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, file viewer, pager, markdown, cli, tui")
whatis("URL: https://github.com/charmbracelet/glow, https://github.com/charmbracelet/glow/releases (changelog)")
whatis([[
Description: Glow is a terminal based markdown reader designed from the ground up to bring out the beauty—and power—of the CLI.  Use it to discover markdown files, read documentation directly on the command line and stash markdown files to your own private collection so you can read them anywhere. Glow will find local markdown files in subdirectories or a local Git repository.
Examples: `glow README.md`, `glow --pager README.md`.
Warning: Only the most recent version of this software will be kept.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)
prepend_path("MANPATH", home)

go #

go: The Go Programming Language
Build simple, secure, scalable systems with Go.
Example: go version and go help.
URL: https://go.dev/, https://go.dev/doc/devel/release (changelog), https://go.dev/dl/ (releases), https://github.com/golang (source code)
Versions: 1.22.5, 1.23.1
Module code: view
help([[
go: The Go Programming Language
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: cli, shell")
whatis("URL: https://go.dev/, https://go.dev/doc/devel/release (changelog), https://go.dev/dl/ (releases), https://github.com/golang (source code)")
whatis([[
Description: Build simple, secure, scalable systems with Go.
Examples: `go version` and `go help`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

setenv("GOROOT", home)
prepend_path("PATH", pathJoin(home, "bin"))

gping #

gping: Ping, but with a Graph
gping comes with the following super-powers: (i) graph the ping time for multiple hosts, (ii) graph the execution time for commands via the --cmd flag, and (iii) custom colours.
Example: gping --version, gping --help, gping 8.8.8.8 9.9.9.9, and gping --cmd "curl -o /dev/null https://www.github.com" "wget -O /dev/null https://github.com".
URL: https://github.com/orf/gping, https://github.com/orf/gping/releases (changelog), https://github.com/orf/gping (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 1.18.0
Module code: view
help([[
gping: Ping, but with a Graph
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: terminal, cli, utility")
whatis("URL: https://github.com/orf/gping, https://github.com/orf/gping/releases (changelog), https://github.com/orf/gping (source code)")
whatis([[
Description: gping comes with the following super-powers: (i) graph the ping time for multiple hosts, (ii) graph the execution time for commands via the `--cmd` flag, and (iii) custom colours.
Examples: `gping --version`, `gping --help`, `gping 8.8.8.8 9.9.9.9`, and `gping --cmd "curl -o /dev/null https://www.github.com" "wget -O /dev/null https://github.com"`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH",  home)

gsl #

GSL: Gnu Scientific Library
The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License. The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite.
Example: gsl-config --version.
URL: https://www.gnu.org/software/gsl/, https://git.savannah.gnu.org/cgit/gsl.git/tree/NEWS (changelog), https://mirror.ibcp.fr/pub/gnu/gsl/ (download), https://git.savannah.gnu.org/cgit/gsl.git/ (source code)
Versions: 2.6, 2.7, 2.8
Module code: view
help([[
GSL: Gnu Scientific Library
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: library")
whatis("URL: https://www.gnu.org/software/gsl/, https://git.savannah.gnu.org/cgit/gsl.git/tree/NEWS (changelog), https://mirror.ibcp.fr/pub/gnu/gsl/ (download), https://git.savannah.gnu.org/cgit/gsl.git/ (source code)")
whatis([[
Description: The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License. The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite.
Examples: `gsl-config --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))
prepend_path("PKG_CONFIG_PATH", pathJoin(home, "lib", "pkgconfig"))

hdf5 #

hdf5: A General Purpose Library and File Format for Storing Scientific Data
Hierarchical Data Format (HDF) is a set of file formats (HDF4, HDF5) designed to store and organize large amounts of data. The HDF5 format is designed to address some of the limitations of the HDF4 library, and to address current and anticipated requirements of modern systems and applications.
Example: h5stat --version.
URL: https://www.hdfgroup.org/downloads/hdf5/, https://portal.hdfgroup.org/display/support/Downloads (changelog), https://www.hdfgroup.org/downloads/hdf5/source-code/ (source code)
Versions: 1.10.6, 1.12.0, 1.12.1, 1.12.2
Module code: view
help([[
hdf5: A General Purpose Library and File Format for Storing Scientific Data
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: library")
whatis("URL: https://www.hdfgroup.org/downloads/hdf5/, https://portal.hdfgroup.org/display/support/Downloads (changelog), https://www.hdfgroup.org/downloads/hdf5/source-code/ (source code)")
whatis([[
Description: Hierarchical Data Format (HDF) is a set of file formats (HDF4, HDF5) designed to store and organize large amounts of data. The HDF5 format is designed to address some of the limitations of the HDF4 library, and to address current and anticipated requirements of modern systems and applications.
Examples: `h5stat --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))
-- prepend_path("MANPATH", pathJoin(home, "share", "man"))

prepend_path("CPATH",  pathJoin(home, "include"))
-- prepend_path("CFLAGS", "-I" .. pathJoin(home, "include"), " ")
-- prepend_path("LDFLAGS", "-L" .. pathJoin(home, "lib"), " ")

hisat2 #

HISAT2: Graph-based Alignment of Next Generation Sequencing Reads to a Population of Genomes
HISAT2 is a fast and sensitive alignment program for mapping next-generation sequencing reads (both DNA and RNA) to a population of human genomes (as well as to a single reference genome). Based on an extension of BWT for graphs [Sirén et al. 2014], we designed and implemented a graph FM index (GFM), an original approach and its first implementation to the best of our knowledge. In addition to using one global GFM index that represents a population of human genomes, HISAT2 uses a large set of small GFM indexes that collectively cover the whole genome (each index representing a genomic region of 56 Kbp, with 55,000 indexes needed to cover the human population). These small indexes (called local indexes), combined with several alignment strategies, enable rapid and accurate alignment of sequencing reads. This new indexing scheme is called a Hierarchical Graph FM index (HGFM).
Example: hisat2 --version and hisat2 --help.
URL: https://daehwankimlab.github.io/hisat2/, https://github.com/DaehwanKimLab/hisat2/releases (changelog), https://github.com/DaehwanKimLab/hisat2/ (source code)
Versions: 2.1.0, 2.2.0
Module code: view
help([[
HISAT2: Graph-based Alignment of Next Generation Sequencing Reads to a Population of Genomes
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: Programming, Statistics")
whatis("URL: https://daehwankimlab.github.io/hisat2/, https://github.com/DaehwanKimLab/hisat2/releases (changelog), https://github.com/DaehwanKimLab/hisat2/ (source code)")
whatis([[
Description: HISAT2 is a fast and sensitive alignment program for mapping next-generation sequencing reads (both DNA and RNA) to a population of human genomes (as well as to a single reference genome). Based on an extension of BWT for graphs [Sirén et al. 2014], we designed and implemented a graph FM index (GFM), an original approach and its first implementation to the best of our knowledge. In addition to using one global GFM index that represents a population of human genomes, HISAT2 uses a large set of small GFM indexes that collectively cover the whole genome (each index representing a genomic region of 56 Kbp, with 55,000 indexes needed to cover the human population). These small indexes (called local indexes), combined with several alignment strategies, enable rapid and accurate alignment of sequencing reads. This new indexing scheme is called a Hierarchical Graph FM index (HGFM).
Examples: `hisat2 --version` and `hisat2 --help`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

htop #

htop: An Interactive Process Viewer for Unix
htop is an interactive process viewer for Unix systems. It is a text-mode application (for console or X terminals) and requires ncurses.
Example: htop.
URL: https://htop.dev, https://github.com/htop-dev/htop/blob/main/ChangeLog (changelog), https://github.com/htop-dev/htop (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 3.3.0
Module code: view
help([[
htop: An Interactive Process Viewer for Unix
]])

local name = myModuleName()
local version = myModuleVersion()
version = string.gsub(version, "^[.]", "") -- for hidden modules
whatis("Version: " .. version)
whatis("Keywords: system, utility, cli, tui")
whatis("URL: https://htop.dev, https://github.com/htop-dev/htop/blob/main/ChangeLog (changelog), https://github.com/htop-dev/htop (source code)")
whatis([[
Description: `htop` is an interactive process viewer for Unix systems. It is a text-mode application (for console or X terminals) and requires ncurses.
Examples: `htop`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")

-- Specific to the Linux distribution?
if string.match(myFileName(), "/_" .. os.getenv("CBI_LINUX") .. "/") then
  root = pathJoin(root, "_" .. os.getenv("CBI_LINUX"))
end

local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))

htslib #

HTSlib: C Library for High-Throughput Sequencing Data Formats
HTSlib is an implementation of a unified C library for accessing common file formats, such as SAM, CRAM and VCF, used for high-throughput sequencing data, and is the core library used by samtools and bcftools. HTSlib also provides the bgzip, htsfile, and tabix utilities.
Example: bgzip --version, htsfile --version, and tabix --version.
URL: https://www.htslib.org/, https://github.com/samtools/htslib/blob/develop/NEWS (changelog), https://github.com/samtools/htslib (source code)
Versions: 1.9, 1.10.2, 1.11, 1.13, 1.14, 1.15, 1.15.1, 1.16, 1.17, 1.18, 1.19, 1.19.1, 1.20, 1.21
Module code: view
help([[
HTSlib: C Library for High-Throughput Sequencing Data Formats
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, programming")
whatis("URL: https://www.htslib.org/, https://github.com/samtools/htslib/blob/develop/NEWS (changelog), https://github.com/samtools/htslib (source code)")
whatis([[
Description: HTSlib is an implementation of a unified C library for accessing common file formats, such as SAM, CRAM and VCF, used for high-throughput sequencing data, and is the core library used by samtools and bcftools. HTSlib also provides the bgzip, htsfile, and tabix utilities.
Examples: `bgzip --version`, `htsfile --version`, and `tabix --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))
prepend_path("PKG_CONFIG_PATH", pathJoin(home, "lib", "pkgconfig"))


-- Warn about bug https://github.com/samtools/htslib/issues/1236
if (mode() == "load" and version == "1.11") then
  LmodMessage("MODULE WARNING: " .. name .. " " .. version .. " has a bug that results in valid but incorrect CIGAR strings. Because of this, it is recommended to use an older or a newer version instead. For details, see https://github.com/samtools/htslib/issues/1236")
end

htstools #

htstools: Tools to Process BAM Files for Downstream Copy-Number Analysis
Contains three tools (dnafrags, ppflag-fixer, snp-pileup) written by Alex Studer to process bam files for downstream copy number analysis.
Example: snp-pileup --help, dnafrags --help, ppflag-fixer --help.
URL: https://github.com/mskcc/htstools, https://github.com/mskcc/htstools/releases (changelog)
Versions: 0.1.1
Module code: view
help([[
htstools: Tools to Process BAM Files for Downstream Copy-Number Analysis
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://github.com/mskcc/htstools, https://github.com/mskcc/htstools/releases (changelog)")
whatis([[
Description: Contains three tools (dnafrags, ppflag-fixer, snp-pileup) written by Alex Studer to process bam files for downstream copy number analysis.
Examples: `snp-pileup --help`, `dnafrags --help`, `ppflag-fixer --help`.
]])

depends_on("htslib")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

igv #

IGV: The Integrative Genomics Viewer
The Integrative Genomics Viewer (IGV) is a high-performance visualization tool for interactive exploration of large, integrated genomic datasets. It supports a wide variety of data types, including array-based and next-generation sequence data, and genomic annotations.
Example: igv --help, igv --version, and igv.
URL: https://software.broadinstitute.org/software/igv/, https://github.com/igvteam/igv/tags (changelog), https://github.com/igvteam/igv/ (source code)
Warning: IGV (>= 2.7.0) requires Java 17. Only the most recent version of this software will be kept.
Versions: 2.16.2, 2.17.0, 2.17.1, 2.17.3, 2.17.4, 2.18.1, 2.18.3, 2.18.4, 2.19.0
Module code: view
help([[
IGV: The Integrative Genomics Viewer
]])

-- local name = myModuleName()
local name = "IGV"
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://software.broadinstitute.org/software/igv/, https://github.com/igvteam/igv/tags (changelog), https://github.com/igvteam/igv/ (source code)")
whatis([[
Description: The Integrative Genomics Viewer (IGV) is a high-performance visualization tool for interactive exploration of large, integrated genomic datasets. It supports a wide variety of data types, including array-based and next-generation sequence data, and genomic annotations.
Examples: `igv --help`, `igv --version`, and `igv`.
Warning: IGV (>= 2.7.0) requires Java 17. Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", home)

-- Parse version x.y.z into x and y
version_x=string.gsub(version, "[.].*$", "")
version_xy=string.gsub(version, version_x .. "[.]", "")
version_y=string.gsub(version_xy, "[.].*$", "")
version_x=tonumber(version_x)
version_y=tonumber(version_y)

-- Identify required Java version
local min_java_version=8
if (version_x >= 2) then
  if (version_y >= 17) then
    min_java_version=17
  elseif (version_y >= 2.5) then
    min_java_version=11
  end
end


local java_check = 'ver=$(java -version 2>&1 | grep -F "version" | sed -E "s/(.* version |\\")//g"); >&2 echo "Java version: ${ver} [IGV ' .. version .. ' requires Java ' .. min_java_version .. ' or newer]"; ver_x=$(sed -E "s/^1[.]//" <<< "${ver}" | sed "s/[.].*//"); if [[ ${ver_x} -lt ' .. min_java_version .. ' ]]; then >&2 echo "ERROR: Java ${ver_x} detected, but IGV requires Java ' .. min_java_version .. ' or newer: $(java -version 2>&1 | grep -F "version")"; return 1; fi;'

local bash = java_check .. ' ' .. home .. '/igv.sh "$@"'
local csh  = home .. '/igv.sh $*'
set_shell_function("igv", bash, csh)

-- Tweak Java for the current environment
depends_on("java-tweaks")

igvtools #

IGVTools: Tools for Pre-processing HT-Seq Data Files
The igvtools utility provides a set of tools for pre-processing data files.
Example: igvtools help.
Note: igvtools moved to IGV as of IGV (>= 2.5.0).
URL: https://software.broadinstitute.org/software/igv/igvtools, https://software.broadinstitute.org/software/igv/2.12.x#LatestVersion (changelog), https://github.com/igvteam/igv/ (source code)
Versions: 2.4.19
Module code: view
help([[
IGVTools: Tools for Pre-processing HT-Seq Data Files
]])

-- local name = myModuleName()
local name = "IGVTools"
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://software.broadinstitute.org/software/igv/igvtools, https://software.broadinstitute.org/software/igv/2.12.x#LatestVersion (changelog), https://github.com/igvteam/igv/ (source code)")
whatis([[
Description: The igvtools utility provides a set of tools for pre-processing data files.
Examples: `igvtools help`.
Note: `igvtools` moved to IGV as of IGV (>= 2.5.0).
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

inxi #

inxi: A Full Featured System Information Script
Command line system information tool for console and IRC.
Example: inxi --version, inxi --help, and inxi -v4 -c6.
URL: https://smxi.org/docs/inxi.htm, https://smxi.org/docs/inxi-changelog.htm (changelog), https://codeberg.org/smxi/inxi (source code), https://codeberg.org/smxi/inxi/tags (releases)
Warning: Only the most recent version of this software will be kept.
Versions: 3.3.36-1
Module code: view
help([[
inxi: A Full Featured System Information Script
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, cli")
whatis("URL: https://smxi.org/docs/inxi.htm, https://smxi.org/docs/inxi-changelog.htm (changelog), https://codeberg.org/smxi/inxi (source code), https://codeberg.org/smxi/inxi/tags (releases)")
whatis([[
Description: Command line system information tool for console and IRC. 
Examples: `inxi --version`, `inxi --help`, and `inxi -v4 -c6`.
Warning: Only the most recent version of this software will be kept.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man", "man1"))

jags #

JAGS: Just Another Gibbs Sampler
JAGS is Just Another Gibbs Sampler. It is a program for analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) simulation not wholly unlike BUGS.
Example: jags and man jags.
URL: http://mcmc-jags.sourceforge.net/, https://sourceforge.net/p/mcmc-jags/code-0/ci/default/tree/NEWS (changelog), https://sourceforge.net/projects/mcmc-jags/ (source code)
Versions: 4.3.1, 4.3.2
Module code: view
help([[
JAGS: Just Another Gibbs Sampler
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: statistics")
whatis("URL: http://mcmc-jags.sourceforge.net/, https://sourceforge.net/p/mcmc-jags/code-0/ci/default/tree/NEWS (changelog), https://sourceforge.net/projects/mcmc-jags/ (source code)")
whatis([[
Description: JAGS is Just Another Gibbs Sampler.  It is a program for analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) simulation not wholly unlike BUGS.
Examples: `jags` and `man jags`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")

-- Specific to the Linux distribution?
if string.match(myFileName(), "/_" .. os.getenv("CBI_LINUX") .. "/") then
  root = pathJoin(root, "_" .. os.getenv("CBI_LINUX"))
end

local home = pathJoin(root, "JAGS" .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))
prepend_path("PKG_CONFIG_PATH", pathJoin(home, "lib", "pkgconfig"))

-- AD HOC:
-- R package 'rjags' uses 'JAGS_LIBDIR' and 'JAGS_INCLUDEDIR' (INSTALL)
-- Comment: Appears not to be needed /HB 2020-03-09
-- pushenv("JAGS_INCLUDEDIR", pathJoin(home, "include"))
-- pushenv("JAGS_LIBDIR", pathJoin(home, "lib"))

-- R package 'runjags' uses 'JAGS_LIB' and 'JAGS_INCLUDE' (README)
-- Comment: Email maintainer about diff to 'rjags' /HB 2020-03-09
-- pushenv("JAGS_INCLUDE", pathJoin(home, "include")) -- Not needed /HB 2020-03-09
pushenv("JAGS_LIB", pathJoin(home, "lib"))

jq #

jq: Command-line JSON Processor
jq is a lightweight and flexible command-line JSON processor.
Example: jq --help, jq --version, cat in.json | jq ., and man jq
URL: https://github.com/jqlang/jq, https://github.com/jqlang/jq/blob/master/NEWS.md (changelog), https://jqlang.github.io/jq (documentation)
Warning: Only the most recent version of this software will be kept.
Versions: 1.7.1
Module code: view
help([[
jq: Command-line JSON Processor 
]])

local name = myModuleName()
local version = myModuleVersion()
version = string.gsub(version, "^[.]", "") -- for hidden modules
whatis("Version: " .. version)
whatis("Keywords: utility, cli")
whatis("URL: https://github.com/jqlang/jq, https://github.com/jqlang/jq/blob/master/NEWS.md (changelog), https://jqlang.github.io/jq (documentation)")
whatis([[
Description: jq is a lightweight and flexible command-line JSON processor.
Examples: `jq --help`, `jq --version`, `cat in.json | jq .`, and `man jq`
Warning: Only the most recent version of this software will be kept.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

-- Run time
prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))

-- Compile time
prepend_path("CPATH", pathJoin(home, "include"))
prepend_path("LIBRARY_PATH", pathJoin(home, "lib"))
prepend_path("PKG_CONFIG_PATH", pathJoin(home, "lib", "pkgconfig"))

kallisto #

kallisto: Near-optimal RNA-Seq Quantification
kallisto is a program for quantifying abundances of transcripts from RNA-Seq data, or more generally of target sequences using high-throughput sequencing reads. It is based on the novel idea of pseudoalignment for rapidly determining the compatibility of reads with targets, without the need for alignment.
Example: kallisto version
URL: https://pachterlab.github.io/kallisto/about.html, https://github.com/pachterlab/kallisto/releases (changelog), https://github.com/pachterlab/kallisto (source code)
Versions: 0.45.0, 0.45.1, 0.46.0, 0.46.1, 0.46.2, 0.50.0, 0.50.1, 0.51.1
Module code: view
help([[
kallisto: Near-optimal RNA-Seq Quantification
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://pachterlab.github.io/kallisto/about.html, https://github.com/pachterlab/kallisto/releases (changelog), https://github.com/pachterlab/kallisto (source code)")
whatis([[
Description: kallisto is a program for quantifying abundances of transcripts from RNA-Seq data, or more generally of target sequences using high-throughput sequencing reads. It is based on the novel idea of pseudoalignment for rapidly determining the compatibility of reads with targets, without the need for alignment.
Examples: `kallisto version`
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)
markdown-link-check: Checks Links in Markdown Files
Checks all of the hyperlinks in a markdown text to determine if they are alive or dead.
Example: markdown-link-check --version, markdown-link-check --help, markdown-link-check -- *.md.
URL: https://github.com/tcort/markdown-link-check, https://github.com/tcort/markdown-link-check/releases (releases)
Versions: 3.13.6
Module code: view
help([[
markdown-link-check: Checks Links in Markdown Files
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: cli, utility")
whatis("URL: https://github.com/tcort/markdown-link-check, https://github.com/tcort/markdown-link-check/releases (releases)")
whatis([[
Description: Checks all of the hyperlinks in a markdown text to determine if they are alive or dead.
Examples: `markdown-link-check --version`, `markdown-link-check --help`, `markdown-link-check -- *.md`.
]]
)

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "node_modules", ".bin"))

markdownlint-cli #

markdownlint-cli: MarkdownLint Command Line Interface
Examples: markdownlint --version, markdownlint --help, markdownlint -- *.md.
URL: https://github.com/igorshubovych/markdownlint-cli (documentation), https://github.com/igorshubovych/markdownlint-cli/releases/ (releases), https://github.com/igorshubovych/markdownlint-cli (source code)
Versions: 0.43.0
Module code: view
help([[
markdownlint-cli: MarkdownLint Command Line Interface 
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: cli, utility")
whatis("URL: https://github.com/igorshubovych/markdownlint-cli (documentation), https://github.com/igorshubovych/markdownlint-cli/releases/ (releases), https://github.com/igorshubovych/markdownlint-cli (source code)")
whatis([[
Description: 
Examples: `markdownlint --version`, `markdownlint --help`, `markdownlint -- *.md`.
]]
)

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "node_modules", ".bin"))

mc #

mc: Midnight Commander
GNU Midnight Commander is a visual file manager. It's a feature rich full-screen text mode application that allows you to copy, move and delete files and whole directory trees, search for files and run commands in the subshell. Internal viewer and editor are included.
Example: mc and mc --version.
URL: https://midnight-commander.org/, https://github.com/MidnightCommander/mc/blob/master/doc/NEWS (changelog), https://github.com/MidnightCommander/mc (source code), https://github.com/MidnightCommander/mc/tags (download)
Warning: Only the most recent version of this software will be kept.
Versions: 4.8.32
Module code: view
help([[
mc: Midnight Commander
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, files, cli, tui")
whatis("URL: https://midnight-commander.org/, https://github.com/MidnightCommander/mc/blob/master/doc/NEWS (changelog), https://github.com/MidnightCommander/mc (source code), https://github.com/MidnightCommander/mc/tags (download)")
whatis([[
Description: GNU Midnight Commander is a visual file manager. It's a feature rich full-screen text mode application that allows you to copy, move and delete files and whole directory trees, search for files and run commands in the subshell. Internal viewer and editor are included.
Examples: `mc` and `mc --version`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))

miniconda3-py39 #

[DEFUNCT] Miniconda: A Free Minimal Installer for Conda
Versions: 4.12.0
Module code: view
help([[
[DEFUNCT] Miniconda: A Free Minimal Installer for Conda
]])

local name = myModuleName()
local version = myModuleVersion()
version = string.gsub(version, "^[.]", "") -- for hidden modules
local new = "miniconda3/" .. version .. "-py39"

whatis("Version: " .. version)
whatis("Keywords: deprecated, defunct")
whatis([[
Warning: This module is defunct and has been superseeded by module 'miniconda3'. Please use that module instead.
]])

depends_on(new)
LmodError("[DEFUNCT ERROR] The CBI '" .. name .. "/" .. version .. "' module has been renamed to '" .. new .. "'; please use that module instead")

miniconda3 #

Miniconda: A Free Minimal Installer for Conda
Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others.
Example: conda --version, conda create --name=myenv, conda env list, conda activate myenv, conda info, and conda deactive.
URL: https://docs.conda.io/en/latest/, https://docs.conda.io/en/latest/miniconda.html (documentation), https://docs.conda.io/en/latest/miniconda.html#latest-miniconda-installer-links (releases), https://github.com/conda/conda/blob/master/CHANGELOG.md (changelog), https://github.com/conda/conda (source code)
Warning: This module is deprecated as of 2024-08-21, because of Anconda Inc. license issues. Please use the miniforge3 module instead. Also, this module works only in Bash. Also, do not do conda init. If you do this by mistake, please undo by conda init --reverse.
Versions: 4.12.0-py39, 22.11.1-1-py310, 23.3.1-0-py39, 23.5.2-0-py39, 23.5.2-0-py310, 23.5.2-0-py311, 23.11.0-2-py311, 24.1.2-0-py312, 24.3.0-0-py312, 24.5.0-0-py312
Module code: view
help([[
[DEPRECATED] Miniconda: A Free Minimal Installer for Conda
]])

local warning = "Use at your own peril! Software tools installed via Conda are known to cause conflicts with other software on the system, including core software provided by the operating system as well as other software from the CBI stack. For example, do not install R packages running R from the CBI stack, while conda is activated."

local name = myModuleName()
local version = myModuleVersion()
version = string.gsub(version, "^[.]", "") -- for hidden modules
whatis("Version: " .. version)
whatis("Keywords: files, utility")
whatis("URL: https://docs.conda.io/en/latest/, https://docs.conda.io/en/latest/miniconda.html (documentation), https://docs.conda.io/en/latest/miniconda.html#latest-miniconda-installer-links (releases), https://github.com/conda/conda/blob/master/CHANGELOG.md (changelog), https://github.com/conda/conda (source code)")
whatis([[
Description: Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others.
Examples: `conda --version`, `conda create --name=myenv`, `conda env list`, `conda activate myenv`, `conda info`, and `conda deactive`.
Warning: _This module is deprecated as of 2024-08-21, because of Anconda Inc. license issues. Please use the `miniforge3` module instead._ Also, this module works only in Bash. Also, do _not_ do `conda init`. If you do this by mistake, please undo by `conda init --reverse`.
]])


local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
prepend_path("PKG_CONFIG_PATH", pathJoin(home, "lib", "pkgconfig"))

-- Miniconda (>= 23.11.0) [2023-11-30]:
-- Prevent conda from add shortcuts to user's Desktop.
pushenv("CONDA_SHORTCUTS", "false")

if mode() == "load" then
  -- ASSERT: Make sure there is no other active conda environment
  if os.getenv("CONDA_EXE") then
    LmodError("Cannot load " .. name .. " module, because another conda installation is already enabled (detected environment variable CONDA_EXE='" .. os.getenv("CONDA_EXE") .. "'). Have you installed conda on your own? If so, run 'conda config --set auto_activate_base false' and then log out and log back in again.  If that is not sufficient, please run 'conda init --reverse' and log out and back in again.")
  end

  pushenv("CONDA_EXE", pathJoin(home, "bin", "conda"))
  pushenv("CONDA_PYTHON_EXE", pathJoin(home, "bin", "python"))
  pushenv("_CE_M", "")
  pushenv("_CE_CONDA", "")
elseif mode() == "unload" then
  pushenv("CONDA_EXE", "false")
  pushenv("CONDA_PYTHON_EXE", "false")
  pushenv("_CE_M", "false")
  pushenv("_CE_CONDA", "false")
end


if mode() == "load" then
  LmodWarning("[DEPRECATED] The CBI '" .. name .. "/" .. version .. "' module is deprecated as of 2024-08-21, and it will eventually become defunct. Please use 'miniforge3' instead. The reason for this is license issues introduced by Anconda Inc.")
end






-- Don't edit! Created using: 
-- /usr/share/lmod/lmod/libexec/sh_to_modulefile /wynton/home/cbi/shared/software/CBI/miniconda3-24.5.0-0-py312/etc/profile.d/conda.sh
pushenv("CONDA_EXE","/wynton/home/cbi/shared/software/CBI/miniconda3-24.5.0-0-py312/bin/conda")
pushenv("CONDA_PYTHON_EXE","/wynton/home/cbi/shared/software/CBI/miniconda3-24.5.0-0-py312/bin/python")
pushenv("CONDA_SHLVL","0")
prepend_path("PATH","/wynton/home/cbi/shared/software/CBI/miniconda3-24.5.0-0-py312/condabin")
pushenv("_CE_CONDA","")
pushenv("_CE_M","")
set_shell_function("__conda_activate"," \
    if [ -n \"${CONDA_PS1_BACKUP:+x}\" ]; then\
        PS1=\"$CONDA_PS1_BACKUP\";\
        \\unset CONDA_PS1_BACKUP;\
    fi;\
    \\local ask_conda;\
    ask_conda=\"$(PS1=\"${PS1:-}\" __conda_exe shell.posix \"$@\")\" || \\return;\
    \\eval \"$ask_conda\";\
    __conda_hashr\
","")
set_shell_function("__conda_exe"," \
    ( \"$CONDA_EXE\" $_CE_M $_CE_CONDA \"$@\" )\
","")
set_shell_function("__conda_hashr"," \
    if [ -n \"${ZSH_VERSION:+x}\" ]; then\
        \\rehash;\
    else\
        if [ -n \"${POSH_VERSION:+x}\" ]; then\
            :;\
        else\
            \\hash -r;\
        fi;\
    fi\
","")
set_shell_function("__conda_reactivate"," \
    \\local ask_conda;\
    ask_conda=\"$(PS1=\"${PS1:-}\" __conda_exe shell.posix reactivate)\" || \\return;\
    \\eval \"$ask_conda\";\
    __conda_hashr\
","")
set_shell_function("conda"," \
    \\local cmd=\"${1-__missing__}\";\
    case \"$cmd\" in \
        activate | deactivate)\
            __conda_activate \"$@\"\
        ;;\
        install | update | upgrade | remove | uninstall)\
            __conda_exe \"$@\" || \\return;\
            __conda_reactivate\
        ;;\
        *)\
            __conda_exe \"$@\"\
        ;;\
    esac\
","")

miniforge3 #

Miniforge: A Free Minimal Installer for Conda
Miniforge is a free minimal installer for conda. Miniforge is a community effort to provide Miniconda-like installers, with the added feature that conda-forge is the default channel.
Example: conda --version, conda create --name=myenv, conda env list, conda activate myenv, conda info, and conda deactive.
URL: https://conda-forge.org/, https://conda-forge.org/docs/user/introduction/ (documentation), https://github.com/conda-forge/miniforge/releases (releases), https://github.com/conda/conda/blob/master/CHANGELOG.md (changelog), https://github.com/conda/conda (source code)
Warning: For now, this module works only in Bash. Also, do not do conda init. If you do this by mistake, please undo by conda init --reverse.
Versions: 24.3.0-0, 24.7.1-0, 24.9.0-0, 24.9.2-0, 24.11.0-0
Module code: view
help([[
Miniforge: A Free Minimal Installer for Conda
]])

local warning = "Use at your own peril! Software tools installed via Conda are known to cause conflicts with other software on the system, including core software provided by the operating system as well as other software from the CBI stack. For example, do not install R packages running R from the CBI stack, while conda is activated."

local name = myModuleName()
local version = myModuleVersion()
version = string.gsub(version, "^[.]", "") -- for hidden modules
whatis("Version: " .. version)
whatis("Keywords: files, utility")
whatis("URL: https://conda-forge.org/, https://conda-forge.org/docs/user/introduction/ (documentation), https://github.com/conda-forge/miniforge/releases (releases),  https://github.com/conda/conda/blob/master/CHANGELOG.md (changelog), https://github.com/conda/conda (source code)")
whatis([[
Description: Miniforge is a free minimal installer for conda. Miniforge is a community effort to provide Miniconda-like installers, with the added feature that conda-forge is the default channel.
Examples: `conda --version`, `conda create --name=myenv`, `conda env list`, `conda activate myenv`, `conda info`, and `conda deactive`.
Warning: For now, this module works only in Bash. Also, do _not_ do `conda init`. If you do this by mistake, please undo by `conda init --reverse`.
]])

conflict("miniconda3")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
prepend_path("PKG_CONFIG_PATH", pathJoin(home, "lib", "pkgconfig"))

-- Miniconda (>= 23.11.0) [2023-11-30]:
-- Prevent conda from add shortcuts to user's Desktop.
pushenv("CONDA_SHORTCUTS", "false")

if mode() == "load" then
  -- ASSERT: Make sure there is no other active conda environment
  if os.getenv("CONDA_EXE") then
    LmodError("Cannot load " .. name .. " module, because another conda installation is already enabled (detected environment variable CONDA_EXE='" .. os.getenv("CONDA_EXE") .. "'). Have you installed conda on your own? If so, run 'conda config --set auto_activate_base false' and then log out and log back in again.  If that is not sufficient, please run 'conda init --reverse' and log out and back in again.")
  end

  pushenv("CONDA_EXE", pathJoin(home, "bin", "conda"))
  pushenv("CONDA_PYTHON_EXE", pathJoin(home, "bin", "python"))
  pushenv("_CE_M", "")
  pushenv("_CE_CONDA", "")
elseif mode() == "unload" then
  pushenv("CONDA_EXE", "false")
  pushenv("CONDA_PYTHON_EXE", "false")
  pushenv("_CE_M", "false")
  pushenv("_CE_CONDA", "false")
end
-- Don't edit! Created using: 
-- /usr/share/lmod/lmod/libexec/sh_to_modulefile /wynton/home/cbi/shared/software/CBI/miniforge3-24.11.0-0/etc/profile.d/conda.sh
pushenv("CONDA_EXE","/wynton/home/cbi/shared/software/CBI/miniforge3-24.11.0-0/bin/conda")
pushenv("CONDA_PYTHON_EXE","/wynton/home/cbi/shared/software/CBI/miniforge3-24.11.0-0/bin/python")
pushenv("CONDA_SHLVL","0")
prepend_path("PATH","/wynton/home/cbi/shared/software/CBI/miniforge3-24.11.0-0/condabin")
pushenv("_CE_CONDA","")
pushenv("_CE_M","")
set_shell_function("__conda_activate"," \
    if [ -n \"${CONDA_PS1_BACKUP:+x}\" ]; then\
        PS1=\"$CONDA_PS1_BACKUP\";\
        \\unset CONDA_PS1_BACKUP;\
    fi;\
    \\local ask_conda;\
    ask_conda=\"$(PS1=\"${PS1:-}\" __conda_exe shell.posix \"$@\")\" || \\return;\
    \\eval \"$ask_conda\";\
    __conda_hashr\
","")
set_shell_function("__conda_exe"," \
    ( \"$CONDA_EXE\" $_CE_M $_CE_CONDA \"$@\" )\
","")
set_shell_function("__conda_hashr"," \
    if [ -n \"${ZSH_VERSION:+x}\" ]; then\
        \\rehash;\
    else\
        if [ -n \"${POSH_VERSION:+x}\" ]; then\
            :;\
        else\
            \\hash -r;\
        fi;\
    fi\
","")
set_shell_function("conda"," \
    \\local cmd=\"${1-__missing__}\";\
    case \"$cmd\" in \
        activate | deactivate)\
            __conda_activate \"$@\"\
        ;;\
        install | update | upgrade | remove | uninstall)\
            __conda_exe \"$@\" || \\return;\
            __conda_activate reactivate\
        ;;\
        *)\
            __conda_exe \"$@\"\
        ;;\
    esac\
","")

mutect #

muTect: Identification of Somatic Point Mutations in Next Generation Sequencing Data of Cancer Genomes
MuTect is a method developed at the Broad Institute for the reliable and accurate identification of somatic point mutations in next generation sequencing data of cancer genomes.
Example: mutect, which is short for java -Xmx2g -jar "$MUTECT_JAR".
URL: https://software.broadinstitute.org/cancer/cga/mutect, https://github.com/broadinstitute/mutect (source code)
Requirement: MuTect (<= 1.1) requires Java v1.7 and will not work with any other Java versions.
Versions: 1.1.1, 1.1.4, 1.1.5
Module code: view
help([[
muTect: Identification of Somatic Point Mutations in Next Generation Sequencing Data of Cancer Genomes
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, genome")
whatis("URL: https://software.broadinstitute.org/cancer/cga/mutect, https://github.com/broadinstitute/mutect (source code)")
whatis([[
Description: MuTect is a method developed at the Broad Institute for the reliable and accurate identification of somatic point mutations in next generation sequencing data of cancer genomes.
Examples: `mutect`, which is short for `java -Xmx2g -jar "$MUTECT_JAR"`.
Requirements: MuTect (<= 1.1) requires Java v1.7 and will not work with any other Java versions.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

if (version == "1.0.27783") then
  -- muTect 1.0.27783 requires Java (<= 1.7)
  local cluster = os.getenv("CLUSTER")
  if (cluster == "tipcc") then
    load("jdk/1.7.0")
  else
--    depends_on("openjdk/1.6.0")
  end
end

-- Validate proper Java version for older versions of MuTect
if string.match(version, "^1[.][01]") then
  local bfr = capture("java -version 2>&1")
  for line in string.gmatch(bfr, "[^\n]+") do
    if string.match(line, "version") then
      if not string.match(line, "1[.]7") then
        LmodWarning(myModuleFullName() .. " requires Java v1.7, but you are running " .. line)
      end
    end
  end
end


name = "muTect"
pushenv("MUTECT_HOME", home)
local jarfile = name .. "-" .. version .. ".jar"
pushenv("MUTECT_JAR", pathJoin(home, jarfile))

local bash = 'java -Xmx2g -jar "$MUTECT_HOME/' .. jarfile .. '" "$@"'
local csh  = 'java -Xmx2g -jar "$MUTECT_HOME/' .. jarfile .. '" $*'
set_shell_function("mutect", bash, csh)

-- Tweak Java for the current environment
depends_on("java-tweaks")

ncdu #

ncdu: NCurses Disk Usage
Ncdu is a disk usage analyzer with an ncurses interface. It is designed to find space hogs on a remote server where you don’t have an entire graphical setup available, but it is a useful tool even on regular desktop systems. Ncdu aims to be fast, simple and easy to use, and should be able to run in any minimal POSIX-like environment with ncurses installed.
Example: ncdu --version, ncdu --help, and ncdu. For large cleanup tasks, call ncdu --one-file-system -o ncdu.cache once to scan all files, and then use ncdu --enable-delete -f ncdu.cache to clean them out.
URL: https://dev.yorhel.nl/ncdu, https://dev.yorhel.nl/ncdu/man2 (documentation), https://dev.yorhel.nl/ncdu/changes2 (changelog), https://code.blicky.net/yorhel/ncdu/ (source code)
Versions: 2.7
Module code: view
help([[
ncdu: NCurses Disk Usage
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, cli, files")
whatis("URL: https://dev.yorhel.nl/ncdu, https://dev.yorhel.nl/ncdu/man2 (documentation), https://dev.yorhel.nl/ncdu/changes2 (changelog), https://code.blicky.net/yorhel/ncdu/ (source code)")
whatis([[
Description: Ncdu is a disk usage analyzer with an ncurses interface. It is designed to find space hogs on a remote server where you don’t have an entire graphical setup available, but it is a useful tool even on regular desktop systems. Ncdu aims to be fast, simple and easy to use, and should be able to run in any minimal POSIX-like environment with ncurses installed.
Examples: `ncdu --version`, `ncdu --help`, and `ncdu`. For large cleanup tasks, call `ncdu --one-file-system -o ncdu.cache` once to scan all files, and then use `ncdu --enable-delete -f ncdu.cache` to clean them out.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

pandoc #

Pandoc: A Universal Document Converter
Pandoc is a Haskell library and software tool for converting from one markup format to another, and a command-line tool that uses this library.
Example: pandoc --version.
URL: https://pandoc.org/, https://pandoc.org/releases.html (changelog), https://github.com/jgm/pandoc (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 3.4, 3.5, 3.6
Module code: view
help([[
Pandoc: A Universal Document Converter
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: cli, shell")
whatis("URL: https://pandoc.org/, https://pandoc.org/releases.html (changelog), https://github.com/jgm/pandoc (source code)")
whatis([[
Description: Pandoc is a Haskell library and software tool for converting from one markup format to another, and a command-line tool that uses this library.
Examples: `pandoc --version`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))

pdfcrop #

PDFCrop: Crop and Rescale PDFs
PDFCrop crops the white margins of PDF pages and rescales them to fit a standard size sheet of paper. It makes printed pages much easier to read. PDFCrop is particularly useful for resizing journal articles and converting between letter-size and A4 paper.
Example: pdfcrop --help and pdfcrop A4 input.pdf.
URL: https://www.ctan.org/tex-archive/support/pdfcrop, https://github.com/ho-tex/pdfcrop (source code), https://github.com/ho-tex/pdfcrop/tags/ (changelog)
Versions: 0.4b, 1.42
Module code: view
help([[
PDFCrop: Crop and Rescale PDFs
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, tool")
whatis("URL: https://www.ctan.org/tex-archive/support/pdfcrop, https://github.com/ho-tex/pdfcrop (source code), https://github.com/ho-tex/pdfcrop/tags/ (changelog)")
whatis([[
Description: PDFCrop crops the white margins of PDF pages and rescales them to fit a standard size sheet of paper. It makes printed pages much easier to read. PDFCrop is particularly useful for resizing journal articles and converting between letter-size and A4 paper.
Examples: `pdfcrop --help` and `pdfcrop A4 input.pdf`.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

picard #

Picard: Command-line tools for Manipulating High-throughput Sequencing Data and Formats
Picard is a set of command line tools for manipulating high-throughput sequencing (HTS) data and formats such as SAM/BAM/CRAM and VCF.
Example: PicardCommandLine -h, which is short for java -jar "$PICARD_HOME/picard.jar" -h.
URL: https://broadinstitute.github.io/picard/, https://github.com/broadinstitute/picard/releases (changelog), https://github.com/broadinstitute/picard (source code)
Warning: The old picard alias is deprecated. Use function PicardCommandLine instead. Picard 3 requires Java 17, Picard 2 requires Java 1.8.
Versions: 2.21.1, 2.21.4, 2.22.2, 2.23.1, 2.24.0, 2.26.2, 2.26.10, 2.27.1, 2.27.4, 2.27.5, 3.1.1, 3.2.0, 3.3.0
Module code: view
help([[
Picard: Command-Line Tools for Manipulating High-throughput Sequencing Data and Formats
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://broadinstitute.github.io/picard/, https://github.com/broadinstitute/picard/releases (changelog), https://github.com/broadinstitute/picard (source code)")
whatis([[
Description: Picard is a set of command line tools for manipulating high-throughput sequencing (HTS) data and formats such as SAM/BAM/CRAM and VCF.
Examples: `PicardCommandLine -h`, which is short for `java -jar "$PICARD_HOME/picard.jar" -h`.
Warning: The old `picard` alias is deprecated. Use function `PicardCommandLine` instead. Picard 3 requires Java 17, Picard 2 requires Java 1.8.
]])

local version_x = string.gsub(version, "[.].*", "")
if (version_x == "1") then
  -- Pindel 1.64 requires Java (<= 1.6)
  depends_on("openjdk/1.6.0")
elseif (version_x == "2") then
  -- As of version 2.0.1 (Nov. 2015) Picard requires Java 1.8 (jdk8u66)
  depends_on("openjdk/1.8.0")
elseif (version_x == "3") then
  -- As of version 3.0.0 (Feb. 2023) Picard requires Java 17
  depends_on("openjdk/17")
end

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
pushenv("PICARD_HOME", home)

-- Functions
local bash = 'java -jar "$PICARD_HOME/picard.jar" "$@"'
local csh  = 'java -jar "$PICARD_HOME/picard.jar" $*'
set_shell_function("PicardCommandLine", bash, csh)

-- Aliases (deprecated)
set_alias("picard", "java -jar \"$PICARD_HOME/picard.jar\"")

-- Tweak Java for the current environment
depends_on("java-tweaks")

pindel #

pindel: Detection of Indels and Structural Variations
Pindel can detect breakpoints of large deletions, medium sized insertions, inversions, tandem duplications and other structural variants at single-based resolution from next-gen sequence data. It uses a pattern growth approach to identify the breakpoints of these variants from paired-end short reads.
Example: pindel and pindel --help.
URL: https://www.sanger.ac.uk/science/tools/pindel, https://github.com/genome/pindel/tags (changelog), https://github.com/genome/pindel (source code)
Versions: 0.2.5b8
Module code: view
help([[
pindel: Detection of Indels and Structural Variations
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://www.sanger.ac.uk/science/tools/pindel, https://github.com/genome/pindel/tags (changelog), https://github.com/genome/pindel (source code)")
whatis([[
Description: Pindel can detect breakpoints of large deletions, medium sized insertions, inversions, tandem duplications and other structural variants at single-based resolution from next-gen sequence data. It uses a pattern growth approach to identify the breakpoints of these variants from paired-end short reads.
Examples: `pindel` and `pindel --help`.
]])

if (version == "0.2.4t") then
  load("samtools/0.1.18")
else
  load("htslib")
end

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

PLINK: Whole Genome Association Analysis Toolset
PLINK is a free, open-source whole genome association analysis toolset, designed to perform a range of basic, large-scale analyses in a computationally efficient manner. The focus of PLINK is purely on analysis of genotype/phenotype data, so there is no support for steps prior to this (e.g. study design and planning, generating genotype or CNV calls from raw data).
Example: plink --help and plink --version.
URL: https://www.cog-genomics.org/plink/
Warning: This tool runs on all available CPU cores by default, which is bad practice. Please specify option --threads ncores to avoid this, e.g. --threads 1.
Versions: 1.07, 1.90b6.10, 1.90b6.16, 1.90b6.18, 1.90b6.21, 1.90b6.24, 1.90b6.25, 1.90b6.26
Module code: view
help([[
PLINK: Whole Genome Association Analysis Toolset
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: genomics")
whatis("URL: https://www.cog-genomics.org/plink/")
whatis([[
Description: PLINK is a free, open-source whole genome association analysis toolset, designed to perform a range of basic, large-scale analyses in a computationally efficient manner. The focus of PLINK is purely on analysis of genotype/phenotype data, so there is no support for steps prior to this (e.g. study design and planning, generating genotype or CNV calls from raw data).
Examples: `plink --help` and `plink --version`.
Warning: This tool runs on all available CPU cores by default, which is bad practice. Please specify option `--threads ncores` to avoid this, e.g. `--threads 1`.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

plink2 #

PLINK2: Whole Genome Association Analysis Toolset
PLINK is a free, open-source whole genome association analysis toolset, designed to perform a range of basic, large-scale analyses in a computationally efficient manner. The focus of PLINK is purely on analysis of genotype/phenotype data, so there is no support for steps prior to this (e.g. study design and planning, generating genotype or CNV calls from raw data).
Example: plink2 --help, plink2 --version, and plink2 --threads 1 ....
URL: https://www.cog-genomics.org/plink/2.0/, https://www.cog-genomics.org/plink/2.0/general_usage (documentation), https://www.cog-genomics.org/plink/2.0/#recent (changelog), https://github.com/chrchang/plink-ng (source code)
Warning: This tool runs on all available CPU cores by default, which is bad practice. Please specify option --threads ncores to avoid this, e.g. --threads 1.
Versions: 2.00a2LM, 2.00a3LM, 2.00a5.14, 2.0.0-a.5.15, 2.0.0-a.6.1, 2.0.0-a.6.4
Module code: view
help([[
PLINK2: Whole Genome Association Analysis Toolset
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: genomics")
whatis("URL: https://www.cog-genomics.org/plink/2.0/, https://www.cog-genomics.org/plink/2.0/general_usage (documentation), https://www.cog-genomics.org/plink/2.0/#recent (changelog), https://github.com/chrchang/plink-ng (source code)")
whatis([[
Description: PLINK is a free, open-source whole genome association analysis toolset, designed to perform a range of basic, large-scale analyses in a computationally efficient manner. The focus of PLINK is purely on analysis of genotype/phenotype data, so there is no support for steps prior to this (e.g. study design and planning, generating genotype or CNV calls from raw data).
Examples: `plink2 --help`, `plink2 --version`, and `plink2 --threads 1 ...`.
Warning: This tool runs on all available CPU cores by default, which is bad practice. Please specify option `--threads ncores` to avoid this, e.g. `--threads 1`.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

port4me #

port4me: Get the Same, Personal, Free TCP Port over and over
'port4me' attempts, with high probability, to provide the user with the same, free port each time, even when used on different days.
Example: port4me --help, port4me, port4me --tool=jupyter).
URL: https://github.com/HenrikBengtsson/port4me, https://github.com/HenrikBengtsson/port4me/blob/develop/bash/NEWS.md (changelog)
Warning: This tool is under development.
Versions: 0.7.1
Module code: view
help([[
port4me:  Get the Same, Personal, Free TCP Port over and over
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, cli")
whatis("URL: https://github.com/HenrikBengtsson/port4me, https://github.com/HenrikBengtsson/port4me/blob/develop/bash/NEWS.md (changelog)")
whatis([[
Description: 'port4me' attempts, with high probability, to provide the user with the same, free port each time, even when used on different days.
Examples: `port4me --help`, `port4me`, `port4me --tool=jupyter`).
Warning: This tool is under development.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

procs #

procs: A Modern Replacement for 'ps' written in Rust
An alternative to ps, pstree, and top.
Example: procs --version, procs --help, procs, procs --tree, and procs --watch --nand root.
URL: https://github.com/dalance/procs/, https://github.com/dalance/procs/blob/master/CHANGELOG.md(changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 0.14.8
Module code: view
help([[
procs: A Modern Replacement for 'ps' written in Rust
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, cli, tui")
whatis("URL: https://github.com/dalance/procs/, https://github.com/dalance/procs/blob/master/CHANGELOG.md(changelog)")
whatis([[
Description: An alternative to `ps`, `pstree`, and `top`.
Examples: `procs --version`, `procs --help`, `procs`, `procs --tree`, and `procs --watch --nand root`.
Warning: Only the most recent version of this software will be kept.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

proj #

PROJ: PROJ Coordinate Transformation Software Library
PROJ is a generic coordinate transformation software that transforms geospatial coordinates from one coordinate reference system (CRS) to another. This includes cartographic projections as well as geodetic transformations. PROJ includes command line applications for easy conversion of coordinates from text files or directly from user input. In addition to the command line utilities PROJ also exposes an application programming interface, or API in short. The API lets developers use the functionality of PROJ in their own software without having to implement similar functionality themselves.
Example: geod, proj and man proj.
URL: https://proj.org/
Versions: 4.9.3
Module code: view
help([[
PROJ: PROJ Coordinate Transformation Software Library
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: statistics, spatial")
whatis("URL: https://proj.org/")
whatis("Description: PROJ is a generic coordinate transformation software that transforms geospatial coordinates from one coordinate reference system (CRS) to another. This includes cartographic projections as well as geodetic transformations. PROJ includes command line applications for easy conversion of coordinates from text files or directly from user input. In addition to the command line utilities PROJ also exposes an application programming interface, or API in short. The API lets developers use the functionality of PROJ in their own software without having to implement similar functionality themselves. Example: `geod`, `proj` and `man proj`.")

if (version >= "7.2.0") then
  depends_on("sqlite")
end

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))
prepend_path("PKG_CONFIG_PATH", pathJoin(home, "lib", "pkgconfig"))


-- From 'make install':
-- If you ever happen to want to link against installed libraries
-- in a given directory, LIBDIR, you must either use libtool, and
-- specify the full pathname of the library, or use the '-LLIBDIR'
-- flag during linking and do at least one of the following:
--    - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
--      during execution
--    - add LIBDIR to the 'LD_RUN_PATH' environment variable
--      during linking
--    - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
--    - have your system administrator add LIBDIR to '/etc/ld.so.conf'

qtop #

qtop: Monitor the State of Queueing Systems, Along with Related Information Relevant on HPC & Grid Clusters
qtop (pronounced queue-top) is a tool written in order to monitor the state of Queueing Systems, along with related information relevant on HPC & grid clusters. At present it supports PBS, SGE & OAR families. Please help to increase that list in the Python version of the tool, qtop.py!
Example: qtop, qtop --help, qtop --version, and qtop -FGW.
URL: https://github.com/qtop/qtop, https://github.com/qtop/qtop/blob/master/CHANGELOG.rst (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 0.9.20161222
Module code: view
help([[
qtop: Monitor the State of Queueing Systems, Along with Related Information Relevant on HPC & Grid Clusters
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: system, utility, cli, tui")
whatis("URL: https://github.com/qtop/qtop, https://github.com/qtop/qtop/blob/master/CHANGELOG.rst (changelog)")
whatis([[
Description: `qtop` (pronounced queue-top) is a tool written in order to monitor the state of Queueing Systems, along with related information relevant on HPC & grid clusters. At present it supports PBS, SGE & OAR families. Please help to increase that list in the Python version of the tool, qtop.py!
Examples: `qtop`, `qtop --help`, `qtop --version`, and `qtop -FGW`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)
append_path("PYTHONPATH", home)

quarto #

quarto-cli: Open-Source Scientific and Technical Publishing System Built on Pandoc
Quarto is an open-source scientific and technical publishing system built on Pandoc; (i) Create dynamic content with Python, R, Julia, and Observable, (ii) Author documents as plain text markdown or Jupyter notebooks, (iii) Publish high-quality articles, reports, presentations, websites, blogs, and books in HTML, PDF, MS Word, ePub, and more, (iv) Author with scientific markdown, including equations, citations, crossrefs, figure panels, callouts, advanced layout, and more.
Example: quarto --version and quarto --help.
URL: https://quarto.org/, https://quarto.org/docs/guide/ (documentation), https://github.com/quarto-dev/quarto-cli/releases (changelog), https://github.com/quarto-dev/quarto-cli/ (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 1.5.57, 1.6.38, 1.6.39
Module code: view
help([[
quarto-cli: Open-Source Scientific and Technical Publishing System Built on Pandoc
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: markdown")
whatis("URL: https://quarto.org/, https://quarto.org/docs/guide/ (documentation), https://github.com/quarto-dev/quarto-cli/releases (changelog), https://github.com/quarto-dev/quarto-cli/ (source code)")
whatis([[
Description: Quarto is an open-source scientific and technical publishing system built on Pandoc; (i) Create dynamic content with Python, R, Julia, and Observable, (ii) Author documents as plain text markdown or Jupyter notebooks, (iii) Publish high-quality articles, reports, presentations, websites, blogs, and books in HTML, PDF, MS Word, ePub, and more, (iv) Author with scientific markdown, including equations, citations, crossrefs, figure panels, callouts, advanced layout, and more.
Examples: `quarto --version` and `quarto --help`.
Warning: Only the most recent version of this software will be kept.
]])

depends_on("pandoc")

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

r #

R: The R Programming Language
The R programming language.
Example: R, R --version, and Rscript --version.
URL: https://www.r-project.org/, https://cran.r-project.org/doc/manuals/r-release/NEWS.html (changelog)
Versions: 3.0.0, 3.0.3, 3.1.0, 3.1.3, 3.2.0, 3.2.5, 3.3.0, 3.3.3, 3.4.0, 3.4.4, 3.5.0, 3.5.3, 3.6.0, 3.6.3, 4.0.0, 4.0.5, 4.1.0, 4.1.3, 4.2.0-gcc10, 4.2.3-gcc10, 4.3.0-gcc10, 4.3.1-gcc10, 4.3.2-gcc10, 4.3.3-gcc10, 4.4.0-gcc13, 4.4.1-gcc13, 4.4.2-gcc13
Module code: view
help([[
R: The R Programming Language
]])

local name = myModuleName()
local version = "4.3.2-gcc10"
version = string.gsub(version, "^[.]", "") -- for hidden modules
whatis("Version: " .. version)
whatis("Keywords: Programming, Statistics")
whatis("URL: https://www.r-project.org/, https://cran.r-project.org/doc/manuals/r-release/NEWS.html (changelog)")
whatis([[
Description: The R programming language.
Examples: `R`, `R --version`, and `Rscript --version`.
]])

has_devtoolset = function(version)
  local path = pathJoin("/opt", "rh", "devtoolset-" .. version)
  return(isDir(path))
end

has_gcc_toolset = function(version)
  local path = pathJoin("/opt", "rh", "gcc-toolset-" .. version)
  return(isDir(path))
end

local name = "R"
local root = os.getenv("SOFTWARE_ROOT_CBI")

-- Specific to the Linux distribution?
if string.match(myFileName(), "/_" .. os.getenv("CBI_LINUX") .. "/") then
  root = pathJoin(root, "_" .. os.getenv("CBI_LINUX"))
end

local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

local path = pathJoin(home, "lib")
if not isDir(path) then
  path = pathJoin(home, "lib64")
end
prepend_path("LD_LIBRARY_PATH", pathJoin(path, "R", "lib"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))

local v = version
v = string.gsub(v, "-.*", "")

-- WORKAROUND: R 3.6.0 is not compatible with BeeGFS
if v == "3.6.0" then
  pushenv("R_INSTALL_STAGED", "false")
else
  pushenv("R_INSTALL_STAGED", "true")
end

local r_libs_user
if os.getenv("CBI_LINUX") == "centos7" then
  r_libs_user="~/R/%p-library/%v-CBI"
else
  r_libs_user="~/R/" .. os.getenv("CBI_LINUX") .. "-" .. "%p-library/%v-CBI"
end

if (v >= "4.1.0") then
  local gv = string.gsub(version, v, "")
  gv = string.gsub(gv, "-alpha", "")
  gv = string.gsub(gv, "-beta", "")
  gv = string.gsub(gv, "-rc", "")
  gv = string.gsub(gv, "-gcc", "")
  if (gv ~= "") then                                                                                           
    gv = tonumber(gv)
    if (gv > 4) then
      r_libs_user = r_libs_user .. "-gcc" .. gv
      if has_devtoolset(gv) then
        depends_on("scl-devtoolset/" .. gv)
      elseif has_gcc_toolset(gv) then
        depends_on("scl-gcc-toolset/" .. gv)
      end
    end
  end
end

-- Avoid R CMD build warning on "invalid uid value replaced by that for user 'nobody'"
-- https://stackoverflow.com/questions/30599326
pushenv("R_BUILD_TAR", "tar")

-- In-house env var for R repositories mirrored locally
local r_repos_root = os.getenv("CBI_SHARED_ROOT")
if (r_repos_root) then
  LmodMessage("r_repos_root=" .. r_repos_root)
  r_repos_root = pathJoin(r_repos_root, "mirrors", "r-mirrors")
  pushenv("R_REPOS_ROOT", r_repos_root)
  pushenv("R_REPOS_CRAN", "file://" .. pathJoin(r_repos_root, "cran"))
  pushenv("R_LOCAL_CRAN", "file://" .. pathJoin(r_repos_root, "cran"))
end

-- R packages built from native code and installed using R from EPEL is *not*
-- always compatible with ditto installed using R from the CBI software stack.
-- Because of this, we will use R_LIBS_USER specific to the CBI stack.
-- However, since some users has already installed to the built-in R_LIBS_USER
-- we will not change this for such users.  The heuristic is to check if the
-- built-in R_LIBS_USER folder already exists. If not, then it's safe to use
-- one specific to the CBI stack.
pushenv("R_LIBS_USER", r_libs_user)

-- The R package 'renv' (https://cran.r-project.org/package=renv) is used to create
-- folder-specific R package library folder that help with reproducibility and long-term
-- stability.  By setting RENV_PATHS_PREFIX_AUTO=TRUE, these folders are also specific
-- for the current Linux distribution, which avoids problems occurring when updating
-- from, say, CentOS 7 to Rocky 8.  This is likely to become the default behavior in
-- 'renv' (https://github.com/rstudio/renv/issues/1211)
pushenv("RENV_PATHS_PREFIX_AUTO", "TRUE")

-- WORKAROUND: utils::download.file(), which is for instance used by install.packages()
-- have a built-in timeout at 60 seconds.  This might be too short for some larger
-- Bioconductor annotation packages, e.g.
--  * 'SNPlocs.Hsapiens.dbSNP150.GRCh38' (2.10 GB)
--  * 'MafDb.gnomAD.r2.1.GRCh38' (6.04 GB) => 6 GB/10 min = 600 MB/min = 10 MB/s = 80 Mb/s
-- Use 20 minutes timeout instead of 1 minute, i.e. enought with 40 Mb/s for a 6 GB file
pushenv("R_DEFAULT_INTERNET_TIMEOUT", "1200")

-- WORKAROUND: gert 1.1.0 (2021-01-25) installs toward a static libgit2 that
-- gives 'Illegal instruction' on some hosts (with older CPUs?)
-- See https://github.com/r-lib/gert/issues/117
pushenv("USE_SYSTEM_LIBGIT2", "true")

-- WORKAROUND: Package udunits2 does not install out of the box and requires
-- manually specifying 'configure.args' during install unless we set the
-- following environment variable
local path = "/usr/include/udunits2"
if (isDir(path)) then
  pushenv("UDUNITS2_INCLUDE", path)
end

-- WORKAROUND: nloptr 2.0.0 requires CMake (>= 3.15)
-- See https://github.com/astamm/nloptr/issues/104#issuecomment-1111498876
pushenv("CMAKE_BIN", "cmake3")



-- Assert that there is no active Conda environment
assert_no_conda_environment = function()  
  local conda_env = os.getenv("CONDA_DEFAULT_ENV")
  if conda_env ~= nil then
    local action = os.getenv("CBI_ON_CONDA") or "warning"
    local msg = "Using the " .. "'" .. myModuleName() .. "'" .. " module when a Conda environment is active risks resulting in hard-to-troubleshoot errors due to library conflicts. Make sure to deactivate the currently active Conda " .. "'" .. conda_env .. "'" .. " environment before loading this module, e.g. 'conda deactivate'."
    if action == "error" then
      LmodError(msg)
    elseif action == "warning" then
      LmodWarning(msg)
    end
  end
end


-- Protect against a conflicting Conda stack
if (mode() == "load") then
  assert_no_conda_environment()
end

r-siteconfig #

R Site Configuration: Tweaks to R for the Current Compute Environment
Sets R options and environment variables customized for the current compute environment. Notably, it configures R to install packages from local CRAN and Bioconductor mirrors without the need for internet access.
Example: In R, install.packages(\"ggplot2\").
Versions: 0.3
Module code: view
help([[
R Site Configuration: Tweaks to R for the Current Compute Environment
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: R, configuration")
whatis([[
Description: Sets R options and environment variables customized for the current compute environment. Notably, it configures R to install packages from local CRAN and Bioconductor mirrors without the need for internet access.
Examples: In R, `install.packages(\"ggplot2\")`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

-- Set site-wide (sic!) Renviron and Rprofile files
pushenv("R_ENVIRON", pathJoin(home, "Renviron.site"))
pushenv("R_PROFILE", pathJoin(home, "Rprofile.site"))

rclone #

rclone: Rsync for Cloud Storage and More
Rclone is a command line program to sync files and directories to and from a large number of end points on the local file system, or remote file systems, and in the cloud.
Example: rclone --version, rclone --help, rclone config, and man rclone.
URL: https://rclone.org/, https://rclone.org/changelog/ (changelog), https://github.com/rclone/rclone (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 1.68.0, 1.68.1, 1.68.2
Module code: view
help("rclone: Rsync for Cloud Storage and More")

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: files, transfers")
whatis("URL: https://rclone.org/, https://rclone.org/changelog/ (changelog), https://github.com/rclone/rclone (source code)")
whatis([[
Description: Rclone is a command line program to sync files and directories to and from a large number of end points on the local file system, or remote file systems, and in the cloud.
Examples: `rclone --version`, `rclone --help`, `rclone config`, and `man rclone`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)
prepend_path("MANPATH", pathJoin(home, "share", "man"))

redis #

redis: Remote Dictionary Server
Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps.
Example: redis-cli --version, redis-cli --help, redis-server --version, and redis-server --help.
URL: https://redis.io/, https://redis.io/docs/ (docs), https://github.com/redis/redis/releases (changelog), https://github.com/redis/redis (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 7.0.12, 7.0.13, 7.2.1, 7.2.2, 7.2.3, 7.2.4, 7.2.5
Module code: view
help([[
redis: Remote Dictionary Server
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: database")
whatis("URL: https://redis.io/, https://redis.io/docs/ (docs), https://github.com/redis/redis/releases (changelog), https://github.com/redis/redis (source code)")
whatis([[
Description: Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps.
Examples: `redis-cli --version`, `redis-cli --help`, `redis-server --version`, and `redis-server --help`.
Warning: Only the most recent version of this software will be kept.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

restic #

restic: Fast, Secure, Efficient Backup Program
restic is a backup program that is fast, efficient and secure. It supports the three major operating systems (Linux, macOS, Windows) and a few smaller ones (FreeBSD, OpenBSD).
Example: restic --help and restic version.
URL: https://restic.net, https://restic.readthedocs.io/en/latest/ (documentation), https://github.com/restic/restic/releases (changelog), https://github.com/restic/restic (source code)
Versions: 0.17.1, 0.17.3
Module code: view
help([[
restic: Fast, Secure, Efficient Backup Program
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: cli, backup, files")
whatis("URL: https://restic.net, https://restic.readthedocs.io/en/latest/ (documentation), https://github.com/restic/restic/releases (changelog), https://github.com/restic/restic (source code)")
whatis([[
Description: restic is a backup program that is fast, efficient and secure. It supports the three major operating systems (Linux, macOS, Windows) and a few smaller ones (FreeBSD, OpenBSD).
Examples: `restic --help` and `restic version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)
prepend_path("MANPATH", pathJoin(home, "man"))

ripgrep #

ripgrep: Recursively Searches Directories for a Regex Pattern
ripgrep is a line-oriented search tool that recursively searches your current directory for a regex pattern. By default, ripgrep will respect your .gitignore and automatically skip hidden files/directories and binary files. ripgrep is similar to other popular search tools like The Silver Searcher, ack and grep.
Example: rg --version and rg -i 'lorem ipsum'.
URL: https://github.com/BurntSushi/ripgrep, https://github.com/BurntSushi/ripgrep/blob/master/CHANGELOG.md (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 14.1.1
Module code: view
help([[
ripgrep: Recursively Searches Directories for a Regex Pattern
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utility, files, search")
whatis("URL: https://github.com/BurntSushi/ripgrep, https://github.com/BurntSushi/ripgrep/blob/master/CHANGELOG.md (changelog)")
whatis([[
Description: ripgrep is a line-oriented search tool that recursively searches your current directory for a regex pattern. By default, ripgrep will respect your .gitignore and automatically skip hidden files/directories and binary files. ripgrep is similar to other popular search tools like The Silver Searcher, ack and grep.
Examples: `rg --version` and `rg -i 'lorem ipsum'`.
Warning: Only the most recent version of this software will be kept.
]])

-- Local variables
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

rstudio #

rstudio: RStudio Desktop
The RStudio Desktop is an integrated development environment (IDE) for R, a programming language for statistical computing and graphics.
Example: rstudio. If you get a blank window, retry with QMLSCENE_DEVICE=softwarecontext rstudio.
URL: https://posit.co/products/open-source/rstudio/#rstudio-desktop, https://www.rstudio.com/products/rstudio/release-notes/ (changelog), https://github.com/rstudio/rstudio/ (source code)
Warning: This module is deprecates as of 2024-08-30 and no longer maintained; please use the 'rstudio-server' tool instead. This software works only on the development nodes. It requires an SSH connection with X11 Forwarding enabled. It does not work with X2Go (gives error "GLX 1.3 or later is required"). For best performance, use SSH compression when using X11 Forwarding, i.e. ssh -X -C ....
Versions: 1.4.1103, 1.4.1717, 2021.09.0+351, 2021.09.1-372, 2021.09.2-382, 2022.02.1-461, 2022.07.2-576, 2022.12.0-353, 2023.06.1-524, 2024.04.2-764
Module code: view

help([[
[DEPRECATED] RStudio Desktop: The RStudio Desktop IDE for R
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: programming, R, GUI")
whatis("URL: https://posit.co/products/open-source/rstudio/#rstudio-desktop, https://www.rstudio.com/products/rstudio/release-notes/ (changelog), https://github.com/rstudio/rstudio/ (source code)")
whatis([[
Description: The RStudio Desktop is an integrated development environment (IDE) for R, a programming language for statistical computing and graphics.
Examples: `rstudio`.  If you get a blank window, retry with `QMLSCENE_DEVICE=softwarecontext rstudio`.
Warning: _This module is deprecates as of 2024-08-30 and no longer maintained; please use the 'rstudio-server' tool instead._ This software works only on the development nodes. It requires an SSH connection with X11 Forwarding enabled. It does _not_ work with X2Go (gives error \"GLX 1.3 or later is required\"). For best performance, use SSH compression when using X11 Forwarding, i.e. `ssh -X -C ...`.
]])

depends_on("r")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

if mode() == "load" then
    LmodWarning("[DEPRECATION WARNING] The CBI '" .. name .. "/" .. version .. "' module is deprecated as of 2024-08-30 in favor of 'rstudio-server'; please use that module instead")
end

rstudio-server #

RStudio Server: The RStudio Server
The RStudio Server is an integrated development environment (IDE) for R that can be used from the web browser.
Example: rserver.
URL: https://posit.co/products/open-source/rstudio/#rstudio-server, https://www.rstudio.com/products/rstudio/release-notes/ (changelog), https://github.com/rstudio/rstudio/ (source code)
Versions: 2021.09.2-382, 2022.02.4-500, 2022.12.0-353, 2023.03.0-386, 2023.06.1-524, 2023.06.2-561, 2023.09.0-463, 2023.09.1-494, 2023.12.0-369, 2023.12.1-402, 2024.04.0-735, 2024.04.2-764, 2024.09.1-394
Module code: view
help([[
RStudio Server: The RStudio Server
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: programming, R, GUI")
whatis("URL: https://posit.co/products/open-source/rstudio/#rstudio-server, https://www.rstudio.com/products/rstudio/release-notes/ (changelog), https://github.com/rstudio/rstudio/ (source code)")
whatis([[
Description: The RStudio Server is an integrated development environment (IDE) for R that can be used from the web browser.
Examples: `rserver`.
]])

depends_on("r")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

rstudio-server-controller #

RSC: An RStudio Server Controller
The RStudio Server Controller (RSC) is a tool for launching a personal instance of the RStudio Server on a Linux machine, which then can be access via the web browser, either directly or via SSH tunneling.
Example: rsc --help, rsc start, and rsc stop.
URL: https://github.com/UCSF-CBI/rstudio-server-controller, https://github.com/UCSF-CBI/rstudio-server-controller/blob/main/NEWS.md (changelog)
Versions: 0.17.0
Module code: view
help([[
RSC: An RStudio Server Controller
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: programming, R, RStudio Server, GUI")
whatis("URL: https://github.com/UCSF-CBI/rstudio-server-controller, https://github.com/UCSF-CBI/rstudio-server-controller/blob/main/NEWS.md (changelog)")
whatis([[
Description: The RStudio Server Controller (RSC) is a tool for launching a personal instance of the RStudio Server on a Linux machine, which then can be access via the web browser, either directly or via SSH tunneling.
Examples: `rsc --help`, `rsc start`, and `rsc stop`.
]])

depends_on("r")
depends_on("rstudio-server")

local home = os.getenv("HOME")

-- System-specific settings
if isDir("/wynton") then
  -- Update default to: rsc start --auth=auth-via-env --random-password
  pushenv("RSC_AUTH", "auth-via-env")
  pushenv("RSC_PASSWORD", "random")
  if home and string.find(home, "/protected/") then
    pushenv("RSC_SSH_LOGIN_HOSTNAME", "plog1.wynton.ucsf.edu")
  else
    pushenv("RSC_SSH_LOGIN_HOSTNAME", "log1.wynton.ucsf.edu")
  end
elseif isDir("/c4") then
    pushenv("RSC_SSH_LOGIN_HOSTNAME", "c4-log1.ucsf.edu")
else
  try_load("expect")
end

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))


-- Temporary workaround for https://github.com/UCSF-CBI/rstudio-server-controller/issues/91 /2023-12-15
setenv("PORT4ME_PORT_COMMAND", "netstat")

salmon #

salmon: Salmon Provides Fast and Bias-Aware Quantification of Transcript Expression
Highly-accurate & wicked fast transcript-level quantification from RNA-seq reads using selective alignment.
Example: salmon --version, salmon --help, and salmon quant --threads=1 ....
URL: https://combine-lab.github.io/salmon/, https://salmon.readthedocs.io/en/latest/ (documentation), https://github.com/COMBINE-lab/salmon/releases (changelog), https://github.com/COMBINE-lab/salmon (source code)
Warning: This tool runs on all available CPU cores by default, which is bad practice. Please specify option --threads=ncores to avoid this, e.g. --threads=1.
Versions: 1.3.0, 1.4.0, 1.5.2, 1.6.0, 1.8.0, 1.9.0, 1.10.0
Module code: view
help([[
salmon: Salmon Provides Fast and Bias-Aware Quantification of Transcript Expression
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://combine-lab.github.io/salmon/, https://salmon.readthedocs.io/en/latest/ (documentation), https://github.com/COMBINE-lab/salmon/releases (changelog), https://github.com/COMBINE-lab/salmon (source code)")
whatis([[
Description: Highly-accurate & wicked fast transcript-level quantification from RNA-seq reads using selective alignment.
Examples: `salmon --version`, `salmon --help`, and `salmon quant --threads=1 ...`.
Warning: This tool runs on all available CPU cores by default, which is bad practice. Please specify option `--threads=ncores` to avoid this, e.g. `--threads=1`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))

samtools #

SAMtools: Tools (written in C using htslib) for Manipulating Next-Generation Sequencing Data
SAMtools is a suite of programs for interacting with high-throughput sequencing data.
Example: samtools --version.
URL: https://www.htslib.org/, https://github.com/samtools/samtools/blob/develop/NEWS.md (changelog), https://github.com/samtools/samtools (source code)
Versions: 1.9, 1.10, 1.11, 1.13, 1.14, 1.15, 1.15.1, 1.16, 1.16.1, 1.17, 1.18, 1.19, 1.19.2, 1.20, 1.21
Module code: view
help([[
SAMtools: Tools (written in C using htslib) for Manipulating Next-Generation Sequencing Data
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://www.htslib.org/, https://github.com/samtools/samtools/blob/develop/NEWS.md (changelog), https://github.com/samtools/samtools (source code)")
whatis([[
Description: SAMtools is a suite of programs for interacting with high-throughput sequencing data.
Examples: `samtools --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")

local home = pathJoin(root, name .. "-" .. version)

local version_x = string.gsub(version, "[.].*", "")
if (version_x == "0") then
  prepend_path("PATH", home)
  prepend_path("PATH", pathJoin(home, "bcftools"))
  prepend_path("PATH", pathJoin(home, "misc"))
else
  prepend_path("PATH", pathJoin(home, "bin"))
end
prepend_path("MANPATH", pathJoin(home, "share", "man"))

-- Warn about bug https://github.com/samtools/htslib/issues/1236
if (mode() == "load" and version == "1.11") then
  LmodMessage("MODULE WARNING: " .. name .. " " .. version .. " has a bug that results in valid but incorrect CIGAR strings. Because of this, it is recommended to use an older or a newer version instead. For details, see https://github.com/samtools/htslib/issues/1236")
end

scl-gcc-toolset #

SCL GCC Toolset: GNU Compiler Collection, GNU Debugger, etc.
These Developer Toolset provides modern versions of the GNU Compiler Collection, GNU Debugger, and other development, debugging, and performance monitoring tools. Loading these modules enables the corresponding RedHat Software Collection (SCL) gcc-toolset-<version> in the current environment. This is an alternative to calling source scl_source enable gcc-toolset-<version>, which is an approach that is not officially supported by RedHat.
Example: gcc --version.
URL: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/developing_c_and_cpp_applications_in_rhel_8/additional-toolsets-for-development_developing-applications#gcc-toolset_assembly_additional-toolsets-for-development, https://gcc.gnu.org/develop.html#timeline (GCC release schedule)
Warning: Older versions may be removed in the future.
Requirement: Rocky 8.
Versions: 9, 10, 11, 12, 13
Module code: view
help([[
SCL GCC Toolset: GNU Compiler Collection, GNU Debugger, etc.
]])

local name = myModuleName()
local version = myModuleVersion()
local scl_name = "gcc-toolset" .. "-" .. version

whatis("Version: " .. version)
whatis("Keywords: programming, gcc")
whatis("URL: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/developing_c_and_cpp_applications_in_rhel_8/additional-toolsets-for-development_developing-applications#gcc-toolset_assembly_additional-toolsets-for-development, https://gcc.gnu.org/develop.html#timeline (GCC release schedule)")
whatis([[
Description: These Developer Toolset provides modern versions of the GNU Compiler Collection, GNU Debugger, and other development, debugging, and performance monitoring tools. Loading these modules enables the corresponding RedHat Software Collection (SCL) `gcc-toolset-<version>` in the current environment.  This is an alternative to calling `source scl_source enable gcc-toolset-<version>`, which is an approach that is not officially supported by RedHat.
Examples: `gcc --version`.  Warning: Older versions may be removed in the future.
Requirement: Rocky 8.
]])

-- This module is only available on Rocky 8
if os.getenv("CBI_LINUX") ~= "rocky8" then
  LmodError("Module '" .. myModuleFullName() .. "' is only available on Rocky 8 machines, but not on host '" .. os.getenv("HOSTNAME") .. "', which runs '" .. os.getenv("CBI_LINUX") .. "'")
end


local home = pathJoin("/opt", "rh", scl_name)

if not isDir(home) then
  LmodError("Module '" .. myModuleFullName() .. "' is not supported because this host '" .. os.getenv("HOSTNAME") .. "' does not have path '" .. home .. "'")
end


-- Don't edit! Created using: 
-- /usr/share/lmod/lmod/libexec/sh_to_modulefile /opt/rh/gcc-toolset-13/enable
setenv("INFOPATH","/opt/rh/gcc-toolset-13/root/usr/share/info")
prepend_path("LD_LIBRARY_PATH","/opt/rh/gcc-toolset-13/root/usr/lib64")
prepend_path("MANPATH","/opt/rh/gcc-toolset-13/root/usr/share/man")
prepend_path("PATH","/opt/rh/gcc-toolset-13/root/usr/bin")
setenv("PCP_DIR","/opt/rh/gcc-toolset-13/root")
setenv("PKG_CONFIG_PATH","/opt/rh/gcc-toolset-13/root/usr/lib64/pkgconfig")

shellcheck #

ShellCheck: A Shell Script Static Analysis Tool
ShellCheck finds bugs in your shell scripts.
Example: shellcheck --version and shellcheck -x ~/.bashrc.
URL: https://www.shellcheck.net/, https://github.com/koalaman/shellcheck/blob/master/CHANGELOG.md (changelog), https://github.com/koalaman/shellcheck/ (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 0.10.0
Module code: view
help([[
ShellCheck: A Shell Script Static Analysis Tool
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: programming, shell, sh, bash, dash, ksh")
whatis("URL: https://www.shellcheck.net/, https://github.com/koalaman/shellcheck/blob/master/CHANGELOG.md (changelog), https://github.com/koalaman/shellcheck/ (source code)")
whatis([[
Description: ShellCheck finds bugs in your shell scripts.
Examples: `shellcheck --version` and `shellcheck -x ~/.bashrc`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

shellcheck-repl #

ShellCheck REPL: Validation of Shell Commands Before Evaluation
ShellCheck is a great tool for validating your Unix shell scripts. It will parse the scripts and warn about mistakes, errors, and potential problems. This tool - shellcheck-repl - brings ShellCheck validation to the Bash read-eval-print loop (REPL), i.e. the Bash prompt. Getting this type of validation and feedback at the prompt lowers the risk of damaging mistakes and will help you become a better Bash user and developer.
Example: Try echo $HOME before and after loading this module. To deactive, unload module, or start a new shell.
URL: https://github.com/HenrikBengtsson/shellcheck-repl, https://github.com/HenrikBengtsson/shellcheck-repl/blob/master/README.md (documentation), https://github.com/HenrikBengtsson/shellcheck-repl/blob/master/NEWS.md (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 0.4.4
Module code: view
help([[
ShellCheck REPL: Validation of Shell Commands Before Evaluation 
]])

local name = myModuleName()
local version = myModuleVersion()
version = string.gsub(version, "^[.]", "")

whatis("Version: " .. version)
whatis("Keywords: programming, shell, bash")
whatis("URL: https://github.com/HenrikBengtsson/shellcheck-repl, https://github.com/HenrikBengtsson/shellcheck-repl/blob/master/README.md (documentation), https://github.com/HenrikBengtsson/shellcheck-repl/blob/master/NEWS.md (changelog)")
whatis([[
Description: ShellCheck is a great tool for validating your Unix shell scripts. It will parse the scripts and warn about mistakes, errors, and potential problems. This tool - shellcheck-repl - brings ShellCheck validation to the Bash read-eval-print loop (REPL), i.e. the Bash prompt. Getting this type of validation and feedback at the prompt lowers the risk of damaging mistakes and will help you become a better Bash user and developer.
Examples: Try `echo $HOME` before and after loading this module. To deactive, unload module, or start a new shell.
Warning: Only the most recent version of this software will be kept.
]])

depends_on("shellcheck")

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
local shell = os.getenv("SHELL")
local script = pathJoin(home, "shellcheck-repl.bash")

-- Enable on load
execute{cmd = "source " .. script, modeA = {"load"}}

-- Disable on unload
execute{cmd = "sc_repl_disable", modeA = {"unload"}}

snpeff #

SnpEff: Genetic Variant Annotation and Effect Prediction Toolbox
SnpEff is a variant annotation and effect prediction tool. It annotates and predicts the effects of variants on genes (such as amino acid changes).
Example: snpEff -help and SnpSift -help, which are short for java -jar $SNPEFF_HOME/snpEff/snpEff.jar -help and java -jar $SNPEFF_HOME/snpEff/SnpSift.jar -help. In SnpEff (< 5.0), there is also ClinEff -help, which is short for java -jar $SNPEFF_HOME/ClinEff/ClinEff.jar -help.
URL: https://pcingola.github.io/SnpEff/, https://github.com/pcingola/SnpEff/tags (changelog), https://github.com/pcingola/SnpEff (source code)
Warning: SnpEff (>= 5.1) requires Java (>= 12).
Versions: 4.3t, 5.0c, 5.0e, 5.1e, 5.1, 5.2a, 5.2c, 5.2e
Module code: view
help([[
SnpEff: Genetic Variant Annotation and Effect Prediction Toolbox
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: high-throughput sequencing")
whatis("URL: https://pcingola.github.io/SnpEff/, https://github.com/pcingola/SnpEff/tags (changelog), https://github.com/pcingola/SnpEff (source code)")
whatis([[
Description: SnpEff is a variant annotation and effect prediction tool. It annotates and predicts the effects of variants on genes (such as amino acid changes).
Examples: `snpEff -help` and `SnpSift -help`, which are short for `java -jar $SNPEFF_HOME/snpEff/snpEff.jar -help` and `java -jar $SNPEFF_HOME/snpEff/SnpSift.jar -help`.  In SnpEff (< 5.0), there is also `ClinEff -help`, which is short for `java -jar $SNPEFF_HOME/ClinEff/ClinEff.jar -help`.
Warning: SnpEff (>= 5.1) requires Java (>= 12).
]])

local name = "snpEff"
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

if (version < "5.1") then
  try_load("openjdk/11")
elseif (version >= "5.1") then
  try_load("openjdk/17")
end

pushenv("SNPEFF_HOME", home)

local jarfile = pathJoin(home, "snpEff", "snpEff.jar")
pushenv("SNPEFF", jarfile)
local bash = 'java -jar "$SNPEFF_HOME/snpEff/snpEff.jar" "$@"'
local csh  = 'java -jar "$SNPEFF_HOME/snpEff/snpEff.jar" $*'
set_shell_function("snpEff", bash, csh)

local jarfile = pathJoin(home, "snpEff", "SnpSift.jar")
pushenv("SNPSIFT", jarfile)
local bash = 'java -jar "$SNPEFF_HOME/snpEff/SnpSift.jar" "$@"'
local csh  = 'java -jar "$SNPEFF_HOME/snpEff/SnpSift.jar" $*'
set_shell_function("SnpSift", bash, csh)

local jarfile = pathJoin(home, "clinEff", "ClinEff.jar")
if isFile(jarfile) then
  pushenv("CLINEFF", jarfile)
  local bash = 'java -jar "$SNPEFF_HOME/ClinEff/ClinEff.jar" "$@"'
  local csh  = 'java -jar "$SNPEFF_HOME/ClinEff/ClinEff.jar" $*'
  set_shell_function("ClinEff", bash, csh)
end

-- Tweak Java for the current environment
depends_on("java-tweaks")

sqlite #

sqlite: SQLite Database Engine & Library
SQLite is a relational database management system (RDBMS) contained in a C library. In contrast to many other database management systems, SQLite is not a client–server database engine. Rather, it is embedded into the end program.
Example: sqlite3 --version.
URL: https://sqlite.org/, https://sqlite.org/docs.html (docs), https://github.com/sqlite/sqlite/tags (changelog), https://github.com/sqlite/sqlite (source code)
Versions: 3.43.0, 3.43.2, 3.45.2, 3.46.1, 3.47.0
Module code: view
help([[
sqlite: SQLite Database Engine & Library
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: database, utilize")
whatis("URL: https://sqlite.org/, https://sqlite.org/docs.html (docs), https://github.com/sqlite/sqlite/tags (changelog), https://github.com/sqlite/sqlite (source code)")
whatis([[
Description: SQLite is a relational database management system (RDBMS) contained in a C library. In contrast to many other database management systems, SQLite is not a client–server database engine. Rather, it is embedded into the end program.
Example: `sqlite3 --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")

-- Specific to the Linux distribution?
if string.match(myFileName(), "/_" .. os.getenv("CBI_LINUX") .. "/") then
  root = pathJoin(root, "_" .. os.getenv("CBI_LINUX"))
end

local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
prepend_path("LD_LIBRARY_PATH", pathJoin(home, "lib"))
prepend_path("PKG_CONFIG_PATH", pathJoin(home, "lib", "pkgconfig"))

sratoolkit #

SRA Toolkit: Tools and Libraries for Using Data in the INSDC Sequence Read Archives
The SRA Toolkit and SDK from NCBI is a collection of tools and libraries for using data in the INSDC Sequence Read Archives.
Example: fastq-dump --help.
URL: https://github.com/ncbi/sra-tools/wiki (documentation), https://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?view=toolkit_doc (documentation), https://github.com/ncbi/sra-tools/blob/master/CHANGES.md (changelog), https://github.com/ncbi/sra-tools (source code)
Warning: To work around a bug where fasterq-dump crashes the local machine, it has been tweaked such that it uses $TMPDIR rather than $PWD as the default temporary folder and it will only use two threads instead of six by default.
Versions: 2.10.0, 2.10.4, 2.10.5, 2.10.7, 2.10.8, 2.10.9, 2.11.0, 2.11.1, 2.11.2, 2.11.3, 3.0.0, 3.0.1, 3.0.2, 3.0.5, 3.0.6, 3.0.7, 3.1.0, 3.1.1
Module code: view
help([[
SRA Toolkit: Tools and Libraries for Using Data in the INSDC Sequence Read Archives
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://github.com/ncbi/sra-tools/wiki (documentation), https://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?view=toolkit_doc (documentation), https://github.com/ncbi/sra-tools/blob/master/CHANGES.md (changelog), https://github.com/ncbi/sra-tools (source code)")
whatis([[
Description: The SRA Toolkit and SDK from NCBI is a collection of tools and libraries for using data in the INSDC Sequence Read Archives.
Examples: `fastq-dump --help`.
Warning: To work around a bug where `fasterq-dump` crashes the local machine, it has been tweaked such that it uses `$TMPDIR` rather than `$PWD` as the default temporary folder and it will only use two threads instead of six by default.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", pathJoin(home, "bin"))

-- WORKAROUND: fasterq-dump crashes machines!
-- Not sure exactly why, but one hypothesis is that the file system is
-- being hit too hard.  The workaround forces 'fasterq-dump' to use
-- 'TMPDIR' for temporary files rather than the current directory [2]
-- [1] https://github.com/ncbi/sra-tools/issues/463#issuecomment-824321890
-- [2] https://github.com/ncbi/sra-tools/issues/161#issuecomment-808294889
-- In-house tests with sratoolkit 2.11.0 shows that it's *not* sufficient
-- to control TMPDIR but also the number of parallel threads [Harry Putnam,
-- 2021-08-20].  Ideally, we would limit it to a single thread, but the
-- tool will ignore '--threads 1' and use the default six threads. [3]
-- [3] https://github.com/ncbi/sra-tools/issues/494
-- In sratoolkit (>= 2.11.2) it might be that we no longer need to use
-- '--threads 2' [4]. As soon as we have verified that in a safe
-- environment, we'll drop it
-- [4] https://github.com/ncbi/sra-tools/issues/463#issuecomment-942410725

-- Workaround only works in shells that support function, i.e. not in csh and tcsh
if myShellType() == "sh" then
  set_shell_function("fasterq-dump", 'command fasterq-dump --threads 2 --temp "$(mktemp -d)" "$@"', '')
end

star #

STAR: Spliced Transcripts Alignment to a Reference
STAR (Spliced Transcripts Alignment to a Reference) is a fast NGS read aligner for RNA-seq data.
Example: STAR --help and STAR --version.
URL: https://github.com/alexdobin/STAR, https://raw.githubusercontent.com/alexdobin/STAR/master/doc/STARmanual.pdf (docs), https://github.com/alexdobin/STAR/blob/master/CHANGES.md (changelog)
Versions: 2.7.0e, 2.7.0f, 2.7.1a, 2.7.2b, 2.7.3a, 2.7.5a, 2.7.5c, 2.7.7a, 2.7.9a, 2.7.10a, 2.7.10b, 2.7.11a, 2.7.11b
Module code: view
help("STAR: Spliced Transcripts Alignment to a Reference")

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://github.com/alexdobin/STAR, https://raw.githubusercontent.com/alexdobin/STAR/master/doc/STARmanual.pdf (docs), https://github.com/alexdobin/STAR/blob/master/CHANGES.md (changelog)")
whatis([[
Description: STAR (Spliced Transcripts Alignment to a Reference) is a fast NGS read aligner for RNA-seq data.
Examples: `STAR --help` and `STAR --version`.
]])

local name = "STAR"
local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

tmux #

tmux: A Terminal Multiplexer
tmux is a terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more.
Example: tmux and man tmux.
URL: https://github.com/tmux/tmux/wiki, https://github.com/tmux/tmux/blob/master/CHANGES (changelog), https://github.com/tmux/tmux (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 2.8
Module code: view
help([[
tmux: A Terminal Multiplexer
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: screen, tmux")
whatis("URL: https://github.com/tmux/tmux/wiki, https://github.com/tmux/tmux/blob/master/CHANGES (changelog), https://github.com/tmux/tmux (source code)")
whatis([[
Description: tmux is a terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more.
Examples: `tmux` and `man tmux`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))

tophat #

TopHat: A Spliced Read Mapper for RNA-Seq
TopHat is a fast splice junction mapper for RNA-Seq reads. It aligns RNA-Seq reads to mammalian-sized genomes using the ultra high-throughput short read aligner Bowtie, and then analyzes the mapping results to identify splice junctions between exons.
Example: tophat --version.
URL: https://ccb.jhu.edu/software/tophat/index.shtml, https://ccb.jhu.edu/software/tophat/index.shtml (changelog), https://github.com/infphilo/tophat (source code)
Versions: 2.1.1
Module code: view
help([[
TopHat: A Spliced Read Mapper for RNA-Seq
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: Programming, Statistics")
whatis("URL: https://ccb.jhu.edu/software/tophat/index.shtml, https://ccb.jhu.edu/software/tophat/index.shtml (changelog), https://github.com/infphilo/tophat (source code)")
whatis([[
Description: TopHat is a fast splice junction mapper for RNA-Seq reads. It aligns RNA-Seq reads to mammalian-sized genomes using the ultra high-throughput short read aligner Bowtie, and then analyzes the mapping results to identify splice junctions between exons.
Examples: `tophat --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", home)

tree #

tree: List Content of Directories in a Tree-like Format
Tree is a recursive directory listing command that produces a depth indented listing of files, which is colorized ala dircolors if the LS_COLORS environment variable is set and output is to tty.
Example: tree --help.
URL: https://mama.indstate.edu/users/ice/tree/, https://mama.indstate.edu/users/ice/tree/changes.html (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 2.1.1
Module code: view
help([[
tree: List Content of Directories in a Tree-like Format
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: files, utility, cli")
whatis("URL: https://mama.indstate.edu/users/ice/tree/, https://mama.indstate.edu/users/ice/tree/changes.html (changelog)")
whatis([[
Description: Tree is a recursive directory listing command that produces a depth indented listing of files, which is colorized ala dircolors if the `LS_COLORS` environment variable is set and output is to tty.
Examples: `tree --help`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "man"))

trimgalore #

TrimGalore: Taking Appropriate QC Measures for RRBS-Type or Other -Seq Applications with Trim Galore!
A wrapper around Cutadapt and FastQC to consistently apply adapter and quality trimming to FastQ files, with extra functionality for RRBS data.
Example: trim_galore --version, trim_galore --help, and more "$TRIMGALORE_HOME/Docs/Trim_Galore_User_Guide.md".
URL: https://github.com/FelixKrueger/TrimGalore, https://github.com/FelixKrueger/TrimGalore/blob/master/CHANGELOG.md (changelog)
Versions: 0.6.7, 0.6.10
Module code: view
help([[
TrimGalore: Taking Appropriate QC Measures for RRBS-Type or Other -Seq Applications with Trim Galore!
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing, genome")
whatis("URL: https://github.com/FelixKrueger/TrimGalore, https://github.com/FelixKrueger/TrimGalore/blob/master/CHANGELOG.md (changelog)")
whatis([[
Description: A wrapper around Cutadapt and FastQC to consistently apply adapter and quality trimming to FastQ files, with extra functionality for RRBS data.
Examples: `trim_galore --version`, `trim_galore --help`, and `more "$TRIMGALORE_HOME/Docs/Trim_Galore_User_Guide.md"`.
]])

depends_on("cutadapt")
depends_on("fastqc")

name = "TrimGalore"

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", home)
pushenv("TRIMGALORE_HOME", home)

varscan #

VarScan: Variant Detection in Massively Parallel Sequencing Data
VarScan is a platform-independent mutation caller for targeted, exome, and whole-genome resequencing data generated on Illumina, SOLiD, Life/PGM, Roche/454, and similar instruments.
Example: varscan, which is short for java -jar $VARSCAN_HOME/VarScan.jar.
URL: https://dkoboldt.github.io/varscan/, https://github.com/dkoboldt/varscan/releases (changelog), https://github.com/dkoboldt/varscan (source code)
Versions: 2.4.2, 2.4.6
Module code: view
help([[
VarScan: Variant Detection in Massively Parallel Sequencing Data
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: high-throughput sequencing")
whatis("URL: https://dkoboldt.github.io/varscan/, https://github.com/dkoboldt/varscan/releases (changelog), https://github.com/dkoboldt/varscan (source code)")
whatis([[
Description: VarScan is a platform-independent mutation caller for targeted, exome, and whole-genome resequencing data generated on Illumina, SOLiD, Life/PGM, Roche/454, and similar instruments.
Examples: `varscan`, which is short for `java -jar $VARSCAN_HOME/VarScan.jar`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
name = "VarScan"
local home = pathJoin(root, name .. "-" .. version)
pushenv("VARSCAN_HOME", home)

local bash = 'java -jar "$VARSCAN_HOME/VarScan.jar" "$@"'
local csh  = 'java -jar "$VARSCAN_HOME/VarScan.jar" $*'
set_shell_function("varscan", bash, csh)

-- Tweak Java for the current environment
depends_on("java-tweaks")

vcf-validator #

vcf-validator: Validation Suite for Variant Call Format (VCF) Files
Validator for the Variant Call Format (VCF) implemented using C++11. It includes all the checks from the vcftools suite, and some more that involve lexical, syntactic and semantic analysis of the VCF input.
Example: vcf_validator --help, vcf-debugulator --help, and vcf-assembly-checker --help.
URL: https://github.com/EBIvariation/vcf-validator, https://github.com/EBIvariation/vcf-validator/releases (changelog)
Versions: 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7
Module code: view
help([[
vcf-validator: Validation Suite for Variant Call Format (VCF) Files
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://github.com/EBIvariation/vcf-validator, https://github.com/EBIvariation/vcf-validator/releases (changelog)")
whatis([[
Description: Validator for the Variant Call Format (VCF) implemented using C++11. It includes all the checks from the vcftools suite, and some more that involve lexical, syntactic and semantic analysis of the VCF input.
Examples: `vcf_validator --help`, `vcf-debugulator --help`, and `vcf-assembly-checker --help`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", home)

vcftools #

VCFtools: Tools Written in Perl and C++ for Working with VCF Files
VCFtools is a program package designed for working with VCF files, such as those generated by the 1000 Genomes Project. The aim of VCFtools is to provide easily accessible methods for working with complex genetic variation data in the form of VCF files.
Example: vcftools --version.
URL: https://vcftools.github.io/, https://github.com/vcftools/vcftools/releases (changelog), https://github.com/vcftools/vcftools (source code)
Versions: 0.1.16
Module code: view
help([[
VCFtools: Tools Written in Perl and C++ for Working with VCF Files
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: sequencing")
whatis("URL: https://vcftools.github.io/, https://github.com/vcftools/vcftools/releases (changelog), https://github.com/vcftools/vcftools (source code)")
whatis([[
Description: VCFtools is a program package designed for working with VCF files, such as those generated by the 1000 Genomes Project. The aim of VCFtools is to provide easily accessible methods for working with complex genetic variation data in the form of VCF files.
Examples: `vcftools --version`.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))
pushenv("PERL5LIB", pathJoin(home, "share", "perl5"))


wynton-tools #

wynton-tools: UCSF Wynton HPC Tools
The UCSF Wynton HPC Tools is a set of command-line tools that queries different aspects of the UCSF Wynton HPC environment. These tools may be useful for systems administrators as well as end-users.
Example: wynton --help and trash --help.
URL: https://github.com/ucsf-wynton/wynton-tools, https://github.com/ucsf-wynton/wynton-tools/blob/master/NEWS.md (changelog)
Warning: This is work in development, which means that these tools may change, or even be removed, at anytime without notice.
Versions: 0.9.0, 0.10.0
Module code: view
help([[
wynton-tools: UCSF Wynton HPC Tools
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: utilities")
whatis("URL: https://github.com/ucsf-wynton/wynton-tools, https://github.com/ucsf-wynton/wynton-tools/blob/master/NEWS.md (changelog)")
whatis([[
Description: The UCSF Wynton HPC Tools is a set of command-line tools that queries different aspects of the UCSF Wynton HPC environment.  These tools may be useful for systems administrators as well as end-users.
Warning: This is work in development, which means that these tools may change, or even be removed, at anytime without notice.
Examples: `wynton --help` and `trash --help`.
]])

if not isDir("/wynton") then
  LmodMessage("NOTE: The '" .. name .. "' module is designed for the UCSF Wynton HPC environment; not all tools may work on your system")
end

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))

x86-64-level #

x86-64-level: Get the x86-64 Microarchitecture Level on the Current Machine
x86-64 is a 64-bit version of the x86 CPU instruction set supported by AMD and Intel CPUs among others. Since the first generations of CPUs, more low-level CPU features have been added over the years. The x86-64 CPU features can be grouped into four CPU microarchitecture levels: x86-64 v1, x86-64 v2, x86-64 v3, and x86-64 v4. This tool checks which CPU level the current machine supports.
Example: x86-64-level and x86-64-level --help.
URL: https://github.com/HenrikBengtsson/x86-64-level/, https://github.com/HenrikBengtsson/x86-64-level/blob/develop/NEWS.md (changelog)
Warning: Only the most recent version of this software will be kept.
Versions: 0.2.2
Module code: view
help([[
x86-64-level: Get the x86-64 Microarchitecture Level on the Current Machine
]])

local name = myModuleName()
local version = myModuleVersion()
version = string.gsub(version, "^[.]", "")

whatis("Version: " .. version)
whatis("Keywords: tools, shell, bash")
whatis("URL: https://github.com/HenrikBengtsson/x86-64-level/, https://github.com/HenrikBengtsson/x86-64-level/blob/develop/NEWS.md (changelog)")
whatis([[
Description: x86-64 is a 64-bit version of the x86 CPU instruction set supported by AMD and Intel CPUs among others. Since the first generations of CPUs, more low-level CPU features have been added over the years. The x86-64 CPU features can be grouped into four CPU microarchitecture levels: x86-64 v1, x86-64 v2, x86-64 v3, and x86-64 v4. This tool checks which CPU level the current machine supports.
Examples: `x86-64-level` and `x86-64-level --help`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)
prepend_path("PATH", home)

-- Assert x86-64-level on load?
if (mode() == "load") then
  local level = os.getenv("X86_64_LEVEL_ASSERT")
  if level ~= nul and level ~= "" then
    local error = capture("x86-64-level --assert=" .. level .. " 2>&1")
    if error ~= "" then
      LmodError(error)
    end
  end
end

yq #

yq: Lightweight and Portable Command-Line YAML, JSON and XML Processor.
yq is a lightweight and portable command-line YAML, JSON and XML processor. yq uses jq like syntax, but works with YAML files as well as JSON, XML, properties, CSV, and TSV.
Example: yq --version, yq --help.
URL: https://github.com/mikefarah/yq, https://github.com/mikefarah/yq/releases (changelog), https://github.com/mikefarah/yq (source code)
Warning: Only the most recent version of this software will be kept.
Versions: 4.44.3, 4.44.5, 4.44.6
Module code: view
help([[
yq: Lightweight and Portable Command-Line YAML, JSON and XML Processor.
]])

local name = myModuleName()
local version = myModuleVersion()
whatis("Version: " .. version)
whatis("Keywords: terminal, cli, utility")
whatis("URL: https://github.com/mikefarah/yq, https://github.com/mikefarah/yq/releases (changelog), https://github.com/mikefarah/yq (source code)")
whatis([[
Description: `yq` is a lightweight and portable command-line YAML, JSON and XML processor. `yq` uses `jq` like syntax, but works with YAML files as well as JSON, XML, properties, CSV, and TSV.
Examples: `yq --version`, `yq --help`.
Warning: Only the most recent version of this software will be kept.
]])

local root = os.getenv("SOFTWARE_ROOT_CBI")
local home = pathJoin(root, name .. "-" .. version)

prepend_path("PATH", pathJoin(home, "bin"))
prepend_path("MANPATH", pathJoin(home, "share", "man"))

Module Software Repository: Sali (96) #

Maintained by: Ben Webb, Sali Lab Software Repository
Enable repository: module load Sali

allosmod #

AllosMod utility library
URL: https://github.com/salilab/allosmod-lib/
Module code: view
#%Module 1.0

module-whatis "Description: AllosMod utility library"
module-whatis "URL: https://github.com/salilab/allosmod-lib/"
module load modeller
module load dssp
module load profit
set topdir /salilab/diva1/programs/x86_64linux/allosmod
prepend-path  PATH            ${topdir}/bin
prepend-path  PYTHONPATH      ${topdir}/python

amber #

Amber11, for 64-bit
URL: http://ambermd.org/
Versions: 11
Module code: view
#%Module 1.0

module-whatis "Description: Amber11, for 64-bit"
module-whatis "URL: http://ambermd.org/"

if [ module-info mode load ] {
  if { ! [file exists /wynton/group ] } {
    puts stderr "Sorry, this module only works on the Wynton cluster (or other machine that has /wynton/group mounted)"
    break
  }

  if { ! [file exists /wynton/group/sali/AMBER ] } {
    puts stderr "Sorry, this module is only available to members of the Sali lab."
    break
  }
}
setenv        AMBERHOME       /wynton/group/sali/AMBER/amber11/
prepend-path  PATH            /wynton/group/sali/AMBER/amber11/bin
prepend-path  LD_LIBRARY_PATH /wynton/group/sali/AMBER/amber11/deplib

anaconda #

Anaconda Python distribution
URL: https://www.anaconda.com/
Versions: py310-2023.03, py311-2023.09, py311-2024.02
Module code: view
#%Module 1.0

module-whatis "Description: Anaconda Python distribution"
module-whatis "URL: https://www.anaconda.com/"
conflict conda-forge
prepend-path  PATH       /salilab/diva1/home/anaconda/py311-2024.02/bin/

if [ module-info mode load ] {
  puts stderr "!! The Anaconda module is no longer being updated since it is"
  puts stderr "   no longer free; please use the conda-forge module instead."
}

blast+ #

Basic Local Alignment Search Tool
URL: https://blast.ncbi.nlm.nih.gov/
Versions: 2.2.25, 2.2.28, 2.12.0
Module code: view
#%Module 1.0

module-whatis "Description: Basic Local Alignment Search Tool"
module-whatis "URL: https://blast.ncbi.nlm.nih.gov/"
prepend-path  PATH   /salilab/diva1/programs/x86_64linux/ncbi-blast-2.12.0+/bin

blast #

Basic Local Alignment Search Tool
URL: https://blast.ncbi.nlm.nih.gov
Versions: 2.2.26
Module code: view
#%Module 1.0

module-whatis "Description: Basic Local Alignment Search Tool"
module-whatis "URL: https://blast.ncbi.nlm.nih.gov"
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/blast-2.2.26/bin

boost #

The free peer-reviewed portable C++ source libraries
URL: https://www.boost.org/
Versions: 1.73.0
Module code: view
#%Module 1.0

module-whatis "Description: The free peer-reviewed portable C++ source libraries"
module-whatis "URL: https://www.boost.org/"
prepend-path LD_LIBRARY_PATH    /salilab/diva1/programs/x86_64linux/boost-1.73.0/lib64
prepend-path CMAKE_INCLUDE_PATH /salilab/diva1/programs/x86_64linux/boost-1.73.0/include
prepend-path CMAKE_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/boost-1.73.0/lib64

cereal #

A header-only C++11 serialization library
URL: http://uscilab.github.io/cereal/
Versions: 1.3.2
Module code: view
#%Module 1.0

module-whatis "Description: A header-only C++11 serialization library"
module-whatis "URL: http://uscilab.github.io/cereal/"
prepend-path CMAKE_INCLUDE_PATH /salilab/diva1/programs/x86_64linux/cereal-1.3.2/include

cgal #

Computational Geometry Algorithms Library
URL: https://www.cgal.org/
Versions: 4.12.1, 5.1
Module code: view
#%Module 1.0

module-whatis "Description: Computational Geometry Algorithms Library"
module-whatis "URL: https://www.cgal.org/"
if { [file exists /etc/centos-release] || [file exists /etc/rocky-release] || [file exists /etc/almalinux-release] } {
  module load boost/1.73.0
  setenv CGAL_DIR /salilab/diva1/programs/x86_64linux/cgal-5.1/share/cmake/CGAL
} else {
  set curMod [module-info name]
  puts stderr "'$curMod' does not work on Fedora - ask a sysadmin to install the RPM package instead"
  break
}

colabfold #

AlphaFold2 using MMseqs2
URL: https://github.com/sokrypton/ColabFold
Versions: 20230808.git79d8c6e
Module code: view
#%Module 1.0

module-whatis "Description: AlphaFold2 using MMseqs2"
module-whatis "URL: https://github.com/sokrypton/ColabFold"
module-whatis "Examples: for example usage on Wynton, see https://www.rbvi.ucsf.edu/chimerax/data/wynton-colabfold-feb2024/colabfold_wynton.html"
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/colabfold-20230808.git79d8c6e/localcolabfold/colabfold-conda/bin/

concavity #

Ligand binding site prediction from protein sequence and structure
URL: https://compbio.cs.princeton.edu/concavity/
Versions: 0.1
Module code: view
#%Module 1.0

module-whatis "Description: Ligand binding site prediction from protein sequence and structure"
module-whatis "URL: https://compbio.cs.princeton.edu/concavity/"
module load sali-libraries
prepend-path PATH            /salilab/diva1/programs/x86_64linux/concavity-0.1/bin

conda-forge #

conda-forge Python distribution
URL: https://conda-forge.org/
Versions: py310-23.1.0, py310-23.11.0, py310-24.3.0, py312-24.7.1, py312-24.11.0
Module code: view
#%Module 1.0

module-whatis "Description: conda-forge Python distribution"
module-whatis "URL: https://conda-forge.org/"
conflict anaconda
prepend-path  PATH       /salilab/diva1/home/anaconda/miniforge/py312-24.11.0/bin/

cryptosite #

CryptoSite utility library
URL: https://github.com/salilab/cryptosite/
Module code: view
#%Module 1.0

module-whatis "Description: CryptoSite utility library"
module-whatis "URL: https://github.com/salilab/cryptosite/"
module load modeller
module load muscle
module load dssp
module load fpocket
module load concavity
module load patch_dock
module load imp
module load blast+
module load usearch
module load python3/scikit/0.21.3
module load python3/biopython
set topdir /salilab/diva1/programs/linux/cryptosite
prepend-path  PATH            ${topdir}/bin
prepend-path  PYTHONPATH      ${topdir}/python

cuda #

Versions: 6.0.37, 7.5.18, 8.0.61, 9.0.176, 10.0.130, 11.5.0, 12.4.0
Module code: view
#%Module 1.0

module-whatis "NVIDIA CUDA Toolkit libraries, plus cuDNN (v9)"
if ![file exists /usr/bin/g++] {
  module load gcc
}
prepend-path  PATH               /salilab/diva1/programs/x86_64linux/cuda-12.4.0/lib64/cuda/bin
prepend-path  LD_LIBRARY_PATH    /salilab/diva1/programs/x86_64linux/cuda-12.4.0/lib64/cuda/lib64
prepend-path  PKG_CONFIG_PATH    /salilab/diva1/programs/x86_64linux/cuda-12.4.0/lib64/cuda/pkgconfig
setenv        CUDA_LIB_PATH      /salilab/diva1/programs/x86_64linux/cuda-12.4.0/lib64/cuda/lib64
setenv        CUDA_BIN_PATH      /salilab/diva1/programs/x86_64linux/cuda-12.4.0/lib64/cuda/bin

Cython #

A language for writing Python extension modules
URL: https://cython.org/
Versions: 0.29.36, 3.0.5
Module code: view
#%Module 1.0

module-whatis "Description: A language for writing Python extension modules"
module-whatis "URL: https://cython.org/"
prepend-path PATH            /salilab/diva1/programs/x86_64linux/Cython-3.0.5/bin
prepend-path PYTHONPATH      /salilab/diva1/programs/x86_64linux/Cython-3.0.5/lib64/python

doxygen #

A documentation system for C/C++
URL: http://www.doxygen.org/index.html
Versions: 1.8.6, 1.8.15
Module code: view
#%Module 1.0

module-whatis "Description: A documentation system for C/C++"
module-whatis "URL: http://www.doxygen.org/index.html"
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/doxygen-1.8.15/bin

dssp #

Secondary structure assignment
URL: https://swift.cmbi.umcn.nl/gv/dssp/
Versions: 2.0.4, 2.2.1
Module code: view
#%Module 1.0

module-whatis "Description: Secondary structure assignment"
module-whatis "URL: https://swift.cmbi.umcn.nl/gv/dssp/"
module load sali-libraries
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/dssp-2.2.1/bin
prepend-path  MANPATH         /salilab/diva1/programs/x86_64linux/dssp-2.2.1/man

eigen #

A lightweight C++ template library for vector and matrix math
URL: http://eigen.tuxfamily.org
Versions: 3.3.5
Module code: view
#%Module 1.0

module-whatis "Description: A lightweight C++ template library for vector and matrix math"
module-whatis "URL: http://eigen.tuxfamily.org"
prepend-path CMAKE_INCLUDE_PATH /salilab/diva1/programs/x86_64linux/eigen-3.3.5/include

featuresketch #

Ursula's featuresketch script; run feature_sketch.sh then feature_sketch.py
Versions: 3.0
Module code: view
#%Module 1.0

module-whatis "Description: Ursula's featuresketch script; run feature_sketch.sh then feature_sketch.py"
prepend-path  PATH  /salilab/diva1/programs/x86_64linux/featuresketch-3.0/programs/feature_sketch

fpocket #

Protein pocket (cavity) detection algorithm
URL: https://github.com/Discngine/fpocket
Versions: 2.0
Module code: view
#%Module 1.0

module-whatis "Description: Protein pocket (cavity) detection algorithm"
module-whatis "URL: https://github.com/Discngine/fpocket"
prepend-path PATH            /salilab/diva1/programs/x86_64linux/fpocket-2.0/bin
prepend-path MANPATH         /salilab/diva1/programs/x86_64linux/fpocket-2.0/man

gcc #

Various compilers (C, C++, Objective-C, Java, ...)
URL: https://gcc.gnu.org/
Versions: 5.1.1, 6.4.1, 7.3.1, 10.2.1
Module code: view
#%Module 1.0

module-whatis "Description: Various compilers (C, C++, Objective-C, Java, ...)"
module-whatis "URL: https://gcc.gnu.org/"
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/gcc-10.2.1/bin
prepend-path  LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/gcc-10.2.1/lib64
if { [file exists /etc/centos-release] || [file exists /etc/rocky-release] || [file exists /etc/almalinux-release] } {
  prepend-path  LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/gcc-10.2.1/lib64/centos
}

if [ module-info mode load ] {
  if { [file exists /etc/centos-release] || [file exists /etc/rocky-release] || [file exists /etc/almalinux-release] } {
    puts stderr "!! On Wynton, it is recommended to use Software Collections instead to "
    puts stderr "   get new versions of the C++ compiler; see "
    puts stderr "   https://wynton.ucsf.edu/hpc/software/scl.html"
  }
}

ghostscript #

A PostScript interpreter and renderer
URL: https://www.ghostscript.com/
Versions: 8.70
Module code: view
#%Module 1.0

module-whatis "Description: A PostScript interpreter and renderer"
module-whatis "URL: https://www.ghostscript.com/"
module load sali-libraries
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/ghostscript-8.70/bin
prepend-path  LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/ghostscript-8.70/lib64
prepend-path  GS_FONTPATH     /salilab/diva1/programs/x86_64linux/ghostscript-8.70/share/fonts/default/Type1
prepend-path  GS_FONTPATH     /salilab/diva1/programs/x86_64linux/ghostscript-8.70/share/fonts/default/ghostscript

gnuplot #

A program for plotting mathematical expressions and data
URL: http://www.gnuplot.info/
Versions: 5.0.5, 5.4.2
Module code: view
#%Module 1.0

module-whatis "Description: A program for plotting mathematical expressions and data"
module-whatis "URL: http://www.gnuplot.info/"
prepend-path  GNUPLOT_FONTPATH /salilab/diva1/programs/linux/fonts
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/gnuplot-5.4.2/bin

hdf5 #

A general purpose library and file format for storing scientific data
URL: https://support.hdfgroup.org/HDF5/
Versions: 1.8.14, 1.8.17, 1.10.1, 1.10.5, 1.10.6, 1.10.7
Module code: view
#%Module 1.0

module-whatis "Description: A general purpose library and file format for storing scientific data"
module-whatis "URL: https://support.hdfgroup.org/HDF5/"
prepend-path PATH               /salilab/diva1/programs/x86_64linux/hdf5-1.10.7/bin
prepend-path LD_LIBRARY_PATH    /salilab/diva1/programs/x86_64linux/hdf5-1.10.7/lib
prepend-path CMAKE_INCLUDE_PATH /salilab/diva1/programs/x86_64linux/hdf5-1.10.7/include
prepend-path CMAKE_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/hdf5-1.10.7/lib

ifort #

Intel Fortran compiler
URL: http://software.intel.com/content/www/us/en/develop/tools/oneapi/components/fortran-compiler.html
Versions: 10.1.022
Module code: view
#%Module 1.0

module-whatis "Description: Intel Fortran compiler"
module-whatis "URL: http://software.intel.com/content/www/us/en/develop/tools/oneapi/components/fortran-compiler.html"
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/ifort-10.1.022/opt/intel/fce/10.1.022/bin
prepend-path  LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/ifort-10.1.022/opt/intel/fce/10.1.022/lib
prepend-path  MANPATH         /salilab/diva1/programs/x86_64linux/ifort-10.1.022/usr/share/man

ImageMagick #

An X application for displaying and manipulating images
URL: https://imagemagick.org/
Versions: 6.8.8.10
Module code: view
#%Module 1.0

module-whatis "Description: An X application for displaying and manipulating images"
module-whatis "URL: https://imagemagick.org/"
module load sali-libraries
module load ghostscript
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/ImageMagick-6.8.8.10/bin
prepend-path  LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/ImageMagick-6.8.8.10/lib64
prepend-path  PERL5LIB        /salilab/diva1/programs/x86_64linux/ImageMagick-6.8.8.10/lib64/perl5

imod #

Tomographic reconstruction package
URL: http://bio3d.colorado.edu/imod/
Versions: 4.5.7
Module code: view
#%Module 1.0

module-whatis "Description: Tomographic reconstruction package"
module-whatis "URL: http://bio3d.colorado.edu/imod/"
module load sali-libraries ifort
setenv        IMOD_DIR        /salilab/diva1/programs/x86_64linux/imod-4.5.7/IMOD
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/imod-4.5.7/IMOD/bin
setenv        IMOD_PLUGIN_DIR /salilab/diva1/programs/x86_64linux/imod-4.5.7/IMOD/lib/imodplug
setenv        IMOD_QTLIBDIR   /salilab/diva1/programs/x86_64linux/imod-4.5.7/IMOD/qtlib
prepend-path  LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/imod-4.5.7/IMOD/lib
prepend-path  MANPATH         /salilab/diva1/programs/x86_64linux/imod-4.5.7/man

imp #

Integrative Modeling Platform (version 2.22.0, with only usage checks turned on)
URL: https://integrativemodeling.org/
Versions: last_ok_build, nightly, 2.7.0, 2.8.0, 2.9.0, 2.10.0, 2.10.1, 2.11.0, 2.11.1, 2.12.0, 2.13.0, 2.14.0, 2.15.0, 2.16.0, 2.17.0, 2.18.0, 2.19.0, 2.20.0, 2.20.1, 2.20.2, 2.21.0, 2.22.0
Module code: view
#%Module 1.0

module-whatis "Description: Integrative Modeling Platform (version 2.22.0, with only usage checks turned on)"
module-whatis "URL: https://integrativemodeling.org/"
module load boost/1.73.0 libtau/1.0.1 opencv/4.3.0 python3/ihm sali-libraries
set topdir "/salilab/diva1/home/imp/main"
set subdir [file readlink "${topdir}/2.22.0"]
if {[file pathtype ${subdir}] == "relative"} {
  set subdir "${topdir}/${subdir}"
} 
prepend-path  PATH            ${subdir}/bin/release8
prepend-path  LD_LIBRARY_PATH ${subdir}/lib/release8
prepend-path  PYTHONPATH      ${subdir}/lib/release8
setenv        IMP_DIR         ${subdir}/lib/release8/cmake/IMP

imp-fast #

Integrative Modeling Platform (version 2.22.0, fast build)
URL: https://integrativemodeling.org/
Versions: last_ok_build, nightly, 2.7.0, 2.8.0, 2.9.0, 2.10.0, 2.10.1, 2.11.0, 2.11.1, 2.12.0, 2.13.0, 2.14.0, 2.15.0, 2.16.0, 2.17.0, 2.18.0, 2.19.0, 2.20.0, 2.20.1, 2.20.2, 2.21.0, 2.22.0
Module code: view
#%Module 1.0

module-whatis "Description: Integrative Modeling Platform (version 2.22.0, fast build)"
module-whatis "URL: https://integrativemodeling.org/"
module load boost/1.73.0 libtau/1.0.1 opencv/4.3.0 python3/ihm sali-libraries
set topdir "/salilab/diva1/home/imp/main"
set subdir [file readlink "${topdir}/2.22.0"]
if {[file pathtype ${subdir}] == "relative"} {
  set subdir "${topdir}/${subdir}"
} 
prepend-path  PATH            ${subdir}/bin/fast8
prepend-path  LD_LIBRARY_PATH ${subdir}/lib/fast8
prepend-path  PYTHONPATH      ${subdir}/lib/fast8
setenv        IMP_DIR         ${subdir}/lib/fast8/cmake/IMP

itcell #

Integrative T-cell epitope prediction
URL: https://github.com/salilab/itcell-lib
Module code: view
#%Module 1.0

module-whatis "Description: Integrative T-cell epitope prediction"
module-whatis "URL: https://github.com/salilab/itcell-lib"
module load imp scwrl
set topdir /salilab/diva1/programs/x86_64linux/itcell-lib
prepend-path  PATH            ${topdir}/scripts

libtau #

Code from the SAMBA group at TAU
URL: https://integrativemodeling.org/libTAU.html
Versions: 1.0.1
Module code: view
#%Module 1.0

module-whatis "Description: Code from the SAMBA group at TAU"
module-whatis "URL: https://integrativemodeling.org/libTAU.html"
prepend-path LD_LIBRARY_PATH    /salilab/diva1/programs/x86_64linux/libtau-1.0.1/lib64
prepend-path CMAKE_INCLUDE_PATH /salilab/diva1/programs/x86_64linux/libtau-1.0.1/include
prepend-path CMAKE_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/libtau-1.0.1/lib64

main #

Dusan Turk's MAIN program
URL: https://stef.ijs.si/
Versions: 2013
Module code: view
#%Module 1.0
module-whatis "Description: Dusan Turk's MAIN program"
module-whatis "URL: https://stef.ijs.si/"
set MAIN /salilab/diva1/programs/x86_64linux/MAIN/
setenv MAIN ${MAIN}

setenv MAIN_CMDS "${MAIN}cmds/"
setenv MAIN_CMDS_NEW "${MAIN}cmds_new/"
setenv MAIN_UTILS "${MAIN}utils/"
setenv MAIN_SYMM "${MAIN}symm/"
setenv MAIN_DOC "${MAIN}doc/"
setenv MAIN_COM "${MAIN}doc/com/"
setenv MAIN_MENU "${MAIN}doc/menu/"
setenv MAIN_CONF "${MAIN}config/"
setenv MAIN_R3D_FONT "${MAIN}crke/"

prepend-path PATH "${MAIN}:${MAIN}prog:${MAIN}config"

set-alias mainps "${MAIN}mainps_2013.exe_LINUX_G95-64" 
set-alias psmain "${MAIN}mainps_2013.exe_LINUX_G95-64"
set-alias new "${MAIN}new.exe_LINUX_G95-64"
set-alias new_gf "${MAIN}new.exe_LINUX_GFORT"
set-alias l95 "make -f ${MAIN}source/makefile.LINUX_G95-64"
set-alias lgf "make -f ${MAIN}source/.make_new_LINUX_GFORT"

set-alias sou "cd ${MAIN}source"
set-alias tes "cd ${MAIN}test"

matlab #

Language for technical computing
URL: https://www.mathworks.com/products/matlab.html
Versions: 9.5.0.944444
Module code: view
#%Module 1.0

module-whatis "Description: Language for technical computing"
module-whatis "URL: https://www.mathworks.com/products/matlab.html"
prepend-path  PATH               /salilab/diva1/programs/x86_64linux/matlab-r2018b/bin

mist #

MiST - Mass spectrometry interaction STatistics
URL: https://github.com/salilab/mist/
Module code: view
#%Module 1.0

module-whatis "Description: MiST - Mass spectrometry interaction STatistics"
module-whatis "URL: https://github.com/salilab/mist/"
module load python3/scikit
set topdir /salilab/diva1/programs/linux/mist
prepend-path  PATH            ${topdir}/bin

modeller #

MODELLER comparative modeling
URL: https://salilab.org/modeller/
Versions: 9.10, 9.11, 9.12, 9.13, 9.14, 9.15, 9.16, 9.17, 9.18, 9.19, 9.20, 9.21, 9.22, 9.23, 9.24, 9.25, 10.0, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, SVN
Module code: view
#%Module 1.0

module-whatis "Description: MODELLER comparative modeling"
module-whatis "URL: https://salilab.org/modeller/"
set topdir /salilab/diva1/home/modeller/SVN
prepend-path  PATH            ${topdir}/bin
prepend-path  LD_LIBRARY_PATH ${topdir}/lib/x86_64-intel8
prepend-path  PYTHONPATH      ${topdir}/lib/x86_64-intel8
prepend-path  PYTHONPATH      ${topdir}/modlib
prepend-path  PKG_CONFIG_PATH ${topdir}/lib/x86_64-intel8/pkgconfig

modpipe #

ModPipe (sets $MODPIPE; only works on the cluster)
URL: https://salilab.org/modpipe/
Versions: 2.0.1, 2.0.2, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.2.0, 2.3.0
Module code: view
#%Module 1.0
module-whatis "Description: ModPipe (sets \$MODPIPE; only works on the cluster)"
module-whatis "URL: https://salilab.org/modpipe/"
if [file exists /wynton/home] {
  setenv			MODPIPE	/wynton/home/sali/ModPipe/2.3.0
} else {
  puts stderr "Sorry, this module only works on the cluster (or other machine that has /wynton/home mounted)"
  break
}

muscle #

Multiple alignment program for protein sequences
URL: http://www.drive5.com/muscle/
Versions: 3.8.31
Module code: view
#%Module 1.0

module-whatis "Description: Multiple alignment program for protein sequences"
module-whatis "URL: http://www.drive5.com/muscle/"
prepend-path PATH            /salilab/diva1/programs/x86_64linux/muscle-3.8.31/bin

ninja #

A small build system with a focus on speed
URL: https://ninja-build.org/
Versions: 1.6.0, 1.8.2
Module code: view
#%Module 1.0

module-whatis "Description: A small build system with a focus on speed"
module-whatis "URL: https://ninja-build.org/"
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/ninja-1.8.2/bin

opencv #

Collection of algorithms for computer vision
URL: https://opencv.org/
Versions: 3.4.3, 4.3.0
Module code: view
#%Module 1.0

module-whatis "Description: Collection of algorithms for computer vision"
module-whatis "URL: https://opencv.org/"
module load hdf5/1.10.7
prepend-path PATH               /salilab/diva1/programs/x86_64linux/opencv-4.3.0/bin
prepend-path LD_LIBRARY_PATH    /salilab/diva1/programs/x86_64linux/opencv-4.3.0/lib64
prepend-path CMAKE_INCLUDE_PATH /salilab/diva1/programs/x86_64linux/opencv-4.3.0/include/opencv4
prepend-path CMAKE_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/opencv-4.3.0/lib64
prepend-path PYTHONPATH         /salilab/diva1/programs/x86_64linux/opencv-4.3.0/lib/python3.6/site-packages
if { [file exists /etc/centos-release] || [file exists /etc/rocky-release] || [file exists /etc/almalinux-release]} {
  prepend-path LD_LIBRARY_PATH    /salilab/diva1/programs/x86_64linux/opencv-4.3.0/lib64/rhel
}

openeye #

OpenEye products (work on any 64-bit node)
URL: https://www.eyesopen.com/
Versions: 2012
Module code: view
#%Module 1.0
module-whatis "Description: OpenEye products (work on any 64-bit node)"
module-whatis "URL: https://www.eyesopen.com/"
if [file exists /wynton/group] {

  if [ module-info mode load ] {
    if { ! [file exists /wynton/group/sali/openeye ] } {
      puts stderr "Sorry, this module is only available to members of the Sali lab."
      break
    }
  }

  prepend-path		PATH		/wynton/group/sali/openeye/bin
  prepend-path		PYTHONPATH	/wynton/group/sali/openeye/wrappers/v2012.Oct.1/python
  setenv			OE_LICENSE	/wynton/group/sali/openeye/oe_license.txt
} else {
  puts stderr "Sorry, this module only works on the Wynton cluster (or other machine that has /wynton/group mounted)"
  break
}

patch_dock #

Molecular Docking Based on Shape Complementarity Principles
URL: https://bioinfo3d.cs.tau.ac.il/PatchDock/
Versions: 1.3
Module code: view
#%Module 1.0

module-whatis "Description: Molecular Docking Based on Shape Complementarity Principles"
module-whatis "URL: https://bioinfo3d.cs.tau.ac.il/PatchDock/"
prepend-path PATH            /salilab/diva1/programs/x86_64linux/patch_dock-1.3/bin/cdr
prepend-path PATH            /salilab/diva1/programs/x86_64linux/patch_dock-1.3/bin

pcss #

Peptide Classification using Sequence and Structure
URL: https://github.com/salilab/pcss
Module code: view
#%Module 1.0

module-whatis "Description: Peptide Classification using Sequence and Structure"
module-whatis "URL: https://github.com/salilab/pcss"
if [file exists /wynton/home/sali] {
  module load svm_light
  set topdir /wynton/home/sali/peptide
  prepend-path  PATH      ${topdir}/bin
  prepend-path  PERL5LIB  ${topdir}/lib
} else {
  puts stderr "Sorry, this module only works on the cluster (or other machine that has /wynton/home/sali mounted)"
  break
}

phenix #

Python-based Hierarchical ENvironment for Integrated Xtallography
URL: https://www.phenix-online.org/
Versions: 1.10.1.2155, 1.18.2.3874, 1.19.1.4122
Module code: view
#%Module 1.0

module-whatis "Description: Python-based Hierarchical ENvironment for Integrated Xtallography"
module-whatis "URL: https://www.phenix-online.org/"
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/phenix-1.19.1.4122/phenix-1.19.1-4122/build/bin
setenv        PHENIX          /salilab/diva1/programs/x86_64linux/phenix-1.19.1.4122/phenix-1.19.1-4122
setenv        PHENIX_VERSION  1.19.1-4122

profit #

ProFit, a protein least squares fitting program
URL: http://www.bioinf.org.uk/software/profit/
Versions: 3.1
Module code: view
#%Module 1.0

module-whatis "Description: ProFit, a protein least squares fitting program"
module-whatis "URL: http://www.bioinf.org.uk/software/profit/"
prepend-path  PATH           /salilab/diva1/programs/x86_64linux/profit-3.1

psipred #

Accurate protein secondary structure prediction
URL: http://bioinf.cs.ucl.ac.uk/psipred/
Versions: 4.0
Module code: view
#%Module 1.0

module-whatis "Description: Accurate protein secondary structure prediction"
module-whatis "URL: http://bioinf.cs.ucl.ac.uk/psipred/"
module load blast
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/psipred-4.0/bin
setenv        PSIPRED_LIB     /salilab/diva1/programs/x86_64linux/psipred-4.0/lib

python3/attrs #

Classes Without Boilerplate
URL: https://www.attrs.org/
Versions: 20.3.0, 21.2.0
Module code: view
#%Module 1.0

module-whatis "Description: Classes Without Boilerplate"
module-whatis "URL: https://www.attrs.org/"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/attrs-21.2.0/lib/python3.6/site-packages

python3/biopython #

Python tools for computational molecular biology
URL: https://biopython.org/
Versions: 1.75
Module code: view
#%Module 1.0

module-whatis "Description: Python tools for computational molecular biology"
module-whatis "URL: https://biopython.org/"
conflict python2
module load python3/numpy/1.19.5
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/biopython-1.75/lib64/python

python3/bottleneck #

Collection of fast NumPy array functions written in Cython
URL: https://github.com/pydata/bottleneck
Versions: 1.3.1
Module code: view
#%Module 1.0

module-whatis "Description: Collection of fast NumPy array functions written in Cython"
module-whatis "URL: https://github.com/pydata/bottleneck"
conflict python2
module load python3/numpy/1.19.5 python3/scipy/1.3.2
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/bottleneck-1.3.1/lib64/python

python3/cycler #

Composable style cycles
URL: https://github.com/matplotlib/cycler
Versions: 0.10.0
Module code: view
#%Module 1.0

module-whatis "Description: Composable style cycles" 
module-whatis "URL: https://github.com/matplotlib/cycler"
conflict python2
module load python3/six
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/cycler-0.10.0/lib/python

python3/dateutil #

Powerful extensions to the standard datetime module
URL: https://dateutil.readthedocs.io/en/stable/
Versions: 2.8.1
Module code: view
#%Module 1.0

module-whatis "Description: Powerful extensions to the standard datetime module"
module-whatis "URL: https://dateutil.readthedocs.io/en/stable/"
conflict python2
module load python3/six
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/dateutil-2.8.1/lib/python3.6/site-packages

python3/decorator #

Module to simplify usage of decorators
URL: https://github.com/micheles/decorator
Versions: 4.4.1
Module code: view
#%Module 1.0

module-whatis "Description: Module to simplify usage of decorators"
module-whatis "URL: https://github.com/micheles/decorator"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/decorator-4.4.1/lib/python3.6/site-packages

python3/flake8 #

The modular source code checker: pep8 pyflakes and co
URL: https://gitlab.com/pycqa/flake8
Versions: 5.0.4
Module code: view
#%Module 1.0

module-whatis "Description: The modular source code checker: pep8 pyflakes and co"
module-whatis "URL: https://gitlab.com/pycqa/flake8"
conflict python2
module load python3/importlib-metadata
module load python3/mccabe
module load python3/pycodestyle
module load python3/pyflakes
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/flake8-5.0.4/lib/python3.6/site-packages
prepend-path  PATH   /salilab/diva1/programs/linux/flake8-5.0.4/bin

python3/future #

Clean single-source support for Python 3 and 2
URL: https://python-future.org/
Versions: 0.18.2
Module code: view
#%Module 1.0

module-whatis "Description: Clean single-source support for Python 3 and 2"
module-whatis "URL: https://python-future.org/"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/future-0.18.2/lib/python3.6/site-packages
prepend-path  PATH   /salilab/diva1/programs/linux/future-0.18.2/bin

python3/h5py #

Python interface to the Hierarchical Data Format library
URL: https://www.h5py.org/
Versions: 2.10.0
Module code: view
#%Module 1.0

module-whatis "Description: Python interface to the Hierarchical Data Format library"
module-whatis "URL: https://www.h5py.org/"
conflict python2
module load python3/numpy/1.19.5 hdf5/1.10.7 python3/six
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/h5py-2.10.0/lib64/python

python3/hdbscan #

A high performance implementation of HDBSCAN clustering
URL: https://github.com/scikit-learn-contrib/hdbscan
Versions: 0.8.33
Module code: view
#%Module 1.0

module-whatis "Description: A high performance implementation of HDBSCAN clustering"
module-whatis "URL: https://github.com/scikit-learn-contrib/hdbscan"
conflict python2
module load python3/numpy/1.19.5 python3/scipy/1.3.2 python3/scikit/0.21.3
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/hdbscan-0.8.33/lib64/python

python3/ihm #

Python package for handling IHM mmCIF files
URL: https://github.com/ihmwg/python-ihm
Versions: 1.2, 1.7, 1.8
Module code: view
#%Module 1.0

module-whatis "Description: Python package for handling IHM mmCIF files"
module-whatis "URL: https://github.com/ihmwg/python-ihm"
conflict python2
module load python3/msgpack
prepend-path PYTHONPATH      /salilab/diva1/programs/x86_64linux/ihm-1.8/lib64/python/site-packages

python3/importlib-metadata #

Read metadata from Python packages
URL: https://github.com/python/importlib_metadata
Versions: 3.3.0
Module code: view
#%Module 1.0

module-whatis "Description: Read metadata from Python packages"
module-whatis "URL: https://github.com/python/importlib_metadata"
conflict python2
module load python3/zipp
module load python3/toml
module load python3/typing-extensions
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/importlib-metadata-3.3.0/lib/python3.6/site-packages

python3/iniconfig #

Brain-dead simple parsing of ini files
URL: https://github.com/RonnyPfannschmidt/iniconfig
Versions: 1.1.1
Module code: view
#%Module 1.0

module-whatis "Description: Brain-dead simple parsing of ini files"
module-whatis "URL: https://github.com/RonnyPfannschmidt/iniconfig"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/iniconfig-1.1.1/lib/python3.6/site-packages

python3/joblib #

Lightweight pipelining: using Python functions as pipeline jobs
URL: https://joblib.readthedocs.io/en/latest/
Versions: 0.17.0
Module code: view
#%Module 1.0

module-whatis "Description: Lightweight pipelining: using Python functions as pipeline jobs"
module-whatis "URL: https://joblib.readthedocs.io/en/latest/"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/joblib-0.17.0/lib/python

python3/kiwisolver #

A fast implementation of the Cassowary constraint solver
URL: https://github.com/nucleic/kiwi
Versions: 1.1.0
Module code: view
#%Module 1.0

module-whatis "Description: A fast implementation of the Cassowary constraint solver"
module-whatis "URL: https://github.com/nucleic/kiwi"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/kiwisolver-1.1.0/lib64/python

python3/matplotlib #

Python 2D plotting library
URL: https://matplotlib.org/
Versions: 3.1.2
Module code: view
#%Module 1.0

module-whatis "Description: Python 2D plotting library"
module-whatis "URL: https://matplotlib.org/"
conflict python2
module load python3/cycler
module load python3/numpy/1.19.5
module load python3/pyparsing
module load python3/dateutil
module load python3/pytz
module load python3/kiwisolver
prepend-path PYTHONPATH   /salilab/diva1/programs/x86_64linux/matplotlib-3.1.2/lib64/python
prepend-path LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/matplotlib-3.1.2/lib

python3/mccabe #

McCabe checker, plugin for flake8
URL: https://github.com/pycqa/mccabe
Versions: 0.6.1, 0.7.0
Module code: view
#%Module 1.0

module-whatis "Description: McCabe checker, plugin for flake8"
module-whatis "URL: https://github.com/pycqa/mccabe"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/mccabe-0.7.0/lib/python3.6/site-packages

python3/mdp #

Modular toolkit for Data Processing
URL: http://mdp-toolkit.sourceforge.net/
Versions: 3.6
Module code: view
#%Module 1.0

module-whatis "Description: Modular toolkit for Data Processing"
module-whatis "URL: http://mdp-toolkit.sourceforge.net/"
conflict python2
module load python3/scipy python3/future python3/scikit
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/mdp-3.6/lib/python3.6/site-packages

python3/modelcif #

Python package for handling ModelCIF mmCIF files
URL: https://github.com/ihmwg/python-modelcif
Versions: 0.2, 0.3, 0.4, 0.5, 0.9, 1.2
Module code: view
#%Module 1.0

module-whatis "Description: Python package for handling ModelCIF mmCIF files"
module-whatis "URL: https://github.com/ihmwg/python-modelcif"
conflict python2
module load python3/ihm
prepend-path PYTHONPATH      /salilab/diva1/programs/linux/modelcif-1.2/lib/python/site-packages

python3/msgpack #

A Python MessagePack (de)serializer
URL: https://msgpack.org/
Versions: 0.6.2
Module code: view
#%Module 1.0

module-whatis "Description: A Python MessagePack (de)serializer"
module-whatis "URL: https://msgpack.org/"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/msgpack-0.6.2/lib64/python

python3/networkx #

Creates and Manipulates Graphs and Networks
URL: https://networkx.github.io/
Versions: 2.4
Module code: view
#%Module 1.0

module-whatis "Description: Creates and Manipulates Graphs and Networks"
module-whatis "URL: https://networkx.github.io/"
conflict python2
module load python3/scipy/1.3.2 python3/pyparsing python3/decorator
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/networkx-2.4/lib/python

python3/nose #

Discovery-based unittest extension for Python3
URL: https://nose.readthedocs.io/en/latest/
Versions: 1.3.7
Module code: view
#%Module 1.0

module-whatis "Description: Discovery-based unittest extension for Python3"
module-whatis "URL: https://nose.readthedocs.io/en/latest/"
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/nose-1.3.7/lib/python3.6/site-packages
prepend-path  PATH         /salilab/diva1/programs/linux/nose-1.3.7/bin

python3/numexpr #

Fast numerical array expression evaluator for Python and NumPy
URL: https://github.com/pydata/numexpr
Versions: 2.8.1
Module code: view
#%Module 1.0

module-whatis "Description: Fast numerical array expression evaluator for Python and NumPy"
module-whatis "URL: https://github.com/pydata/numexpr"
conflict python2
module load python3/numpy/1.19.5 python3/packaging
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/numexpr-2.8.1/lib64/python

python3/numpy #

A fast multidimensional array facility for Python
URL: https://numpy.org/
Versions: 1.19.5
Module code: view
#%Module 1.0

module-whatis "Description: A fast multidimensional array facility for Python"
module-whatis "URL: https://numpy.org/"
conflict python2
prepend-path PYTHONPATH      /salilab/diva1/programs/x86_64linux/numpy-1.19.5/lib64/python
prepend-path PATH            /salilab/diva1/programs/x86_64linux/numpy-1.19.5/bin
prepend-path LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/numpy-1.19.5/lib

python3/packaging #

Core utilities for Python packages
URL: https://github.com/pypa/packaging
Versions: 20.8
Module code: view
#%Module 1.0

module-whatis "Description: Core utilities for Python packages"
module-whatis "URL: https://github.com/pypa/packaging"
conflict python2
module load python3/pyparsing
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/packaging-20.8/lib/python3.6/site-packages

python3/pandas #

Python Data Analysis Library
URL: https://pandas.pydata.org/
Versions: 0.25.3
Module code: view
#%Module 1.0

module-whatis "Description: Python Data Analysis Library" 
module-whatis "URL: https://pandas.pydata.org/"
conflict python2
module load python3/numpy/1.19.5
module load python3/dateutil
module load python3/matplotlib
module load python3/pytz
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/pandas-0.25.3/lib64/python

python3/pkgconfig #

A Python interface to the pkg-config command line tool
URL: https://github.com/matze/pkgconfig
Versions: 1.5.1
Module code: view
#%Module 1.0

module-whatis "Description: A Python interface to the pkg-config command line tool"
module-whatis "URL: https://github.com/matze/pkgconfig"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/pkgconfig-1.5.1/lib/python3.6/site-packages

python3/pluggy #

A minimalist production ready plugin system
URL: https://github.com/pytest-dev/pluggy
Versions: 0.13.1
Module code: view
#%Module 1.0

module-whatis "Description: A minimalist production ready plugin system"
module-whatis "URL: https://github.com/pytest-dev/pluggy"
conflict python2
module load python3/importlib-metadata
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/pluggy-0.13.1/lib/python3.6/site-packages

python3/protobuf #

Protocol Buffers - Google's data interchange format
URL: https://developers.google.com/protocol-buffers/
Versions: 3.11.2
Module code: view
#%Module 1.0

module-whatis "Description: Protocol Buffers - Google's data interchange format"
module-whatis "URL: https://developers.google.com/protocol-buffers/"
conflict python2
module load python3/six
prepend-path PYTHONPATH      /salilab/diva1/programs/x86_64linux/protobuf-py36-3.11.2/lib64/python3.6/site-packages
prepend-path LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/protobuf-py36-3.11.2/lib64
prepend-path PATH            /salilab/diva1/programs/x86_64linux/protobuf-py36-3.11.2/bin
prepend-path EMACSLOADPATH   /salilab/diva1/programs/x86_64linux/protobuf-py36-3.11.2/share/emacs/site-lisp
prepend-path CMAKE_INCLUDE_PATH /salilab/diva1/programs/x86_64linux/protobuf-py36-3.11.2/include
prepend-path CMAKE_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/protobuf-py36-3.11.2/lib64

python3/py #

Cross-python path, ini-parsing, io, code, log facilities
URL: https://py.readthedocs.io/en/latest/
Versions: 1.11.0
Module code: view
#%Module 1.0

module-whatis "Description: Cross-python path, ini-parsing, io, code, log facilities"
module-whatis "URL: https://py.readthedocs.io/en/latest/"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/py-1.11.0/lib/python3.6/site-packages

python3/pycodestyle #

Python style guide checker
URL: https://pycodestyle.readthedocs.io/
Versions: 2.6.0, 2.9.1
Module code: view
#%Module 1.0

module-whatis "Description: Python style guide checker"
module-whatis "URL: https://pycodestyle.readthedocs.io/"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/pycodestyle-2.9.1/lib/python3.6/site-packages
prepend-path  PATH   /salilab/diva1/programs/linux/pycodestyle-2.9.1/bin

python3/pyflakes #

Passive checker of Python programs
URL: https://github.com/PyCQA/pyflakes
Versions: 2.2.0, 2.5.0
Module code: view
#%Module 1.0

module-whatis "Description: Passive checker of Python programs"
module-whatis "URL: https://github.com/PyCQA/pyflakes"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/pyflakes-2.5.0/lib/python3.6/site-packages
prepend-path  PATH   /salilab/diva1/programs/linux/pyflakes-2.5.0/bin

python3/pyparsing #

An object-oriented approach to text processing
URL: https://github.com/pyparsing/pyparsing/
Versions: 2.4.5
Module code: view
#%Module 1.0

module-whatis "Description: An object-oriented approach to text processing"
module-whatis "URL: https://github.com/pyparsing/pyparsing/"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/pyparsing-py36-2.4.5/lib/python3.6/site-packages

python3/pyrmsd #

Versions: 4.3.2
Module code: view
#%Module 1.0

module-whatis "Way of performing RMSD calculations of large sets of structures"
conflict python2
module load cuda/7.5.18 python3/numpy/1.19.5 python3/scipy/1.3.2
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/pyrmsd-4.3.2

python3/pytest #

Simple powerful testing with Python
URL: https://docs.pytest.org/en/latest/
Versions: 6.2.1
Module code: view
#%Module 1.0

module-whatis "Description: Simple powerful testing with Python"
module-whatis "URL: https://docs.pytest.org/en/latest/"
conflict python2
module load python3/toml
module load python3/importlib-metadata
module load python3/attrs
module load python3/iniconfig
module load python3/packaging
module load python3/pluggy
module load python3/py
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/pytest-6.2.1/lib/python3.6/site-packages
prepend-path  PATH   /salilab/diva1/programs/linux/pytest-6.2.1/bin

python3/pytz #

World Timezone Definitions for Python
URL: https://pythonhosted.org/pytz/
Versions: 2019.3
Module code: view
#%Module 1.0

module-whatis "Description: World Timezone Definitions for Python"
module-whatis "URL: https://pythonhosted.org/pytz/"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/pytz-2019.3/lib/python3.6/site-packages

python3/scikit #

A set of python modules for machine learning and data mining
URL: https://scikit-learn.org/stable/index.html
Versions: 0.21.3
Module code: view
#%Module 1.0

module-whatis "Description: A set of python modules for machine learning and data mining"
module-whatis "URL: https://scikit-learn.org/stable/index.html"
conflict python2
module load sali-libraries
module load python3/numpy/1.19.5 python3/scipy/1.3.2 python3/joblib
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/scikit-0.21.3/lib64/python

python3/scipy #

Scipy: Scientific Tools for Python
URL: https://www.scipy.org/
Versions: 1.3.2
Module code: view
#%Module 1.0

module-whatis "Description: Scipy: Scientific Tools for Python" 
module-whatis "URL: https://www.scipy.org/"
conflict python2
module load python3/numpy/1.19.5
prepend-path  PYTHONPATH   /salilab/diva1/programs/x86_64linux/scipy-1.3.2/lib64/python

python3/six #

Python 2 and 3 compatibility utilities
URL: https://github.com/benjaminp/six
Versions: 1.16.0
Module code: view
#%Module 1.0

module-whatis "Description: Python 2 and 3 compatibility utilities"
module-whatis "URL: https://github.com/benjaminp/six"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/six-1.16.0/lib/python3.6/site-packages

python3/tables #

Hierarchical datasets in Python
URL: http://www.pytables.org/
Versions: 3.6.1
Module code: view
#%Module 1.0

module-whatis "Description: Hierarchical datasets in Python"
module-whatis "URL: http://www.pytables.org/"
conflict python2
module load python3/numpy/1.19.5
module load python3/numexpr/2.8.1
module load hdf5/1.10.7
module load python3/six
prepend-path PYTHONPATH      /salilab/diva1/programs/x86_64linux/tables-3.6.1/lib64/python
prepend-path PATH            /salilab/diva1/programs/x86_64linux/tables-3.6.1/bin

python3/toml #

Python Library for Tom's Obvious, Minimal Language
URL: https://github.com/uiri/toml
Versions: 0.10.2
Module code: view
#%Module 1.0

module-whatis "Description: Python Library for Tom's Obvious, Minimal Language"
module-whatis "URL: https://github.com/uiri/toml"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/toml-0.10.2/lib/python3.6/site-packages

python3/typing-extensions #

Backported and Experimental Type Hints for Python 3.5+
URL: https://pypi.org/project/typing-extensions/
Versions: 3.7.4.3
Module code: view
#%Module 1.0

module-whatis "Description: Backported and Experimental Type Hints for Python 3.5+"
module-whatis "URL: https://pypi.org/project/typing-extensions/"
conflict python2
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/typing-extensions-3.7.4.3/lib/python3.6/site-packages

python3/zipp #

Backport of pathlib-compatible object wrapper for zip files
URL: https://github.com/jaraco/zipp
Versions: 3.4.0
Module code: view
#%Module 1.0

module-whatis "Description: Backport of pathlib-compatible object wrapper for zip files"
module-whatis "URL: https://github.com/jaraco/zipp"
conflict python2
module load python3/toml
prepend-path  PYTHONPATH   /salilab/diva1/programs/linux/zipp-3.4.0/lib/python3.6/site-packages

relion #

Electron cryo-microscopy refinement
URL: https://github.com/3dem/relion
Versions: 1.4, 2.0.6, 3.0.git9a02562
Module code: view
#%Module 1.0

module-whatis "Description: Electron cryo-microscopy refinement"
module-whatis "URL: https://github.com/3dem/relion"
module load cuda/7.5.18
# would use is-avail, but Lmod doesn't support that
if [file exists /etc/modulefiles/mpi/openmpi-x86_64] { 
  module load mpi/openmpi-x86_64
} elseif [file exists /usr/share/modulefiles/mpi/openmpi-x86_64] {    
  module load mpi/openmpi-x86_64
}
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/relion-3.0.git9a02562/bin

# Provide libX11 if not available on the system
if [file exists /lib64/libX11.so.6] {
} else {
  prepend-path LD_LIBRARY_PATH /salilab/diva1/programs/x86_64linux/relion-3.0.git9a02562/lib
}

rosetta #

Computational modeling and analysis of protein structures
URL: https://www.rosettacommons.org/
Versions: 3.5, 3.10
Module code: view
#%Module 1.0

module-whatis "Description: Computational modeling and analysis of protein structures"
module-whatis "URL: https://www.rosettacommons.org/"
prepend-path  PATH            /salilab/diva1/programs/x86_64linux/rosetta-3.10/bin
setenv        ROSETTA3_DB     /salilab/diva1/programs/x86_64linux/rosetta-3.10/database

sali-libraries #

Makes available libraries usually only present on the Sali interactive nodes
Module code: view
#%Module 1.0

module-whatis "Description: Makes available libraries usually only present on the Sali interactive nodes"
prepend-path  LD_LIBRARY_PATH /salilab/diva1/home/libs/x86_64
if { [file exists /etc/centos-release] || [file exists /etc/rocky-release] || [file exists /etc/almalinux-release]} {
  if [file exists /etc/dnf/dnf.conf] {
    prepend-path  LD_LIBRARY_PATH /salilab/diva1/home/libs/x86_64/centos8
  } elseif [file exists /etc/systemd/system.conf] {
    prepend-path  LD_LIBRARY_PATH /salilab/diva1/home/libs/x86_64/centos7
  } else {
    prepend-path  LD_LIBRARY_PATH /salilab/diva1/home/libs/x86_64/centos
  }
} else {
  if [file exists /usr/lib64/libtiff.so.6] {
    prepend-path  LD_LIBRARY_PATH /salilab/diva1/home/libs/x86_64/fedora41
  }
}

scwrl #

Protein side-chain conformation prediction program
URL: http://dunbrack.fccc.edu/lab/scwrl
Versions: 4.0
Module code: view
#%Module 1.0

module-whatis "Description: Protein side-chain conformation prediction program"
module-whatis "URL: http://dunbrack.fccc.edu/lab/scwrl"
prepend-path PATH               /salilab/diva1/programs/x86_64linux/scwrl-4.0/bin

svm_light #

Support Vector Machine
URL: http://svmlight.joachims.org/
Versions: 6.0.2
Module code: view
#%Module 1.0

module-whatis "Description: Support Vector Machine"
module-whatis "URL: http://svmlight.joachims.org/"
prepend-path  PATH /salilab/diva1/programs/x86_64linux/svm_light-6.0.2

swig #

Connects C/C++/Objective C to some high-level programming languages
URL: http://www.swig.org/
Versions: 3.0.12, 4.0.2
Module code: view
#%Module 1.0

module-whatis "Description: Connects C/C++/Objective C to some high-level programming languages"
module-whatis "URL: http://www.swig.org/"
prepend-path PATH               /salilab/diva1/programs/x86_64linux/swig-4.0.2/bin

usearch #

High-throughput search and clustering tool
URL: http://www.drive5.com/usearch/
Versions: 4.0.43, 10.0.240
Module code: view
#%Module 1.0

module-whatis "Description: High-throughput search and clustering tool"
module-whatis "URL: http://www.drive5.com/usearch/"
prepend-path  PATH            /salilab/diva1/programs/linux/usearch-10.0.240/

web_service #

Command line interface (web_service.py) to most lab web services
URL: https://github.com/salilab/saliweb
Module code: view
#%Module 1.0

module-whatis "Description: Command line interface (web_service.py) to most lab web services"
module-whatis "URL: https://github.com/salilab/saliweb"
prepend-path  PATH            /salilab/diva1/programs/linux/web_service

zdock #

Rigid body docking
URL: http://zdock.umassmed.edu/
Versions: 3.0.2
Module code: view
#%Module 1.0

module-whatis "Description: Rigid body docking"
module-whatis "URL: http://zdock.umassmed.edu/"
prepend-path  PATH /salilab/diva1/programs/x86_64linux/zdock-3.0.2

The above information is updated automatically once an hour by querying module avail and module spider.