微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将预先计算的距离矩阵以 csv 格式导入 python?

如何解决如何将预先计算的距离矩阵以 csv 格式导入 python?

我一直在尝试使用 Pandas 导入预先计算的距离矩阵,我想用它来使用 seaborn 制作热图。我使用了以下代码

import pandas as pd
msa = pd.read_csv("Multiple_alignment_distance_matrix.csv")

输出看起来不像距离矩阵

    sp|Q9BYW2|SETD2_HUMAN Histone-lysine N-methyltransferase SETD2 OS=Homo sapiens OX=9606 GN=SETD2 PE=1 SV=3   sp|P42858|HD_HUMAN Huntingtin OS=Homo sapiens OX=9606 GN=HTT PE=1 SV=2  sp|Q8IUH5|ZDH17_HUMAN Palmitoyltransferase ZDHHC17 OS=Homo sapiens OX=9606 GN=ZDHHC17 PE=1 SV=2 sp|O75400|PR40A_HUMAN Pre-mRNA-processing factor 40 homolog A OS=Homo sapiens OX=9606 GN=PRPF40A PE=1 SV=2  tr|F8VU11|F8VU11_HUMAN PRP40 pre-mRNA processing factor 40 homolog B (Yeast),isoform CRA_a OS=Homo sapiens OX=9606 GN=PRPF40B PE=1 SV=2    sp|Q6NWY9|PR40B_HUMAN Pre-mRNA-processing factor 40 homolog B OS=Homo sapiens OX=9606 GN=PRPF40B PE=1 SV=1  sp|P43357|MAGA3_HUMAN Melanoma-associated antigen 3 OS=Homo sapiens OX=9606 GN=MAGEA3 PE=1 SV=1 tr|A0A024RBM8|A0A024RBM8_HUMAN AMPylator FICD OS=Homo sapiens OX=9606 GN=HYPE PE=3 SV=1 sp|Q9BVA6|FICD_HUMAN Protein adenylyltransferase FICD OS=Homo sapiens OX=9606 GN=FICD PE=1 SV=2 tr|B3KSH4|B3KSH4_HUMAN Huntingtin interacting protein 2,isoform CRA_a OS=Homo sapiens OX=9606 GN=HIP2 PE=2 SV=1    tr|B4DIZ2|B4DIZ2_HUMAN cDNA FLJ57995,moderately similar to Ubiquitin-conjugating enzyme E2-25 kDa OS=Homo sapiens OX=9606 PE=2 SV=1    sp|P61086|UBE2K_HUMAN Ubiquitin-conjugating enzyme E2 K OS=Homo sapiens OX=9606 GN=UBE2K PE=1 SV=3
0   sp|Q9BYW2|SETD2_HUMAN Histone-lysine N-methylt...   2564    409 69  114 109 107 41  89  89  9   13  19
1   sp|P42858|HD_HUMAN Huntingtin OS=Homo sapiens ...   409 3142    90  126 143 143 59  58  58  15  14  18
2   sp|Q8IUH5|ZDH17_HUMAN Palmitoyltransferase ZDH...   69  90  632 5   10  10  1   16  16  0   2   2
3   sp|O75400|PR40A_HUMAN Pre-mRNA-processing fact...   114 126 5   957 502 498 15  5   5   0   0   0
4   tr|F8VU11|F8VU11_HUMAN PRP40 pre-mRNA processi...   109 143 10  502 892 870 17  3   3   0   0   0
5   sp|Q6NWY9|PR40B_HUMAN Pre-mRNA-processing fact...   107 143 10  498 870 871 16  3   3   0   0   0
6   sp|P43357|MAGA3_HUMAN Melanoma-associated anti...   41  59  1   15  17  16  314 1   1   0   0   0
7   tr|A0A024RBM8|A0A024RBM8_HUMAN AMPylator FICD ...   89  58  16  5   3   3   1   458 458 19  29  42
8   sp|Q9BVA6|FICD_HUMAN Protein adenylyltransfera...   89  58  16  5   3   3   1   458 458 19  29  42
9   tr|B3KSH4|B3KSH4_HUMAN Huntingtin interacting ...   9   15  0   0   0   0   0   19  19  97  67  97
10  tr|B4DIZ2|B4DIZ2_HUMAN cDNA FLJ57995,moderate...   13  14  2   0   0   0   0   29  29  67  139 139
11  sp|P61086|UBE2K_HUMAN Ubiquitin-conjugating en...   19  18  2   0   0   0   0   42  42  97  139 200

列看起来不错,但行被索引(如 0、1、2...)。我试图用它来创建热图

import seaborn as sns
sns.heatmap(msa)

但是我得到了一个类型错误。我试图阅读熊猫和 scipy 文档。但我很难理解它。如果有人可以提供帮助,我将不胜感激。谢谢!

解决方法

正如我所料,您可以将 index_col=0 参数添加到您的 read_csv 函数中:

import pandas as pd
import seaborn as sns
df = pd.read_csv('Multiple_alignment_distance_matrix.csv',index_col=0)
sns.heatmap(df)

heatmap

奖励:更好的名字

def prot_name(s):
    import re
    match = re.search('^[^ ]+ (.*) OS=',s)
    if match:
        return match.group(1)

sns.heatmap(df.rename(columns=prot_name,index=prot_name))

heatmap with nice names

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。