temp.bgfPerl的嵌套循環:陣列 - 計算最小距離
ATOM 218 CB ASN 1 34 -7.84400 -9.19900 -5.03100 C_3 4 0 -0.18000 0 0
ATOM 221 CG ASN 1 34 -7.37700 -7.83400 -4.55200 C_R 3 0 0.55000 0 0
ATOM 226 C ASN 1 34 -9.18200 -10.62100 -6.58300 C_R 3 0 0.51000 0 0
ATOM 393 CB THR 2 69 -3.33000 -7.97700 -7.72000 C_3 4 0 0.14000 0 0
ATOM 397 CG2 THR 2 69 -4.75300 -8.54400 -7.67200 C_3 4 0 -0.27000 0 0
ATOM 401 C THR 2 69 -2.58000 -9.55700 -5.85500 C_R 3 0 0.51000 0 0
ATOM 417 CB THR 2 71 1.99100 -9.86800 -2.77000 C_3 4 0 0.14000 0 0
ATOM 421 CG2 THR 2 71 2.86300 -10.15400 -1.55700 C_3 4 0 -0.27000 0 0
ATOM 425 C THR 2 71 -0.19100 -10.14200 -1.62900 C_R 3 0 0.51000 0 0
ATOM 492 CB CYS 2 77 -5.17100 -14.77100 4.04000 C_3 4 0 -0.11000 0 0
ATOM 495 SG CYS 2 77 -6.29600 -14.88500 2.59500 S_3 2 2 -0.23000 0 0
ATOM 497 C CYS 2 77 -4.65100 -13.75800 6.12000 C_R 3 0 0.51000 0 0
ATOM 2071 CB SER 7 316 -3.87300 -2.15900 1.02300 C_3 4 0 0.05000 0 0
ATOM 2076 C SER 7 316 -4.79700 -1.16500 -1.10800 C_R 3 0 0.51000 0 0
target.bgf
ATOM 575 CB ASP 2 72 -2.80100 -7.45000 -2.09400 C_3 4 0 -0.28000 0 0
ATOM 578 CG ASP 2 72 -3.74900 -6.45900 -1.31600 C_R 3 0 0.62000 0 0
ATOM 581 C ASP 2 72 -3.19300 -9.62400 -0.87900 C_R 3 0 0.51000 0 0
我有兩個數據文件。第一個文件包含我想要計算距離的殘差的數據。第二個文件包含目標殘留物的座標。
我想計算兩個量之間的最小距離(即ASP和temp.bgf中的殘基)。我無法想出存儲x,y,z值並在temp.bgf中比較距離的最佳方法。
關於如何進行計算一直存在疑問。這裏是我的想法
@asp_atoms
@asn_atoms
$asnmin, aspmin
foreach $ap (@asp_atoms)
{
foreach $an (@asn_atoms)
{
dist = dist($v..$g...);
if($dist < $min)
{
$min = $dist;
}
}
}
我希望闡明如何實現代碼的問題。但是,我遇到的問題是如何將值存儲在數組中並遍歷文件。
此外,爲了澄清究竟如何(即什麼數字將用於距離,這是我想要做的例子)。
對於具有以下座標的ASP CB原子:-2.80100 -7.45000 -2.09400 我想計算ASN CB,ASN CG,ASN C原子之間的距離。最小值是打印出的值。不幸的是,我並沒有確切的數值來確定最小值是多少,但我必須輸出小於5個單位距離的值。然後,ASP CG原子距離將被計算到所有的ASN原子來查看最小值。所以我試圖在這裏找到最小距離。
你能否澄清一下$ AP(@targets)表示syntatically。我是perl的初學者。 – user2605011
它是foreach循環語法的一部分。 'foreach(@targets){[...]}循環** @ targets **的元素,並在每次迭代中將** $ **設置爲當前元素。 'foreach $ ap(@targets){[...]}'爲每個元素使用** $ ap **而不是** $ _ **。 –
直到您確認字段由基於間隔的間隙(而非位置座標)定義之前,請勿使用此答案。如果每個字段在一行中佔用一定數量的空格,則該腳本可能會在您沒有注意到的情況下巧妙地失敗。 – wespiserA