-
Minor tutorial improvements.
-
Remove non-standard symbols from description.
-
Changed the way that
max
rank is imputed when NAs are presented, or whenreturn_all
is true. Essentially,RobustRankAggregate
will use the max rank in the matrix, rather than the size of the dataframe. -
Fixed a bug related to newer versions of CellChat with unused argument #75
-
Bumped
cell2cell
to its latest0.6.8
version. -
LIANA's
source
andtarget
will not inherit the levels ofidents_col
#99
- Added
rank_aggregate
to generate both specificity and magnitude rank aggregates. Essentially runsliana_aggregate
twice with differentaggregate_how
parameters and joins. - Added
invert_specificity
,invert_magnitude
,invert_function
parameters toliana_dotplot
. - Added
decompose_tensor
as a function to run only the decomposition on a pre-built Tensor. - Aggregation can now be performed also via
liana_bysample
, takesaggregate_how
parameter, which allowsmagnitude
,specificity
, orboth
. - Added
preprocess_scores
function that handles the conversion of liana's scores to Tensor format. - Added additional tests related to Tensor-cell2cell
- Fixed issue with sample_col in
liana_tensor
functions - Removed redundant scconnect code
- Merged #89 to fix typo in
liana_aggregate
documentation - Fix bug with column duplicates in
cellchat_formatDB
. - passing "all" to
select_resource
will now only return human resources. - add minor condition improvements to
liana_wrap
PR#92
- Fixed issues in the
generate_lr_geneset
function, and other typos and by mistake hardcoded values. - Bumped up the version of Tensor-cell2cell to the latest one, and it will now return error values that could be used to estimate the elbow curve.
- Added an example of the elbow plot used to guide the number of ranks to be considered.
- Extended options by which the cell2cell module can be loaded.
- Fixed an issue where
return_all
was being passed to external methods - Added an example elbow curve in the tensor tutorial.
- LIANA's doplot will now keep the order of the original dataframe passed to it.
-
return_all
parameter was included toliana_wrap
.return_all
enables the return of all interactions by liana, not only the ones that pass theexpr_prop
threshold. Those that don't pass the threshold are assigned the worst possible score, and alrs.to.keep
flag that indicates whether the interaction passed the threshold. -
supp_columns
was included toliana_wrap
, which allows additional columns to be added to the output of any method.
- Min prop for complexes is now explicitly assigned to the minimum expr. prop. across all subunits This deals with edge cases with non-expression ligand/receptor scores (e.g. z-score) where the lower score subunit is the one with higher expression proportion. Hence, this is intended to make all methods consistent according to which interactions are returned, regardless of which subunit has the lower score.
aggregate_how
parameter added toliana_aggregate
to allow the aggregation by specificity and magnitude scores.
- Untargeted between-condition (context/sample) decomposition of cell-cell
communication latent patterns /w
tensor_cell2cell
. Makes use ofbasilisk
to automatically set-up a conda env for liana. - added
min_cells
parameter toliana_wrap
, to exclude any cell identity which does not pass a minimum cells threshold.
- Mouse Consensus resource is now provided by default.
- The intracellular OmniPath vignette was removed. An updated and more user-friendly one will be provided in next updates. In the meantime, the old one can still be downloaded from drive
- Source and Target titles are now plotted by the
liana_dotplot
- added explicit error if
idents_col
was not found in metadata/colData
-
Changed the way ties are handles in liana_aggregate. Namely, I previously assigned the minimum rank, but this resulted in ties getting lower p-values than they should, particularly for scores with a lot of ties (e.g. CPDB p-value).
-
Fixed an issue where some subunits of 0
expr_prop
would not get filtered. This was observed due to previous changes to.filt_liana_pipe
in 0.1.6, where some subunits were filtered beforerecomplexifying
. -
Fixed an issue in which some NATMI complexes would be missing due to
recomplexify
being done on both .expr and .sum columns. These are now seperated intocolumns
, which are the ones for which I account for complexes, andadd_cols
, the ones that are additional - no need to account for complexes (e.g. alsoglobal_mean
).
- I now refer to SCPubr in liana's tutorial.
- Throw exception for NAs in cell idents ` Remove duplicated rows from orthologous resource
- I now refer to SCpubr in the tutorial for more advanced plots.
-
Fixed an issue where interactions with complexes will not filtered be according to
expr_prop
for some methods. I now filter twice - once via.filt_liana_pipe
for computational speed, and once afterrecomplexify
to also remove the complexes withexpr_prop
<= X. Will now also filtercrosstalk_scores
toexpr_prop
. -
In the edgecase of complexes with subunits with equal expression, LIANA's internal methods will not arbitrarily discard duplicate complex interactions.
-
Will now return
expr_prop
for each method. Note that this information is discarded byliana_aggregate
. -
liana_doplot
function is now more explicit in the way interactions are selected. Will now taketopn
and return the highest ranked interactions. Size of dots is also more distinguishable by default and the user can now pass a customizable value for the size range. -
Added a
rank_method
helper function to rank single methods according tospecificity
and magnitude. -
Removed ~20 bad quality interactions from the
Consensus
resource. -
Minor changes on filtering SCE object in
liana_pipe
to ensure all complex subunits are present in the sce
-
Re-implemented the
RRA
method from Kolde et al., 2012, as a consequence of the removal of theRobustRankAggregate
package from CRAN. -
Integrate
generate_homologs
with OmniPath'shomologene
database. This allows homology conversion by simply passing an organism ID. Also, handles complicated cases, such as complex subunits with one-to-many mapping homologs.
-
Add
prod_weight
to NATMI's score. This is the weight that both Connectome and NATMI suggest for between-condition comparisons. Add NATMI to the housekeeping aggregate ranking. -
Enable weighing of interactions by cell pairs (using a DF in which each cell pair has an assigned weight). This would typically be done by spatial constraints, etc. These weights can also be used to mask any cell-pair interactions which are not relevant (by assigning weights of 0). This currently assumes that the weights would be between 0 to 1 - to be extended. Tutorial on this /w appropriate spatial weight generation to be written.
- By default, the base for logFC will now be automatically assigned depending
on the object passed to LIANA, i.e.
.antilog1m
for SCE will use 2 as base, and Euler's number for Seurat. One could also pass the base they wish to use vialiana_wrap
. - Automate website deployment to gh-pages and run R checks on push.
-
Changed the aggregation columns of
liana_aggregate
, as in some cases methods would assign different subunits as the minimum, which results in redundancies for the same complex. As such,liana_aggregate
will now return only the complex columns, nevertheless, the methods will still return both the minimum (lowest expressed subunit) and it's corresponding complex. -
base
used to calculate logFC (viaget_log2FC
) can now be passed as a parameter toliana_wrap
vialiana_pipe.params
. PassingNaN
to base would result in log2FC calculation using the raw counts without any pre-processing (e.g. no batch correction, etc).
The base is by default set to 2, assuming that log2 transformation is performed following library size normalization, and thus preserving the normalization, while reverting back to ~counts.
- Extended the heatmap to allow filtering down to certain cell types.
- Removed redundant/leftover code
- A chord plot for interaction frequncies was included.
- Frequency Heatmap available via the
heat_freq
functions, added due to being common requests. This heatmap was inspired by CellPhoneDB and CellChat.
- Extended basic tutorial to accommodate new heatmap plots.
- Allow labels to be passed to
liana_dotplot
- Cleaned up docs, dependencies, examples, and warnings
- Change the order of non-expressed genes and empty droplet filtering.
I now appropriately filter cells in the
sce
object after limiting the gene universe to ligands and receptors in the resource.
-
Appropriately pass
verbose
to.filter_sce
-
Silence expected warning in
cellchat_formatDB
- For
logFC_mean
, rather than normalizing the counts by library size, I instead inverse log the counts and use those to calculate log2FC. This is to preserve any prior correction of the counts, i.e. mainly for consistency with the rest of the methods.
-
Flipped
x
andy
axes dotplot according to feedback. -
Added
.default_fun
parameter togenerate_orthologues
-
Minor code clean up
-
Added
examples
to main exported functions docs -
Removed several low quality interactions from the
Consensus
resource -
CellChat will now work with the simplified format of intercell (i.e. Consensus resource).
-
CellChat and Squidpy should now be called using
call_cellchat
andcall_squidpy
, respectively.
- We now provide a tutorial dedicated to
orthology conversion
of the resources in LIANA
LIANA will now check if:
-
There is enough of a gene intesect between the resource and the data (i.e. if they are both for human)
-
There are negative counts
-
An assay with normalized counts was been provided (i.e. if the data/logcounts slot is scaled).
-
LIANA will now convert non-sparse matrices to sparse.
- Reduced dependencies (specifically
Seurat
andOmniPathR
)
- testthat tests external methods only if requested explicitly
- Readme updated - clarified and accordingly describes the
Consensus
resource as default
idents_col
is can now be explicitly passed toliana_wrap
, if not provided defaults to the active idents/colLabels for SCE and Seurat, respectively.verbose
param allows to omit any messages and warnings from LIANAassay
can now be passed explicitly when working with a Seurat object, defaults to the active one otherwise
-
LIANA will now use the
Consensus
resource by default. This is a highly-literature supported resource, generated using similar filtering steps as the 'OmniPath' (old default) resource. This resource is similar in size (~4,700 interactions), but contains a higher complex and curation content. -
All resources might show some very minor changes related to an update of UniProt IDs and homology-conversion improvements.
-
LIANA now uses
mean0
to account for heteromeric complexes, i.e. the mean is computed, unless there is a value of 0, then 0 is returned. This means that any complex, the subunit of which is not expressed is filtered. LIANA now also appropriately accepts any custom function to account for complexes. -
liana_aggregate
now groups by ligand.complex and receptor.complex as well as the subunits, and hence returns a all of those columns
-
Added option to show complexes on dotplot and is now the default option
-
Documentation improvements
-
decomplexify
function is now exported -
liana_aggregate
will no longer return a median_rank, it's largely redundant. -
re-arranged the column order of
liana_aggregate
due to the addition of .complex columns -
Replaced min0 (used to obtain closest to 0 value) to min -> relevant for z-scores used in Connectome.
-
Complexes with missing subunits are not correctly assigned as 'missing' and hence filtered/treated as non-expressed.
-
Fixed a bug where LIANA will return the minimum subunit expression, instead of the mean for some methods. This stemmed from not properly passing the incorrect
complex_policy
to certain methods, i.e. they were getting a hard-coded value instead. -
Remove
decomplexify
logical fromliana_call
andliana_pipe
-> redundant. -
edge case fix: liana_aggregate should now rank interactions with the same subunits, but coming from different complexes seperately
-
LIANA has now been optimized in terms of RAM, by swapping all internal function to rely solely on the BioConductor single-cell framework (for all internal methods).
-
LIANA now accepts both
SingleCellExperiment
andSeurat
objects as input. -
added
liana_dotplot
as a basic, but flexible, dotplot function for LIANA output. (+ tests)
-
LIANA will now perform a basic filtering step, where all genes and cells with 0 summed counts are removed.
-
global_mean
is now calculated in a more efficient manner. -
assay.type
inliana_pipe
was passed toget_logFC
would result in using the logcounts, rather than the library-normalized counts.
- Fixed a bug where incorrectly passing method names in different cases results in an error.
- External LIANA methods (i.e.
call_
) are now deprecated. The pipelines will be maintained solely for power users, who intend to benchmark the original implementations, but will not be the focus of any downstream analyses. These will be solely developed for the internal (or re-implemented methods). These still rely on aSeuratObject
as interface, but will now accept both sce and seurat as input.
-
I now filter the Crosstalk scores to include only those > 0. Otherwise, LIANA would return all possible combinations of clusters and interactions, which would be simply NAs and 0s for Crosstalk scores. Should do the same for Connectome (>0).
-
CellChat
and Crosstalk scores/cytotalk
will no longer by called by default by liana_wrap. However, it both are available as an option to be passed to themethod
parameter. -
I now filter all methods by
expr_prop
. This is done in a slightly different manner for Connectome's scaled weights and crosstalk scores, since they require all pairs/clusters to be present to appropriately calculate their scores. Thus, for them we filter after we calculate the scores, while for the others methods we pre-filter. -
We now provide a tutorial how to make use of intracellular OmniPath as well as how to combine LIANA with NicheNet
-
The OmniPath resource had a major update.
-
CellCall
andCellinker
resources were added, while talklr was removed. The OmniPath resources itself was filtered further and 1,000 lower quality interactions were excluded. Further improvements were made to all resources, most of which were minor. Changes worth mentioning were made to ICELLNET (updated to latest resource version), CellPhoneDB (was filtered for ambigous interactions), and CellChatDB was filtered for mislaballed interactions.
-
The R re-implementation of CellPhoneDBv2's permutation algorithm was optimized to work with sparse matrices (and is now uqicker), and set as the default option in LIANA (replacing the re-implementation of the same algorithm from squidpy)
-
Custom proportion filtering - Connectome and CytoTalk are now not filtered by expr_prop as this affects the way that their scores are calculated, since they require all clusters/cluster pairs to be present to appropriately scale or normalize their scores.
- Fixed an issue where logFC was assigned only the value of the ligand
Crosstalk scores
inspired by Cytotalk were added. In contrast to the CytoTalk, in our calculation CTS with ligand or receptor with PEM of 0 are assigned 0 CTS. Furthermore, we use the inverse of the non-self-talk scores calculated in CytoTalk to also allow for autocrine signalling interactions, and thus make Crosstalk scores comparable to the rest of the methods in LIANA. Finally, as part of LIANA, CytoTalk's re-implemented scores would not take account of complexes and we also apply liana-specifc filtering such as according toexpr_prop
. Worth noting, we only re-implement the cross-talk scores, but we don't include the intracellular part of Cytotalk.
- Changed
expr_thresh
to 0.1, based on lack of improvement in performance when using 0.2, hence opted out for the less conservative threshold as default - Changed the way that default parameters are passed to each method
- Enabled housekeeping score aggregation for external methods (needed for revisions) via
.score_housekeep
- Fixed Bug where external methods could not be called with their default DB. The resource is now always decomplexified
- Seurat Testdata is now properly normalized
- liana_aggragate will now by defaul dissociate complexe for CellChat Complexes
- Added tests for changes
liana_wrap
and liana_aggragate
as the two highest level functions to run all the methods in liana and aggragate them, respectively.
- logFC
- NATMI specificity edges
- Connectome scaled_weights
- CellPhoneDB algorithm
- SingleCellSignalR LRScore
each called via liana_call
, which leverages the statistics provided by liana_pipe
,
-
Not re-implemented method score names now start with
call_*
-
decomplexify
andrecomplexify
as functions used to dissociate complexes in resources and account for complexes of the re-implemented methods above -
liana_aggragate
- a handy wrapper to aggregate results -
LIANA
andLIANA++
are now the user-friendly and benchmark version of LIANA, respectively -
A webpage with vignettes showing the validity of the re-implemented methods, a developer/benchmark-focused vignette, and a vignette to customize OmniPath
A number of fixes were implemented thanks to the early stage users. Thanks you.