Changelog#
Version 3.1.0 (Todo Date)#
Additions#
More Tests.
A lot more tests have been implemented. The software is pretty stable for general use.
Reference training.
The
AngleDihedralCartesianEncoderMapclass now runs a short reference training before the actual neural network training. The idea behind this training is to get typical values for the cartesian cost contributions (dihedral_cost, angle_cost, cartesian_cost). And adjust them to roughly the same values.
Plotting:
Added plotly interactive distance histogram, in which the sigmoid parameters can be adjusted interactively. This function is accessible as the
distance_histogram_interactivefunction inencodermap.plot:
from encodermap.plot import distance_histogram_interactive
distance_histogram_interactive(
highd_data,
periodicity=3.141,
)
Added a plotly/dash-based interactive plotting, which supports clustering and path generation.
The
TrajEnsembleandSingleTrajclasses:Added a way for a
TrajEnsembleto be saved to a single netCDF-formatted HDF5 file.
Better Docs:
Added a
run_livereload.pyscript todocswith which the docs can be built interactively.Reworked the notebooks to allow better Google Colab integration and added the new interactive plotting tools.
Reworked the notebooks to allow better Google Colab integration and added the new interactive plotting tools.
Tensorflow stuff:
Added a clashes metric, that calculates the clashes during training.
A RMSD metric is currently being developed.
Changed to
pyproject.tomland added better import sorting with isort. Can be run with$ isort .Added the possibility to choose different kernel and bias initializers. You can now supply the keywords:
“VarianceScaling”: For the normal variance scaling initializer. This is the default.
“deterministic”: This will use the old
tf.compat.v1.variance_scaling_initizlierwiht a seed, so that the starting weights are deterministic.“ones”: For a weight matrix full of ones.
You can also provide a dict following TensorFlow’s naming convention for unnamed dense layers: [“dense/kernel”, “dense_1/kernel”, “dense_2/kerne”, etc.] as the keys and np.ndarrays as the values and these arrays will be used. This can also be used to rebuilt a model from bare numpy weight arrays.
The BiasInitializer doesn’t recognize the standard “VarianceScaling” keyword, but uses the “RandomNormal” keyword as a default. It also recognizes “deterministic”, “ones” and can use a dict with these keys: [“dense/bias”, “dense_1/bias”, “dense_2/bias”, etc.]
Fixes#
Fixed error in
TrajEnsemble._pyemma_indexing, which did not correctly concatenate theSingleTraj’s.Fixed error using the
TrajEnsemble.load_CVsmethod with thelabelsargument, which did not recognize the passed indataas anp.array.Fixed the calculation of sidechains in the tf1 version according to #25.
Fixed the activation functions for the ADCEMap model.
Fixed the splits of the ADCEMap model, which led to bad decoding.
Replaced the
tf.keras.backend.Variable_train_stepin all encodermap models that implement custom training with_my_train_counter, because the subclasses models advanced thetrain_stepby themselves, leading to train_counters advancing in multiples of two for all logging purposes (tensorboard).Fixed the way atom indices are passed for
TrajEnsembles. Previously thexr.Datasets of theSingleTrajclasses had attributes with numpy arrays giving the indices of the atoms from which this attribute was calculated. E.g. when a dihedral feature was loaded, thetraj._CVs.attrs["indices"]had a numpy array of shape (n_dihedrals, 4) to index the atoms from which the dihedrals were loaded. Adding a distance feature to this traj would have made thetraj._CVs.attrs["indices"]into a list of numpy arrays with shapes [(n_dihedrals, 4), (n_distances, 2)]. This attribute could not be serialized correctly. Now the datasets contain their ownfeature_indicesdataarrays, that omit the frame coordinate and keep track of the atoms from which this feature was calculated.Fixed the
dihedral_to_cartesian_tf_one_way_layersfunction to be more compatible with the tf1 version of EncoderMap.Fixed that the argument
datasetforAngleCartesianEncoderMapis not used, when thetrajshave the property_CVs_in_fileas True.Fixed the
np.meansection indihedral_to_cartesian_diubi.py:
means = []
for values in costs:
means.append(np.mean([i.value for i in values]))
Version 3.0.1 (2023-07-27)#
Fixes#
Fixed error in
encodermap_tf1/moldata.py, where sidechain dihedrals are not correctly indexed. Now using MDTraj’s chi1, ch2, … indexers (#25)In plot/utils.py fixed
_unpack_cluster_infoto allow pandas versions < 2.0 and >= 2.0.Fixed github workflow to accomodate newer versions of html-testRunner (see: https://stackoverflow.com/questions/71858651/attributeerror-htmltestresult-object-has-no-attribute-count-relevant-tb-lev)
Fixed the optional imports for dask.
Fixed the loss function for the ADCEncoderMap cartesian dist sig cost.
Fixed the unittest for optional imports in tests/test_optional_imports_before_installing_reqs.py.
Fixed the unittests in tests/test_moldata.py (#25).
Fixed the unittests in tests/test_losses.py
Fixed the .gitignore and excluded test files.
Additions#
Added
del_CVstoSingleTrajandTrajEnsembleto easily delete attached CVs.
2021-02-01#
Reduced the number of training steps in the example notebooks.
Added Google Colab links to the example notebooks.
Version 3.0.0 (2021-01-25)#
Updated tests to TensorFlow2
Added trajinfo classes.
Autoencoder model and high-level training available.
Started tracking changes via this changelog.
Started semantic versioning.
Features from Tensorflow 1 version are all ported to tf2.