Skip to content

Commit

Permalink
FASTA_preprocessed allowed files prefixed by sample_names (#48)
Browse files Browse the repository at this point in the history
* ci changes

* FASTA_preprocessed by sample_names

* fix test
  • Loading branch information
antgonza authored Jan 31, 2025
1 parent 508d124 commit 4a325e7
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 28 deletions.
40 changes: 20 additions & 20 deletions .github/workflows/qiita-plugin-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

on:
push:
branches: [ dev ]
branches: [dev]
pull_request:

jobs:
Expand Down Expand Up @@ -70,7 +70,7 @@ jobs:
shell: bash -l {0}
run: |
conda activate qiita
pip install qiita-dev/ --no-binary redbiom
pip --quiet install qiita-dev/ --no-binary redbiom
mkdir ~/.qiita_plugins
- name: Install plugins
Expand All @@ -80,17 +80,17 @@ jobs:
conda create -q --yes -n qtp-sequencing python=3.9 pip pigz quast fqtools
conda activate qtp-sequencing
export QIITA_SERVER_CERT=`pwd`/qiita-dev/qiita_core/support_files/ci_rootca.crt
export QIITA_ROOTCA_CERT=`pwd`/qiita-dev/qiita_core/support_files/ci_rootca.crt
export QIITA_CONFIG_FP=`pwd`/qiita-dev/qiita_core/support_files/config_test_local.cfg
pip install -U pip
pip install .
configure_qtp_sequencing --env-script "source /home/runner/.profile; conda activate qtp-sequencing" --server-cert $QIITA_SERVER_CERT
configure_qtp_sequencing --env-script "source /home/runner/.profile; conda activate qtp-sequencing" --ca-cert $QIITA_ROOTCA_CERT
- name: Starting services
shell: bash -l {0}
run: |
conda activate qiita
export QIITA_SERVER_CERT=`pwd`/qiita-dev/qiita_core/support_files/ci_rootca.crt
export QIITA_ROOTCA_CERT=`pwd`/qiita-dev/qiita_core/support_files/ci_rootca.crt
export QIITA_CONFIG_FP=`pwd`/qiita-dev/qiita_core/support_files/config_test_local.cfg
sed "s#/home/runner/work/qiita/qiita#${PWD}/qiita-dev/#g" `pwd`/qiita-dev/qiita_core/support_files/config_test.cfg > ${QIITA_CONFIG_FP}
Expand Down Expand Up @@ -123,7 +123,7 @@ jobs:
COVER_PACKAGE: ${{ matrix.cover_package }}
run: |
conda activate qtp-sequencing
export QIITA_SERVER_CERT=`pwd`/qiita-dev/qiita_core/support_files/ci_rootca.crt
export QIITA_ROOTCA_CERT=`pwd`/qiita-dev/qiita_core/support_files/ci_rootca.crt
export QIITA_CONFIG_FP=`pwd`/qiita-dev/qiita_core/support_files/config_test_local.cfg
nosetests --with-doctest --with-coverage -v --cover-package=qtp_sequencing
Expand All @@ -135,21 +135,21 @@ jobs:
- uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: codecov.yml
token: ${{ secrets.CODECOV_TOKEN }}
file: codecov.yml

lint:
runs-on: ubuntu-latest
steps:
- name: flake8
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: install dependencies
run: python -m pip install --upgrade pip
- name: Check out repository code
uses: actions/checkout@v2
- name: lint
run: |
pip install -q flake8
flake8 qtp_sequencing setup.py scripts/*
- name: flake8
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: install dependencies
run: python -m pip install --upgrade pip
- name: Check out repository code
uses: actions/checkout@v2
- name: lint
run: |
pip install -q flake8
flake8 qtp_sequencing setup.py scripts/*
27 changes: 27 additions & 0 deletions qtp_sequencing/tests/test_validate.py
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,33 @@ def test_validate_FASTA_preprocessed(self):
exp = [ArtifactInfo(None, atype, files)]
self.assertEqual(obs_ainfo, exp)

def test_validate_FASTA_preprocessed_samplename(self):
prep_info = {"1.SKB2.640194": {"run_prefix": "s1"},
"1.SKM4.640180": {"run_prefix": "s2"},
"1.SKB3.640195": {"run_prefix": "s3"},
"1.SKB6.640176": {"run_prefix": "s4"}}

files = {'preprocessed_fasta': [
'/path/to/1.SKB2.640194.fna', '/path/to/1.SKM4.640180.fna',
'/path/to/1.SKB3.640195.fna', '/path/to/1.SKB6.640176.fna']}

out_dir = mkdtemp()
self._clean_up_files.append(out_dir)

atype = 'FASTA_preprocessed'
job_id, _ = self._create_template_and_job(prep_info, files, atype)
obs_success, obs_ainfo, obs_error = _validate_multiple(
self.qclient, job_id, prep_info, files, atype, True)
self.assertEqual(obs_error, "")
self.assertTrue(obs_success)

files = [('/path/to/1.SKB2.640194.fna.gz', 'preprocessed_fasta'),
('/path/to/1.SKM4.640180.fna.gz', 'preprocessed_fasta'),
('/path/to/1.SKB3.640195.fna.gz', 'preprocessed_fasta'),
('/path/to/1.SKB6.640176.fna.gz', 'preprocessed_fasta')]
exp = [ArtifactInfo(None, atype, files)]
self.assertEqual(obs_ainfo, exp)


FASTQ_SEQS = """@{s1}_1 orig_bc=abc new_bc=abc bc_diffs=0
xyz
Expand Down
20 changes: 17 additions & 3 deletions qtp_sequencing/validate.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ def _validate_multiple(qclient, job_id, prep_info, files, atype, test=False):
# the run_prefix column
run_prefixes = set(v['run_prefix'] for k, v in prep_info.items())
num_prefixes = len(run_prefixes)
sample_names = prep_info.keys()

# Check those filepath types that are required
for ftype, t_files in files.items():
Expand All @@ -150,9 +151,22 @@ def _validate_multiple(qclient, job_id, prep_info, files, atype, test=False):
else:
fps.append(bn)
if fps:
offending[ftype] = (
"The provided files do not match the run prefix "
"values in the prep information: %s" % ', '.join(fps))
# let's check by sample_name
fps_rp = fps
rps, fps = [], []
for fp in t_files:
bn = basename(fp)
found = [sn for sn in sample_names
if bn.startswith(sn)]
if found:
rps.extend(found)
else:
fps.append(bn)
if fps:
offending[ftype] = (
"The provided files do not match the run prefix "
"values in the prep information: %s" % ', '.join(
fps_rp))
else:
rps = run_prefixes - set(rps)
if rps:
Expand Down
10 changes: 5 additions & 5 deletions scripts/configure_qtp_sequencing
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ from qtp_sequencing import plugin
@click.command()
@click.option('--env-script', prompt='Environment script',
default='conda activate qtp-sequencing')
@click.option('--server-cert', prompt='Server certificate', default='None')
def config(env_script, server_cert):
@click.option('--ca-cert', prompt='Server certificate', default='None')
def config(env_script, ca_cert):
"""Generates the Qiita configuration files"""
if server_cert == 'None':
server_cert = None
if ca_cert == 'None':
ca_cert = None
plugin.generate_config(env_script, 'start_qtp_sequencing',
server_cert=server_cert)
ca_cert)


if __name__ == '__main__':
Expand Down

0 comments on commit 4a325e7

Please sign in to comment.