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

pyscenic运行报错:ValueError: Intersection of gene_names and tf_names is empty

pyscenic运行报错:ValueError: Intersection of gene_names and tf_names is empty

  1. 首先查一下是否有重复基因
python check_common_genes.py

check_common_genes.py

import pandas as pd

# 定义文件路径
#这是转置后的基因表达矩阵
expression_matrix_file = "normalized_expression_matrix_transposed.csv"  # 表达矩阵文件
tfs_file = "hs_hgnc_tfs.txt"  # 转录因子列表文件

# 读取表达矩阵文件
# 基因名在列名中(第一行),细胞名在行名中(第一列)
expression_matrix = pd.read_csv(expression_matrix_file, index_col=0)
gene_names = set(expression_matrix.columns)  # 获取基因名

# 读取转录因子列表文件
with open(tfs_file, 'r') as f:
    tfs = set(line.strip() for line in f.readlines())  # 获取转录因子基因名

# 检查交集
common_genes = gene_names.intersection(tfs)

# 输出结果
if common_genes:
    print(f"找到 {len(common_genes)} 个重复基因:")
    print(common_genes)
else:
    print("没有找到重复基因。")

如果查得到,那么应该是读取基因表达矩阵的时候没有正确转置

如果基因表达矩阵的csv 没有转置过,那么上面代码的一行修改一下

# 基因名在列名中(第一行),细胞名在行名中(第一列)
gene_names = set(expression_matrix.columns)  # 获取基因名

这样应该会输出有重复基因了
如果没有,可能涉及大小写敏感:
基因名的大小写需要一致。如果文件中的基因名大小写不一致,可以在读取时统一转换为小写:

gene_names = set(expression_matrix.columns.str.lower())
tfs = set(line.strip().lower() for line in f.readlines())
  1. 解决

查看创建loom文件的时候是不是又转置了,全程应该只需要转一次

import loompy as lp
import numpy as np
import scanpy as sc

# 读取 CSV 文件,这里是转置后的
x = sc.read_csv("normalized_expression_matrix_transposed.csv")

# 定义行和列属性
row_attrs = {"CellID": np.array(x.obs_names)}  # 行名是细胞 ID
col_attrs = {"Gene": np.array(x.var_names)}  # 列名是基因名

# 创建 Loom 文件,这里不需要转了
lp.create("output.loom", x.X, row_attrs, col_attrs)

如果是没有转置的基因表达矩阵的csv,则生成loom需要转置
该行代码改成这样

lp.create("sample.loom",x.X.transpose(),row_attrs,col_attrs);

相关文章:

  • Visual Studio 2022配置网址参考
  • 深入理解 Rust 中的智能指针
  • MKS SERVO42E57E 闭环步进电机_系列10 STM32_脉冲和串口例程
  • Quasar:轻量级、高效的.NET远程管理工具
  • 基于云的物联网系统用于实时有害藻华监测:通过MQTT和REST API无缝集成ThingsBoard
  • P2865 [USACO06NOV] Roadblocks G 与最短路的路径可重复的严格次短路
  • Javascript网页设计实例:通过JS实现上传Markdown转化为脑图并下载脑图-完整源代码,开箱即用
  • 快速入门——第三方组件element-ui
  • Missing required prop: “maxlength“
  • 华为昇腾910b服务器部署DeepSeek翻车现场
  • C语言-进程
  • vue组件,父子通信,路由,异步请求后台接口,跨域
  • 2.5GE 超千兆SFP光模块型号(常用光模块收发光功率范围)
  • 图谱洞见:专栏概要与内容目录
  • java实现动态数组
  • wps中zotero插件消失,解决每次都需要重新开问题
  • 【C++】在线五子棋对战项目网页版
  • Python之numpy
  • 【CS285】高斯策略对数概率公式的学习笔记
  • 【python】conda命令合集
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间
  • 梅花奖在上海|湘剧《夫人如见》竞梅,长沙文旅来沪推广
  • 美官方将使用华为芯片视作违反美出口管制行为,外交部回应
  • 上交所五方面落实募资新规:强化关键少数责任和股东权利保障
  • 上海虹桥国际咖啡文化节周五开幕,来看Coffeewalk通关攻略
  • 遭“特朗普关税”冲击,韩国今年经济增长预期“腰斩”降至0.8%