Skip to content

Commit

Permalink
Merge pull request #21 from apriltuesday/conda
Browse files Browse the repository at this point in the history
EVA-3439 - Conda build
  • Loading branch information
apriltuesday authored Feb 20, 2024
2 parents b37f3b8 + 312d673 commit 37b2a60
Show file tree
Hide file tree
Showing 6 changed files with 158 additions and 5 deletions.
46 changes: 45 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,48 @@ EVA Submission Command Line Interface for Validation

## Installation

TBD
There are currently three ways to install and run the tool: using conda, from source using Docker,
and from source natively (i.e. managing dependencies on your own).

### Conda

The most straightforward way to install eva-sub-cli and its dependencies is through conda.
For example the following installs eva-sub-cli in a new environment called `eva`, activates the environment, and prints
the help message:
```bash
conda create -n eva -c conda-forge -c bioconda eva-sub-cli
conda activate eva
eva-sub-cli.py --help
````

### From source using Docker

This method requires just Python 3.8+ and [Docker](https://docs.docker.com/engine/install/) to be installed.
Then either clone the git repository, or download the newest tagged release from [here](https://github.com/EBIvariation/eva-sub-cli/tags):
```bash
git clone git@github.com:EBIvariation/eva-sub-cli.git
# OR
wget -O eva-sub-cli.zip https://github.com/EBIvariation/eva-sub-cli/archive/refs/tags/v0.2.zip
unzip eva-sub-cli.zip
```

Then install the library and its dependencies as follows (e.g. in a virtual environment):
```bash
cd eva-sub-cli
pip install -r requirements.txt
python setup.py install
```

### From source natively

This method requires the following:
* Python 3.8+
* [Nextflow](https://www.nextflow.io/docs/latest/getstarted.html) 21.10+
* [biovalidator](https://github.com/elixir-europe/biovalidator) 2.1.0+
* [vcf-validator](https://github.com/EBIvariation/vcf-validator) 0.9.6+

Install each of these and ensure they are available on the path.
Then git clone the repo or install the newest release as described above.

## Input files for the validation and submission tool

Expand Down Expand Up @@ -46,6 +87,9 @@ More detail documentation to follow

## Execution

Note for Docker users: for each of the below commands, add the command line option `--executor docker`, which will
fetch and manage the docker container for you.

### Validate and submit your dataset

To validate and submit run the following command
Expand Down
2 changes: 1 addition & 1 deletion bin/eva-sub-cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def validate_command_line_arguments(args, argparser):
'previous runs. Selecting SUBMIT will run validate only if the validation was not performed '
'successfully before and then run the submission.')
argparser.add_argument('--executor', choices=[DOCKER, NATIVE], default=NATIVE,
help='Select an execution type for running validation')
help='Select an execution type for running validation (default native)')
credential_group = argparser.add_argument_group('Credential', 'Specify the Webin credential you want to use to '
'upload to the EVA')
credential_group.add_argument("--username", help="Username used for connecting to the ENA webin account")
Expand Down
48 changes: 48 additions & 0 deletions conda/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash

VCF_VALIDATOR_VERSION=0.9.6
BIOVALIDATOR_VERSION=2.1.0
EVA_PYUTILS_VERSION=0.6.1

EVA_SUB_CLI="${PREFIX}/share/${PKG_NAME}-${PKG_VERSION}"
mkdir -p ${PREFIX}/bin ${EVA_SUB_CLI}

# Install eva-sub-cli
$PYTHON -m pip install .
cp bin/* ${PREFIX}/bin
echo "Done with eva-sub-cli"

cd ${EVA_SUB_CLI}

# Install python dependencies not yet on conda
curl -Lo eva-pyutils.zip https://github.com/EBIvariation/eva-common-pyutils/archive/refs/tags/v${EVA_PYUTILS_VERSION}.zip \
&& unzip eva-pyutils.zip && rm eva-pyutils.zip \
&& cd eva-common-pyutils-${EVA_PYUTILS_VERSION} \
&& $PYTHON setup.py install \
&& cd ..

# Install biovalidator from source
# Includes some workarounds that can be cleaned up once a new version is released
curl -Lo biovalidator.zip https://github.com/elixir-europe/biovalidator/archive/refs/tags/v${BIOVALIDATOR_VERSION}.zip \
&& unzip biovalidator.zip && rm biovalidator.zip \
&& cd biovalidator-${BIOVALIDATOR_VERSION} \
&& bash -c "cat <(echo '#!/usr/bin/env node') <(cat src/biovalidator.js) > tmp" \
&& mv tmp src/biovalidator.js \
&& chmod +x src/biovalidator.js \
&& sed -i 's/dist/src/' package.json \
&& npm install && npm install -g \
&& cd ..
echo "Done with biovalidator"

# Download pre-built vcf-validator
# Check if linux or osx
if [ -z ${OSX_ARCH+x} ]; then
curl -LJo ${PREFIX}/bin/vcf_validator https://github.com/EBIvariation/vcf-validator/releases/download/v${VCF_VALIDATOR_VERSION}/vcf_validator_linux \
&& curl -LJo ${PREFIX}/bin/vcf_assembly_checker https://github.com/EBIvariation/vcf-validator/releases/download/v${VCF_VALIDATOR_VERSION}/vcf_assembly_checker_linux \
&& chmod 755 ${PREFIX}/bin/vcf_assembly_checker ${PREFIX}/bin/vcf_validator
else
curl -LJo ${PREFIX}/bin/vcf_validator https://github.com/EBIvariation/vcf-validator/releases/download/v${VCF_VALIDATOR_VERSION}/vcf_validator_macos \
&& curl -LJo ${PREFIX}/bin/vcf_assembly_checker https://github.com/EBIvariation/vcf-validator/releases/download/v${VCF_VALIDATOR_VERSION}/vcf_assembly_checker_macos \
&& chmod 755 ${PREFIX}/bin/vcf_assembly_checker ${PREFIX}/bin/vcf_validator
fi
echo "Done with vcf-validator"
57 changes: 57 additions & 0 deletions conda/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{% set name = "eva-sub-cli" %}
{% set version = "0.2" %}

package:
name: {{ name }}
version: {{ version }}

source:
path: ../
# For submission to bioconda recipes, replace 'path' with the following (filling in the appropriate sha256):
# url: https://github.com/EBIvariation/eva-sub-cli/archive/v{{version}}.tar.gz
# sha256:

build:
number: 0
noarch: generic
preserve_egg_dir: True
# For submission to bioconda recipes, replace 'preserve_egg_dir' with the following:
# run_exports:
# - {{ pin_subpackage(name, max_pin="x.x") }}

requirements:
host:
- nextflow >=21.10.0
- python >=3.8
- nodejs >=10.19.1
- pyyaml
- jinja2
- openpyxl
- requests
- jsonschema
run:
- nextflow >=21.10.0
- python >=3.8
- pyyaml
- jinja2
- openpyxl
- requests
- jsonschema

test:
imports:
- eva_sub_cli
commands:
- biovalidator --help
- vcf_validator --help
- eva-sub-cli.py --help

about:
home: https://github.com/EBIvariation/eva-sub-cli
summary: EVA Submission Command Line Interface
license: Apache-2.0
license_file: LICENSE

extra:
recipe-maintainers:
- apriltuesday
2 changes: 1 addition & 1 deletion eva_sub_cli/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1
0.2
8 changes: 6 additions & 2 deletions eva_sub_cli/report.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
import os.path

from jinja2 import Environment, FileSystemLoader
from minify_html import minify_html

current_dir = os.path.dirname(__file__)

Expand Down Expand Up @@ -30,4 +29,9 @@ def generate_html_report(validation_results, validation_date, project_title=None
validation_results=validation_results,
)

return minify_html.minify(rendered_template, minify_js=True, remove_processing_instructions=True)
try:
# minify-html is not included in conda installation currently
from minify_html import minify_html
return minify_html.minify(rendered_template, minify_js=True, remove_processing_instructions=True)
except ImportError:
return rendered_template

0 comments on commit 37b2a60

Please sign in to comment.