绘制分子相似性矩阵热图

——以DrugBank数据库Illicit同类分子相似性矩阵为例

  完整工作流程或分子相似性矩阵数据计算方法参见教程 综合使用KNIME、Python绘制分子相似性矩阵热图

In [1]:
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
In [2]:
df = pd.DataFrame(pd.read_csv('G:/KNIME/DrugBank/TanimotoFCFP6illicit.csv',header = 0, index_col=[0]))
df
Out[2]:
mol_0 mol_1 mol_2 mol_3 mol_4 mol_5 mol_6 mol_7 mol_8 mol_9 ... mol_192 mol_193 mol_194 mol_195 mol_196 mol_197 mol_198 mol_199 mol_200 mol_201
mol_0 1.000000 0.055556 0.583333 0.108108 0.050000 0.046512 0.045455 0.083333 0.085714 0.219512 ... 0.200000 0.210526 0.210526 0.122807 0.192308 0.072289 0.219512 0.217391 0.089286 0.026667
mol_1 0.055556 1.000000 0.055556 0.078947 0.105263 0.125000 0.121951 0.083333 0.055556 0.086957 ... 0.043478 0.061538 0.045455 0.066667 0.068966 0.072289 0.086957 0.056604 0.051724 0.069444
mol_2 0.583333 0.055556 1.000000 0.108108 0.050000 0.071429 0.045455 0.083333 0.085714 0.219512 ... 0.200000 0.210526 0.210526 0.122807 0.192308 0.072289 0.219512 0.191489 0.089286 0.040541
mol_3 0.108108 0.078947 0.108108 1.000000 0.125000 0.142857 0.113636 0.051948 0.053333 0.081633 ... 0.071429 0.090909 0.074627 0.098361 0.083333 0.045455 0.104167 0.092593 0.066667 0.066667
mol_4 0.050000 0.105263 0.050000 0.125000 1.000000 0.484848 0.724138 0.064935 0.081081 0.102041 ... 0.085714 0.089552 0.089552 0.096774 0.100000 0.068966 0.102041 0.111111 0.065574 0.140845
mol_5 0.046512 0.125000 0.071429 0.142857 0.484848 1.000000 0.606061 0.075949 0.077922 0.117647 ... 0.097222 0.085714 0.101449 0.092308 0.095238 0.078652 0.117647 0.125000 0.062500 0.200000
mol_6 0.045455 0.121951 0.045455 0.113636 0.724138 0.606061 1.000000 0.075000 0.076923 0.115385 ... 0.081081 0.084507 0.084507 0.107692 0.093750 0.077778 0.115385 0.103448 0.061538 0.180556
mol_7 0.083333 0.083333 0.083333 0.051948 0.064935 0.075949 0.075000 1.000000 0.397590 0.139241 ... 0.166667 0.159574 0.172043 0.142857 0.186047 0.767123 0.168831 0.170732 0.216867 0.073394
mol_8 0.085714 0.055556 0.085714 0.053333 0.081081 0.077922 0.076923 0.397590 1.000000 0.173333 ... 0.157895 0.163043 0.175824 0.133333 0.190476 0.351064 0.189189 0.175000 0.207317 0.105769
mol_9 0.219512 0.086957 0.219512 0.081633 0.102041 0.117647 0.115385 0.139241 0.173333 1.000000 ... 0.200000 0.208955 0.246154 0.169231 0.275862 0.134831 0.631579 0.283019 0.177419 0.098765
mol_10 0.111111 0.111111 0.111111 0.067797 0.084746 0.080645 0.079365 0.086957 0.088889 0.142857 ... 0.236842 0.300000 0.246575 0.228571 0.217391 0.067308 0.142857 0.147059 0.106667 0.064516
mol_11 0.052632 0.142857 0.052632 0.131579 0.189189 0.205128 0.170732 0.066667 0.068493 0.106383 ... 0.088235 0.075758 0.075758 0.100000 0.103448 0.083333 0.106383 0.115385 0.067797 0.128571
mol_12 0.155172 0.063492 0.175439 0.060606 0.075758 0.088235 0.071429 0.103093 0.093750 0.161765 ... 0.202381 0.272727 0.180723 0.162500 0.197368 0.113208 0.161765 0.164384 0.111111 0.060000
mol_13 0.129032 0.076923 0.129032 0.073529 0.088235 0.115942 0.098592 0.145833 0.173913 0.093333 ... 0.142857 0.122222 0.160920 0.116279 0.132530 0.130841 0.093333 0.128205 0.134146 0.123711
mol_14 0.152542 0.046154 0.133333 0.044118 0.074627 0.071429 0.070423 0.125000 0.127660 0.142857 ... 0.159091 0.237500 0.151163 0.146341 0.194805 0.122642 0.159420 0.162162 0.151899 0.028846
mol_15 0.083333 0.068493 0.083333 0.038462 0.064935 0.075949 0.061728 0.475000 0.414634 0.168831 ... 0.178947 0.184783 0.172043 0.155556 0.200000 0.387097 0.200000 0.156627 0.216867 0.073394
mol_16 0.342105 0.085106 0.275000 0.080000 0.037736 0.035714 0.035088 0.083333 0.085366 0.145455 ... 0.133333 0.171429 0.138889 0.084507 0.119403 0.073684 0.125000 0.131148 0.057143 0.022727
mol_17 0.089552 0.073529 0.106061 0.041096 0.054795 0.081081 0.065789 0.215054 0.321429 0.118421 ... 0.138298 0.118280 0.155556 0.087912 0.141176 0.192308 0.133333 0.151899 0.156627 0.087379
mol_18 0.131148 0.061538 0.150000 0.107692 0.089552 0.101449 0.084507 0.101010 0.138298 0.157143 ... 0.131868 0.204819 0.136364 0.117647 0.162500 0.090909 0.157143 0.144737 0.179487 0.058824
mol_19 0.255319 0.053571 0.255319 0.087719 0.105263 0.118644 0.098361 0.164706 0.182927 0.267857 ... 0.328571 0.285714 0.323529 0.231884 0.296875 0.157895 0.314815 0.571429 0.171429 0.113636
mol_20 0.126984 0.075758 0.145161 0.057143 0.056338 0.083333 0.067568 0.099010 0.090000 0.152778 ... 0.166667 0.228916 0.146067 0.168675 0.158537 0.099099 0.136986 0.126582 0.093023 0.078431
mol_21 0.119403 0.056338 0.136364 0.054054 0.067568 0.078947 0.064103 0.116505 0.130000 0.191781 ... 0.211111 0.292683 0.191011 0.188235 0.207317 0.135135 0.191781 0.192308 0.139535 0.055556
mol_22 0.135593 0.080645 0.155172 0.044776 0.059701 0.072464 0.056338 0.103093 0.105263 0.144928 ... 0.174419 0.256410 0.166667 0.148148 0.181818 0.102804 0.144928 0.164384 0.097561 0.049505
mol_23 0.106061 0.057971 0.089552 0.055556 0.069444 0.066667 0.065789 0.118812 0.121212 0.180556 ... 0.407895 0.253012 0.268293 0.320000 0.293333 0.137615 0.214286 0.213333 0.142857 0.087379
mol_24 0.235294 0.050000 0.235294 0.081967 0.080645 0.076923 0.075758 0.170455 0.174419 0.229508 ... 0.539683 0.807692 0.566667 0.589286 0.641509 0.163265 0.271186 0.285714 0.178082 0.073684
mol_25 0.163636 0.049180 0.185185 0.046875 0.062500 0.075758 0.058824 0.106383 0.096774 0.151515 ... 0.209877 0.283784 0.187500 0.168831 0.205479 0.095238 0.151515 0.171429 0.129870 0.051020
mol_26 0.282051 0.041667 0.250000 0.104167 0.058824 0.055556 0.054545 0.084337 0.073171 0.192308 ... 0.150685 0.140845 0.140845 0.134328 0.156250 0.097826 0.192308 0.236364 0.089552 0.059524
mol_27 0.053571 0.092593 0.053571 0.087719 0.166667 0.157895 0.155172 0.100000 0.127907 0.092308 ... 0.107143 0.084337 0.097561 0.075949 0.077922 0.089109 0.092308 0.132353 0.051282 0.180723
mol_28 0.333333 0.043478 0.333333 0.040816 0.040000 0.037736 0.037037 0.142857 0.146667 0.304348 ... 0.205882 0.215385 0.234375 0.138462 0.333333 0.125000 0.276596 0.245283 0.145161 0.048193
mol_29 0.142857 0.032258 0.142857 0.063492 0.079365 0.075758 0.074627 0.168539 0.172414 0.245902 ... 0.225000 0.202532 0.233766 0.184211 0.239437 0.150000 0.225806 0.261538 0.144737 0.084211
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
mol_172 1.000000 0.055556 0.583333 0.108108 0.050000 0.046512 0.045455 0.083333 0.085714 0.219512 ... 0.200000 0.210526 0.210526 0.122807 0.192308 0.072289 0.219512 0.217391 0.089286 0.026667
mol_173 0.640000 0.051282 0.464286 0.073171 0.046512 0.043478 0.042553 0.080000 0.082192 0.204545 ... 0.190476 0.200000 0.200000 0.116667 0.181818 0.069767 0.204545 0.204082 0.084746 0.025641
mol_174 0.243902 0.040816 0.243902 0.080000 0.078431 0.074074 0.092593 0.151899 0.171053 0.285714 ... 0.197183 0.188406 0.205882 0.166667 0.229508 0.186047 0.285714 0.277778 0.193548 0.071429
mol_175 0.133333 0.062500 0.152542 0.075758 0.090909 0.102941 0.085714 0.125000 0.115789 0.159420 ... 0.200000 0.269231 0.192771 0.160494 0.194805 0.133333 0.159420 0.194444 0.123457 0.070000
mol_176 0.112903 0.078125 0.131148 0.043478 0.057971 0.070423 0.054795 0.101010 0.114583 0.157143 ... 0.157303 0.234568 0.149425 0.130952 0.162500 0.100917 0.140845 0.144737 0.095238 0.048544
mol_177 0.054545 0.094340 0.054545 0.089286 0.169811 0.140351 0.157895 0.088889 0.129412 0.093750 ... 0.082353 0.085366 0.085366 0.090909 0.108108 0.079208 0.093750 0.117647 0.051948 0.182927
mol_178 0.195122 0.065217 0.195122 0.061224 0.039216 0.037037 0.036364 0.141026 0.160000 0.244898 ... 0.202899 0.212121 0.176471 0.171875 0.216667 0.123596 0.326087 0.240741 0.161290 0.047619
mol_179 0.115942 0.069444 0.100000 0.066667 0.094595 0.120000 0.103896 0.170000 0.197917 0.202703 ... 0.193548 0.161290 0.200000 0.157303 0.202381 0.163636 0.202703 0.250000 0.298701 0.094340
mol_180 0.170213 0.037736 0.170213 0.054545 0.072727 0.068966 0.067797 0.117647 0.107143 0.175439 ... 0.202703 0.194444 0.211268 0.191176 0.253968 0.115789 0.175439 0.177419 0.130435 0.056180
mol_181 0.176471 0.034483 0.176471 0.211538 0.066667 0.080645 0.079365 0.098901 0.113636 0.142857 ... 0.119048 0.137500 0.123457 0.088608 0.166667 0.088235 0.142857 0.130435 0.092105 0.087912
mol_182 0.039216 0.039216 0.019231 0.037037 0.075472 0.090909 0.089286 0.033333 0.083333 0.065574 ... 0.060976 0.050000 0.050000 0.082192 0.069444 0.072165 0.065574 0.092308 0.041096 0.121951
mol_183 0.033898 0.109091 0.033898 0.084746 0.140351 0.133333 0.131148 0.063158 0.087912 0.089552 ... 0.067416 0.069767 0.069767 0.074074 0.089744 0.056604 0.089552 0.097222 0.063291 0.204819
mol_184 0.190476 0.041667 0.162791 0.127660 0.058824 0.055556 0.054545 0.125000 0.100000 0.148148 ... 0.120000 0.125000 0.125000 0.101449 0.138462 0.109890 0.148148 0.152542 0.106061 0.047059
mol_185 0.028169 0.073529 0.028169 0.070423 0.132353 0.159420 0.140845 0.076190 0.121212 0.089744 ... 0.080808 0.083333 0.094737 0.100000 0.089888 0.087719 0.075949 0.123457 0.066667 0.513514
mol_186 0.245283 0.047619 0.222222 0.061538 0.093750 0.089552 0.088235 0.164835 0.168539 0.218750 ... 0.515152 0.515625 0.492308 0.352941 0.406250 0.170000 0.258065 0.354839 0.171053 0.071429
mol_187 0.196721 0.057971 0.196721 0.070423 0.084507 0.142857 0.125000 0.177083 0.168421 0.214286 ... 0.528571 0.552239 0.575758 0.434783 0.447761 0.169811 0.250000 0.281690 0.170732 0.108911
mol_188 0.116667 0.098361 0.116667 0.093750 0.109375 0.104478 0.119403 0.175824 0.141304 0.161765 ... 0.328947 0.462687 0.342466 0.722222 0.542373 0.180000 0.196970 0.231884 0.168831 0.104167
mol_189 0.192308 0.050847 0.192308 0.083333 0.081967 0.078125 0.076923 0.172414 0.162791 0.233333 ... 0.391304 0.576271 0.430769 0.600000 0.653846 0.153061 0.275862 0.290323 0.197183 0.086022
mol_190 0.081081 0.066667 0.081081 0.064103 0.090909 0.101266 0.086420 0.153846 0.134615 0.164557 ... 0.252747 0.305882 0.275862 0.292683 0.253012 0.180180 0.194805 0.225000 0.131868 0.101852
mol_191 0.226415 0.048387 0.226415 0.079365 0.078125 0.074627 0.073529 0.179775 0.183908 0.222222 ... 0.500000 0.714286 0.500000 0.516667 0.561404 0.171717 0.262295 0.257576 0.189189 0.083333
mol_192 0.200000 0.043478 0.200000 0.071429 0.085714 0.097222 0.081081 0.166667 0.157895 0.200000 ... 1.000000 0.471429 0.471429 0.342466 0.371429 0.160377 0.235294 0.304348 0.172840 0.088235
mol_193 0.210526 0.061538 0.210526 0.090909 0.089552 0.085714 0.084507 0.159574 0.163043 0.208955 ... 0.471429 1.000000 0.470588 0.507937 0.524590 0.165049 0.246154 0.260870 0.164557 0.069307
mol_194 0.210526 0.045455 0.210526 0.074627 0.089552 0.101449 0.084507 0.172043 0.175824 0.246154 ... 0.471429 0.470588 1.000000 0.357143 0.453125 0.165049 0.227273 0.279412 0.150000 0.080000
mol_195 0.122807 0.066667 0.122807 0.098361 0.096774 0.092308 0.107692 0.142857 0.133333 0.169231 ... 0.342466 0.507937 0.357143 1.000000 0.543860 0.150000 0.206349 0.242424 0.160000 0.095745
mol_196 0.192308 0.068966 0.192308 0.083333 0.100000 0.095238 0.093750 0.186047 0.190476 0.275862 ... 0.371429 0.524590 0.453125 0.543860 1.000000 0.164948 0.298246 0.290323 0.197183 0.086022
mol_197 0.072289 0.072289 0.072289 0.045455 0.068966 0.078652 0.077778 0.767123 0.351064 0.134831 ... 0.160377 0.165049 0.165049 0.150000 0.164948 1.000000 0.134831 0.163043 0.178947 0.084746
mol_198 0.219512 0.086957 0.219512 0.104167 0.102041 0.117647 0.115385 0.168831 0.189189 0.631579 ... 0.235294 0.246154 0.227273 0.206349 0.298246 0.134831 1.000000 0.333333 0.237288 0.085366
mol_199 0.217391 0.056604 0.191489 0.092593 0.111111 0.125000 0.103448 0.170732 0.175000 0.283019 ... 0.304348 0.260870 0.279412 0.242424 0.290323 0.163043 0.333333 1.000000 0.179104 0.117647
mol_200 0.089286 0.051724 0.089286 0.066667 0.065574 0.062500 0.061538 0.216867 0.207317 0.177419 ... 0.172840 0.164557 0.150000 0.160000 0.197183 0.178947 0.237288 0.179104 1.000000 0.052632
mol_201 0.026667 0.069444 0.040541 0.066667 0.140845 0.200000 0.180556 0.073394 0.105769 0.098765 ... 0.088235 0.069307 0.080000 0.095745 0.086022 0.084746 0.085366 0.117647 0.052632 1.000000

