首页 > 其他分享 >课前准备---HD数据结合图像识别获取真实的空间单细胞级数据

课前准备---HD数据结合图像识别获取真实的空间单细胞级数据

时间:2024-07-03 13:02:11浏览次数:22  
标签:pp 图像识别 bdata genes --- cdata sc obs HD

作者,Evil Genius
HD数据不同于Xenium,目前还是横屏竖直的一刀切数据分析模式,但是真实的细胞绝对不是如此分布的,那么实际分析中,2um的精度配合图像的信息,获取真实的细胞分布数据,就成了分析的必须。
多说一句,分析的准确性和超前化也是公司对核心分析人员的核心要求。
如下如,我们最好不要采用8um,16um这种一刀切的模式,而是识别每个2um中是否含有细胞,如果有则保留,没有则舍弃。

这个时候拿到的数据才是有效数据,所做的分析才可以认为是非常可靠的。利用2um的精度重构细胞分布信息。

在Visium HD的最高2µm分辨率下,将亚细胞bin连接成单个细胞。这可以通过使用StarDist进行形态分割来完成的,使用其预训练的H&E模型识别细胞核,随后将其扩展到邻近的未标记的bin中。
我们需要实现如下的分析目标

分析得到的结果流程图

分析得到的结果

局部放大

我们来实现,是官方示例数据
import scanpy as sc
import os
import bin2cell as b2c
import celltypist
from celltypist import models
import numpy as np
from matplotlib import rcParams
from matplotlib import font_manager
import matplotlib.pyplot as plt
rcParams['pdf.fonttype'] = 42
sc.settings.set_figure_params(dpi = 150, color_map = 'RdPu', dpi_save = 150, vector_friendly = True, format = 'pdf')
font_manager.fontManager.addfont(".../software/Arial.ttf")
print(font_manager.findfont("Arial"))
plt.rcParams["font.sans-serif"] = ["Arial"]
sc.settings.set_figure_params(dpi = 150, color_map = 'RdPu', dpi_save = 300, vector_friendly = True, format = 'pdf')

path008 = ".../visium_hd/gut_public/square_008um/"
path002 = ".../visium_hd/gut_public/square_002um/"
source_image_path = ".../10X_datasets/human_CRC/Visium_HD_Human_Colon_Cancer_tissue_image.btf"

bdata = b2c.read_visium(path008, source_image_path = source_image_path)
bdata.var_names_make_unique()

bdata.raw = bdata.copy()
基础处理
sc.pp.filter_genes(bdata, min_cells=3)
sc.pp.filter_cells(bdata, min_genes=100)
sc.pp.calculate_qc_metrics(bdata,inplace=True)

sc.pp.highly_variable_genes(bdata,n_top_genes=5000,flavor="seurat_v3")
sc.pp.normalize_total(bdata,target_sum=1e4)
sc.pp.log1p(bdata)
Predict cell types from 2 models and combine them
predictions_8bin_mega = celltypist.annotate(bdata, model ='/nfs/team205/rb29/VisiumHD_intestine/Src/celltypist_models/model_from_megaGut_colon_CRC_level3.pkl', majority_voting = False)
predictions_8bin_crc = celltypist.annotate(bdata, model = 'Human_Colorectal_Cancer.pkl', majority_voting = False)

# combine 2 models for cell annotations
# add the healthy gut model 
bdata = predictions_8bin_mega.to_adata()
bdata.obs['predicted_labels_healthy'] = bdata.obs['predicted_labels'] 
bdata.obs['conf_score_healthy'] = bdata.obs['conf_score'] 

# add the colorectal cancer model
bdata = predictions_8bin_crc.to_adata()
bdata.obs['predicted_labels_crc'] = bdata.obs['predicted_labels'] 
bdata.obs['conf_score_crc'] = bdata.obs['conf_score'] 

# remove old annotations
del bdata.obs['predicted_labels'] 
del bdata.obs['conf_score']

# find the cell that have higher confidence in the crc model 
bdata.obs['higher_in_crc'] = bdata.obs['conf_score_healthy']<bdata.obs['conf_score_crc']

# eclude the ones that labeled as unknown in crc model
bdata.obs.loc[bdata.obs['predicted_labels_crc']=='Unknown','higher_in_crc'] = False
bdata.obs['higher_in_crc'].value_counts()

# create new unified annotations 
bdata.obs['predicted_labels'] = bdata.obs['predicted_labels_healthy']
bdata.obs['predicted_labels'] = bdata.obs['predicted_labels'].astype('object')
bdata.obs.loc[bdata.obs['higher_in_crc'],'predicted_labels'] = bdata.obs.loc[bdata.obs['higher_in_crc'],'predicted_labels_crc']
bdata.obs['predicted_labels'] = bdata.obs['predicted_labels'].astype('category')
bdata.obs['predicted_labels'] 

