'검색'및 Biopython.kdtree 라이브러리의 다른 모든 방법은 KDtree가 성공적으로 만들어 지지만 '없음'으로 출력을 제공합니다.

StackOverflow https://stackoverflow.com//questions/25023622

문제

다음은 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)가 가장 멀리 떨어져 있으므로 표시되지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top