Skip to content

Commit 0496b00

Browse files
committed
Add python installation script.
1 parent f71d95b commit 0496b00

File tree

7 files changed

+2709
-45
lines changed

7 files changed

+2709
-45
lines changed

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ target_link_libraries(sparsehc-dm ${LIBS})
2222
add_definitions(-std=c++11)
2323

2424
file(GLOB SHARED_SOURCES src/averagecluster.cpp src/cluster.cpp src/common.cpp src/completecluster.cpp src/dendrogram.cpp src/inmatrix.cpp src/matrix.cpp src/singlecluster.cpp)
25+
add_custom_target(python_init COMMAND touch __init__.py)
2526
ADD_LIBRARY(sparsehc_dm SHARED python/sparsehc-dm_python.cpp ${SHARED_SOURCES})
27+
add_dependencies(sparsehc_dm python_init)
2628
target_link_libraries(sparsehc_dm ${LIBS})
2729
set_target_properties(sparsehc_dm PROPERTIES PREFIX "" SUFFIX ".so")
2830

31+
install(CODE "execute_process(COMMAND python ../python/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")

examples/aMD-148l-all_1.pdb

Lines changed: 2662 additions & 0 deletions
Large diffs are not rendered by default.

examples/aMD-148l-first1k.nc

30.4 MB
Binary file not shown.

examples/fastcluster_load.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
import mdtraj as md
88
import numpy as np
99

10-
N=int(sys.argv[1])
11-
traj_filename='aMD-148l-first{}k.nc'.format(N)
10+
Nk=1
11+
if len(sys.argv)>1:
12+
Nk=int(sys.argv[1])
13+
traj_filename='aMD-148l-first{}k.nc'.format(Nk)
1214
top_filename='aMD-148l-all_1.pdb'
1315

1416
first_frame = md.load_frame(traj_filename, 0,top=top_filename)
@@ -17,15 +19,15 @@
1719
start=time.time()
1820
traj=md.load(traj_filename,top=top_filename, atom_indices=atoms_to_keep)
1921
finishedLoad=time.time()
20-
print ("finished loading ({}k): {}".format(N,finishedLoad-start))
22+
print ("finished loading ({}k): {}".format(Nk,finishedLoad-start))
2123

22-
N=traj.n_frames
23-
D=np.empty((N*(N-1)/2,))
24+
Nframes=traj.n_frames
25+
D=np.empty((Nframes*(Nframes-1)/2,))
2426
j=0
25-
for i in range(0,N-1):
27+
for i in range(0,Nframes-1):
2628
rmsds=md.rmsd(traj, traj, i)[i+1:]
27-
D[j:j+N-i-1]=rmsds
28-
j+=N-1-i
29+
D[j:j+Nframes-i-1]=rmsds
30+
j+=Nframes-1-i
2931

3032
#D = np.empty((traj.n_frames, traj.n_frames))
3133
#for i in range(traj.n_frames):
@@ -34,15 +36,10 @@
3436

3537
finishedRMSD=time.time()
3638
print ("finished rmsd: {}".format(finishedRMSD-finishedLoad))
39+
#Z-matrix contains the linkage history, see more at http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.linkage.html#scipy.cluster.hierarchy.linkage
3740
Z=linkage(D, method='complete',preserve_input=False)
3841
finishedClust=time.time()
39-
print ("finished clustering: {}".format(finishedClust-finishedRMSD))
4042

41-
#for r in Z:
42-
#print("{}\t{}\t{}\t{}".format(int(r[0]),int(r[1]),r[2],int(r[3])))
43-
44-
#plt.figure(101)
45-
#plt.subplot(1, 2, 1)
46-
#plt.title("ascending")
47-
#cluster.hierarchy.dendrogram(Z)
48-
#plt.show()
43+
#One would probably like to save the Z-matrix for the future, so that there is no need to redo the clustering
44+
open('z_sparsehc-dm_load_{}k.json'.format(Nk), 'w').write(json.dumps(Z))
45+
print ("finished clustering: {}".format(finishedClust-finishedRMSD))