bdata = bdata[:, bdata.var["highly_variable"]].copy()
sc.pp.scale(bdata, max_value=10)
sc.pp.pca(bdata, use_highly_variable=True)
sc.pp.neighbors(bdata)
sc.tl.umap(bdata)
sc.set_figure_params(dpi=50,fontsize=10,)
sc.pl.violin(bdata, ['n_genes_by_counts', 'log1p_n_genes_by_counts', 'total_counts', 'log1p_total_counts', 'pct_counts_in_top_50_genes', 'pct_counts_in_top_100_genes'],
             jitter=0.1, multi_panel=True)

estimate embedding
sc.set_figure_params(dpi=100,fontsize=10,)
os.chdir('.../visium_hd/gut_public/')
sc.tl.leiden(bdata,resolution=6,key_added='leiden')
sc.pl.umap(bdata,color=['leiden'],size=2,wspace=0.25,frameon=False)

####bdata.raw.to_adata().write('.../visium_hd/gut_public/crc_8um.h5ad')

结合图像和数据进行分析
cdata = sc.read_h5ad(path002+'b2c_crc.h5ad')
cdata.var_names_make_unique()
cdata = cdata[cdata.obs['bin_count']>5] # min 6 bins
#need integers for seuratv3 hvgs
cdata.X.data = np.round(cdata.X.data)
cdata.raw = cdata.copy()

sc.pp.filter_genes(cdata, min_cells=3)
sc.pp.filter_cells(cdata,min_genes=100)
sc.pp.calculate_qc_metrics(cdata,inplace=True)

sc.pp.highly_variable_genes(cdata,n_top_genes=5000,flavor="seurat_v3")
sc.pp.normalize_total(cdata,target_sum=1e4)

标签:pp,图像识别,bdata,genes,---,cdata,sc,obs,HD
From: https://blog.csdn.net/weixin_53637133/article/details/140149084

相关文章

  • 最新AI源码-ChatGPT商业运营版系统源码,AI绘画网站系统,TTS & 语音识别对话、文档分析、
    一、前言人工智能语言模型和AI绘画在多个领域都有广泛的应用.....SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能问答和绘画系统,提供一站式AIB/C端解决方案,涵盖AI大模型提问、AI绘画、文档分析、图像识别和理解、TTS&语音识别、AI换脸等多项功能。支持GPTs应......
  • 复述生成任务分类-笔记-Task-Oriented Paraphrase Analytics
    目录前言正文 复述生成和搜索引擎查询建议和扩展建议(QuerySuggestionandExpansion)复述生成和数据集数据增强(DataAugmentation):生成保持类别标签的合成数据,用于增加训练或测试数据集。信息安全和复述生成对抗样本生成(AdversarialExampleGeneration):保留标......
  • 一文彻底搞懂Transformer - Input(输入)
    一、输入嵌入(InputEmbedding)        词嵌入(WordEmbedding):词嵌入是最基本的嵌入形式,它将词汇表中的每个单词映射到一个固定大小的向量上。这个向量通常是通过训练得到的,能够捕捉单词之间的语义关系。        在Transformer中,词嵌入层通常是一个可学习的参......
  • 先时移后系统-信号与系统考研复习大全
    标题:......
  • D - Intersecting Intervals(abc355)
    题意:有n个区间,找出俩俩区间相交的个数分析:设初始俩俩相交,找出不相交的(不同区间l>r),减去即可#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;intmain(){   ios::sync_with_stdio(false);   intn,l[n+10],r[n+10];   cin>>n;  ......
  • 设计模式-迭代子模式
    一、迭代子模式的核心思想迭代子模式又称Cursor模式,是对象的行为模式。迭代子模式可以顺序地访问聚集中的对象而不必显露聚集的内部表象。迭代子模式的作用是访问一个聚集,因此它需要包含两类对象。聚集对象:聚集对象中提供了一系列的数据集合,它还需要提供访问该集合中元......
  • 设计模式-观察者模式
    一、观察者模式的核心思想观察者(Observer)模式又名发布一订阅(Publish/Subscribe)模式。GOF给观察者模式如下定义:定义对象间的一种一对多的依赖关系,让多个观察者对象同时关注同一个对象,当该对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。如下图所示,观......
  • 设计模式-策略模式
    一、策略模式的核心思想策略模式定义了一系列的算法,并将每一个算法封装起来,使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。策略模式将一系列的算法包装为一个接口抽象类的子类,并由调用者决定调用某一个子类。其中定义了3种角色。策略接口类ICacu......
  • Azkaban-3.84.4集群部署——安装篇(文章结尾附带网盘下载链接)
    目录Azkaban的集群规划Azkaban的集群部署第一步处理azkaban-db-3.84.4:第二步配置azkaban-exec:启动azkaban-exec:激活azkaban-exec:第三步配置WebServer(在bigdata1中)(1)修改azkaban.properties文件,修改的部分如下:(2)修改azkaban-users.xml文件,添加用户(用户密码可自行设......
  • 【云原生】Kubernetes-kubeadm升级版本
    一、版本升级当我们要用到新版本的一些功能和特性的时候或者当前版本太旧无法满足需要的时候势必要对Kubernetes集群进行升级。1.1、升级Master节点1.1.1、腾空节点[root@master~]#kubectlgetnodeNAMESTATUSROLESAGEVERSIONmaster......