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

Code reorganization #5

Merged
merged 19 commits into from
Apr 26, 2020
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
1 change: 0 additions & 1 deletion cell2cell/analysis/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,5 @@
from __future__ import absolute_import

from cell2cell.analysis.pipelines import (core_pipeline, heuristic_pipeline, ligand_receptor_pipeline)
from cell2cell.analysis.ppi_enrichment import (compute_avg_count_for_ppis, ppi_count_operation, get_ppi_score_for_cell_pairs)
# from cell2cell.analysis.func_enrichment import *

188 changes: 94 additions & 94 deletions cell2cell/analysis/pipelines.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import os

from cell2cell.analysis import ppi_enrichment
from cell2cell.core import interaction_space as ispace
from cell2cell.datasets import heuristic_data
from cell2cell.io import read_data
Expand All @@ -13,24 +12,33 @@


def core_pipeline(files, rnaseq_data, ppi_data, metadata, meta_setup, cutoff_setup, analysis_setup, excluded_cells=None,
colors=None, use_ppi_score=False, filename_suffix='',verbose=True):
colors=None, metric='bray_curtis', use_ppi_score=False, filename_suffix='',verbose=True):

if excluded_cells is None:
excluded_cells = []

bi_ppi_data = ppi.bidirectional_ppi_for_cci(ppi_data=ppi_data,
verbose=verbose)
if analysis_setup['cci_type'] == 'undirected':
bi_ppi_data = ppi.bidirectional_ppi_for_cci(ppi_data=ppi_data, verbose=False)
ref_ppi = ppi_data
else:
bi_ppi_data = ppi_data.copy()
ref_ppi = None


interaction_space = ispace.InteractionSpace(rnaseq_data=rnaseq_data,
ppi_data=bi_ppi_data,
gene_cutoffs=cutoff_setup,
score_type=analysis_setup['score_type'],
score_metric=analysis_setup['score_metric'],
communication_score=analysis_setup['communication_score'],
cci_score=analysis_setup['cci_score'],
cci_type=analysis_setup['cci_type'],
verbose=verbose)

interaction_space.compute_pairwise_interactions(use_ppi_score=use_ppi_score,
verbose=verbose)
interaction_space.compute_pairwise_cci_scores(use_ppi_score=use_ppi_score,
verbose=verbose)

interaction_space.compute_pairwise_communication_scores(ref_ppi_data=ref_ppi,
use_ppi_score=use_ppi_score,
verbose=verbose)

