arcfish.tl.DiffLoop#

class arcfish.tl.DiffLoop(adata1: AnnData, adata2: AnnData)#

Differential analysis of chromatin loops.

Parameters:
__init__(adata1: AnnData, adata2: AnnData)#

Methods

__init__(adata1, adata2)

diff_loops(summit_df[, s])

Call differential chromatin interactions.

entry_pvals(adata1, adata2)

Calculate axis-wise entry-wise p-values by F-tests.

loop_pvals(weights, f_pvals, d1d, summit_chr)

Calculate p-value for each loop considered.

pval_to_fdr(agg_p_mat, idx)

Adjust multiple testing by FDR.

to_bedpe(result[, fdr_cutoff])

Convert differential loop result to dataframe, similar format as summit_df.

diff_loops(summit_df: DataFrame, s: float = 5000.0) dict#

Call differential chromatin interactions.

Parameters:
  • summit_df (pd.DataFrame) – List of loops to check. Have columns c1, s1, e1, c2, s2, e2.

  • s (float, optional) – Gaussian kernel size in bp, by default 5e3.

Returns:

Differential loop testing result with keys f_pvals, agg_pvals, and fdr. Values are (p,p) matrices.

Return type:

dict

static entry_pvals(adata1: AnnData, adata2: AnnData) ndarray#

Calculate axis-wise entry-wise p-values by F-tests.

Parameters:
Returns:

Axis-wise entry-wise p-values.

Return type:

(3, p, p) np.ndarray

static loop_pvals(weights: ndarray, f_pvals: ndarray, d1d: ndarray, summit_chr: DataFrame, s: float = 5000.0) Tuple[ndarray, Tuple[ndarray, ndarray]]#

Calculate p-value for each loop considered. The p-value is aggregated 1) from all axis by weights inversely proportional to measurement errors 2) from entries within the same axis by a Gaussian kernel with size s.

Parameters:
  • weights ((d,) np.ndarray) – Weight for each axis.

  • f_pvals ((d, p, p) np.ndarray) – Entry-wise p-values returned by func:entry_pvals.

  • d1d (np.ndarray) – 1D genomic locations.

  • summit_chr (pd.DataFrame) – List of loops within the chromosome to check.

  • s (float, optional) – Gaussian kernel size in bp, by default 5e3

Returns:

Aggregated p-values and indices of the summits.

Return type:

Tuple[(p, p) np.ndarray, Tuple[np.ndarray, np.ndarray]]

static pval_to_fdr(agg_p_mat: ndarray, idx: tuple) ndarray#

Adjust multiple testing by FDR. Only adjust for p-values specified in idx.

Parameters:
  • agg_p_mat ((p, p) np.ndarray) – P-value matrix.

  • idx (tuple) – Positions in p-value matrix to adjust. Format like the output of np.where.

Returns:

FDR matrix. NaN at positions outside idx.

Return type:

(p, p) np.ndarray

to_bedpe(result: dict, fdr_cutoff: float = 0.1) DataFrame#

Convert differential loop result to dataframe, similar format as summit_df.

Parameters:
  • result (dict) – Dictionary returned by diff_loops().

  • fdr_cutoff (float, optional) – Loops with p-values below this cutoff are defined as differential loop, by default 0.1.

Returns:

Output dataframe in bedpe format.

Return type:

pd.DataFrame