Package: celligner
CellignerCelligneris a computational project to align multiple cancer datasets across sequencing modalities, tissue conditions (media, perturbations..) and format (CL/tumor/organoids/spheroids)See our latest paper on aligning CCLE cell lines with TCGA tumors:2020 paperRemarkCelligneris initially an R project that you can find in theR/folder.A Python version was made that performs the exact same computations as the R version. However one should not expect the exact same plot for a couple reasons:UMAPThe plot some users have been used to is a unique run of UMAP on theCellignerrealignment data. This is done by fixing the seed of the UMAP algorithm. You can still do that for the python version but it is disabled by default and not recommended. We recommend users to play with the UMAP parameter and make multiple plots.
This helps to prevent reading too much into UMAP's output. Things that don't stay the same are not necessarily true attributes of the data.Learn more here:distill,Lior's twittorial.Additionally we also advice users to complement assumptions by applying methods like differential expression analysis across clusters to find any meaningful information.Algorithmic differencesCelligneris composed of 4 key steps:A Louvain clustering: this version is the ScanPy implementation of this method whileCelligneris using Seurat's. There might be some slight implementation differences.A limma diff expression analysis to find key variance genes across clusters for each dataset: this version is 100% similar to the R version ofCelligner.A cPCA to remove tumor impurity signal. This method is exactly the same except that the python version does exact PCA computation while the R version does an approximate version.An MNN allignment: this version is 100% similar to the R version ofCellignerin its output.Is there any other differences?Overall improvements, yes:A “pre-fitted” model is available to download here:gs://celligner/model.pkl(on request for now)Using your own dataset and adding new dataset is super simple now withfit(),transform()syntaxYou don’t need to rerun the entire model when adding new (adding 600 new samples take only 5mns to run)The model takes much less memory to run and can run on any machine now (you don’t need 64Gb of RAM anymore), and it also takes less than an hour to fully run (on a good machine).There is now an interactive plot usingBokehto better visualise your samples of interest.You can now easily choose parameters and even choose between 2 different versions of MNN.Just want a quick look?Go here for the production version:https://depmap.org/portal/celligner/Go here for some usage examples:https://raw.githack.com/broadinstitute/celligner/master/docs/example.htmlInstallTO see the old R package installation instruction, see theR/folder.Before running pip, make sure that you have R installed.pip install cellignerEven with R, some platform might not have all the required packages already installed (thanks R for being so easy to work with!)In that case, please refer to our docker image:sA dockerized version is available atjkobject:pycellignerto install the latest unstaged version of Celligner in dev mode, do:gitclonehttps://github.com/broadinstitute/celligner.gitcdcelligner
pipinstall-e.For developersseeCONTRIBUTING.mdUse CellignerSeedocs/Celligner_demo.[html|pdf]for an example of usage.
(viewhere)celligner works like most scikit learn tool.A user fits a dataset (e.g. CCLE tpm expression),fromcellignerimportCellignermy_alligner=Celligner(make_plots=True)my_alligner.fit(CCLE_expression,CCLE_annotation)and then transforms another one based on this fitted datasetmy_alligner.method="mnn_marioni"my_alligner.mnn_kwargs={'k1':5,'k2':50,'cosine_norm':True,"fk":5}transformed_TCGA=my_alligner.transform(TCGA_expression,TCGA_annotation)my_alligner.plot(color_column="tissue_type",colortable=TISSUE_COLOR,umap_kwargs={'n_neighbors':15,'min_dist':0.2,'metric':'cosine'})Users can access other methods such as save(), load(), addToFit(), etc, as well as many data in values: pca_transform, transform_clusters, differential_genes_names, mnn_pairs, etc.Please have a look atdocs/Celligner_demo.[html|pdf]for an example of usage.
(viewhere)Computational complexityDepending on the dataset, Celligner can be quite memory hungry.
for TCGA, expect at least50-60Gbof memory being used. You might need a powerfull computer, lots ofswapand to increase R's defaultmaximum allowed memory.You can also use thelow_memory=Trueoption to reduce the memory used by celligner in the memory intensivePCA&cPCAmethods.Add your own data to a pretrained modelIf you want to see your dataset in celligner, you can decide to use our own prefitted version.!curlhttps://storage.googleapis.com/celligner/model.pkl-outputtemp/model.pklfromcellignerimportCellignermy_alligner=Celligner()my_alligner.load('temp/model.pkl')We fit the model with CCLE and then transform TCGA. But you can decide differently.For example: If you want to see how some of your newly sequenced tumors mapped to the CCLE (and TCGA) dataset, just load the model as displayed above and then run:my_alligner.addTotransform(your_tpm,your_annotations)my_alligner.plot()This way you will not rerun the entire model.Seedocs/Celligner_demo.[html|pdf]for other examples of usage.
(viewhere)Multidataset alignmentDeedocs/Celligner_demo.[html|pdf]for an example of usage.
(viewhere)One can use addToFit(), addToPredict() depending on whether they want to align their dataset to another or align another dataset to theirs.If you have a very small dataset and want to align to CCLE or CGA, use the parameterdoAdd=Truein order to not rerun the entire pipeline and use cached information.R CellignerFor the original R version of celligner, please check the R/README.md file here:https://github.com/broadinstitute.org/celligner/tree/master/R/README.mdPlease usegithub issuesfor any problem related to the tool.Initial Project:Allie Warren @awarrenMaintainer:Jérémie Kalfon @jkobject