OpenFreeEnergy / OpenFreeEnergy/feflow

`NonEquilibriumCyclingProtocol` : Add ability to have multiple iterations/laps within a single `CycleUnit`?

Open
#66 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

component-protocol enhancement
Dominant language
Python
Stars
20
Forks
4
PR merge metrics
No merged PRs in 30d

Description

Currently for the NonEquilibriumCyclingProtocol, one can increase the cycling sampling performed by a single ProtocolDAG by increasing the num_cycles setting. This causes the ProtocolDAG to feature as many CycleUnits as num_cycles, which generally works well for most use cases, and allows for DAG-level parallelism on executors that support this.

However, for some execution contexts, such as Folding@Home, this approach restricts us to performing a single CycleUnit per Folding@Home work unit (WU), which can cause problems for both volunteers and the system as a whole if these execute too quickly. Increasing the equilibrium_steps and nonequilibrium_steps may increase sampling up to some limit, but still may result in too-short simulation times for practical Folding@Home use.

We propose adding a positive integer setting num_cycle_iterations or num_cycle_laps to the NonEquilibriumCyclingProtocol that defaults to 1 giving current behavior, but when set to 2 or more results in additional iterations of cycling within each CycleUnit on the ProtocolDAG. This will need to be encoded in the OpenMM integrator generated by the SetupUnit to work properly, I think.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing NonEquilibriumCyclingProtocol through CycleUnit and ProtocolDAG construction, then inspect SetupUnit and the generated OpenMM integrator. Define how a positive iteration or lap setting is represented and propagated within one CycleUnit while preserving the default behavior. Done means repeated cycling occurs inside each CycleUnit and the existing single-iteration behavior remains unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.