Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Item

Notes

System jacobian discussion / matrix stuff

A jacobian is a matrix where each element is a function (partial derivatives)

It just so happens that, in the FF world, most of the time these evaluate to 1 or 0

In FF-land, the jacobian matrix is “change in system parameter wrt change in FF parameter”

parameterization: R^P -> R^Q


Jacobian of parameterization: R^P -> R^PxQ


Energies: R^N->R^1


Jacobian of Energy (forces): R^N->R^N

JW – Why is jacobian of parameterization so high-dimension on the right? Shouldn’t it just be R^Q as well?

YTZ – Jacobian of parameterization has high right dimension because it prepares for worst-case situation where parameters are eg. squared or combined with each other

JW – Is a function different from a matrix?

YTZ – Yes. It can include derivatives and other non-matrixy things

Example function signature, the function whose derivative is the jacobian that we care about

Code Block
def parameterize(p_bonds, p_torsions, b_idxs, t_idxs):
    return p_bonds[b_idxs], p_torsions[t_idxs]

Prototype update

(Skipped for time)

Slots intro

(Jeff talked about how we can’t know, just from the topology, how many system parameters will be applied in some cases, eg impropers)

YTZ – We’ve run into this too. We’re handling it somewhat by separating the problem by force type. So

  • R^P -> R^Q, where we call Q “system parameters"


  • R^P -> R^BOND_Q,

  • 
R^P -> R^ANGLE_Q

  • 
R^P -> R^TORSION_Q

  • 
R^P -> R^GB_Q


  • R^P -> R^ES_Q

This way, we can at least isolate this uncertainty to CERTAIN parameter types, and make safe assumptions about the value of Q for others.

JW – Keep in mind that this means that analytical differentiation for SMIRKS changes in some parameter types is impossible.

...