def write_overlap_densities(
path_hdf5: str, paths_fragment_overlaps: List, swaps: Matrix, dt: int=1):
"""
Write the diagonal of the overlap matrices
"""
logger.info("writing densities in human readable format")
# Track the crossing between MOs
for paths_overlaps in paths_fragment_overlaps:
overlaps = np.stack(retrieve_hdf5_data(path_hdf5, paths_overlaps))
for k, mtx in enumerate(np.rollaxis(overlaps, 0)):
overlaps[k] = mtx[:, swaps[k]][swaps[k]]
# Print to file the densities for each fragment on a given MO
for ifrag, paths_overlaps in enumerate(paths_fragment_overlaps):
# time frame
frames = overlaps.shape[0]
ts = np.arange(1, frames + 1).reshape(frames, 1) * dt
# Diagonal of the 3D-tensor
densities = np.diagonal(overlaps, axis1=1, axis2=2)
data = np.hstack((ts, densities))
# Save data in human readable format
file_name = 'densities_fragment_{}.txt'.format(ifrag)
np.savetxt(file_name, data, fmt='{:^3}'.format('%e'))
评论列表
文章目录