From c1dc91b26a081129000395b574b8f4ccbd47101e Mon Sep 17 00:00:00 2001 From: EtomicBomb Date: Fri, 13 Dec 2024 14:30:57 -0500 Subject: [PATCH] playing around with teraseq --- teraseq/Dockerfile | 218 +++++++++- teraseq/cleanup.sh | 0 teraseq/misc/GenOOx/Data/File/SAMminimap2.pm | 65 +++ .../GenOOx/Data/File/SAMminimap2/Record.pm | 105 +++++ teraseq/run.sh | 0 teraseq/samples/.gitignore | 1 + teraseq/teraseq-env.yml | 405 ++++++++++++++++++ teraseq/verify.sh | 0 8 files changed, 787 insertions(+), 7 deletions(-) create mode 100644 teraseq/cleanup.sh create mode 100644 teraseq/misc/GenOOx/Data/File/SAMminimap2.pm create mode 100644 teraseq/misc/GenOOx/Data/File/SAMminimap2/Record.pm create mode 100644 teraseq/run.sh create mode 100644 teraseq/samples/.gitignore create mode 100644 teraseq/teraseq-env.yml create mode 100644 teraseq/verify.sh diff --git a/teraseq/Dockerfile b/teraseq/Dockerfile index df4230a05..00a868c56 100644 --- a/teraseq/Dockerfile +++ b/teraseq/Dockerfile @@ -1,8 +1,212 @@ -FROM ghcr.io/binpash/teraseq20:latest +# Download base image ubuntu 16.04 +FROM ubuntu:16.04 + +# LABEL about the custom image +LABEL maintainer="jan.oppelt@pennmedicine.upenn.edu" +LABEL version="0.3" +LABEL description="This is custom Docker Image for \ +analysis of TERA-Seq publication (DOI: https://doi.org/10.1093/nar/gkab713)." + +# Disable Prompt During Packages Installation +ARG DEBIAN_FRONTEND=noninteractive + +# Set default shell +SHELL ["/bin/bash", "-c"] + +### System-wide requirements; cpanminus is not required if Perl uses virtual environment method; g++, zlib1g-dev, and bzip2 are required only for Nanopolish +RUN apt-get update \ + && apt-get install -y git gcc make wget g++ zlib1g-dev bzip2 \ + && rm -rf /var/lib/apt/lists/* + +### Main GitHub repo +WORKDIR /root +COPY . TERA-Seq_manuscript + +### Install Miniconda3 +ENV PATH "/root/miniconda3/bin:${PATH}" +ARG PATH="/root/miniconda3/bin:${PATH}" + +RUN wget \ + https://repo.anaconda.com/miniconda/Miniconda3-py37_23.1.0-1-Linux-x86_64.sh -O Miniconda3.sh \ + && mkdir /root/.conda \ + && bash Miniconda3.sh -b \ + && rm -f Miniconda3.sh +#RUN conda --version + +## Install Mamba for faster installation +#RUN conda install -c conda-forge mamba + +# Get Conda yml and install environment +#RUN mamba env create -f /usr/local/TERA-Seq_manuscript/teraseq-env.yml +RUN conda env create -f /root/TERA-Seq_manuscript/teraseq-env.yml + +# Increase default FastQC RAM +RUN sed -i 's/-Xmx250m/-Xmx5g/g' /root/miniconda3/envs/teraseq/opt/fastqc-*/fastqc + +#ENV PATH="${PATH}:/root/miniconda3/envs/teraseq/bin" + +RUN ln -s /root/miniconda3/envs/teraseq/bin/R /bin/R \ + && ln -s /root/miniconda3/envs/teraseq/bin/curl /bin/curl + +### Save default Conda path +RUN sed -i '/CONDA_PREFIX/d' /root/TERA-Seq_manuscript/PARAMS.sh \ + && echo -e "CONDA_PREFIX=\"/root/miniconda3\"" >> /root/TERA-Seq_manuscript/PARAMS.sh + +### Perl +WORKDIR /root/TERA-Seq_manuscript/tools + +## System-wide install (option 1) +# RUN cpanm inc::Module::Install \ +# && cpanm autodie \ +# && cpanm DBI \ +# && cpanm Devel::Size \ +# && cpanm Getopt::Long::Descriptive \ +# && cpanm IO::File \ +# && cpanm IO::Interactive \ +# && cpanm IO::Uncompress::Gunzip \ +# && cpanm Params::Validate \ +# && cpanm Params::Util \ +# && cpanm Sub::Install \ +# && cpanm Modern::Perl \ +# && cpanm --force MooseX::App::Simple \ +# && cpanm --force MooseX::App::Command \ +# && cpanm --force MooseX::Getopt::Meta::Attribute::Trait::NoGetopt +# +# WORKDIR /usr/local/share/perl/5.22.1 +# +# RUN git clone --recursive https://github.com/genoo/GenOO.git GenOO_git +# WORKDIR /usr/local/share/perl/5.22.1/GenOO_git +# RUN git reset 6527029 --hard +# WORKDIR /usr/local/share/perl/5.22.1 +# RUN mkdir GenOO \ +# && cp -r GenOO_git/lib/GenOO/* GenOO/ +# +# RUN cpanm CLIPSeqTools +# +# RUN wget https://raw.githubusercontent.com/mourelatos-lab/TERA-Seq_manuscript/main/misc/GenOOx/Data/File/SAMminimap2.pm -O /usr/local/share/perl/5.22.1/GenOOx/Data/File/SAMminimap2.pm +# RUN mkdir /usr/local/share/perl/5.22.1/GenOOx/Data/File/SAMminimap2 \ +# && wget https://raw.githubusercontent.com/mourelatos-lab/TERA-Seq_manuscript/main/misc/GenOOx/Data/File/SAMminimap2/Record.pm -O /usr/local/share/perl/5.22.1/GenOOx/Data/File/SAMminimap2/Record.pm + +## Virtual environment install (option 2) +# Export Conda perl lib path (mainly for local::lib module) +ENV PERL5LIB "/root/miniconda3/envs/teraseq/lib/site_perl/5.26.2/:${PERL5LIB}" +ARG PERL5LIB="/root/miniconda3/envs/teraseq/lib/site_perl/5.26.2/:${PERL5LIB}" + +RUN git clone https://github.com/jizhang/perl-virtualenv.git \ + && cd perl-virtualenv/ \ + && git reset f931774 --hard \ + && chmod u+x virtualenv.pl \ + && ./virtualenv.pl teraseq \ + && . teraseq/bin/activate \ + && curl -L https://cpanmin.us/ -o teraseq/bin/cpanm \ + && chmod +x teraseq/bin/cpanm + +RUN . perl-virtualenv/teraseq/bin/activate \ + && cpanm inc::Module::Install@1.19 \ + && cpanm autodie@2.29 \ + && cpanm DBI@1.642 \ + && cpanm Devel::Size@0.83 \ + && cpanm Getopt::Long::Descriptive@0.104 \ + && cpanm IO::File@1.39 \ + && cpanm IO::Interactive@1.022 \ + && cpanm --force IO::Uncompress::Gunzip \ + && cpanm Params::Validate@1.29 \ + && cpanm Params::Util@1.07 \ + && cpanm Sub::Install@0.928 \ + && cpanm Modern::Perl@1.20190601 \ + && cpanm --force MooseX::App::Simple@1.41 \ + && cpanm --force MooseX::App::Command \ + && cpanm --force MooseX::Getopt::Meta::Attribute::Trait::NoGetopt@0.74 + +RUN git clone --recursive https://github.com/genoo/GenOO.git perl-virtualenv/teraseq/lib/perl5/GenOO_git \ + && cd perl-virtualenv/teraseq/lib/perl5/GenOO_git/ \ + && git reset 6527029 --hard \ + && cd ../ \ + && mkdir GenOO \ + && cp -r GenOO_git/lib/GenOO/* GenOO/ + +# Install specific version of Perl module https://stackoverflow.com/questions/260593/how-can-i-install-a-specific-version-of-a-set-of-perl-modules +RUN . perl-virtualenv/teraseq/bin/activate \ + && cpanm --force CLIPSeqTools@0.1.9 \ + && cp -r /root/TERA-Seq_manuscript/misc/GenOOx/* perl-virtualenv/teraseq/lib/perl5/GenOOx/ + +################################################################################ +### Nanopolish +# Default version +RUN git clone --recursive https://github.com/jts/nanopolish.git \ + && mv nanopolish nanopolish-480fc85 \ + && cd nanopolish-480fc85/ \ + && git reset 480fc85 --hard \ + && sed -i 's#http://bitbucket.org/eigen/eigen/get/$(EIGEN_VERSION).tar.bz2#https://gitlab.com/libeigen/eigen/-/archive/$(EIGEN_VERSION)/eigen-$(EIGEN_VERSION).tar.bz2#' Makefile \ + && sed -i 's/tar -xjf $(EIGEN_VERSION).tar.bz2/tar -xjf eigen-$(EIGEN_VERSION).tar.bz2/' Makefile \ + && sed -i 's/eigen-eigen-\*/eigen-$(EIGEN_VERSION)/' Makefile \ +# && sed -i '27 i EIGEN_VERSION_MV ?= d9c80169e091a2c6e75ceb509f81764d22cf6a63' Makefile \ +# && sed -i 's/mv\ eigen-\$(EIGEN_VERSION)/mv\ eigen-\$(EIGEN_VERSION_MV)/' Makefile \ + && rm -rf fast5 \ + && git clone https://github.com/mateidavid/fast5.git \ + && cd fast5/ \ + && git reset 18d6e34 --hard \ + && cd ../ \ + && rm -rf htslib \ + && git clone --recursive https://github.com/samtools/htslib.git \ + && cd htslib/ \ + && git reset 3dc96c5 --hard \ + && cd ../ \ + && make \ + && ln -s $(pwd)/nanopolish /root/miniconda3/envs/teraseq/bin/nanopolish + +# New version with polya hmm scripts +RUN git clone --recursive https://github.com/jts/nanopolish.git \ + && mv nanopolish nanopolish-ab9722b \ + && cd nanopolish-ab9722b/ \ + && git reset ab9722b --hard + +################################################################################ +### Other dependencies +# Make sure to activate Conda +SHELL ["conda", "run", "-n", "teraseq", "/bin/bash", "-c"] + +## GeneCycle +#RUN Rscript -e 'install.packages("GeneCycle", repos="https://cloud.r-project.org")' +RUN Rscript -e 'install.packages(c("longitudinal", "fdrtool"), repos = "http://cran.us.r-project.org"); install.packages("https://cran.r-project.org/src/contrib/GeneCycle_1.1.5.tar.gz", repos=NULL, type="source")' + +## Cutadapt +RUN mkdir cutadapt-2.5 \ + && cd cutadapt-2.5/ \ + && python3 -m venv venv \ + && source venv/bin/activate \ + && python3 -m pip install --upgrade pip \ + && pip3 install cutadapt==2.5 pysam numpy pandas matplotlib seaborn \ + && which cutadapt + +## DeepTools +RUN mkdir deepTools-3.5.0 \ + && cd deepTools-3.5.0/ \ + && python3 -m venv venv \ + && source venv/bin/activate \ + && python3 -m pip install --upgrade pip \ + && pip3 install wheel \ + && pip3 install deeptools==3.5.0 \ + && deeptools --version + +## ONT-Fast5-API +RUN mkdir ont-fast5-api \ + && cd ont-fast5-api/ \ + && python3 -m venv venv \ + && source venv/bin/activate \ + && pip install ont-fast5-api==3.3.0 h5py seaborn + +## Jvarkit +RUN git clone "https://github.com/lindenb/jvarkit.git" \ + && mv jvarkit jvarkit-014d3e9 \ + && cd jvarkit-014d3e9/ \ + && git reset 014d3e9 --hard \ + && ./gradlew biostar84452 \ + && mkdir $CONDA_PREFIX/share/jvarkit \ + && ln -s $(pwd)/dist/biostar84452.jar /root/miniconda3/envs/teraseq/share/jvarkit/remove-softlip.jar + + +# Add utils dir to PATH +ENV PATH "/usr/local/TERA-Seq_manuscript/tools/utils:${PATH}" + WORKDIR /root/TERA-Seq_manuscript -COPY . . -RUN mv -f activate.d/* /root/miniconda3/envs/teraseq/etc/conda/activate.d -RUN mv -f deactivate.d/* /root/miniconda3/envs/teraseq/etc/conda/deactivate.d -WORKDIR /root/TERA-Seq_manuscript/data -RUN ./run.sh -WORKDIR /root/TERA-Seq_manuscript/samples diff --git a/teraseq/cleanup.sh b/teraseq/cleanup.sh new file mode 100644 index 000000000..e69de29bb diff --git a/teraseq/misc/GenOOx/Data/File/SAMminimap2.pm b/teraseq/misc/GenOOx/Data/File/SAMminimap2.pm new file mode 100644 index 000000000..543c1cd37 --- /dev/null +++ b/teraseq/misc/GenOOx/Data/File/SAMminimap2.pm @@ -0,0 +1,65 @@ +# POD documentation - main docs before the code + +=head1 NAME + +GenOOx::Data::File::SAMminimap2 - GenOO framework extension to read SAM files created by the Minimap2 aligner + +=head1 SYNOPSIS + +GenOO framework extension to read SAM files created by the Minimap2 aligner. +Include it in your script and ask GenOO SAM parser to use it. + + use GenOOx::Data::File::SAMminimap2::Record; + + my $file_parser = GenOO::Data::File::SAM->new( + file => 'file.sam', + records_class => 'GenOOx::Data::File::SAMminimap2::Record' + ); + + while (my $record = $file_parser->next_record) { + # $record is now an instance of GenOOx::Data::File::SAMminimap2::Record. + print $record->cigar."\n"; # name + print $record->flag."\n"; # flag + print $record->number_of_mappings."\n"; # new stuff not present by default + print $record->best_hit."\n"; # new stuff not present by default + print $record->number_of_best_hits."\n"; # new stuff not present by default + } + + +=head1 DESCRIPTION + +The GenOO framework SAM parser avoids code that is unique to specific programs and makes no assumptions for the optional fields in a SAM file. This module is a plugin for the GenOO framework and provides the functionality for reading SAM files generated from the Minimap2 aligner. The +module has been created on top of the generic GenOO SAM parser and to use it just include it in your scripts and ask GenOO SAM parser to use it. + +=head1 EXAMPLES + + # Create a parser + my $file_parser = GenOO::Data::File::SAM->new( + file => 'file.sam', + records_class => 'GenOOx::Data::File::SAMminimap2::Record' + ); + + # Loop on the records of the file + while (my $record = $file_parser->next_record) { + # $record is now an instance of GenOOx::Data::File::SAMminimap2::Record. + print $record->cigar."\n"; # name + print $record->flag."\n"; # flag + print $record->number_of_mappings."\n"; # new stuff not present by default in GenOO + print $record->best_hit."\n"; # new stuff not present by default in GenOO + print $record->number_of_best_hits."\n"; # new stuff not present by default in GenOO + } + +=cut + +# Let the code begin... + +package GenOOx::Data::File::SAMminimap2; +$GenOOx::Data::File::SAMminimap2::VERSION = '0.0.1'; + +####################################################################### +####################### Load External modules ##################### +####################################################################### +use Modern::Perl; + + +1; diff --git a/teraseq/misc/GenOOx/Data/File/SAMminimap2/Record.pm b/teraseq/misc/GenOOx/Data/File/SAMminimap2/Record.pm new file mode 100644 index 000000000..0301d79b5 --- /dev/null +++ b/teraseq/misc/GenOOx/Data/File/SAMminimap2/Record.pm @@ -0,0 +1,105 @@ +# POD documentation - main docs before the code + +=head1 NAME + +GenOOx::Data::File::SAMminimap2::Record - Represents a record of a SAM format file generated by Minimap2 + +=head1 SYNOPSIS + + # Object representing a record of a sam file + + # To initialize + my $sam_record = GenOOx::Data::File::SAMminimap2::Record->new( + fields => [qname,flag, rname, pos, mapq, cigar, + rnext, pnext, tlen, seq, qual, tags] + ); + + +=head1 DESCRIPTION + + This object represents a record of a sam file generated by Minimap2 and offers methods for accessing the different + attributes. It implements several additional methods that transform original attributes in more manageable + attributes. eg. from the FLAG attribute the actual strand is extracted etc. + +=head1 EXAMPLES + + # Check if the record corresponds to a match + my $mapped = $sam_record->is_mapped; + + # Check if the record corresponds to a non match + my $unmapped = $sam_record->is_unmapped; + + # Parse the FLAG attribute and return 1 or -1 for the strand + my $strand = $sam_record->strand; + +=cut + +# Let the code begin... + +package GenOOx::Data::File::SAMminimap2::Record; +$GenOOx::Data::File::SAMminimap2::Record::VERSION = '0.0.1'; + +####################################################################### +####################### Load External modules ##################### +####################################################################### +use Moose; +use namespace::autoclean; + + +####################################################################### +############################ Inheritance ########################## +####################################################################### +extends 'GenOO::Data::File::SAM::Record'; + + +####################################################################### +######################## Interface Methods ######################## +####################################################################### +sub number_of_optimal_hits { + my ($self) = @_; + + return $self->tag('X0:i') || 0; +} + +sub number_of_suboptimal_hits { + my ($self) = @_; + + return $self->tag('X1:i') || 0; +} + +sub number_of_mappings { + my ($self) = @_; + + return $self->number_of_optimal_hits + $self->number_of_suboptimal_hits; +} + +sub best_hit { + my ($self) = @_; + + return $self->tag('XP:i') || 0; +} + +sub number_of_best_hits { + my ($self) = @_; + + return $self->tag('XN:i') || 0; +} + +sub alternative_mappings { + my ($self) = @_; + + my @alternative_mappings; + my $value = $self->tag('XA:Z'); + if (defined $value) { + @alternative_mappings = split(/;/,$value); + } + return @alternative_mappings; +} + + +####################################################################### +############################ Finalize ############################# +####################################################################### +__PACKAGE__->meta->make_immutable; + +1; diff --git a/teraseq/run.sh b/teraseq/run.sh new file mode 100644 index 000000000..e69de29bb diff --git a/teraseq/samples/.gitignore b/teraseq/samples/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/teraseq/samples/.gitignore @@ -0,0 +1 @@ + diff --git a/teraseq/teraseq-env.yml b/teraseq/teraseq-env.yml new file mode 100644 index 000000000..ec8011b49 --- /dev/null +++ b/teraseq/teraseq-env.yml @@ -0,0 +1,405 @@ +name: teraseq +channels: + - defaults + - bioconda + - r + - conda-forge +dependencies: + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=1_gnu + - _r-mutex=1.0.1=anacondar_1 + - alsa-lib=1.2.3=h516909a_0 + - bbmap=38.67=h516909a_0 + - bedops=2.4.39=hc9558a2_0 + - bedtools=2.29.0=hc088bd4_3 + - binutils_impl_linux-64=2.34=h53a641e_7 + - binutils_linux-64=2.34=hc952b39_18 + - bioconductor-annotate=1.60.1=r351_0 + - bioconductor-annotationdbi=1.44.0=r351_0 + - bioconductor-annotationfilter=1.6.0=r351_0 + - bioconductor-biobase=2.42.0=r351h14c3975_1 + - bioconductor-biocgenerics=0.28.0=r351_1 + - bioconductor-biocparallel=1.16.6=r351h1c2f66e_0 + - bioconductor-biomart=2.38.0=r351_0 + - bioconductor-biostrings=2.50.2=r351h14c3975_0 + - bioconductor-biovizbase=1.30.1=r351h14c3975_0 + - bioconductor-bsgenome=1.50.0=r351_0 + - bioconductor-delayedarray=0.8.0=r351h14c3975_0 + - bioconductor-deseq2=1.22.1=r351hf484d3e_0 + - bioconductor-dupradar=1.14.0=r351_0 + - bioconductor-ensembldb=2.6.3=r351_0 + - bioconductor-genefilter=1.64.0=r351h1c2f66e_1 + - bioconductor-geneplotter=1.60.0=r351_0 + - bioconductor-genomeinfodb=1.18.1=r351_0 + - bioconductor-genomeinfodbdata=1.2.1=r351_0 + - bioconductor-genomicalignments=1.18.1=r351h14c3975_0 + - bioconductor-genomicfeatures=1.34.1=r351_0 + - bioconductor-genomicranges=1.34.0=r351h14c3975_0 + - bioconductor-gviz=1.26.4=r351_0 + - bioconductor-iranges=2.16.0=r351h14c3975_0 + - bioconductor-protgenerics=1.14.0=r351_0 + - bioconductor-rsamtools=1.34.0=r351hf484d3e_0 + - bioconductor-rsubread=1.34.0=r351h14c3975_0 + - bioconductor-rtracklayer=1.42.1=r351h9d9f1b6_1 + - bioconductor-s4vectors=0.20.1=r351h14c3975_0 + - bioconductor-summarizedexperiment=1.12.0=r351_0 + - bioconductor-tximport=1.12.1=r351_1 + - bioconductor-variantannotation=1.28.3=r351h14c3975_0 + - bioconductor-xvector=0.22.0=r351h14c3975_0 + - bioconductor-zlibbioc=1.28.0=r351h14c3975_0 + - bwidget=1.9.14=0 + - bx-python=0.8.9=py37h73d7ac5_2 + - bzip2=1.0.8=h7b6447c_0 + - c-ares=1.16.1=h516909a_3 + - ca-certificates=2020.11.8=ha878542_0 + - cairo=1.16.0=h18b612c_1001 + - cd-hit=4.8.1=h8b12597_3 + - certifi=2020.11.8=py37h89c1867_0 + - curl=7.68.0=hf8cf82a_0 + - cycler=0.10.0=py37_0 + - cython=0.29.21=py37he6710b0_0 + - expat=2.2.9=he6710b0_2 + - fastqc=0.11.9=0 + - fastx_toolkit=0.0.14=2 + - font-ttf-dejavu-sans-mono=2.37=h6964260_0 + - fontconfig=2.13.1=he4413a7_1000 + - freetype=2.10.2=h5ab3b9f_0 + - fribidi=1.0.10=h7b6447c_0 + - future=0.18.2=py37_1 + - gcc_impl_linux-64=7.3.0=habb00fd_1 + - gcc_linux-64=7.3.0=h553295d_18 + - gffread=0.12.1=h8b12597_0 + - gfortran_impl_linux-64=7.3.0=hdf63c60_1 + - gfortran_linux-64=7.3.0=h553295d_18 + - giflib=5.2.1=h516909a_2 + - glib=2.65.0=h3eb4bd4_0 + - gmap=2019.09.12=pl526h2f06484_1 + - gmp=6.2.0=he1b5a44_2 + - gnuplot=5.0.3=4 + - graphite2=1.3.14=h23475e2_0 + - gsl=2.5=h294904e_1 + - gxx_impl_linux-64=7.3.0=hdf63c60_1 + - gxx_linux-64=7.3.0=h553295d_18 + - harfbuzz=2.4.0=hca77d97_1 + - hdf5=1.10.5=nompi_h3c11f04_1104 + - htslib=1.10.2=h78d89cc_0 + - icu=58.2=he6710b0_3 + - jpeg=9d=h516909a_0 + - k8=0.2.5=he513fc3_0 + - kiwisolver=1.2.0=py37hfd86e86_0 + - krb5=1.16.4=h173b8e3_0 + - lcms2=2.11=h396b838_0 + - ld_impl_linux-64=2.34=h53a641e_7 + - ldc=1.20.0=h9a1ace1_1 + - libblas=3.8.0=17_openblas + - libcblas=3.8.0=17_openblas + - libcurl=7.68.0=hda55be3_0 + - libdeflate=1.3=h516909a_0 + - libedit=3.1.20191231=h14c3975_1 + - libev=4.33=h7b6447c_0 + - libffi=3.3=he6710b0_2 + - libgcc=7.2.0=h69d50b8_2 + - libgcc-ng=9.3.0=h24d8f2e_16 + - libgd=2.2.5=h0db58fd_3 + - libgfortran-ng=7.5.0=hdf63c60_16 + - libgomp=9.3.0=h24d8f2e_16 + - libgtextutils=0.7=he1b5a44_6 + - libiconv=1.16=h516909a_0 + - liblapack=3.8.0=17_openblas + - libnghttp2=1.41.0=h8cfc5f6_2 + - libopenblas=0.3.10=h5a2b251_0 + - libpng=1.6.37=hbc83047_0 + - libssh2=1.9.0=h1ba5d50_1 + - libstdcxx-ng=9.3.0=hdf63c60_16 + - libtiff=4.1.0=h2733197_1 + - libuuid=2.32.1=h14c3975_1000 + - libwebp=1.0.2=h56121f0_5 + - libxcb=1.14=h7b6447c_0 + - libxml2=2.9.10=he19cac6_1 + - llvm-openmp=8.0.1=hc9558a2_0 + - lz4-c=1.9.2=he6710b0_1 + - lzo=2.10=h7b6447c_2 + - make=4.3=h516909a_0 + - matplotlib-base=3.3.1=py37h817c723_0 + - minimap2=2.17=hed695b0_3 + - mysql-connector-c=6.1.11=h597af5e_1 + - ncurses=6.2=he6710b0_1 + - nose=1.3.7=py37_1004 + - numpy=1.19.1=py37h7ea13bd_2 + - olefile=0.46=py37_0 + - openjdk=11.0.8=hacce0ff_0 + - openmp=8.0.1=0 + - openssl=1.1.1h=h7b6447c_0 + - pandas=1.1.2=py37h3340039_0 + - pango=1.40.14=he7ab937_1005 + - parallel=20200922=0 + - pcre=8.44=he6710b0_0 + - perl=5.26.2=h14c3975_0 + - perl-app-cpanminus=1.7044=pl526_1 + - perl-carp=1.38=pl526_3 + - perl-constant=1.33=pl526_1 + - perl-cpan-meta=2.150010=pl526_0 + - perl-cpan-meta-requirements=2.140=pl526_0 + - perl-cpan-meta-yaml=0.018=pl526_0 + - perl-cpan-shell=5.5004=pl526_1 + - perl-data-dumper=2.173=pl526_0 + - perl-encode=2.88=pl526_1 + - perl-exporter=5.72=pl526_1 + - perl-extutils-cbuilder=0.280230=pl526_1 + - perl-extutils-makemaker=7.36=pl526_1 + - perl-extutils-manifest=1.72=pl526_0 + - perl-extutils-parsexs=3.35=pl526_0 + - perl-file-path=2.16=pl526_0 + - perl-file-temp=0.2304=pl526_2 + - perl-getopt-long=2.50=pl526_1 + - perl-ipc-cmd=1.02=pl526_0 + - perl-json-pp=4.04=pl526_0 + - perl-local-lib=2.000024=pl526_0 + - perl-locale-maketext-simple=0.21=pl526_2 + - perl-module-build=0.4224=pl526_3 + - perl-module-corelist=5.20190524=pl526_0 + - perl-module-load=0.32=pl526_1 + - perl-module-load-conditional=0.68=pl526_2 + - perl-module-metadata=1.000036=pl526_0 + - perl-params-check=0.38=pl526_1 + - perl-parent=0.236=pl526_1 + - perl-perl-ostype=1.010=pl526_1 + - perl-scalar-list-utils=1.52=pl526h516909a_0 + - perl-text-abbrev=1.02=pl526_0 + - perl-text-parsewords=3.30=pl526_0 + - perl-version=0.9924=pl526_0 + - picard=2.20.8=0 + - pigz=2.4=h84994c4_0 + - pillow=7.2.0=py37hb39fc2d_0 + - pip=20.2.3=py_0 + - pixman=0.38.0=h7b6447c_0 + - pybigwig=0.3.17=py37hc013797_0 + - pybktree=1.1=pyh9f0ad1d_0 + - pyparsing=2.4.7=py_0 + - pysam=0.15.3=py37hbcae180_3 + - python=3.7.9=h7579374_0 + - python-dateutil=2.8.1=py_0 + - python-lzo=1.12=py37h81344f2_1001 + - python_abi=3.7=1_cp37m + - pytz=2020.1=py_0 + - qualimap=2.2.2a=1 + - r=3.5.1=r351_0 + - r-acepack=1.4.1=r351ha65eedd_0 + - r-askpass=1.1=r35hcdcec82_1 + - r-assertthat=0.2.1=r35h6115d3f_1 + - r-backports=1.1.6=r35hcdcec82_1 + - r-base=3.5.1=h08e1455_1008 + - r-base64enc=0.1_3=r351h96ca727_4 + - r-bh=1.72.0_3=r35h6115d3f_0 + - r-bit=1.1_15.2=r35hcdcec82_0 + - r-bit64=0.9_7=r351hd10c6a6_0 + - r-bitops=1.0_6=r351h96ca727_4 + - r-blob=1.2.1=r35h6115d3f_0 + - r-boot=1.3_25=r35h6115d3f_0 + - r-brew=1.0_6=r351h6115d3f_4 + - r-callr=3.4.3=r35h6115d3f_0 + - r-cellranger=1.1.0=r351h6115d3f_0 + - r-checkmate=2.0.0=r35hcdcec82_0 + - r-class=7.3_17=r35hcdcec82_0 + - r-cli=2.0.2=r35h6115d3f_0 + - r-clipr=0.7.0=r35h6115d3f_0 + - r-cluster=2.1.0=r35h9bbef5b_2 + - r-codetools=0.2_16=r35h6115d3f_1001 + - r-colorspace=1.4_1=r35hcdcec82_1 + - r-commonmark=1.7=r35hcdcec82_1001 + - r-corrplot=0.84=r35_1002 + - r-covr=3.5.0=r35h0357c0b_0 + - r-cowplot=1.0.0=r35h6115d3f_1 + - r-crayon=1.3.4=r351h6115d3f_0 + - r-crosstalk=1.1.0.1=r35h6115d3f_0 + - r-curl=4.3=r35hcdcec82_0 + - r-data.table=1.12.8=r35hcdcec82_0 + - r-dbi=1.1.0=r35h6115d3f_0 + - r-desc=1.2.0=r351h6115d3f_0 + - r-devtools=2.3.0=r35h6115d3f_0 + - r-dichromat=2.0_0=r351h6115d3f_4 + - r-digest=0.6.25=r35h0357c0b_1 + - r-dplyr=0.8.5=r35h0357c0b_0 + - r-dt=0.13=r35h6115d3f_0 + - r-ellipsis=0.3.0=r35hcdcec82_0 + - r-evaluate=0.14=r35h6115d3f_1 + - r-extrafont=0.17=r35_1001 + - r-extrafontdb=1.0=r35h6115d3f_1002 + - r-fansi=0.4.1=r35hcdcec82_0 + - r-farver=2.0.3=r35h0357c0b_0 + - r-fastmap=1.0.1=r35h0357c0b_0 + - r-forcats=0.5.0=r35h6115d3f_0 + - r-foreign=0.8_76=r35hcdcec82_0 + - r-formatr=1.7=r35h6115d3f_1 + - r-formula=1.2_3=r351h6115d3f_0 + - r-fs=1.4.1=r35h0357c0b_0 + - r-futile.logger=1.4.3=r35h6115d3f_1002 + - r-futile.options=1.0.1=r35h6115d3f_1001 + - r-getopt=1.20.3=r35_1 + - r-ggplot2=3.3.0=r35h6115d3f_0 + - r-ggpubr=0.2.5=r35h6115d3f_0 + - r-ggrepel=0.8.2=r35h0357c0b_0 + - r-ggridges=0.5.2=r35h6115d3f_1 + - r-ggsci=2.9=r35h6115d3f_1002 + - r-ggsignif=0.6.0=r35h6115d3f_0 + - r-gh=1.1.0=r35h6115d3f_0 + - r-git2r=0.26.1=r35h7253d3a_1 + - r-glue=1.4.0=r35hcdcec82_0 + - r-gridbase=0.4_7=r351h6115d3f_4 + - r-gridextra=2.3=r351h6115d3f_0 + - r-gtable=0.3.0=r35h6115d3f_2 + - r-haven=2.2.0=r35hde08347_0 + - r-hdf5r=1.3.2=r35h3e93a20_0 + - r-highr=0.8=r35h6115d3f_1 + - r-hmisc=4.4_0=r35h9bbef5b_0 + - r-hms=0.5.3=r35h6115d3f_0 + - r-htmltable=1.13.3=r35h6115d3f_0 + - r-htmltools=0.4.0=r35h0357c0b_0 + - r-htmlwidgets=1.5.1=r35h6115d3f_0 + - r-httpuv=1.5.2=r35h0357c0b_1 + - r-httr=1.4.1=r35h6115d3f_1 + - r-igraph=1.2.5=r35hd626d4e_0 + - r-ini=0.3.1=r35h6115d3f_1002 + - r-isoband=0.2.1=r35h0357c0b_0 + - r-jsonlite=1.6.1=r35hcdcec82_0 + - r-kernsmooth=2.23_17=r35hfa343cc_0 + - r-knitr=1.28=r35h6115d3f_0 + - r-labeling=0.3=r351h6115d3f_4 + - r-lambda.r=1.2.4=r35h6115d3f_0 + - r-later=1.0.0=r35h0357c0b_0 + - r-lattice=0.20_41=r35hcdcec82_1 + - r-latticeextra=0.6_28=r351h6115d3f_0 + - r-lazyeval=0.2.2=r35hcdcec82_1 + - r-lifecycle=0.2.0=r35h6115d3f_0 + - r-locfit=1.5_9.4=r35hcdcec82_0 + - r-magrittr=1.5=r351h6115d3f_4 + - r-markdown=1.1=r35hcdcec82_0 + - r-mass=7.3_51.6=r35hcdcec82_1 + - r-matrix=1.2_18=r35h7fa42b6_2 + - r-matrixstats=0.56.0=r35hcdcec82_0 + - r-memoise=1.1.0=r351h6115d3f_0 + - r-mgcv=1.8_31=r35h7fa42b6_0 + - r-mime=0.9=r35hcdcec82_0 + - r-munsell=0.5.0=r351h6115d3f_0 + - r-nlme=3.1_147=r35h9bbef5b_0 + - r-nnet=7.3_14=r35hcdcec82_0 + - r-openssl=1.4.1=r35he5c4762_0 + - r-openxlsx=4.1.4=r35h0357c0b_0 + - r-optparse=1.6.2=r35h6115d3f_1 + - r-patchwork=1.0.0=r35h6115d3f_0 + - r-pillar=1.4.3=r35h6115d3f_0 + - r-pkgbuild=1.0.7=r35h6115d3f_0 + - r-pkgconfig=2.0.3=r35h6115d3f_0 + - r-pkgload=1.0.2=r35h0357c0b_1001 + - r-plogr=0.2.0=r351h6115d3f_0 + - r-plyr=1.8.6=r35h0357c0b_0 + - r-polynom=1.4_0=r35h6115d3f_1 + - r-praise=1.0.0=r351h6115d3f_4 + - r-prettyunits=1.1.1=r35h6115d3f_0 + - r-processx=3.4.2=r35hcdcec82_0 + - r-progress=1.2.2=r35h6115d3f_1 + - r-promises=1.1.0=r35h0357c0b_0 + - r-ps=1.3.2=r35hcdcec82_0 + - r-purrr=0.3.4=r35hcdcec82_0 + - r-r.methodss3=1.8.0=r35h6115d3f_0 + - r-r.oo=1.23.0=r35h6115d3f_0 + - r-r.utils=2.9.2=r35h6115d3f_0 + - r-r6=2.4.1=r35h6115d3f_0 + - r-rcmdcheck=1.3.3=r35h6115d3f_2 + - r-rcolorbrewer=1.1_2=r351h6115d3f_0 + - r-rcpp=1.0.4.6=r35h0357c0b_0 + - r-rcpparmadillo=0.9.870.2.0=r35h51c796c_0 + - r-rcurl=1.98_1.2=r35hcdcec82_0 + - r-readr=1.3.1=r35h0357c0b_1002 + - r-readxl=1.3.1=r35hde08347_3 + - r-recommended=3.5.1=r35_1003 + - r-rematch=1.0.1=r351h6115d3f_0 + - r-rematch2=2.1.2=r35h6115d3f_0 + - r-remotes=2.1.1=r35h6115d3f_0 + - r-reshape2=1.4.4=r35h0357c0b_0 + - r-rex=1.2.0=r35h6115d3f_0 + - r-rio=0.5.16=r35h6115d3f_1001 + - r-rlang=0.4.5=r35hcdcec82_2 + - r-roxygen2=7.1.0=r35h0357c0b_0 + - r-rpart=4.1_15=r35hcdcec82_1 + - r-rprojroot=1.3_2=r351h6115d3f_0 + - r-rsqlite=2.2.0=r35h0357c0b_0 + - r-rstudioapi=0.11=r35h6115d3f_0 + - r-rttf2pt1=1.3.8=r35hcdcec82_0 + - r-rversions=2.0.1=r35h6115d3f_0 + - r-scales=1.1.0=r35h6115d3f_0 + - r-sessioninfo=1.1.1=r35h6115d3f_1001 + - r-shiny=1.4.0.2=r35h6115d3f_0 + - r-snow=0.4_3=r35h6115d3f_1001 + - r-sourcetools=0.1.7=r351h29659fb_0 + - r-spatial=7.3_12=r35hcdcec82_0 + - r-stringi=1.4.3=r35h0357c0b_2 + - r-stringr=1.4.0=r35h6115d3f_1 + - r-survival=3.1_12=r35hcdcec82_0 + - r-sys=3.3=r35hcdcec82_0 + - r-testthat=2.3.2=r35h0357c0b_0 + - r-tibble=3.0.1=r35hcdcec82_0 + - r-tidyr=1.0.2=r35h0357c0b_0 + - r-tidyselect=1.0.0=r35h6115d3f_0 + - r-treemap=2.4_2=r35h6115d3f_1001 + - r-usethis=1.6.1=r35h6115d3f_0 + - r-utf8=1.1.4=r351h96ca727_0 + - r-vctrs=0.2.4=r35hcdcec82_0 + - r-venndiagram=1.6.20=r35h6115d3f_1001 + - r-viridis=0.5.1=r351h6115d3f_0 + - r-viridislite=0.3.0=r351h6115d3f_0 + - r-whisker=0.4=r35h6115d3f_0 + - r-withr=2.2.0=r35h6115d3f_0 + - r-xfun=0.13=r35h6115d3f_0 + - r-xml=3.99_0.3=r35hcdcec82_0 + - r-xml2=1.3.2=r35h0357c0b_0 + - r-xopen=1.0.0=r35h6115d3f_1002 + - r-xtable=1.8_4=r35h6115d3f_2 + - r-yaml=2.2.1=r35hcdcec82_0 + - r-zeallot=0.1.0=r351h6115d3f_0 + - r-zip=2.0.4=r35hcdcec82_0 + - readline=8.0=h7b6447c_0 + - regex=2020.7.14=py37h7b6447c_0 + - rseqc=4.0.0=py37hf01694f_0 + - sambamba=0.7.1=h984e79f_3 + - samblaster=0.1.26=hc9558a2_0 + - samtools=1.10=h2e538c0_3 + - scipy=1.5.2=py37hb14ef9d_0 + - seqkit=2.1.0=h9ee0642_0 + - seqtk=1.3=hed695b0_2 + - setuptools=49.6.0=py37_0 + - six=1.15.0=py_0 + - sqlite=3.33.0=h62c20be_0 + - star=2.7.2b=0 + - subread=2.0.0=hed695b0_0 + - tk=8.6.10=hbc83047_0 + - tktable=2.10=h14c3975_0 + - tornado=6.0.4=py37h7b6447c_1 + - trimmomatic=0.39=1 + - ucsc-bedgraphtobigwig=377=h446ed27_1 + - ucsc-bedtobigbed=377=h446ed27_1 + - ucsc-bigbedtobed=377=h446ed27_1 + - ucsc-genepredtobed=377=h446ed27_3 + - ucsc-gtftogenepred=377=h446ed27_3 + - ucsc-liftover=377=h446ed27_2 + - umi_tools=1.1.0=py37hf01694f_0 + - wheel=0.35.1=py_0 + - xorg-fixesproto=5.0=h14c3975_1002 + - xorg-inputproto=2.3.2=h14c3975_1002 + - xorg-kbproto=1.0.7=h14c3975_1002 + - xorg-libice=1.0.10=h516909a_0 + - xorg-libsm=1.2.3=h84519dc_1000 + - xorg-libx11=1.6.12=h516909a_0 + - xorg-libxext=1.3.4=h516909a_0 + - xorg-libxfixes=5.0.3=h516909a_1004 + - xorg-libxi=1.7.10=h516909a_0 + - xorg-libxrender=0.9.10=h516909a_1002 + - xorg-libxtst=1.2.3=h516909a_1002 + - xorg-recordproto=1.14.2=h516909a_1002 + - xorg-renderproto=0.11.1=h14c3975_1002 + - xorg-xextproto=7.3.0=h14c3975_1002 + - xorg-xproto=7.0.31=h14c3975_1007 + - xz=5.2.5=h7b6447c_0 + - zlib=1.2.11=h7b6447c_3 + - zstd=1.4.5=h9ceee32_0 +prefix: /home/jan/tools/miniconda3/envs/teraseq diff --git a/teraseq/verify.sh b/teraseq/verify.sh new file mode 100644 index 000000000..e69de29bb