本文整理汇总了Python中ZIBMolPy.pool.Pool.coord_range方法的典型用法代码示例。如果您正苦于以下问题:Python Pool.coord_range方法的具体用法?Python Pool.coord_range怎么用?Python Pool.coord_range使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ZIBMolPy.pool.Pool
的用法示例。
在下文中一共展示了Pool.coord_range方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: from ZIBMolPy.pool import Pool [as 别名]
# 或者: from ZIBMolPy.pool.Pool import coord_range [as 别名]
#.........这里部分代码省略.........
# orthogonalize and normalize eigenvectors
eigvectors = orthogonalize(eigvalues, eigvectors, corr_node_weights)
# perform PCCA+
# First two return-values "c_f" and "indicator" are not needed
(chi_matrix, rot_matrix) = cluster_by_isa(eigvectors, n_clusters)[2:]
if(options.optimize_chi):
print "\n### Optimizing chi matrix ..."
outliers = 5
mean_weight = np.mean(corr_node_weights)
threshold = mean_weight/100*outliers
print "Light-weight node threshold (%d%% of mean corrected node weight): %.4f."%(outliers, threshold)
# accumulate nodes for optimization
edges = np.where(np.max(chi_matrix, axis=1) > 0.9999)[0] # edges of simplex
heavies = np.where( corr_node_weights > threshold)[0] # heavy-weight nodes
filtered_eigvectors = eigvectors[ np.union1d(edges, heavies) ]
# perform the actual optimization
rot_matrix = opt_soft(filtered_eigvectors, rot_matrix, n_clusters)
chi_matrix = np.dot(eigvectors[:,:n_clusters], rot_matrix)
# deal with light-weight nodes: shift and scale
for i in np.where(corr_node_weights <= threshold)[0]:
if(i in edges):
print "Column %d belongs to (potentially dangerous) light-weight node, but its node is a simplex edge."%(i+1)
continue
print "Column %d is shifted and scaled."%(i+1)
col_min = np.min( chi_matrix[i,:] )
chi_matrix[i,:] -= col_min
chi_matrix[i,:] /= 1-(n_clusters*col_min)
qc_matrix = np.dot( np.dot( np.linalg.inv(rot_matrix), np.diag(eigvalues[range(n_clusters)]) ), rot_matrix ) - np.eye(n_clusters)
cluster_weights = rot_matrix[0]
print "\n### Matrix numerics check"
print "-- Q_c matrix row sums --"
print np.sum(qc_matrix, axis=1)
print "-- cluster weights: first column of rot_matrix --"
print cluster_weights
print "-- cluster weights: numpy.dot(node_weights, chi_matrix) --"
print np.dot(corr_node_weights, chi_matrix)
print "-- chi matrix column max values --"
print np.max(chi_matrix, axis=0)
print "-- chi matrix row sums --"
print np.sum(chi_matrix, axis=1)
# store final results
np.savez(pool.chi_mat_fn, matrix=chi_matrix, n_clusters=n_clusters, node_names=[n.name for n in active_nodes])
np.savez(pool.qc_mat_fn, matrix=qc_matrix, n_clusters=n_clusters, node_names=[n.name for n in active_nodes], weights=cluster_weights)
if options.export_matlab:
savemat(pool.analysis_dir+"chi_mat.mat", {"chi_matrix":chi_matrix})
savemat(pool.analysis_dir+"qc_mat.mat", {"qc_matrix":qc_matrix, "weights":cluster_weights})
register_file_dependency(pool.chi_mat_fn, pool.s_corr_mat_fn)
register_file_dependency(pool.qc_mat_fn, pool.s_corr_mat_fn)
for fn in (pool.s_mat_fn, pool.s_corr_mat_fn):
register_file_dependency(pool.chi_mat_fn, fn)
register_file_dependency(pool.qc_mat_fn, fn)
# touch analysis directory (triggering update in zgf_browser)
atime = mtime = time.time()
os.utime(pool.analysis_dir, (atime, mtime))
# show summary
if(options.summary):
print "\n### Preparing cluster summary ..."
chi_threshold = 1E-3
from pprint import pformat
for i in range(n_clusters):
involved_nodes = [active_nodes[ni] for ni in np.argwhere(chi_matrix[:,i] > chi_threshold)]
max_chi_node = active_nodes[ np.argmax(chi_matrix[:,i]) ]
c_max = []
for c in pool.converter:
coord_range = pool.coord_range(c)
scale = c.plot_scale
edges = scale(np.linspace(np.min(coord_range), np.max(coord_range), num=50))
hist_cluster = np.zeros(edges.size-1)
for (n, chi) in zip([n for n in active_nodes], chi_matrix[:,i]):
samples = scale( n.trajectory.getcoord(c) )
hist_node = np.histogram(samples, bins=edges, weights=n.frameweights, normed=True)[0]
hist_cluster += n.obs.weight_corrected * hist_node * chi
c_max.append( scale(np.linspace(np.min(coord_range), np.max(coord_range), num=50))[np.argmax(hist_cluster)] )
msg = "### Cluster %d (weight=%.4f, #involved nodes=%d, representative='%s'):"%(i+1, cluster_weights[i], len(involved_nodes), max_chi_node.name)
print "\n"+msg
print "-- internal coordinates --"
print "%s"%pformat(["%.2f"%cm for cm in c_max])
print "-- involved nodes --"
print "%s"%pformat([n.name for n in involved_nodes])
print "-"*len(msg)