美文网首页
python中输入字符串 "hallmark" 获取名为 hal

python中输入字符串 "hallmark" 获取名为 hal

作者: 生信成长日记 | 来源:发表于2024-08-29 15:31 被阅读0次

事情是这样的,我在用decoupler做功能富集分析的时候,首先通过以下代码获得hallmark和go_bp通路,变量hallmark和go_bp都是dataframe:

import decoupler as dc

msigdb = dc.get_resource('MSigDB')
database = 'go_biological_process'
go_bp = msigdb[msigdb['collection']== database]
go_bp = go_bp[~go_bp.duplicated(("geneset", "genesymbol"))]

database = 'hallmark'
hallmark = msigdb[msigdb['collection']== database]
hallmark = hallmark[~hallmark.duplicated(("geneset", "genesymbol"))]

接着,我定义了一个函数用于富集分析:

def function_analysis(pdata, test_level, database='hallmark'):
    #这里需要通过字符串'hallmark'访问外部变量hallmark

这里的解决办法是使用 Python 的内置函数 globals(),该函数返回全局作用域中的变量字典,可以通过在字典中查找对应的键来获取变量的值。

示例代码:

# 输入字符串
variable_name = "hallmark"

# 使用 globals() 获取变量
value = globals()[variable_name]
print(value)  # 等同于print(hallmark)

解释:

  • globals():返回一个包含当前模块中所有全局变量的字典。字典的键是变量名(字符串形式),值是变量的实际值。
  • globals()[variable_name]:通过传入变量名的字符串,可以从字典中获取到该变量的值。

注意:

  • 如果该变量是在局部作用域中定义的而不是全局作用域中,可以使用 locals()
  • 如果变量名在给定作用域中不存在,会抛出 KeyError 错误。因此,可以在查找前使用 if variable_name in globals(): 进行检查。

补充:

如果你是R语言用户,可以通过get函数来实现类似功能:

# 输入字符串
variable_name <- "hallmark"

# 使用 get() 获取变量的值
value <- get(variable_name)
print(value)  # 等同于print(hallmark)

相关文章

网友评论

      本文标题:python中输入字符串 "hallmark" 获取名为 hal

      本文链接:https://www.haomeiwen.com/subject/cayxljtx.html