clustermap = plotting.clustermap_cci(interaction_space,
method='ward',
Expand All @@ -44,56 +52,92 @@ def core_pipeline(files, rnaseq_data, ppi_data, metadata, meta_setup, cutoff_set
**{'cmap': 'Blues'}
)

pcoa = plotting.pcoa_biplot(interaction_space,
excluded_cells=excluded_cells,
metadata=metadata,
sample_col=meta_setup['sample_col'],
group_col=meta_setup['group_col'],
colors=colors,
title='PCoA for cells given their CCI scores',
filename=files['output_folder'] + 'CCI-PCoA-CCI-scores{}.png'.format(filename_suffix),
)

interaction_matrix, std_interaction_matrix = ppi_enrichment.get_ppi_score_for_cell_pairs(
cells=list(interaction_space.distance_matrix.columns),
subsampled_interactions=[interaction_space.interaction_elements],
ppi_data=bi_ppi_data,
ref_ppi_data=ppi_data,
use_ppi_score=use_ppi_score
)

if use_ppi_score:
metric = 'cosine'
else:
metric = 'jaccard'
interaction_clustermap = plotting.clustermap_cell_pairs_vs_ppi(interaction_matrix,
metric=metric,
metadata=metadata,
sample_col=meta_setup['sample_col'],
group_col=meta_setup['group_col'],
colors=colors,
excluded_cells=excluded_cells,
title='Active ligand-receptor pairs for interacting cells',
filename=files[
'output_folder'] + 'CCI-Active-LR-pairs{}.png'.format(filename_suffix),
**{'figsize': (20, 40),
'vmin' : 0.0,
'vmax': 1.0}
)
# Run PCoA only if CCI matrix is symmetric
pcoa_state = False
if (interaction_space.interaction_elements['cci_matrix'].values.transpose() == interaction_space.interaction_elements['cci_matrix'].values).all():
pcoa = plotting.pcoa_biplot(interaction_space,
excluded_cells=excluded_cells,
metadata=metadata,
sample_col=meta_setup['sample_col'],
group_col=meta_setup['group_col'],
colors=colors,
title='PCoA for cells given their CCI scores',
filename=files['output_folder'] + 'CCI-PCoA-CCI-scores{}.png'.format(filename_suffix),
)
pcoa_state = True

interaction_clustermap = plotting.clustermap_ccc(interaction_space,
metric=metric,
metadata=metadata,
sample_col=meta_setup['sample_col'],
group_col=meta_setup['group_col'],
colors=colors,
excluded_cells=excluded_cells,
title='Active ligand-receptor pairs for interacting cells',
filename=files['output_folder'] + 'CCI-Active-LR-pairs{}.png'.format(filename_suffix),
**{'figsize': (20, 40)}
)

interaction_clustermap.data2d.to_csv(files['output_folder'] + 'CCI-Active-LR-pairs{}.csv'.format(filename_suffix))

outputs = dict()
outputs['interaction_space'] = interaction_space
outputs['clustermap'] = clustermap
outputs['pcoa'] = pcoa
if pcoa_state:
outputs['pcoa'] = pcoa
outputs['interaction_clustermap'] = interaction_clustermap
outputs['LR-pairs'] = interaction_clustermap.data2d
return outputs


def ligand_receptor_pipeline(files, rnaseq_setup, ppi_setup, meta_setup, cutoff_setup, analysis_setup, excluded_cells=None,
colors=None, use_ppi_score=False, filename_suffix='', verbose=True):
if excluded_cells is None:
excluded_cells = []

# Check for output directory
if 'output_folder' in files.keys():
if not os.path.exists(files['output_folder']):
os.makedirs(files['output_folder'])

# Load Data
rnaseq_data = read_data.load_rnaseq(rnaseq_file=files['rnaseq'],
gene_column=rnaseq_setup['gene_col'],
drop_nangenes=rnaseq_setup['drop_nangenes'],
log_transformation=rnaseq_setup['log_transform'],
format='auto',
verbose=verbose)

ppi_data = read_data.load_ppi(ppi_file=files['ppi'],
interaction_columns=ppi_setup['protein_cols'],
rnaseq_genes=list(rnaseq_data.index),
format='auto',
verbose=verbose)

meta = read_data.load_metadata(metadata_file=files['metadata'],
rnaseq_data=rnaseq_data,
sample_col=meta_setup['sample_col'],
format='auto',
verbose=verbose)

# Run Analysis
outputs = core_pipeline(files=files,
rnaseq_data=rnaseq_data,
ppi_data=ppi_data,
metadata=meta,
meta_setup=meta_setup,
cutoff_setup=cutoff_setup,
analysis_setup=analysis_setup,
excluded_cells=excluded_cells,
colors=colors,
use_ppi_score=use_ppi_score,
filename_suffix=filename_suffix,
verbose=verbose)
return outputs


def heuristic_pipeline(files, rnaseq_setup, ppi_setup, meta_setup, cutoff_setup, go_setup, analysis_setup,
contact_go_terms = None, mediator_go_terms = None, interaction_type='combined',
contact_go_terms = None, mediator_go_terms = None, interaction_type='mediated',
excluded_cells=None, colors=None, use_ppi_score=False, filename_suffix='', verbose=None):
'''
This function performs the analysis with the default list of GO terms to filter the proteins in the PPI network.
Expand Down Expand Up @@ -134,7 +178,7 @@ def heuristic_pipeline(files, rnaseq_setup, ppi_setup, meta_setup, cutoff_setup,

Returns
-------
subsampling_space : cell2cell.core.SubsamplingSpace
subsampling_space : cell2cell.core.SpatialCCI


ppi_dict : dict
Expand All @@ -145,8 +189,9 @@ def heuristic_pipeline(files, rnaseq_setup, ppi_setup, meta_setup, cutoff_setup,
excluded_cells = []

# Check for output directory
if not os.path.exists(files['output_folder']):
os.makedirs(files['output_folder'])
if 'output_folder' in files.keys():
if not os.path.exists(files['output_folder']):
os.makedirs(files['output_folder'])

# Load Data
rnaseq_data = read_data.load_rnaseq(rnaseq_file=files['rnaseq'],
Expand Down Expand Up @@ -221,49 +266,4 @@ def heuristic_pipeline(files, rnaseq_setup, ppi_setup, meta_setup, cutoff_setup,
use_ppi_score=use_ppi_score,
filename_suffix=filename_suffix,
verbose=verbose)
return outputs


def ligand_receptor_pipeline(files, rnaseq_setup, ppi_setup, meta_setup, cutoff_setup, analysis_setup, excluded_cells=None,
colors=None, use_ppi_score=False, filename_suffix='', verbose=True):
if excluded_cells is None:
excluded_cells = []

# Check for output directory
if not os.path.exists(files['output_folder']):
os.makedirs(files['output_folder'])

# Load Data
rnaseq_data = read_data.load_rnaseq(rnaseq_file=files['rnaseq'],
gene_column=rnaseq_setup['gene_col'],
drop_nangenes=rnaseq_setup['drop_nangenes'],
log_transformation=rnaseq_setup['log_transform'],
format='auto',
verbose=verbose)

ppi_data = read_data.load_ppi(ppi_file=files['ppi'],
interaction_columns=ppi_setup['protein_cols'],
rnaseq_genes=list(rnaseq_data.index),
format='auto',
verbose=verbose)

meta = read_data.load_metadata(metadata_file=files['metadata'],
rnaseq_data=rnaseq_data,
sample_col=meta_setup['sample_col'],
format='auto',
verbose=verbose)

# Run Analysis
outputs = core_pipeline(files=files,
rnaseq_data=rnaseq_data,
ppi_data=ppi_data,
metadata=meta,
meta_setup=meta_setup,
cutoff_setup=cutoff_setup,
analysis_setup=analysis_setup,
excluded_cells=excluded_cells,
colors=colors,
use_ppi_score=use_ppi_score,
filename_suffix=filename_suffix,
verbose=verbose)
return outputs
105 changes: 0 additions & 105 deletions cell2cell/analysis/ppi_enrichment.py

This file was deleted.

6 changes: 4 additions & 2 deletions cell2cell/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

from __future__ import absolute_import

from cell2cell.core.cci_scores import (compute_braycurtis_like_cci_score, compute_dot_product_score, compute_jaccard_like_cci_score)
from cell2cell.core.cci_scores import (compute_braycurtis_like_cci_score, compute_count_score, compute_jaccard_like_cci_score,
matmul_bray_curtis_like, matmul_count_active, matmul_jaccard_like)
from cell2cell.core.cell import (Cell, get_cells_from_rnaseq)
from cell2cell.core.communication_scores import (get_binary_scores, get_continuous_scores)
from cell2cell.core.interaction_space import (generate_interaction_elements, InteractionSpace)
from cell2cell.core.subsampling import (subsampling_operation, SubsamplingSpace)
from cell2cell.core.spatial_interactions import (SpatialCCI)
Loading