0

原子間の距離を比較するための非常に恐ろしいアルゴリズムがありますが、それは機能しません。コードは次のとおりです。

for k in ResListA:
  for n in ResListB:
    for m in ResListA[counter3].atoms:
        for z in ResListB[counter4].atoms:
            coordDist = distance.distance(ResListA[counter3].atoms[counter4],ResListB[counter2].atoms[counter1])
            counter1 = counter1 + 1
        counter1 = 0         
        counter4 = counter4 + 1 
    counter4 = 0
    counter2 = counter2 + 1
  counter2 = 0
  counter3 = counter3 + 1

基本的に私はその最小の距離が欲しい

ResListA [0] .atoms [0、..、n]

ResListB [0、..、k] .atoms [0、..、m]

計算されます。ただし、計算します

ResListA [0] .atoms [0]

ResListB [0、..、k] .atoms [0、..、m]

例えば:

ResListA [N、P、C、N、C] ResListB [C、C] [P、P]..。

そのはず

dist(N、C)dist(N、C)dist(P、C)dist(P、C)

いいえ

dist(N、C)dist(N、C)dist(N、P)dist(N、P)

前もって感謝します。

4

2 に答える 2

2

あなたのコードはもっとこのように書くことができると思います。

for k in ResListA:
    for n in ResListB:
        for m in k.atoms:
            for z in n.atoms:
                coordDist = distance.distance(m.atoms, z.atoms)

何をするのか分かりdistance.distanceません。coordDistあなたは関与して何かをしているべきではありませんmin()か?

于 2012-10-18T22:25:29.380 に答える
0

gnibblerはおそらく正しいことですが、これは現在のコードが単純化したものです。

for k in ResListA:
    for n in ResListB:
        for counter4, m in enumerate(k.atoms):
            for counter1, z in enumerate(ResListB[counter4].atoms):
                coordDist = distance.distance(m, n.atoms[counter1])

あなたの問題はあなたが必要とすることです:

for z in ResListB[counter2].atoms:

それ以外の

for z in ResListB[counter4].atoms:
于 2012-10-18T22:32:26.387 に答える