Tôi có một danh sách tọa độ xyz của các điểm khác nhau từ tệp PDB được gán cho biến x. Đây là một đoạn của những gì nó trông giống như
[ 8.721 15.393 22.939]
[11.2 13.355 25.025]
[11.045 15.057 28.419]
[13.356 13.814 31.169]
[12.54 13.525 34.854]
[14.038 15.691 37.608]
[16.184 12.782 38.807]
[17.496 12.053 35.319]
[18.375 15.721 34.871]
[20.066 15.836 38.288]
[22.355 12.978 37.249]
[22.959 14.307 33.724]
[24.016 17.834 34.691]
[26.63 16.577 37.161]
[29.536 18.241 35.342]
[27.953 21.667 35.829]
Tôi muốn sử dụng những điểm này để tính toán ma trận khoảng cách. Tôi đã cố gắng sử dụng hàm distance_matrix của SciPy, tuy nhiên nó dường như không hỗ trợ tọa độ xyz, chỉ có tọa độ x và y. Có cách nào nhanh chóng để tính toán ma trận khoảng cách này theo cách thủ công không?
pdb trăn • 3. 3k lượt xemTHÊM NHẬN XÉT • đã cập nhật 4. 1 năm trước bởi Joe 20k • đã viết 4. 1 năm trước bởi westin. kosater ▴ 70
1
Vào chế độ chỉnh sửa
Bạn có thể làm điều này trong R với gói rpdb dễ dàng hơn nhiều. Ngoài ra, tôi khuyên bạn nên giữ tên nguyên tử được đính kèm
THÊM TRẢ LỜI • 4. 1 năm trước bởi Michael Dondrup 52k
0
Vào chế độ chỉnh sửa
Tôi đồng ý với Michael rằng có lẽ tốt nhất là giữ cho nó 'nguyên vẹn' với tên nguyên tử, v.v., nhưng thứ bạn đang tìm kiếm là khoảng cách Euclide 3D
Hãy xem. https. // stackoverflow. com/câu hỏi/1401712/làm thế nào-có thể-the-euclid-khoảng cách-được-tính-với-numpy
THÊM TRẢ LỜI • 4. 1 năm trước bởi Joe 20k
2
Vào chế độ chỉnh sửa
4. 1 năm trước
joe 20k
Bỏ qua nhận xét trước đó của tôi, tôi nghĩ đây là một cách để làm điều đó, mặc dù tôi chưa kiểm tra để đảm bảo toán học là chính xác. Những con số trông ổn mặc dù tôi nghĩ
Tôi đã phải định dạng lại một chút dữ liệu đầu vào của bạn để dễ sử dụng hơn một chút
Dữ liệu đầu vào
8.721 15.393 22.939
11.2 13.355 25.025
11.045 15.057 28.419
13.356 13.814 31.169
12.54 13.525 34.854
14.038 15.691 37.608
16.184 12.782 38.807
17.496 12.053 35.319
18.375 15.721 34.871
20.066 15.836 38.288
22.355 12.978 37.249
22.959 14.307 33.724
24.016 17.834 34.691
26.63 16.577 37.161
29.536 18.241 35.342
27.953 21.667 35.829
Mã số
import numpy
import sys
import itertools
with open[sys.argv[1], 'r'] as ifh:
coords = [numpy.array[line.rstrip['\n'].split[' ']] for line in ifh]
fl_coords = [arr.astype[float] for arr in coords]
for each in itertools.combinations[fl_coords,2]:
print['{} - {} = {}'.format[each[0],each[1], numpy.linalg.norm[each[0]-each[1]]]]
Một số ví dụ đầu ra
[ 8.721 15.393 22.939] - [ 11.2 13.355 25.025] = 3.8275685493534914
[ 8.721 15.393 22.939] - [ 11.045 15.057 28.419] = 5.961901710025082
[ 8.721 15.393 22.939] - [ 13.356 13.814 31.169] = 9.576500717903174
[ 8.721 15.393 22.939] - [ 12.54 13.525 34.854] = 12.650747408750203
[ 8.721 15.393 22.939] - [ 14.038 15.691 37.608] = 15.60573144713185
[ 8.721 15.393 22.939] - [ 16.184 12.782 38.807] = 17.728708751626556
[ 8.721 15.393 22.939] - [ 17.496 12.053 35.319] = 15.537716209276061
[ 8.721 15.393 22.939] - [ 18.375 15.721 34.871] = 15.351870374648167
[ 8.721 15.393 22.939] - [ 20.066 15.836 38.288] = 19.091806488648473
Điều này sẽ cung cấp cho bạn mọi thứ ở định dạng 'dài' cho tất cả các khoảng cách điểm theo cặp, tôi không chắc bạn muốn tất cả so với tất cả hay chỉ tất cả so với một, nhưng sẽ không mất nhiều thời gian để thao tác điều này trong một ma trận
API ma trận khoảng cách cung cấp khoảng cách và thời gian di chuyển cho ma trận điểm xuất phát và điểm đến, đồng thời bao gồm các hàng chứa các giá trị duration
và distance
cho mỗi cặp. Ma trận khoảng cách có sẵn trong một số hình thức
- như một API độc lập
- như một phần của API JavaScript Bản đồ phía máy khách
- để sử dụng phía máy chủ như một phần của Thư viện máy khách cho Dịch vụ web của Google Maps
Bạn có thể làm gì với API ma trận khoảng cách?
API trả về thông tin dựa trên tuyến đường được đề xuất giữa điểm bắt đầu và điểm kết thúc. Bạn có thể yêu cầu dữ liệu khoảng cách cho các chế độ di chuyển khác nhau, yêu cầu dữ liệu khoảng cách theo các đơn vị khác nhau như km hoặc dặm và ước tính thời gian di chuyển khi tham gia giao thông
Để biết thêm ví dụ, hãy xem hướng dẫn dành cho nhà phát triển API ma trận khoảng cách, cung cấp phần giới thiệu về cách sử dụng API và tài liệu tham khảo về các thông số có sẵn
Tại sao sử dụng Ma trận khoảng cách?
Sử dụng API ma trận khoảng cách khi giải pháp của bạn yêu cầu khoảng cách và thời gian di chuyển giữa một danh sách lớn các điểm xuất phát-điểm đến
Nếu bạn muốn sử dụng chức năng Ma trận khoảng cách và nhận tuần tự hóa các yêu cầu và giải tuần tự hóa các phản hồi, thử lại tự động và một số xác thực yêu cầu của ứng dụng khách, hãy thử một trong các thư viện ứng dụng khách của chúng tôi. Nếu bạn đã sử dụng API JavaScript của Maps, hãy sử dụng dịch vụ Ma trận khoảng cách để nhận chức năng của API ma trận khoảng cách
Ghi chú. Dịch vụ này không trả lại thông tin tuyến đường chi tiết. Để có được điều đó, hãy chuyển điểm gốc và điểm đến mong muốn cho API Chỉ đường.Cách sử dụng Ma trận khoảng cách
Truy cập API ma trận khoảng cách thông qua giao diện HTTP, với các yêu cầu được tạo dưới dạng chuỗi URL, chuyển nguồn gốc và đích cùng với khóa API của bạn