Skip to content

Commit c5e7b4e

Browse files
authored
Merge pull request #154 from singjc/master
Add: log colorizer option to global pyprophet settings
2 parents 976d00f + 5c58f7f commit c5e7b4e

3 files changed

Lines changed: 57 additions & 23 deletions

File tree

pyprophet/cli/util.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,13 @@ class GlobalLogLevelGroup(click.Group):
9393

9494
def invoke(self, ctx):
9595
log_level = ctx.params.get("log_level", "INFO").upper()
96-
header = setup_logger(log_level=log_level)
97-
ctx.obj = {"LOG_LEVEL": log_level, "LOG_HEADER": header}
96+
log_colorize = ctx.params.get("log_colorize", True)
97+
header = setup_logger(log_level=log_level, log_colorize=log_colorize)
98+
ctx.obj = {
99+
"LOG_LEVEL": log_level,
100+
"LOG_HEADER": header,
101+
"LOG_COLORIZE": log_colorize,
102+
}
98103
return super().invoke(ctx)
99104

100105

@@ -274,9 +279,9 @@ def get_execution_context():
274279
return " ".join([sys.executable] + sys.argv)
275280

276281

277-
def setup_logger(log_level):
282+
def setup_logger(log_level, log_colorize):
278283
def formatter(record):
279-
if log_level != "info":
284+
if log_level.lower() != "info":
280285
# Format with module, function, and line number
281286
mod_func_line = f"{record['name']}::{record['function']}:{record['line']}"
282287
return (
@@ -319,7 +324,7 @@ def formatter(record):
319324

320325
# Main console logger
321326
# logger.remove() # Remove default logger
322-
logger.add(sys.stdout, colorize=True, format=formatter, level=log_level)
327+
logger.add(sys.stdout, colorize=log_colorize, format=formatter, level=log_level)
323328

324329
_LOGGER_INITIALIZED = True
325330

pyprophet/io/ipf/osw.py

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -307,25 +307,49 @@ def _fetch_alignment_features_duckdb(self, con):
307307
f"Perform feature alignment using ARYCAL, and apply scoring to alignment-level data before running IPF.\nTable Info:\n{self._fetch_tables_duckdb(con)}"
308308
)
309309

310-
subquery = """
311-
SELECT
312-
FEATURE_ID,
313-
MIN(PEP) AS pep
314-
FROM osw.SCORE_ALIGNMENT
315-
GROUP BY FEATURE_ID
316-
"""
317310
query = f"""
318-
SELECT
319-
DENSE_RANK() OVER (ORDER BY fma.PRECURSOR_ID, fma.ALIGNMENT_ID) AS ALIGNMENT_GROUP_ID,
320-
fma.ALIGNED_FEATURE_ID AS FEATURE_ID
321-
FROM osw.FEATURE_MS2_ALIGNMENT AS fma
322-
JOIN (
323-
{subquery}
311+
SELECT
312+
DENSE_RANK() OVER (ORDER BY merged.PRECURSOR_ID, merged.ALIGNMENT_ID) AS ALIGNMENT_GROUP_ID,
313+
merged.ALIGNMENT_ID,
314+
merged.FEATURE_ID,
315+
merged.PRECURSOR_ID,
316+
merged.FEATURE_TYPE
317+
FROM (
318+
SELECT DISTINCT
319+
fma.ALIGNMENT_ID,
320+
fma.REFERENCE_FEATURE_ID AS FEATURE_ID,
321+
fma.PRECURSOR_ID,
322+
'REFERENCE' AS FEATURE_TYPE
323+
FROM osw.FEATURE_MS2_ALIGNMENT AS fma
324+
WHERE fma.LABEL = 1
325+
AND fma.REFERENCE_FEATURE_ID != fma.ALIGNED_FEATURE_ID
326+
327+
UNION
328+
329+
SELECT DISTINCT
330+
fma.ALIGNMENT_ID,
331+
fma.ALIGNED_FEATURE_ID AS FEATURE_ID,
332+
fma.PRECURSOR_ID,
333+
'QUERY' AS FEATURE_TYPE
334+
FROM osw.FEATURE_MS2_ALIGNMENT AS fma
335+
WHERE fma.LABEL = 1
336+
AND fma.REFERENCE_FEATURE_ID != fma.ALIGNED_FEATURE_ID
337+
) AS merged
338+
LEFT JOIN (
339+
SELECT
340+
FEATURE_ID,
341+
MIN(PEP) AS pep
342+
FROM osw.SCORE_ALIGNMENT
343+
WHERE PEP <= {pep_threshold}
344+
GROUP BY FEATURE_ID
324345
) AS sa
325-
ON sa.FEATURE_ID = fma.ALIGNED_FEATURE_ID
326-
WHERE fma.LABEL = 1
327-
AND sa.pep < {pep_threshold}
328-
ORDER BY ALIGNMENT_GROUP_ID
346+
ON merged.FEATURE_ID = sa.FEATURE_ID
347+
ORDER BY
348+
ALIGNMENT_GROUP_ID,
349+
CASE merged.FEATURE_TYPE
350+
WHEN 'REFERENCE' THEN 0
351+
WHEN 'QUERY' THEN 1
352+
END;
329353
"""
330354

331355
df = con.execute(query).fetchdf()

pyprophet/main.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,13 @@ def profile(fun):
5555
),
5656
help="Set global logging level.",
5757
)
58+
@click.option(
59+
"--log-colorize/--no-log-colorize",
60+
default=True,
61+
help="Turn on/off colorized logging output.",
62+
)
5863
@click.pass_context
59-
def cli(ctx, log_level):
64+
def cli(ctx, log_level, log_colorize):
6065
"""
6166
PyProphet: Semi-supervised learning and scoring of OpenSWATH results.
6267

0 commit comments

Comments
 (0)