Usage
This tool generates a co-embedding from input embeddings using either the MuSE algorithm or ProteinProjector (formerly ProteinGPS). The co-embedding is constructed from two or more input embedding datasets, such as protein-protein interaction (PPI) embeddings (cellmaps_ppi_embedding) or image embeddings (cellmaps_image_embedding).
By default, it uses the muse algorithm unless specified otherwise.
In a project
To use cellmaps_coembedding in a project:
import cellmaps_coembedding
Needed files
The output directories for the image embeddings (see Cell Maps Image Embedding) and protein-protein interaction network embeddings (see Cell Maps PPI Embedding) are required.
On the command line
For information invoke cellmaps_coembeddingcmd.py -h
Usage
cellmaps_coembeddingcmd.py [outdir] [--embeddings EMBEDDING_DIR [EMBEDDING_DIR2 ...]] [OPTIONS]
Arguments
outdirOutput directory where all results and intermediate files will be saved.
Required
--embeddings EMBEDDINGS_DIRPaths to embedding files. Either directories containing image and/or PPI embeddings that contain a TSV file, named image_emd.tsv or ppi_emd.tsv or paths to specific TSV files.
Deprecated Flags (still functional but no longer required):
--ppi_embeddingdirThe directory path created by cellmaps_ppi_embedding which has a TSV file containing the embeddings of the PPI network. For each row, the first value is assumed to be the gene symbol followed by the embeddings.
--image_embeddingdirThe directory path created by cellmaps_image_embedding which has a TSV file containing the embeddings of the IF images. For each row, the first value is assumed to be the sample ID followed by the embeddings.
Optional
--embedding_namesNames corresponding to each filepath input in –embeddings.
--algorithmAlgorithm to use for coembedding. Choices: ‘auto’, ‘muse’, ‘proteingps’, ‘proteinprojector’. Defaults to ‘muse’. ‘auto’ and ‘proteingps’ are deprecated; use ‘proteinprojector’ instead.
--proteinprojectorConvenience flag to select the ProteinProjector algorithm (equivalent to
--algorithm proteinprojector).
--latent_dimensionOutput dimension of the embedding. Default is 128.
--n_epochs_initNumber of initial training epochs. Default is 200.
--n_epochsNumber of training epochs. Default is 500.
--jackknife_percentPercentage of data to withhold from training. For example, a value of 0.1 means to withhold 10 percent of the data.
--mean_lossesIf set, use the mean of losses; otherwise, sum the losses.
--dropoutPercentage to use for dropout layers in the neural network.
--l2_normIf set, performs L2 normalization on coembeddings (ProteinProjector only, formerly ProteinGPS).
--lambda_tripletWeight for triplet loss (ProteinProjector only, formerly ProteinGPS). (Default: 1.0)
--mean_lossesIf set, uses the mean of the loss functions instead of the sum (ProteinProjector only, formerly ProteinGPS).
--batch_sizeBatch size for training (ProteinProjector only, formerly ProteinGPS). (Default: 16)
--triplet_marginMargin for triplet loss (ProteinProjector only, formerly ProteinGPS). (Default: 1.0)
--learn_rateLearning rate for the optimizer (ProteinProjector only, formerly ProteinGPS). (Default: 1e-4)
--hidden_size_1Size of the first hidden layer in the neural network (ProteinProjector only, formerly ProteinGPS). (Default: 512)
--hidden_size_2Size of the second hidden layer in the neural network (ProteinProjector only, formerly ProteinGPS). (Default: 256)
--save_update_epochsIf set, saves the model state at specified epoch intervals (ProteinProjector only, formerly ProteinGPS).
--negative_from_batchIf set, uses negative samples from the same batch for triplet loss (ProteinProjector only, formerly ProteinGPS).
--fake_embeddingIf set, generates fake co-embeddings.
--provenancePath to a JSON file containing provenance information for the input files. Required if the embedding directories do not contain ro-crate-metadata.json.
--nameName of the run (used for FAIRSCAPE). If unset, value is inferred from the embedding directory or provenance.
--organization_nameName of the organization running this tool (used for FAIRSCAPE).
--project_nameName of the project running this tool (used for FAIRSCAPE).
--logconfPath to a Python logging configuration file. Overrides -v. (Default: None)
--skip_loggingIf set, disables creation of output.log and error.log.
--verbose,-vIncreases logging verbosity: - -v = WARNING - -vv = INFO - -vvv = DEBUG - -vvvv = NOTSET
--versionDisplays the version of the tool and exits.
Example usage
CM4AI Data Example:
cellmaps_coembeddingcmd.py ./cellmaps_coembedding_outdir --embeddings ./cellmaps_image_embedding_outdir ./cellmaps_ppi_embedding_outdir
Another example:
cellmaps_coembeddingcmd.py my_output_dir \
--embeddings ppi_emd.tsv image_emd.tsv \
--embedding_names ppi image \
--proteinprojector \
--latent_dimension 128 \
--n_epochs 300 \
--jackknife_percent 0.2 \
--l2_norm \
--provenance metadata.json
Via Docker
Example usage
Coming soon...
Embedding Evaluation (additional functionality)
The cellmaps_coembedding.utils module provides functions for evaluating embeddings. It is not part of the standard workflow, but an additional functionality. It includes statistical analysis of similarity scores and visualization of embedding performance using enrichment tests.
The get_embedding_eval_data function computes enrichment effect sizes for various embeddings using a reference adjacency matrix (CORUM). It also saves KDE data for the MUSE embedding. The generate_embedding_evaluation_figures automates the evaluation process by loading embeddings, computing effect sizes, and generating figures.
Returns:
sim_muse_data.csv: MUSE similarity scores.
embedding_eval.csv: Enrichment effect sizes for each embedding.
sim_muse.png: KDE plot for similarity scores.
embedding_eval.png: Enrichment comparison plot.
Usage Example
from cellmaps_coembedding.utils import generate_embedding_evaluation_figures
generate_embedding_evaluation_figures(
coembedding='/path/to/coembedding',
ppi='/path/to/ppiembedding',
image='/path/to/imageembedding',
outdir='/output/directory',
num_samplings=1000,
num_edges=1000
)
UMAP Generation
Optionally, you can create UMAP visualizations of the generated embeddings by using the cellmaps_coembedding.utils
helpers. These plots allow you to see how samples cluster in a 2D projection based on their embedding similarity.
Note
To generate UMAP plots, you need to have the umap-learn (often installed as umap or umap-learn) and seaborn Python packages installed. For example, you can install them via:
pip install umap-learn seaborn
from cellmaps_coembedding.utils import generate_umap_of_embedding
generate_umap_of_embedding(emb_file='/path/to/embedding', outdir='/output/directory')
If you want to color the UMAP based on label (for example localization of the protein in the cell), you can pass a
directory that contains label to protein mapping in label_map argument.
from cellmaps_coembedding.utils import generate_umap_of_embedding
generate_umap_of_embedding(emb_file='/path/to/embedding', outdir='/output/directory', label_map=location_dict)