Source code for scphylo.tl.solver.huntress
"""Huntress Module."""
import pandas as pd
import scphylo as scp
from scphylo.tl.solver.huntress._huntress import Reconstruct
[docs]def huntress(df_input, alpha, beta, n_threads=1):
"""Solving using HUNTRESS.
HUNTRESS: Provably fast intratumor heterogeneity inference from single-cell
sequencing data
Parameters
----------
df_input : :class:`pandas.DataFrame`
Input genotype matrix in which rows are cells and columns are mutations.
Values inside this matrix show the presence (1), absence (0) and missing
entires (3).
alpha : :obj:`float`
False positive error rate.
beta : :obj:`float`
False negative error rate.
n_threads : :obj:`int`, optional
Number of threads, by default 1
Returns
-------
:class:`pandas.DataFrame`
A conflict-free matrix in which rows are cells and columns are mutations.
Values inside this matrix show the presence (1) and absence (0).
"""
scp.logg.info(
f"running HUNTRESS with alpha={alpha}, beta={beta}, n_threads={n_threads}"
)
running_time = 0
if alpha == 0:
matrix_out, running_time = Reconstruct(
df_input,
Algchoice="FN",
n_proc=n_threads,
)
else:
fn_conorm = 0.1
fp_conorm = fn_conorm * alpha / beta
matrix_out, running_time = Reconstruct(
df_input,
n_proc=n_threads,
fnfp=51,
post_fn=fn_conorm,
post_fp=fp_conorm,
)
df_output = pd.DataFrame(matrix_out)
df_output.columns = df_input.columns
df_output.index = df_input.index
df_output.index.name = "cellIDxmutID"
scp.ul.stat(df_input, df_output, alpha, beta, running_time)
return df_output