'검색'및 Biopython.kdtree 라이브러리의 다른 모든 방법은 KDtree가 성공적으로 만들어 지지만 '없음'으로 출력을 제공합니다.
-
21-12-2019 - |
문제
다음은 KDTREE를 만들고 주어진 센터의 반지름을 가진 검색 지점을 만들기위한 코드 스 니펫입니다.
코드 스 니펫 :
threed_array = np.array(my_list, np.float_)
atom_kdtree.set_coords(threed_array)
try:
print(atom_kdtree.built)
print(atom_kdtree.search(threed_array[1], 100.00000000))
except Exception, err:
print traceback.format_exc()
print sys.exc_info()[0]
.
출력 :
1
None
.
my_list
는 3D 공간의 포인트의 좌표 목록입니다.threed_array
는 numpy nd 배열입니다.
다음 KDtree.Built는 출력을 '1'로 제공합니다.'검색'은 '없음'을 제공합니다.KDtree를 만들기 위해 나간다는 단계가 누락 되었습니까?
해결책
문제점은 atom_kdtree.search()
가 아무것도 반환하지 않는다는 것입니다.
검색을 수행해야하며 문제의 지점을 요청해야합니다.I. e.
my_list = ([0, 0, 0],
[1, 1, 1],
[3, 3, 3])
threed_array = np.array(my_list, np.float_)
atom_kdtree = KDTree(3)
atom_kdtree.set_coords(threed_array)
# The search is done here. Every point within a radious < 2 from [0, 0, 0].
atom_kdtree.search(threed_array[0], 2.00000000)
# Here we print the points
print(atom_kdtree.get_indices())
print(atom_kdtree.get_radii())
.
출력 :
[0 1]
[ 0. 1.73205078]
.
즉, 포인트 0과 1은 그 지점에서 0, 1.73205078의 거리를 갖는 점 (0, 0, 0)에서 억제 <2 내에 있습니다.포인트 (3, 3, 3)가 가장 멀리 떨어져 있으므로 표시되지 않습니다.
제휴하지 않습니다 StackOverflow