examples/sparsehc-dm_interload.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import sparsehc_dm
1+
from sparsehc_dm import sparsehc_dm
22
import random
33
import time
44
import numpy as np
55
import mdtraj as md
66

7-
N=10000
8-
traj_filename='aMD-148l-first10k.nc'
7+
N=1
8+
if len(sys.argv)>1:
9+
N=int(sys.argv[1])
10+
traj_filename='aMD-148l-first{}k.nc'.format(N)
911
top_filename='aMD-148l-all_1.pdb'
1012

1113
first_frame = md.load_frame(traj_filename, 0,top=top_filename)

examples/sparsehc-dm_load.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import sys
22
import gc
3-
import sparsehc_dm
3+
from sparsehc_dm import sparsehc_dm
44
import random
55
import time
66
import mdtraj as md
77
import numpy
8+
import json
89

9-
N=int(sys.argv[1])
10-
traj_filename='aMD-148l-first{}k.nc'.format(N)
10+
Nk=1
11+
if len(sys.argv)>1:
12+
Nk=int(sys.argv[1])
13+
traj_filename='aMD-148l-first{}k.nc'.format(Nk)
1114
top_filename='aMD-148l-all_1.pdb'
1215

1316
first_frame = md.load_frame(traj_filename, 0,top=top_filename)
@@ -18,28 +21,27 @@
1821

1922
m=sparsehc_dm.InMatrix()
2023
finishedLoad=time.time()
21-
print ("finished loading ({}k): {}".format(N,finishedLoad-start))
24+
print ("finished loading ({}k): {}".format(Nk,finishedLoad-start))
2225

23-
N=traj.n_frames
26+
Nframes=traj.n_frames
2427
rmsds=list()
25-
for i in range(0,N-1):
28+
for i in range(0,Nframes-1):
2629
rmsds=md.rmsd(traj, traj, i)[i+1:].tolist()
2730
sparsehc_dm.push(m,rmsds,i)
28-
#if( (i+1)%20==0):
29-
#sparsehc_dm.push(m,rmsds,i-19,N)
30-
#rmsds=list()
3131

3232

33-
#for i in range(0,N-1):
33+
#for i in range(0,Nframes-1):
3434
#rmsds=md.rmsd(traj, traj, i)
35-
#for j in range(i+1,N):
35+
#for j in range(i+1,Nframes):
3636
#m.push(i,j,float(rmsds[j]))
3737

3838
finishedRMSD=time.time()
3939
print ("finished rmsd: {}".format(finishedRMSD-finishedLoad))
4040

41+
#Z-matrix contains the linkage history, see more at http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.linkage.html#scipy.cluster.hierarchy.linkage
4142
Z=sparsehc_dm.linkage(m,"complete")
4243
finishedClust=time.time()
43-
print ("finished clustering: {}".format(finishedClust-finishedRMSD))
44-
#for r in Z:
45-
#print("{}\t{}\t{}\t{}".format(r[0],r[1],r[2],r[3]))
44+
45+
#One would probably like to save the Z-matrix for the future, so that there is no need to redo the clustering
46+
open('z_sparsehc-dm_load_{}.json'.format(Nk), 'w').write(json.dumps(Z))
47+
print ("finished clustering: {}".format(finishedClust-finishedRMSD))

python/setup.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
from distutils.core import setup
2-
from distutils.extension import Extension
3-
setup(name="sparsehc-dm",
4-
ext_modules=[
5-
Extension("sparsehc-dm",["sparsehc-dm_python.cpp",],
6-
library_dirs=["/usr/local/lib",],
7-
libraries=["",],
8-
include_dirs=[".","../src"],
9-
depends=[]),
10-
]
11-
)
1+
from distutils.core import setup, Extension
2+
import os
3+
setup (name = 'sparsehc_dm',
4+
version = '',
5+
description = 'Python wrapper for sparsehc_dm with STXXL sorting integrated',
6+
packages=['sparsehc_dm'],
7+
package_dir={'sparsehc_dm':''},
8+
package_data={'sparsehc_dm':['sparsehc_dm.so',]},
9+
)

0 commit comments

Comments
 (0)