202 rows × 202 columns

In [5]:
list_column = []
list_index = []
for indexs in df.index:
    for i in range(len(df.loc[indexs].values)):
        if(float(df.loc[indexs].values[i]) > 0.8 and float(df.loc[indexs].values[i]) < 1):
            list_column.append(df.columns.values[i])
            list_index.append(indexs)
df_column = df.columns.values.tolist()
df_index = df._stat_axis.values.tolist()
df_lsim = df.drop(columns = list(set(df_column).difference(set(list_column))), index = list(set(df_index).difference(set(list_index))))
df_lsim
Out[5]:
mol_7 mol_24 mol_31 mol_53 mol_58 mol_69 mol_75 mol_82 mol_96 mol_105 ... mol_148 mol_151 mol_155 mol_171 mol_178 mol_191 mol_193 mol_197 mol_199 mol_200
mol_7 1.000000 0.170455 0.264706 0.209302 0.095238 0.142857 0.875000 0.170732 0.160494 0.164706 ... 0.131579 0.164706 0.195402 0.800000 0.141026 0.179775 0.159574 0.767123 0.170732 0.216867
mol_24 0.170455 1.000000 0.163265 0.186667 0.149254 0.208955 0.179775 0.285714 0.179104 0.272727 ... 0.224138 0.272727 0.679245 0.206522 0.213115 0.875000 0.807692 0.163265 0.285714 0.178082
mol_31 0.264706 0.163265 1.000000 0.210526 0.119565 0.163043 0.259615 0.163043 0.153846 0.157895 ... 0.141176 0.157895 0.197917 0.234234 0.149425 0.171717 0.153846 0.238938 0.163043 0.191489
mol_53 0.209302 0.186667 0.210526 1.000000 0.344828 0.490909 0.191011 0.171429 0.481481 0.164384 ... 0.161290 0.164384 0.216216 0.178947 0.153846 0.197368 0.172840 0.173469 0.171429 0.812500
mol_58 0.095238 0.149254 0.119565 0.344828 1.000000 0.590909 0.105882 0.166667 0.581395 0.158730 ... 0.153846 0.158730 0.164179 0.111111 0.145455 0.161765 0.136986 0.084211 0.166667 0.339286
mol_69 0.142857 0.208955 0.163043 0.490909 0.590909 1.000000 0.152941 0.213115 0.800000 0.203125 ... 0.230769 0.203125 0.205882 0.155556 0.218182 0.220588 0.191781 0.138298 0.213115 0.490566
mol_75 0.875000 0.179775 0.259615 0.191011 0.105882 0.152941 1.000000 0.180723 0.156627 0.174419 ... 0.128205 0.174419 0.204545 0.777778 0.137500 0.188889 0.180851 0.819444 0.180723 0.183908
mol_82 0.170732 0.285714 0.163043 0.171429 0.166667 0.213115 0.180723 1.000000 0.220339 0.833333 ... 0.254902 0.833333 0.301587 0.195402 0.240741 0.257576 0.260870 0.163043 1.000000 0.179104
mol_96 0.160494 0.179104 0.153846 0.481481 0.581395 0.800000 0.156627 0.220339 1.000000 0.209677 ... 0.240000 0.209677 0.194030 0.172414 0.226415 0.191176 0.164384 0.141304 0.220339 0.604167
mol_105 0.164706 0.272727 0.157895 0.164384 0.158730 0.203125 0.174419 0.833333 0.209677 1.000000 ... 0.240741 1.000000 0.287879 0.188889 0.228070 0.246377 0.250000 0.157895 0.833333 0.171429
mol_131 0.202381 0.592593 0.204301 0.225352 0.171875 0.215385 0.211765 0.295082 0.203125 0.281250 ... 0.232143 0.281250 0.891304 0.238636 0.220339 0.600000 0.483871 0.178947 0.295082 0.200000
mol_141 0.170455 0.257143 0.163265 0.155844 0.149254 0.191176 0.179775 0.760870 0.196970 0.826087 ... 0.245614 0.826087 0.271429 0.193548 0.233333 0.232877 0.236842 0.163265 0.760870 0.162162
mol_145 0.093023 0.161765 0.129032 0.333333 0.837838 0.565217 0.103448 0.180328 0.555556 0.171875 ... 0.148148 0.171875 0.176471 0.108696 0.140351 0.173913 0.148649 0.082474 0.180328 0.327586
mol_147 0.270000 0.166667 0.916667 0.215054 0.122222 0.166667 0.264706 0.166667 0.157303 0.161290 ... 0.144578 0.161290 0.202128 0.238532 0.152941 0.175258 0.156863 0.243243 0.166667 0.195652
mol_148 0.131579 0.224138 0.141176 0.161290 0.153846 0.230769 0.128205 0.254902 0.240000 0.240741 ... 1.000000 0.240741 0.220339 0.160494 0.900000 0.216667 0.222222 0.114943 0.254902 0.169492
mol_151 0.164706 0.272727 0.157895 0.164384 0.158730 0.203125 0.174419 0.833333 0.209677 1.000000 ... 0.240741 1.000000 0.287879 0.188889 0.228070 0.246377 0.250000 0.157895 0.833333 0.171429
mol_155 0.195402 0.679245 0.197917 0.216216 0.164179 0.205882 0.204545 0.301587 0.194030 0.287879 ... 0.220339 0.287879 1.000000 0.230769 0.209677 0.625000 0.557377 0.173469 0.301587 0.191781
mol_171 0.800000 0.206522 0.234234 0.178947 0.111111 0.155556 0.777778 0.195402 0.172414 0.188889 ... 0.160494 0.188889 0.230769 1.000000 0.168675 0.215054 0.181818 0.691358 0.195402 0.184783
mol_178 0.141026 0.213115 0.149425 0.153846 0.145455 0.218182 0.137500 0.240741 0.226415 0.228070 ... 0.900000 0.228070 0.209677 0.168675 1.000000 0.206349 0.212121 0.123596 0.240741 0.161290
mol_191 0.179775 0.875000 0.171717 0.197368 0.161765 0.220588 0.188889 0.257576 0.191176 0.246377 ... 0.216667 0.246377 0.625000 0.215054 0.206349 1.000000 0.714286 0.171717 0.257576 0.189189
mol_193 0.159574 0.807692 0.153846 0.172840 0.136986 0.191781 0.180851 0.260870 0.164384 0.250000 ... 0.222222 0.250000 0.557377 0.181818 0.212121 0.714286 1.000000 0.165049 0.260870 0.164557
mol_197 0.767123 0.163265 0.238938 0.173469 0.084211 0.138298 0.819444 0.163043 0.141304 0.157895 ... 0.114943 0.157895 0.173469 0.691358 0.123596 0.171717 0.165049 1.000000 0.163043 0.178947
mol_199 0.170732 0.285714 0.163043 0.171429 0.166667 0.213115 0.180723 1.000000 0.220339 0.833333 ... 0.254902 0.833333 0.301587 0.195402 0.240741 0.257576 0.260870 0.163043 1.000000 0.179104
mol_200 0.216867 0.178082 0.191489 0.812500 0.339286 0.490566 0.183908 0.179104 0.604167 0.171429 ... 0.169492 0.171429 0.191781 0.184783 0.161290 0.189189 0.164557 0.178947 0.179104 1.000000

24 rows × 24 columns

In [10]:
%matplotlib notebook
mask = np.zeros_like(df_lsim)
mask[np.triu_indices_from(mask)] = True
sns.set_context("paper", font_scale = 1)
with sns.axes_style("ticks"):
    ax = sns.heatmap(df_lsim, mask = mask, center = 0.6, cmap="RdBu_r")