Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updated tests for DB selection #12

Merged
merged 2 commits into from
May 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 2 additions & 11 deletions locidex/extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from locidex.constants import SEARCH_RUN_DATA, FILE_TYPES, BLAST_TABLE_COLS, DBConfig, DB_EXPECTED_FILES, NT_SUB, EXTRACT_MODES, OPTION_GROUPS
from locidex.version import __version__
from locidex.classes.aligner import perform_alignment, aligner
import locidex.manifest as manifest
from locidex.utils import check_db_groups

def add_args(parser=None):
if parser is None:
Expand Down Expand Up @@ -263,16 +263,7 @@ def run(cmd_args=None):

analysis_parameters = vars(cmd_args)

for opt in OPTION_GROUPS:
if analysis_parameters[opt] is not None:
for option in OPTION_GROUPS[opt]:
if analysis_parameters[option] is None:
raise AttributeError("Missing required parameter: {}".format(option))

if cmd_args.db_group is not None:
analysis_parameters["db"] = str(manifest.get_manifest_db(input_file=Path(cmd_args.db_group), name=cmd_args.db_name, version=cmd_args.db_version))


analysis_parameters = check_db_groups(analysis_params=analysis_parameters, cmd_args=cmd_args)

config_file = cmd_args.config

Expand Down
14 changes: 3 additions & 11 deletions locidex/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@

import pandas as pd

import locidex.manifest as manifest
from locidex.classes.blast import blast_search, parse_blast
from locidex.classes.db import search_db_conf, db_config
from locidex.classes.seq_intake import seq_intake, seq_store
from locidex.constants import SEARCH_RUN_DATA, FILE_TYPES, BLAST_TABLE_COLS, DB_EXPECTED_FILES, OPTION_GROUPS, DBConfig
from locidex.utils import write_seq_dict
from locidex.utils import write_seq_dict, check_db_groups
from locidex.version import __version__

def add_args(parser=None):
Expand Down Expand Up @@ -302,16 +301,9 @@ def run(cmd_args=None):
parser = add_args()
cmd_args = parser.parse_args()
analysis_parameters = vars(cmd_args)

for opt in OPTION_GROUPS:
if analysis_parameters[opt] is not None:
for option in OPTION_GROUPS[opt]:
if analysis_parameters[option] is None:
raise AttributeError("Missing required parameter: {}".format(option))

if cmd_args.db_group is not None:
analysis_parameters["db"] = str(manifest.get_manifest_db(input_file=Path(cmd_args.db_group), name=cmd_args.db_name, version=cmd_args.db_version))

analysis_parameters = check_db_groups(analysis_params=analysis_parameters, cmd_args=cmd_args)

config_file = cmd_args.config

config = {}
Expand Down
19 changes: 18 additions & 1 deletion locidex/utils.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,29 @@
import hashlib
import json
import os
import argparse
from collections import Counter
from pathlib import Path

from Bio.Seq import Seq

from locidex.constants import NT_SUB, PROTEIN_ALPHA, DNA_ALPHA
from locidex.constants import NT_SUB, PROTEIN_ALPHA, DNA_ALPHA, OPTION_GROUPS
import locidex.manifest as manifest

def check_db_groups(analysis_params: dict, cmd_args: argparse.Namespace, param_db: str = "db") -> dict:
"""
Verify that a locidex database, or database group passed has all of the require parameters
"""
for opt in OPTION_GROUPS:
if analysis_params[opt] is not None:
for option in OPTION_GROUPS[opt]:
if analysis_params[option] is None:
raise AttributeError("Missing required parameter: {}".format(option))

if cmd_args.db_group is not None:
analysis_params[param_db] = str(manifest.get_manifest_db(input_file=Path(cmd_args.db_group), name=cmd_args.db_name, version=cmd_args.db_version))

return analysis_params

def revcomp(s):
"""
Expand Down
26 changes: 26 additions & 0 deletions tests/test_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
"""
Test the ever growing util functions
"""

import pytest
from locidex import utils
from locidex import manifest
from argparse import Namespace


def test_check_db_groups_pass(monkeypatch):
nm_group = Namespace(db_group="Db1", db_name="test_name", db_version="1.0.0")
analysis_params = {"db_group": "Db1", "db_name": "test_name", "db_version": "1.0.0"}

def mockreturn(*args, **kwargs):
return True
monkeypatch.setattr(manifest, "get_manifest_db", mockreturn)
analysis_params = utils.check_db_groups(analysis_params, nm_group)
assert analysis_params["db"]

def test_check_db_groups_fail():
nm_group = Namespace(db_group="Db1", db_name="test_name", db_version="1.0.0")
analysis_params = {"db_group": "Db1", "db_name": "test_name"}

with pytest.raises(KeyError):
analysis_params = utils.check_db_groups(analysis_params, nm_group)
Loading