The AIDO.Tissue model is develpoed on spatial single-cell transcriptomic data. To incorporate spatial cell information, K nearest neighbor cells (K=8 in our case) are retrieved for each center cell. The center cell and neighbor cell expression vectors are concatenated as model input. Two-dimension positional rotary embedding are introduced to encode both the gene and cell information. The first dim is gene index and second dim is cell index. The overall training scheme is similar to scFoundation with an asymmetric encoder-decoder architecture.
Results
We evelauted the model on two spatial data task, including predicting niche label and cell density. Please refer to
AIDO.tissue-downstream-tasks
for more details. Below shows the brief description and evaluation metrics.
niche label type prediction: the task is to predict niche type of each cell given spatial expression data (in total 6 types).
Model
F1-score
AIDO.Tissue
0.67
Nicheformer
0.50
cell density prediction: the task is to predict neighbor cell number of a target cell given the expression profiles.
Task
Mean absolute error
R square
AIDO.Tissue
4.44
0.55
Nicheformer
7.08
-0.07
Finetuning AIDO.Tissue for spatial single cell downstream tasks
We introduce how to finetune and evaluate our pre-trained AIDO.Tissue foundation models for downstream tasks. These tasks can be classified into the following categories:
Cell-level classification tasks
: niche label type prediction
Cell-level regression tasks
: cell density prediction
Note: All the following scripts should be run under
ModelGenerator/
.
Download data
The related data is deposited at
https://huggingface.co/datasets/genbio-ai/tissue-downstream-tasks
. Please download the data and put under
ModelGenerator/downloads
as
cell_density
or
niche_type_classification
. Under each sub-directory, there are three files denote different split (xx.train.h5ad, xx.val.h5ad, xx.test.h5ad).
For each
.h5ad
, several obs attributes should be included to reprezent the spatial (coordinate) information (like
x
,
y
), the label information (like
niche_label
). All the column fields will be specified in the following
config.yaml
file.
Note: the file
scRNA_genename_and_index.tsv
includes all the corresponding gene name and index in h5ad file.
Cell-level classification tasks
niche label type prediction
We fully finetune AIDO.Tissue for niche label type prediction.
Finetuning script
CUDA_VISIBLE_DEVICES=7 nohup mgen fit --config experiments/AIDO.Tissue/niche_type_classfification.yaml > logs/nohup/AIDO.Tissue.niche_type_classfification.yaml.log 2>&1 &
Note:
The
filter_columns
includes label column and spatial coordinate column.
rename_columns
keep unchanged and will be used for running.
Evaluation script
Once finished run, there will be several
ckpt
file under the specified output directory
default_root_dir
. Then we can use the
ckpt
to evaluate on test dataset.
The config file is like
experiments/AIDO.Tissue/cell_density_regression.yaml
, all the fintuning running and evaluation are similar as classification task.
Dump embedding
We can dump embedding for a
.h5ad
file. The script is as:
The output file will be under specified
output_dir
like
./logs/emb.xenium/lightning_logs/pred_output
. Each batch will be saved and a merged one will also be generated as
predict_predictions.pt
. The
predict_predictions.pt
file satcks all batches:
>>> import torch>>> file_all = 'predict_predictions.pt'>>> d_all = torch.load(file_all, map_location='cpu')>>> d_all.keys()
dict_keys(['predictions', 'ids'])
>>> len(d_all['predictions']) # this equal to #sample
586
>>> len(d_all['ids']) # ids are numeric index corresponding to .h5ad file
586
>>> d_all['predictions'].shape # (B, L, D), L is max sequence length of all samples
torch.Size([586, 90, 128])
We can retrieve all the gene embedding and aggregate into cell embedding (like max pooling):
>>> d_all_maxpooling = [d_all['predictions'][i,:,:] for i in range(d_all['predictions'].shape[0])]
>>> d_all_maxpooling = [i[~torch.any(i.isnan(), dim=1)] for i in d_all_maxpooling]
>>> d_all_maxpooling = torch.cat([i.max(dim=0)[0].view(1,-1) for i in d_all_maxpooling])
>>> d_all_maxpooling.shape
torch.Size([586, 128])
Runs of genbio-ai AIDO.Tissue-60M on huggingface.co
11
Total runs
0
24-hour runs
1
3-day runs
7
7-day runs
7
30-day runs
More Information About AIDO.Tissue-60M huggingface.co Model
AIDO.Tissue-60M huggingface.co
AIDO.Tissue-60M huggingface.co is an AI model on huggingface.co that provides AIDO.Tissue-60M's model effect (), which can be used instantly with this genbio-ai AIDO.Tissue-60M model. huggingface.co supports a free trial of the AIDO.Tissue-60M model, and also provides paid use of the AIDO.Tissue-60M. Support call AIDO.Tissue-60M model through api, including Node.js, Python, http.
AIDO.Tissue-60M huggingface.co is an online trial and call api platform, which integrates AIDO.Tissue-60M's modeling effects, including api services, and provides a free online trial of AIDO.Tissue-60M, you can try AIDO.Tissue-60M online for free by clicking the link below.
genbio-ai AIDO.Tissue-60M online free url in huggingface.co:
AIDO.Tissue-60M is an open source model from GitHub that offers a free installation service, and any user can find AIDO.Tissue-60M on GitHub to install. At the same time, huggingface.co provides the effect of AIDO.Tissue-60M install, users can directly use AIDO.Tissue-60M installed effect in huggingface.co for debugging and trial. It also supports api for free installation.