UNPKG

molstar

Version:

A comprehensive macromolecular library.

33 lines (32 loc) 1.73 kB
/** * Copyright (c) 2025 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ import { PluginStateObject } from '../../../mol-plugin-state/objects.js'; import { getTrajectory } from '../../../mol-plugin-state/transforms/model.js'; import { Task } from '../../../mol-task/index.js'; import { ParamDefinition } from '../../../mol-util/param-definition.js'; import { getMVSReferenceObject } from '../helpers/utils.js'; import { MVSTransform } from './annotation-structure-component.js'; export const MVSTrajectoryWithCoordinates = MVSTransform({ name: 'trajectory-with-coordinates', display: { name: 'Trajectory with Coordinates', description: 'Create a trajectory from existing model and the provided coordinates.' }, from: [PluginStateObject.Molecule.Model, PluginStateObject.Molecule.Topology], to: PluginStateObject.Molecule.Trajectory, params: { coordinatesRef: ParamDefinition.Text('', { isHidden: true }), } })({ apply({ a, params, dependencies }) { return Task.create('Create trajectory from model/topology and coordinates', async (ctx) => { const coordinates = getMVSReferenceObject([PluginStateObject.Molecule.Coordinates], dependencies, params.coordinatesRef); if (!coordinates) { throw new Error('Coordinates not found.'); } const trajectory = await getTrajectory(ctx, a, coordinates.data); const props = { label: 'Trajectory', description: `${trajectory.frameCount} model${trajectory.frameCount === 1 ? '' : 's'}` }; return new PluginStateObject.Molecule.Trajectory(trajectory, props); }); } });