2025-08-15 scanpy单细胞读入

记录一下GEO数据的读入方式


import anndata as ad
import scanpy as sc
import anndata
from scipy import io
import numpy as np
import os
import pandas as pd
import re #导入包 数据处理

### 循环读取数据
dir_data='../GSEXXXX/' #数据储存路径
data_ls=os.listdir(dir_data) #列出文件夹内的文件名称
a_ls=[f for f in data_ls if f.startswith('GSM')]  #提取GSM文件名称
print(a_ls)


# 使用正则表达式找到最后一个下划线的位置并分割字符串
split_results = [re.split(r'_(?=[^_]*$)', filename)[0] for filename in a_ls]

unique_res=list(set(split_results))

adatas=[]
for i in unique_res:
    print(i)
    adata=sc.read_10x_mtx(path=dir_data,prefix=i+'_',var_names='gene_symbols')  #prefix= 指定前缀
    adata.obs['sample_name']=re.split('_',i)[0] #添加样本名称 GSMxxxx
    adata.obs['Group']=re.sub(r'\d+', '',i.split('_', 1)[1])   #按照第一个下划线分割并取出第二部分 然后去掉数字 添加分组信息 例如 tumor/normal
    adata.var_names_make_unique()  #合并之前 保证基因名称唯一性
#基本质控
    sc.pp.filter_cells(adata, min_genes=200) 
    sc.pp.filter_genes(adata, min_cells=3)
    
    adatas.append(adata) #追加到adatas (一个list)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容