0

有人能帮我吗?

我有 20 种氨基酸 (AA) 和 7 种理化性质(RADA880102;FAUJ880103;ZIMJ680104;GRAR740102;CRAJ730103;BURA740101;CHAM820102)

输入是一个制表符分隔的文本文件,它看起来像这样:

 Amino-acids    A   R   N   D   C   Q   E   G   H   I   L   K   M   F   P   S   T   W   Y   V
RADA880102  0.52    -1.32   -0.01   0   0   -0.07   -0.79   0   0.95    2.04    1.76    0.08    1.32    2.09    0   0.04    0.27    2.51    1.63    1.18
FAUJ880103  1   6.13    2.95    2.78    2.43    3.95    3.78    0   4.66    4   4   4.77    4.43    5.89    2.72    1.6 2.6 8.08    6.47    3
ZIMJ680104  6   10.76   5.41    2.77    5.05    5.65    3.22    5.97    7.59    6.02    5.98    9.74    5.74    5.48    6.3 5.68    5.66    5.89    5.66    5.96
GRAR740102  8.1 10.5    11.6    13  5.5 10.5    12.3    9   10.4    5.2 4.9 11.3    5.7 5.2 8   9.2 8.6 5.4 6.2 5.9
CRAJ730103  0.6 0.79    1.42    1.24    1.29    0.92    0.64    1.38    0.95    0.67    0.7 1.1 0.67    1.05    1.47    1.26    1.05    1.23    1.35    0.48
BURA740101  0.486   0.262   0.193   0.288   0.2 0.418   0.538   0.12    0.4 0.37    0.42    0.402   0.417   0.318   0.208   0.2 0.272   0.462   0.161   0.379
CHAM820102  -0.368  -1.03   0   2.06    4.53    0.731   1.77    -0.525  0   0.791   1.07    0   0.656   1.06    -2.24   -0.524  0   1.6 4.91    0.401

我正在尝试在 Python 中编写一个脚本,以使用以下公式计算每对 AA 的欧几里得距离

dist = sqrt[Σ[(xa-xb)^2 + (ya-yb)^2 + (za-zb)^2 + (ma-mb)^2 + (na-nb)^2 + (pa-pb)^2 + (ra-rb)^2]]

其中(xa、ya、za、ma、na、pa 和 ra)表示原始 AA 的七种物理化学性质之一,(xb、yb、zb、mb、nb、pb 和 rb)表示七种物理化学性质中的另一种取代AA的性质。

例如,两个 AA A 和 R 之间的欧几里得距离看起来像这样
dist = sqrt[Σ[(0.52-(-1.32))^2 + (1-6.13)^2 + (6-10.76)^2 + (8.1 -10.5)^2 + (0.6-0.79)^2 + (0.486-0.262)^2 + (-0.368-(-1.03))^2]]

原始公式可在第 2 页的此链接中找到“ http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3589708/pdf/fgene-04-00021.pdf

我希望我的脚本返回一个欧几里得距离矩阵作为具有 380 个值的输出

A   R   N   D   C   Q   E   G   H   I   L   K   M   F   P   S   T   W   Y   V

A
R
N
D
C
Q
E
G
H
I
L
K
M
F
P
S
T
W
Y
V

感谢您的任何帮助

4

1 回答 1

0

根据您的评论,您坚持的部分是创建一个矩阵以从函数返回

def zeros_matrix(width,height):
    return [[0 for _ in range(width)] for _ in range(height)]

将进一步返回一个全为零的矩阵,因为我怀疑这是你唯一被卡住的地方

打开文件并将其读入矩阵

with open("some_file") as f:
     matrix = map(str.split,f)

print matrix

计算 2 行之间的距离

import math
def row_dist(row1,row2):
   dist = #some calculation I dont really understand
   return dist

print sorted(matrix,key=row_dist)
于 2013-04-27T21:32:05.837 回答