Layers#

Module that implements custom layers. Mainly needed for handling periodicity, backmapping or sparsity.

class BackMapLayer(*args, **kwargs)[source]#

Bases: Layer

Layer that implements backmapping from torsions-angles-distances to Euclidean coordinates.

Parameters:
  • left_split (int)

  • right_split (int)

call(inputs)[source]#

Call the layers, inputs should be a tuple shaped, so that it can be split into distances, angles, dihedrals = inputs

Parameters:

inputs (tuple[Tensor, Tensor, Tensor])

Return type:

Tensor

classmethod from_config(config)[source]#

Reconstructs this keras serializable from a dict.

Parameters:

config (dict[Any, Any]) – A dictionary.

Returns:

An instance of the BackMapLayer.

Return type:

BackMapLayerType

get_config()[source]#

Serializes this keras serializable.

Returns:

A dict with the serializable objects.

Return type:

dict[Any, Any]

class BackMapLayerTransformations(*args, **kwargs)[source]#

Bases: Layer

Experimental layer for using multimers with the ADCEMap.

Parameters:

protein_lengths (Sequence[int])

call(inputs)[source]#

Call the layers, inputs should be a tuple shaped, so that it can be split into distances, angles, dihedrals, matrices = inputs

classmethod from_config(config)[source]#

Reconstructs this keras serializable from a dict.

Parameters:

config (dict[Any, Any]) – A dictionary.

Returns:

An instance of the BackMapLayerTransformations.

Return type:

BackMapLayerTransformationsType

get_config()[source]#

Serializes this keras serializable.

Returns:

A dict with the serializable objects.

Return type:

dict[Any, Any]

class BackMapLayerWithSidechains(*args, **kwargs)[source]#

Bases: Layer

Also backmaps sidechains. For that, we need a way to know which distances, angles, dihedrals belong to the backbone, and which belong to a sidechain. See the docstring of encodermap.misc.backmapping._full_backmapping_np for details.

Parameters:

feature_description (Any)

call(inputs)[source]#

This is where the layer’s logic lives.

The call() method may not create state (except in its first invocation, wrapping the creation of variables or other resources in tf.init_scope()). It is recommended to create state, including tf.Variable instances and nested Layer instances,

in __init__(), or in the build() method that is

called automatically before call() executes for the first time.

Parameters:
  • inputs (tuple[Tensor, ...]) –

    Input tensor, or dict/list/tuple of input tensors. The first positional inputs argument is subject to special rules: - inputs must be explicitly passed. A layer cannot have zero

    arguments, and inputs cannot be provided via the default value of a keyword argument.

    • NumPy array or Python scalar values in inputs get cast as tensors.

    • Keras mask metadata is only collected from inputs.

    • Layers are built (build(input_shape) method) using shape info from inputs only.

    • input_spec compatibility is only checked against inputs.

    • Mixed precision input casting is only applied to inputs. If a layer has tensor arguments in *args or **kwargs, their casting behavior in mixed precision should be handled manually.

    • The SavedModel input specification is generated using inputs only.

    • Integration with various ecosystem packages like TFMOT, TFLite, TF.js, etc is only supported for inputs and not for tensors in positional and keyword arguments.

  • *args – Additional positional arguments. May contain tensors, although this is not recommended, for the reasons above.

  • **kwargs

    Additional keyword arguments. May contain tensors, although this is not recommended, for the reasons above. The following optional keyword arguments are reserved: - training: Boolean scalar tensor of Python boolean indicating

    whether the call is meant for training or inference.

    • mask: Boolean input mask. If the layer’s call() method takes a mask argument, its default value will be set to the mask generated for inputs by the previous layer (if input did come from a layer that generated a corresponding mask, i.e. if it came from a Keras layer with masking support).

Returns:

A tensor or list/tuple of tensors.

Return type:

Tensor

classmethod from_config(config)[source]#

Reconstructs this keras serializable from a dict.

Parameters:

config (dict[Any, Any]) – A dictionary.

Returns:

An instance of the BackMapLayer.

Return type:

BackMapLayerType

get_config()[source]#

Serializes this keras serializable.

Returns:

A dict with the serializable objects.

Return type:

dict[Any, Any]

class EncoderMapBaseLayer(*args, **kwargs)[source]#

Bases: Layer

EncoderMap’s Base Layer, that implements saving and loading parameters.

Classes that inherit from EncoderMapBaseLayer automatically receive parameters when deserialized.

Parameters:
classmethod from_config(config)[source]#

Reconstructs this keras serializable from a dict.

Parameters:

config (dict[Any, Any]) – A dictionary.

Returns:

An instance of the EncoderMapBaseLayer.

Return type:

EncoderMapBaseLayerType

get_config()[source]#

Serializes this keras serializable.

Returns: dict[Any, Any]: A dict with the serializable objects.

Return type:

dict[Any, Any]

class MeanAngles(*args, **kwargs)[source]#

Bases: Layer

Layer that implements the mean of periodic angles.

Parameters:
call(inputs)[source]#

Call the layer

class PairwiseDistances(*args, **kwargs)[source]#

Bases: EncoderMapBaseLayer

Layer that implements pairwise distances for both cases, with and without sidechain reconstruction

Parameters:
call(inputs)[source]#

Call the layer

classmethod from_config(config)[source]#

Reconstructs this keras serializable from a dict.

Parameters:

config (dict[Any, Any]) – A dictionary.

Returns:

An instance of the BackMapLayer.

Return type:

BackMapLayerType

get_config()[source]#

Serializes this keras serializable.

Returns:

A dict with the serializable objects.

Return type:

dict[Any, Any]

class PeriodicInput(*args, **kwargs)[source]#

Bases: EncoderMapBaseLayer

Layer that handles periodic input. Needed, if angles are treated. Input angles will be split into sin and cos components, and a tensor with shape[0] = 2 * inp_shape[0] will be returned

Parameters:
call(inputs)[source]#

Call the layer.

Parameters:

inputs (Tensor)

Return type:

Tensor

class PeriodicOutput(*args, **kwargs)[source]#

Bases: EncoderMapBaseLayer

Layer that reverses the PeriodicInputLayer.

Parameters:
call(inputs)[source]#

Calls the layer. Inputs should be a tuple of (sin, cos) of the same angles

_batch_fro(a)[source]#

Batch-wise Frobert norm, a.k.a. length of a vector.

Parameters:

a (tf.Tensor)

Return type:

tf.Tensor

_rotation_matrices(angle, direction, point)[source]#

Adapted from C. Gohlke’s transformations.py.

Batch-wise 4x4 rotation matrices.

Return type:

tf.Tensor

_unit_vector(vector)[source]#

Adapted from C. Gohlke’s transformations.py

Parameters:

vector (tf.Tensor)

Return type:

tf.Tensor