diff --git a/big_scape/cli/benchmark_cli.py b/big_scape/cli/benchmark_cli.py index 14403cc5..7eac876d 100644 --- a/big_scape/cli/benchmark_cli.py +++ b/big_scape/cli/benchmark_cli.py @@ -52,12 +52,12 @@ def benchmark(ctx, *args, **kwargs): ctx.obj.update(ctx.params) ctx.obj["mode"] = "Benchmark" - # workflow validations - validate_output_paths(ctx) - # set start time and label set_start(ctx.obj) + # workflow validations + validate_output_paths(ctx) + # initialize logger init_logger(ctx.obj) init_logger_file(ctx.obj) diff --git a/big_scape/cli/cli_validations.py b/big_scape/cli/cli_validations.py index fd0bd365..1e6c1915 100644 --- a/big_scape/cli/cli_validations.py +++ b/big_scape/cli/cli_validations.py @@ -7,7 +7,6 @@ from pathlib import Path from typing import Optional import os -import time import platform # from other modules @@ -22,7 +21,7 @@ def set_start(param_dict) -> None: """get start time and set label in a run parameter dict""" start_time: datetime = datetime.now() - timestamp = start_time.strftime("%d-%m-%Y_%H-%M-%S") + timestamp = start_time.strftime("%Y-%m-%d_%H-%M-%S") if param_dict["label"]: param_dict["label"] = f"{param_dict['label']}_{timestamp}" else: @@ -116,7 +115,7 @@ def validate_output_dir(ctx, param, output_dir) -> Path: def validate_output_paths(ctx) -> None: """Sets the output paths to default output_dir if not provided""" - timestamp = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime()) + timestamp = ctx.obj["label"] if "db_path" in ctx.obj and ctx.obj["db_path"] is None: db_path = ctx.obj["output_dir"] / Path(f"{ctx.obj['output_dir'].name}.db") diff --git a/big_scape/cli/cluster_cli.py b/big_scape/cli/cluster_cli.py index 96153d69..4418186d 100644 --- a/big_scape/cli/cluster_cli.py +++ b/big_scape/cli/cluster_cli.py @@ -138,6 +138,9 @@ def cluster(ctx, *args, **kwargs): ctx.obj["propagate"] = True # compatibility with query wrt cc generation ctx.obj["mode"] = "Cluster" + # set start time and run label + set_start(ctx.obj) + # workflow validations validate_binning_cluster_workflow(ctx) validate_pfam_path(ctx) @@ -145,9 +148,6 @@ def cluster(ctx, *args, **kwargs): validate_output_paths(ctx) validate_disk_only(ctx) - # set start time and run label - set_start(ctx.obj) - # initialize logger init_logger(ctx.obj) init_logger_file(ctx.obj) diff --git a/big_scape/cli/query_cli.py b/big_scape/cli/query_cli.py index ed571d3f..5609f187 100644 --- a/big_scape/cli/query_cli.py +++ b/big_scape/cli/query_cli.py @@ -99,6 +99,9 @@ def query(ctx, *args, **kwarg): ctx.obj["exclude_classes"] = None ctx.obj["include_classes"] = None + # set start time and label + set_start(ctx.obj) + # workflow validations validate_pfam_path(ctx) validate_output_paths(ctx) @@ -106,9 +109,6 @@ def query(ctx, *args, **kwarg): validate_query_record(ctx) validate_disk_only(ctx) - # set start time and label - set_start(ctx.obj) - # initialize logger init_logger(ctx.obj) init_logger_file(ctx.obj) diff --git a/big_scape/comparison/lcs.py b/big_scape/comparison/lcs.py index 492e52b6..82204720 100644 --- a/big_scape/comparison/lcs.py +++ b/big_scape/comparison/lcs.py @@ -287,9 +287,12 @@ def find_domain_lcs_region( # Length - # clear the list if it's not empty and the current match is longer + # clear the longest list if it's not empty and the current match is longer. + # also clear the central list as we do not care about a shorter LCS even if it + # is more central if len(use_longest_list) > 0 and length > use_longest_list[0][1]: use_longest_list.clear() + use_central_list.clear() # add the match to the list if it's empty or the current match is equal length # or longer than the existing match @@ -523,9 +526,12 @@ def find_domain_lcs_protocluster( # Length - # clear the list if it's not empty and the current match is longer + # clear the longest list if it's not empty and the current match is longer. + # also clear the central list as we do not care about a shorter LCS even if it + # is more central if len(use_longest_list) > 0 and length > use_longest_list[0][1]: use_longest_list.clear() + use_central_list.clear() # add the match to the list if it's empty or the current match is equal length # or longer than the existing match diff --git a/big_scape/output/legacy_output.py b/big_scape/output/legacy_output.py index e5a7c050..47287b64 100644 --- a/big_scape/output/legacy_output.py +++ b/big_scape/output/legacy_output.py @@ -642,6 +642,9 @@ def write_network_file( if cutoff is not None: select_statement = select_statement.where(distance_table.c.distance < cutoff) + else: + # still do not include edges with a distance of 1 + select_statement = select_statement.where(distance_table.c.distance < 1) edgelist = set(DB.execute(select_statement).fetchall())