当前位置: 首页 > news >正文

scanpy处理:使用自定义 python 函数读取百迈客空间转录组数据(百创智造S1000)

原本的版本用的怪怪的,定义了一个函数方便直接在解释器中使用。函数返回adata对象,示例代码如下:

def read_bmk(input, input_png, library_id):import cv2import osadata = sc.read_10x_mtx(input, var_names='gene_symbols',cache=False)barcode_pos = pd.read_csv(os.path.join(input, "barcodes_pos.tsv.gz"), compression='gzip', sep='\t', names=["barcode","array_col","array_row"],header=None)barcode_pos['in_tissue']=1barcode_pos=barcode_pos[['barcode','in_tissue','array_row','array_col']]barcode_pos.index = barcode_pos['barcode']barcode_pos = barcode_pos.loc[adata.obs_names, :] adata.obs=barcode_posadata.obs.index = adata.obs['barcode'].to_list()adata.obs=adata.obs[['in_tissue','array_row','array_col']]obsm=barcode_pos[['array_col','array_row']]obsm= obsm.to_numpy()adata.obsm["spatial"] = obsmhe_img = cv2.imread(input_png)he_img=he_img/255adata.uns["spatial"] = {library_id: {}}adata.uns["spatial"][library_id]["images"] = {}adata.uns['spatial'][library_id]['images']['hires'] = he_img.astype(np.float32)adata.uns['spatial'][library_id]['use_quality']='hires'def cal_zoom_rate(width, height):std_width = 1000std_height = std_width / (46 * 31) * (46 * 36 * np.sqrt(3) / 2.0)if std_width / std_height > width / height:scale = width / std_widthelse:scale = height / std_heightreturn scalezoom_scale = cal_zoom_rate(he_img.shape[1], he_img.shape[0])adata.uns['spatial'][library_id]['scalefactors']= {"spot_diameter_fullres": zoom_scale, "tissue_hires_scalef": zoom_scale,"fiducial_diameter_fullres": zoom_scale, "tissue_lowres_scalef": zoom_scale}sc.pl.spatial(adata, img_key="hires")return adata

使用示例,选择level7的标准输出创建看看:

adata = read_bmk(input = "./self_data_analysis/cancer1/L7_heAuto",input_png="./self_data_analysis/cancer1/he_roi_small.png",library_id="cancer1")
http://www.xdnf.cn/news/327385.html

相关文章:

  • 深度学习:智能车牌识别系统(python)
  • htop筛选进程时,出现重复进程
  • 德州仪器技术干货 | 48V 集成式热插拔电子保险丝:为现代 AI 数据中心高效供电
  • Python案例实战《水果识别模型训练及调用》
  • Linux 内核学习(7) --- 字符设备驱动
  • eFish-SBC-RK3576工控板CAN接口测试操作指南
  • leetcode 3341. 到达最后一个房间的最少时间 I 中等
  • Unity_JK框架【3】 事件系统的简单使用示例
  • 169.多数元素
  • openstack虚拟机状态异常处理
  • java集合菜鸟教程
  • 从 CodeBuddy Craft 到 edgeone-pages-mcp 上线算命网站的一次完整体验分享
  • 多语言网站的 UX 陷阱与国际化实践陷阱清单
  • 前端面试每日三题 - Day 27
  • 【Python】os模块
  • 使用 Gradio + Qwen3 + vLLM 部署 Text2SQL 多表查询系统
  • 【Prometheus】深入解析 Prometheus 特殊标签 `__param_<name>`:动态抓取参数的艺术
  • Android 数据持久化之数据库存储 Room 框架
  • 50个精选DeepSeek指令
  • ifconfig statistics
  • springboot使用阿里云OSS实现文件上传
  • 云上玩转Qwen3系列之二:PAI-LangStudio搭建联网搜索和RAG增强问答应用
  • C++初阶 —— 类和对象
  • C++ 中的 `it->second` 和 `it.second`:迭代器与对象访问的微妙区别
  • 如何延长电脑使用寿命?
  • Cadence 高速系统设计流程及工具使用二
  • 学习黑客 Linux用户管理
  • Linux理解文件fd
  • 热部署相关
  • 说说es配置项的动态静态之分和集群配置更新API