diff --git a/.github/workflows/qiita-plugin-ci.yml b/.github/workflows/qiita-plugin-ci.yml index e11c04a..cb6bee3 100644 --- a/.github/workflows/qiita-plugin-ci.yml +++ b/.github/workflows/qiita-plugin-ci.yml @@ -2,7 +2,7 @@ on: push: - branches: [ dev ] + branches: [dev] pull_request: jobs: @@ -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 @@ -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} @@ -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 @@ -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/* diff --git a/qtp_sequencing/tests/test_validate.py b/qtp_sequencing/tests/test_validate.py index 9a8d90c..3a61aeb 100644 --- a/qtp_sequencing/tests/test_validate.py +++ b/qtp_sequencing/tests/test_validate.py @@ -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 diff --git a/qtp_sequencing/validate.py b/qtp_sequencing/validate.py index bd6684b..c052472 100644 --- a/qtp_sequencing/validate.py +++ b/qtp_sequencing/validate.py @@ -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(): @@ -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: diff --git a/scripts/configure_qtp_sequencing b/scripts/configure_qtp_sequencing index 9c950ad..056a694 100755 --- a/scripts/configure_qtp_sequencing +++ b/scripts/configure_qtp_sequencing @@ -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__':