如何在python中使用scipy计算spearman相关性?

时间:2016-10-07 18:14:36

标签: python scipy bioinformatics data-science

我有一个python脚本,可以从基因表达数据中生成z分数。我还希望脚本创建一个spearman相关输出。我想知道重复之间的相关性。所以在输出中,行和列都是重复的名称。

我还没有找到任何关于如何使用scipy来计算超过2个列表的spearman等级相关性的示例。我可以使用scipy的stats.spearmanr来比较一个命令中的所有重复项吗?我将数据存储在一个字符串中。以下是我的一些代码:

t_vals=[]
z_outline = []
z_outlines = []

header = None
for line in input_file:
    line = formatLine(line)
    if line.startswith("#"):
        header = line
        header += "\n"
        z_output.write(header)
        sp_output.write(header)
        continue
    lineList = line.split("\t")

    vals = []
    in_vals =[]
    for item in lineList[1:]:
        val = float(item)
        in_vals.append(val)
        vals.append(val)

    median = robjects.r['mean'](robjects.FloatVector(vals))[0]
    mad = robjects.r['sd'](robjects.FloatVector(vals))[0]
    z_vals = []
    t_vals = []

    for v in in_vals:
        if mad == 0:
            z_val = (v - median) / CLOSE_TO_ZERO
        else:
            z_val = (v - median) / mad

        z_vals.append(z_val)
        t_vals.append(z_val)

    z_vals_str = []
    for v in t_vals:
        z_vals_str.append("%.4f" % v)

    z_outline = "\t".join(lineList[:1]) + "\t"
    z_outline += "\t".join(z_vals_str)
    z_outline += "\n"

    z_outlines.append(z_outline)


for outline in z_outlines:
    z_output.write(outline + "\n")

我感谢任何帮助!感谢

0 个答案:

没有答案