Skip to content

Commit f2e0e7c

Browse files
authored
Merge pull request #316 from CCPBioSim/309-trajectory-slicing
Trajectory Slicing fixes and ensuring correct looping over molecules. Closes Issues #309 #315
2 parents 6e0bc3e + ccec37b commit f2e0e7c

78 files changed

Lines changed: 1226 additions & 1379 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CodeEntropy/entropy/workflow.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def execute(self) -> None:
9696
9797
This orchestrates the complete entropy pipeline:
9898
1. Build trajectory slice.
99-
2. Apply atom selection to create a reduced universe.
99+
2. Apply atom and frame selection to create a reduced universe.
100100
3. Detect hierarchy levels.
101101
4. Group molecules.
102102
5. Split groups into water and non-water.
@@ -233,21 +233,31 @@ def _get_number_frames(self, start: int, end: int, step: int) -> int:
233233
return math.floor((end - start) / step)
234234

235235
def _build_reduced_universe(self) -> Any:
236-
"""Apply atom selection and return the reduced universe.
237-
238-
If `selection_string` is "all", the original universe is returned.
236+
"""Apply atom and frame selection and return the reduced universe.
239237
240238
Returns:
241-
MDAnalysis Universe (original or reduced).
239+
MDAnalysis Universe (reduced according to user selections).
242240
"""
243241
selection = self._args.selection_string
242+
start = self._args.start
243+
end = len(self._universe.trajectory) if self._args.end == -1 else self._args.end
244+
step = self._args.step
244245
if selection == "all":
245-
return self._universe
246+
reduced_atoms = self._universe
247+
else:
248+
reduced_atoms = self._universe_operations.select_atoms(
249+
self._universe, selection
250+
)
251+
name = f"{len(reduced_atoms.trajectory)}_frame_dump_atom_selection"
252+
self._run_manager.write_universe(reduced_atoms, name)
253+
254+
reduced_frames = self._universe_operations.select_frames(
255+
reduced_atoms, start, end, step
256+
)
257+
name = f"{len(reduced_frames.trajectory)}_frame_dump_frame_selection"
258+
self._run_manager.write_universe(reduced_frames, name)
246259

247-
reduced = self._universe_operations.select_atoms(self._universe, selection)
248-
name = f"{len(reduced.trajectory)}_frame_dump_atom_selection"
249-
self._run_manager.write_universe(reduced, name)
250-
return reduced
260+
return reduced_frames
251261

252262
def _detect_levels(self, reduced_universe: Any) -> Any:
253263
"""Detect hierarchy levels for each molecule in the reduced universe.

0 commit comments

Comments
 (0)