pip install celltypist==1.6.1
Collecting celltypist==1.6.1 Obtaining dependency information for celltypist==1.6.1 from https://files.pythonhosted.org/packages/8f/d8/f60e2df761a08bff1260a83dc9543a2f72364d7cda909eab174d69e216be/celltypist-1.6.1-py3-none-any.whl.metadata Downloading celltypist-1.6.1-py3-none-any.whl.metadata (43 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.7/43.7 kB 3.1 MB/s eta 0:00:00 Requirement already satisfied: numpy>=1.19.0 in /opt/conda/lib/python3.10/site-packages (from celltypist==1.6.1) (1.23.5) Requirement already satisfied: pandas>=1.0.5 in /opt/conda/lib/python3.10/site-packages (from celltypist==1.6.1) (2.0.3) Requirement already satisfied: scikit-learn>=0.24.1 in /opt/conda/lib/python3.10/site-packages (from celltypist==1.6.1) (1.3.0) Collecting openpyxl>=3.0.4 (from celltypist==1.6.1) Downloading openpyxl-3.1.2-py2.py3-none-any.whl (249 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 250.0/250.0 kB 13.8 MB/s eta 0:00:00 Requirement already satisfied: click>=7.1.2 in /opt/conda/lib/python3.10/site-packages (from celltypist==1.6.1) (8.1.6) Requirement already satisfied: requests>=2.23.0 in /opt/conda/lib/python3.10/site-packages (from celltypist==1.6.1) (2.31.0) Requirement already satisfied: scanpy>=1.7.0 in /opt/conda/lib/python3.10/site-packages (from celltypist==1.6.1) (1.9.5) Requirement already satisfied: leidenalg>=0.9.0 in /opt/conda/lib/python3.10/site-packages (from celltypist==1.6.1) (0.10.1) Requirement already satisfied: igraph<0.11,>=0.10.0 in /opt/conda/lib/python3.10/site-packages (from leidenalg>=0.9.0->celltypist==1.6.1) (0.10.8) Collecting et-xmlfile (from openpyxl>=3.0.4->celltypist==1.6.1) Downloading et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB) Requirement already satisfied: python-dateutil>=2.8.2 in /opt/conda/lib/python3.10/site-packages (from pandas>=1.0.5->celltypist==1.6.1) (2.8.2) Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.10/site-packages (from pandas>=1.0.5->celltypist==1.6.1) (2023.3.post1) Requirement already satisfied: tzdata>=2022.1 in /opt/conda/lib/python3.10/site-packages (from pandas>=1.0.5->celltypist==1.6.1) (2023.3) Requirement already satisfied: charset-normalizer<4,>=2 in /opt/conda/lib/python3.10/site-packages (from requests>=2.23.0->celltypist==1.6.1) (3.2.0) Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.10/site-packages (from requests>=2.23.0->celltypist==1.6.1) (3.4) Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/conda/lib/python3.10/site-packages (from requests>=2.23.0->celltypist==1.6.1) (1.26.16) Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.10/site-packages (from requests>=2.23.0->celltypist==1.6.1) (2023.7.22) Requirement already satisfied: anndata>=0.7.4 in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (0.9.2) Requirement already satisfied: matplotlib>=3.4 in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (3.7.2) Requirement already satisfied: scipy>=1.4 in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (1.11.1) Requirement already satisfied: seaborn in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (0.12.2) Requirement already satisfied: h5py>=3 in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (3.9.0) Requirement already satisfied: tqdm in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (4.66.1) Requirement already satisfied: statsmodels>=0.10.0rc2 in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (0.14.0) Requirement already satisfied: patsy in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (0.5.3) Requirement already satisfied: networkx>=2.3 in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (3.1) Requirement already satisfied: natsort in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (8.4.0) Requirement already satisfied: joblib in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (1.3.1) Requirement already satisfied: numba>=0.41.0 in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (0.57.1) Requirement already satisfied: umap-learn>=0.3.10 in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (0.5.4) Requirement already satisfied: packaging in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (23.1) Requirement already satisfied: session-info in /opt/conda/lib/python3.10/site-packages (from scanpy>=1.7.0->celltypist==1.6.1) (1.0.0) Requirement already satisfied: threadpoolctl>=2.0.0 in /opt/conda/lib/python3.10/site-packages (from scikit-learn>=0.24.1->celltypist==1.6.1) (3.2.0) Requirement already satisfied: texttable>=1.6.2 in /opt/conda/lib/python3.10/site-packages (from igraph<0.11,>=0.10.0->leidenalg>=0.9.0->celltypist==1.6.1) (1.6.7) Requirement already satisfied: contourpy>=1.0.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy>=1.7.0->celltypist==1.6.1) (1.1.0) Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy>=1.7.0->celltypist==1.6.1) (0.11.0) Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy>=1.7.0->celltypist==1.6.1) (4.42.0) Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy>=1.7.0->celltypist==1.6.1) (1.4.4) Requirement already satisfied: pillow>=6.2.0 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy>=1.7.0->celltypist==1.6.1) (10.0.0) Requirement already satisfied: pyparsing<3.1,>=2.3.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy>=1.7.0->celltypist==1.6.1) (3.0.9) Requirement already satisfied: llvmlite<0.41,>=0.40.0dev0 in /opt/conda/lib/python3.10/site-packages (from numba>=0.41.0->scanpy>=1.7.0->celltypist==1.6.1) (0.40.1) Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas>=1.0.5->celltypist==1.6.1) (1.16.0) Requirement already satisfied: pynndescent>=0.5 in /opt/conda/lib/python3.10/site-packages (from umap-learn>=0.3.10->scanpy>=1.7.0->celltypist==1.6.1) (0.5.10) Requirement already satisfied: tbb>=2019.0 in /opt/conda/lib/python3.10/site-packages (from umap-learn>=0.3.10->scanpy>=1.7.0->celltypist==1.6.1) (2021.10.0) Requirement already satisfied: stdlib-list in /opt/conda/lib/python3.10/site-packages (from session-info->scanpy>=1.7.0->celltypist==1.6.1) (0.9.0) Downloading celltypist-1.6.1-py3-none-any.whl (7.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.3/7.3 MB 98.1 MB/s eta 0:00:00:00:0100:01 Installing collected packages: et-xmlfile, openpyxl, celltypist Successfully installed celltypist-1.6.1 et-xmlfile-1.1.0 openpyxl-3.1.2 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv Note: you may need to restart the kernel to use updated packages.
pip install scanpy
Requirement already satisfied: scanpy in /opt/conda/lib/python3.10/site-packages (1.9.5) Requirement already satisfied: anndata>=0.7.4 in /opt/conda/lib/python3.10/site-packages (from scanpy) (0.9.2) Requirement already satisfied: numpy>=1.17.0 in /opt/conda/lib/python3.10/site-packages (from scanpy) (1.23.5) Requirement already satisfied: matplotlib>=3.4 in /opt/conda/lib/python3.10/site-packages (from scanpy) (3.7.2) Requirement already satisfied: pandas>=1.0 in /opt/conda/lib/python3.10/site-packages (from scanpy) (2.0.3) Requirement already satisfied: scipy>=1.4 in /opt/conda/lib/python3.10/site-packages (from scanpy) (1.11.1) Requirement already satisfied: seaborn in /opt/conda/lib/python3.10/site-packages (from scanpy) (0.12.2) Requirement already satisfied: h5py>=3 in /opt/conda/lib/python3.10/site-packages (from scanpy) (3.9.0) Requirement already satisfied: tqdm in /opt/conda/lib/python3.10/site-packages (from scanpy) (4.66.1) Requirement already satisfied: scikit-learn>=0.24 in /opt/conda/lib/python3.10/site-packages (from scanpy) (1.3.0) Requirement already satisfied: statsmodels>=0.10.0rc2 in /opt/conda/lib/python3.10/site-packages (from scanpy) (0.14.0) Requirement already satisfied: patsy in /opt/conda/lib/python3.10/site-packages (from scanpy) (0.5.3) Requirement already satisfied: networkx>=2.3 in /opt/conda/lib/python3.10/site-packages (from scanpy) (3.1) Requirement already satisfied: natsort in /opt/conda/lib/python3.10/site-packages (from scanpy) (8.4.0) Requirement already satisfied: joblib in /opt/conda/lib/python3.10/site-packages (from scanpy) (1.3.1) Requirement already satisfied: numba>=0.41.0 in /opt/conda/lib/python3.10/site-packages (from scanpy) (0.57.1) Requirement already satisfied: umap-learn>=0.3.10 in /opt/conda/lib/python3.10/site-packages (from scanpy) (0.5.4) Requirement already satisfied: packaging in /opt/conda/lib/python3.10/site-packages (from scanpy) (23.1) Requirement already satisfied: session-info in /opt/conda/lib/python3.10/site-packages (from scanpy) (1.0.0) Requirement already satisfied: contourpy>=1.0.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy) (1.1.0) Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy) (0.11.0) Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy) (4.42.0) Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy) (1.4.4) Requirement already satisfied: pillow>=6.2.0 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy) (10.0.0) Requirement already satisfied: pyparsing<3.1,>=2.3.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy) (3.0.9) Requirement already satisfied: python-dateutil>=2.7 in /opt/conda/lib/python3.10/site-packages (from matplotlib>=3.4->scanpy) (2.8.2) Requirement already satisfied: llvmlite<0.41,>=0.40.0dev0 in /opt/conda/lib/python3.10/site-packages (from numba>=0.41.0->scanpy) (0.40.1) Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.10/site-packages (from pandas>=1.0->scanpy) (2023.3.post1) Requirement already satisfied: tzdata>=2022.1 in /opt/conda/lib/python3.10/site-packages (from pandas>=1.0->scanpy) (2023.3) Requirement already satisfied: threadpoolctl>=2.0.0 in /opt/conda/lib/python3.10/site-packages (from scikit-learn>=0.24->scanpy) (3.2.0) Requirement already satisfied: six in /opt/conda/lib/python3.10/site-packages (from patsy->scanpy) (1.16.0) Requirement already satisfied: pynndescent>=0.5 in /opt/conda/lib/python3.10/site-packages (from umap-learn>=0.3.10->scanpy) (0.5.10) Requirement already satisfied: tbb>=2019.0 in /opt/conda/lib/python3.10/site-packages (from umap-learn>=0.3.10->scanpy) (2021.10.0) Requirement already satisfied: stdlib-list in /opt/conda/lib/python3.10/site-packages (from session-info->scanpy) (0.9.0) WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv Note: you may need to restart the kernel to use updated packages.
pip install numpy==1.24.0
Collecting numpy==1.24.0 Downloading numpy-1.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.3/17.3 MB 86.2 MB/s eta 0:00:0000:0100:01 Installing collected packages: numpy Attempting uninstall: numpy Found existing installation: numpy 1.23.5 Uninstalling numpy-1.23.5: Successfully uninstalled numpy-1.23.5 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. seaborn 0.12.2 requires numpy!=1.24.0,>=1.17, but you have numpy 1.24.0 which is incompatible. ydata-profiling 4.4.0 requires numpy<1.24,>=1.16.0, but you have numpy 1.24.0 which is incompatible. Successfully installed numpy-1.24.0 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv Note: you may need to restart the kernel to use updated packages.
import celltypist
from celltypist import models
import scanpy as sc
import pandas as pd
import numpy as np
import anndata
import re
import h5py
import scipy.sparse as scs
import concurrent.futures
def read_mat(h5_con):
mat = scs.csc_matrix(
(h5_con['matrix']['data'][:], # Count values
h5_con['matrix']['indices'][:], # Row indices
h5_con['matrix']['indptr'][:]), # Pointers for column positions
shape = tuple(h5_con['matrix']['shape'][:]) # Matrix dimensions
)
return mat
# define a function to obeservation (i.e. metadata)
def read_obs(h5con):
bc = h5con['matrix']['barcodes'][:]
bc = [x.decode('UTF-8') for x in bc]
# Initialized the DataFrame with cell barcodes
obs_df = pd.DataFrame({ 'barcodes' : bc })
# Get the list of available metadata columns
obs_columns = h5con['matrix']['observations'].keys()
# For each column
for col in obs_columns:
# Read the values
values = h5con['matrix']['observations'][col][:]
# Check for byte storage
if(isinstance(values[0], (bytes, bytearray))):
# Decode byte strings
values = [x.decode('UTF-8') for x in values]
# Add column to the DataFrame
obs_df[col] = values
return obs_df
# define a function to construct anndata object from a h5 file
def read_h5_anndata(h5_file):
h5_con = h5py.File(h5_file, mode = 'r')
# extract the expression matrix
mat = read_mat(h5_con)
# extract gene names
genes = h5_con['matrix']['features']['name'][:]
genes = [x.decode('UTF-8') for x in genes]
# extract metadata
obs_df = read_obs(h5_con)
# construct anndata
adata = anndata.AnnData(mat.T,
obs = obs_df)
# make sure the gene names aligned
adata.var_names = genes
adata.var_names_make_unique()
return adata
def get_last_pattern(inputstr):
pattern = r"[^/]+(?=$)"
match = re.search(pattern, inputstr)
if match:
return match.group(0)
else:
return ""
meta_data=pd.read_csv("hise_meta_data_2023-11-19.csv")
models.download_models(force_update = True)
📜 Retrieving model list from server https://celltypist.cog.sanger.ac.uk/models/models.json 📚 Total models in list: 44 📂 Storing models in /root/.celltypist/data/models 💾 Downloading model [1/44]: Immune_All_Low.pkl 💾 Downloading model [2/44]: Immune_All_High.pkl 💾 Downloading model [3/44]: Adult_CynomolgusMacaque_Hippocampus.pkl 💾 Downloading model [4/44]: Adult_Human_PancreaticIslet.pkl 💾 Downloading model [5/44]: Adult_Human_Skin.pkl 💾 Downloading model [6/44]: Adult_Mouse_Gut.pkl 💾 Downloading model [7/44]: Adult_Mouse_OlfactoryBulb.pkl 💾 Downloading model [8/44]: Adult_Pig_Hippocampus.pkl 💾 Downloading model [9/44]: Adult_RhesusMacaque_Hippocampus.pkl 💾 Downloading model [10/44]: Autopsy_COVID19_Lung.pkl 💾 Downloading model [11/44]: COVID19_HumanChallenge_Blood.pkl 💾 Downloading model [12/44]: COVID19_Immune_Landscape.pkl 💾 Downloading model [13/44]: Cells_Fetal_Lung.pkl 💾 Downloading model [14/44]: Cells_Intestinal_Tract.pkl 💾 Downloading model [15/44]: Cells_Lung_Airway.pkl 💾 Downloading model [16/44]: Developing_Human_Brain.pkl 💾 Downloading model [17/44]: Developing_Human_Gonads.pkl 💾 Downloading model [18/44]: Developing_Human_Hippocampus.pkl 💾 Downloading model [19/44]: Developing_Human_Organs.pkl 💾 Downloading model [20/44]: Developing_Human_Thymus.pkl 💾 Downloading model [21/44]: Developing_Mouse_Brain.pkl 💾 Downloading model [22/44]: Developing_Mouse_Hippocampus.pkl 💾 Downloading model [23/44]: Fetal_Human_AdrenalGlands.pkl 💾 Downloading model [24/44]: Fetal_Human_Pancreas.pkl 💾 Downloading model [25/44]: Fetal_Human_Pituitary.pkl 💾 Downloading model [26/44]: Fetal_Human_Retina.pkl 💾 Downloading model [27/44]: Fetal_Human_Skin.pkl 💾 Downloading model [28/44]: Healthy_Adult_Heart.pkl 💾 Downloading model [29/44]: Healthy_COVID19_PBMC.pkl 💾 Downloading model [30/44]: Healthy_Human_Liver.pkl 💾 Downloading model [31/44]: Healthy_Mouse_Liver.pkl 💾 Downloading model [32/44]: Human_AdultAged_Hippocampus.pkl 💾 Downloading model [33/44]: Human_Developmental_Retina.pkl 💾 Downloading model [34/44]: Human_Embryonic_YolkSac.pkl 💾 Downloading model [35/44]: Human_IPF_Lung.pkl 💾 Downloading model [36/44]: Human_Longitudinal_Hippocampus.pkl 💾 Downloading model [37/44]: Human_Lung_Atlas.pkl 💾 Downloading model [38/44]: Human_PF_Lung.pkl 💾 Downloading model [39/44]: Lethal_COVID19_Lung.pkl 💾 Downloading model [40/44]: Mouse_Dentate_Gyrus.pkl 💾 Downloading model [41/44]: Mouse_Isocortex_Hippocampus.pkl 💾 Downloading model [42/44]: Mouse_Postnatal_DentateGyrus.pkl 💾 Downloading model [43/44]: Nuclei_Lung_Airway.pkl 💾 Downloading model [44/44]: Pan_Fetal_Human.pkl
def process_data(meta_data_sub):
# Process the subset of meta_data
results = []
for file_name in meta_data_sub:
result = read_h5_anndata(file_name)
results.append(result)
adata = anndata.concat(results)
del results
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
adata.obs.index = adata.obs['barcodes']
predictions = celltypist.annotate(adata, model='Immune_All_Low.pkl', majority_voting=True)
for i in adata.obs['pbmc_sample_id'].unique():
barcodes=adata.obs[adata.obs['pbmc_sample_id'] == i].index.tolist()
predictions.predicted_labels.loc[barcodes,:].to_csv("Labels_Celltypist/" + i + "_Low.csv")
predictions = celltypist.annotate(adata, model='Immune_All_High.pkl', majority_voting=True)
for i in adata.obs['pbmc_sample_id'].unique():
barcodes=adata.obs[adata.obs['pbmc_sample_id'] == i].index.tolist()
predictions.predicted_labels.loc[barcodes,:].to_csv("Labels_Celltypist/" + i + "_High.csv")
predictions = celltypist.annotate(adata, model='Healthy_COVID19_PBMC.pkl', majority_voting=True)
for i in adata.obs['pbmc_sample_id'].unique():
barcodes=adata.obs[adata.obs['pbmc_sample_id'] == i].index.tolist()
predictions.predicted_labels.loc[barcodes,:].to_csv("Labels_Celltypist/" + i + "_Covid_Healthy.csv")
del adata
if __name__ == '__main__':
# Divide the meta_data into subsets
meta_data_subsets = [meta_data["file.path"][i:i+10] for i in range(0, len(meta_data), 10)]
# Process each subset in parallel
with concurrent.futures.ProcessPoolExecutor(max_workers=11) as executor:
futures = [executor.submit(process_data, meta_data_sub) for meta_data_sub in meta_data_subsets]
for future in concurrent.futures.as_completed(futures):
try:
future.result()
except Exception as e:
print(f'Error: {e}')
🔬 Input data has 156449 cells and 33538 genes 🔗 Matching reference genes in the model 🔬 Input data has 193957 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🔬 Input data has 187700 cells and 33538 genes 🔗 Matching reference genes in the model 🔬 Input data has 179276 cells and 33538 genes 🔗 Matching reference genes in the model 🔬 Input data has 173666 cells and 33538 genes 🔗 Matching reference genes in the model 🔬 Input data has 207788 cells and 33538 genes 🔗 Matching reference genes in the model 🔬 Input data has 199483 cells and 33538 genes 🔗 Matching reference genes in the model 🔬 Input data has 200104 cells and 33538 genes 🔗 Matching reference genes in the model 🔬 Input data has 198214 cells and 33538 genes 🔗 Matching reference genes in the model 🔬 Input data has 187235 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction 🔬 Input data has 209206 cells and 33538 genes ⚖️ Scaling input data 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🧬 5967 features used for prediction ⚖️ Scaling input data 🧬 5967 features used for prediction ⚖️ Scaling input data 🧬 5967 features used for prediction ⚖️ Scaling input data 🧬 5967 features used for prediction ⚖️ Scaling input data 🧬 5967 features used for prediction ⚖️ Scaling input data 🧬 5967 features used for prediction ⚖️ Scaling input data 🧬 5967 features used for prediction ⚖️ Scaling input data 🧬 5967 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering 🖋️ Predicting labels 🖋️ Predicting labels 🖋️ Predicting labels 🖋️ Predicting labels ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering 🖋️ Predicting labels 🖋️ Predicting labels 🖋️ Predicting labels 🖋️ Predicting labels 🖋️ Predicting labels ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering ✅ Prediction done! ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering 👀 Can not detect a neighborhood graph, will construct one before the over-clustering ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering 🖋️ Predicting labels ✅ Prediction done! 👀 Can not detect a neighborhood graph, will construct one before the over-clustering ⛓️ Over-clustering input data with resolution set to 25 ⛓️ Over-clustering input data with resolution set to 25 ⛓️ Over-clustering input data with resolution set to 25 ⛓️ Over-clustering input data with resolution set to 25 ⛓️ Over-clustering input data with resolution set to 25 ⛓️ Over-clustering input data with resolution set to 25 ⛓️ Over-clustering input data with resolution set to 25 ⛓️ Over-clustering input data with resolution set to 25 ⛓️ Over-clustering input data with resolution set to 30 ⛓️ Over-clustering input data with resolution set to 30 ⛓️ Over-clustering input data with resolution set to 30 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 156449 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 187235 cells and 33538 genes 🔗 Matching reference genes in the model 🖋️ Predicting labels 🧬 5967 features used for prediction ⚖️ Scaling input data ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 187700 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 198214 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 209206 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 200104 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 30 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 179276 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 30 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 173666 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 156449 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 3443 features used for prediction ⚖️ Scaling input data 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 187235 cells and 33538 genes 🔗 Matching reference genes in the model 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🧬 3443 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 207788 cells and 33538 genes 🔗 Matching reference genes in the model 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 199483 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🧬 5967 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 30 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 193957 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 5967 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 187700 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 3443 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 198214 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 3443 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🗳️ Majority voting the predictions ✅ Majority voting done! 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 209206 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 3443 features used for prediction ⚖️ Scaling input data 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 200104 cells and 33538 genes 🔗 Matching reference genes in the model 🖋️ Predicting labels 🧬 3443 features used for prediction ⚖️ Scaling input data ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 30 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 30 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 179276 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 3443 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 173666 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 3443 features used for prediction ⚖️ Scaling input data 🗳️ Majority voting the predictions ✅ Majority voting done! 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 207788 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 3443 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 30 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 199483 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 3443 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🗳️ Majority voting the predictions ✅ Majority voting done! 🗳️ Majority voting the predictions ✅ Majority voting done! 🔬 Input data has 193957 cells and 33538 genes 🔗 Matching reference genes in the model 🧬 3443 features used for prediction ⚖️ Scaling input data 🖋️ Predicting labels ✅ Prediction done! 👀 Detected a neighborhood graph in the input object, will run over-clustering on the basis of it ⛓️ Over-clustering input data with resolution set to 25 🗳️ Majority voting the predictions ✅ Majority voting done! 🗳️ Majority voting the predictions ✅ Majority voting done! 🗳️ Majority voting the predictions ✅ Majority voting done! 🗳️ Majority voting the predictions ✅ Majority voting done!