From 7e98870dcef7f11497164a9658e53fda980e2668 Mon Sep 17 00:00:00 2001 From: Russ Taylor Date: Fri, 3 Apr 2026 13:14:58 -0400 Subject: [PATCH] Removing initial plugin-based Kinemage reader stubs, leaving the extension that handles both File/Open and drag-and-drop --- .../mesoscale-explorer/data/generic/preset.ts | 41 +------------------ src/mol-plugin-state/formats/shape.ts | 28 +------------ src/mol-plugin-state/objects.ts | 5 +-- src/mol-plugin-state/transforms/data.ts | 23 ----------- src/mol-plugin-state/transforms/model.ts | 23 ----------- 5 files changed, 4 insertions(+), 116 deletions(-) diff --git a/src/apps/mesoscale-explorer/data/generic/preset.ts b/src/apps/mesoscale-explorer/data/generic/preset.ts index 6d64ad4a6..f9b434fdc 100644 --- a/src/apps/mesoscale-explorer/data/generic/preset.ts +++ b/src/apps/mesoscale-explorer/data/generic/preset.ts @@ -14,8 +14,8 @@ import { Mat3, Quat, Vec3 } from '../../../../mol-math/linear-algebra'; import { GraphicsMode, MesoscaleGroup, MesoscaleState, getGraphicsModeProps, getMesoscaleGroupParams } from '../state'; import { ColorNames } from '../../../../mol-util/color/names'; import { ShapeRepresentation3D, StructureRepresentation3D } from '../../../../mol-plugin-state/transforms/representation'; -import { ParseCif, ParsePly, ParseKin, ReadFile } from '../../../../mol-plugin-state/transforms/data'; -import { ModelFromTrajectory, ShapeFromPly, ShapeLinesFromKin, TrajectoryFromGRO, TrajectoryFromMOL, TrajectoryFromMOL2, TrajectoryFromMmCif, TrajectoryFromPDB, TrajectoryFromSDF, TrajectoryFromXYZ } from '../../../../mol-plugin-state/transforms/model'; +import { ParseCif, ParsePly, ReadFile } from '../../../../mol-plugin-state/transforms/data'; +import { ModelFromTrajectory, ShapeFromPly, TrajectoryFromGRO, TrajectoryFromMOL, TrajectoryFromMOL2, TrajectoryFromMmCif, TrajectoryFromPDB, TrajectoryFromSDF, TrajectoryFromXYZ } from '../../../../mol-plugin-state/transforms/model'; import { Euler } from '../../../../mol-math/linear-algebra/3d/euler'; import { Asset } from '../../../../mol-util/assets'; import { Clip } from '../../../../mol-util/clip'; @@ -104,34 +104,6 @@ function getPlyShapeParams(color: Color, clipVariant: Clip.Variant) { }; } -function getKinShapeParams(color: Color, clipVariant: Clip.Variant) { - return { - ...PD.getDefaultValues(BaseGeometry.Params), - instanceGranularity: true, - ignoreLight: true, - clip: { - variant: clipVariant, - objects: [], - }, - quality: 'custom', - doubleSided: true, - coloring: { - name: 'uniform', - params: { color } - }, - grouping: { - name: 'none', - params: {} - }, - material: { - metalness: 0.0, - roughness: 1.0, - bumpiness: 1.0, - }, - bumpAmplitude: 0.1, - bumpFrequency: 0.1 / 10, - }; -} export async function createGenericHierarchy(plugin: PluginContext, file: Asset.File) { const asset = await plugin.runTask(plugin.managers.asset.resolve(file, 'zip')); let manifest: GenericManifest; @@ -280,15 +252,6 @@ export async function createGenericHierarchy(plugin: PluginContext, file: Asset. .apply(ShapeFromPly, { label, transforms }) .apply(ShapeRepresentation3D, getPlyShapeParams(color, clipVariant), { tags }); } - } else if (['kin'].includes(info.ext)) { - if (['kin'].includes(info.ext)) { - const transforms = await getTransforms(plugin, instances); - const clipVariant = transforms.length === 1 ? 'pixel' : 'instance'; - build = build - .apply(ParseKin) - .apply(ShapeLinesFromKin, { label, transforms }) - .apply(ShapeRepresentation3D, getKinShapeParams(color, clipVariant), { tags }); - } } else { console.warn(`unknown file format '${info.ext}'`); } diff --git a/src/mol-plugin-state/formats/shape.ts b/src/mol-plugin-state/formats/shape.ts index 67bdf8ab9..acbb4f2cb 100644 --- a/src/mol-plugin-state/formats/shape.ts +++ b/src/mol-plugin-state/formats/shape.ts @@ -37,34 +37,8 @@ export const PlyProvider = DataFormatProvider({ } }); -export const KinProvider = DataFormatProvider({ - label: 'KIN', - description: 'KIN', - category: ShapeFormatCategory, - stringExtensions: ['kin'], - parse: async (plugin, data) => { - // This returns the last kinemage in the file if there are multiple - const format = plugin.state.data.build() - .to(data) - .apply(StateTransforms.Data.ParseKin, {}, { state: { isGhost: true } }); - - const shape = format.apply(StateTransforms.Model.ShapeLinesFromKin); - - await format.commit(); - - return { format: format.selector, shape: shape.selector }; - }, - visuals(plugin: PluginContext, data: { shape: StateObjectRef }) { - const repr = plugin.state.data.build() - .to(data.shape) - .apply(StateTransforms.Representation.ShapeRepresentation3D); - return repr.commit(); - } -}); - export const BuiltInShapeFormats = [ ['ply', PlyProvider] as const, - /// @todo Replaced the plugin loader with an extension ['kin', KinProvider] as const, ] as const; -export type BuiltInShapeFormat = (typeof BuiltInShapeFormats)[number][0] \ No newline at end of file +export type BuiltInShapeFormat = (typeof BuiltInShapeFormats)[number][0] diff --git a/src/mol-plugin-state/objects.ts b/src/mol-plugin-state/objects.ts index 6a909a3af..e05cacb77 100644 --- a/src/mol-plugin-state/objects.ts +++ b/src/mol-plugin-state/objects.ts @@ -10,7 +10,6 @@ import { CifFile } from '../mol-io/reader/cif'; import { DcdFile } from '../mol-io/reader/dcd/parser'; import { Dsn6File } from '../mol-io/reader/dsn6/schema'; import { PlyFile } from '../mol-io/reader/ply/schema'; -import { Kinemage } from '../mol-io/reader/kin/schema'; import { PsfFile } from '../mol-io/reader/psf/parser'; import { ShapeProvider } from '../mol-model/shape/provider'; import { Coordinates as _Coordinates, Model as _Model, Structure as _Structure, Trajectory as _Trajectory, StructureElement, Topology as _Topology } from '../mol-model/structure'; @@ -80,7 +79,6 @@ export namespace PluginStateObject { export class Prmtop extends Create({ name: 'PRMTOP File', typeClass: 'Data' }) { } export class Top extends Create({ name: 'TOP File', typeClass: 'Data' }) { } export class Ply extends Create({ name: 'PLY File', typeClass: 'Data' }) { } - export class Kin extends Create({ name: 'KIN File', typeClass: 'Data' }) { } export class Ccp4 extends Create({ name: 'CCP4/MRC/MAP File', typeClass: 'Data' }) { } export class Dsn6 extends Create({ name: 'DSN6/BRIX File', typeClass: 'Data' }) { } export class Dx extends Create({ name: 'DX File', typeClass: 'Data' }) { } @@ -97,7 +95,6 @@ export namespace PluginStateObject { { kind: 'dsn6', data: Dsn6File } | { kind: 'dx', data: DxFile } | { kind: 'ply', data: PlyFile } | - { kind: 'kin', data: Kinemage } | // For non-built-in extensions { kind: 'custom', data: unknown, tag: string } ) @@ -158,4 +155,4 @@ export namespace PluginStateObject { export namespace PluginStateTransform { export const CreateBuiltIn = StateTransformer.factory('ms-plugin'); export const BuiltIn = StateTransformer.builderFactory('ms-plugin'); -} \ No newline at end of file +} diff --git a/src/mol-plugin-state/transforms/data.ts b/src/mol-plugin-state/transforms/data.ts index 504fa545a..737c9fa21 100644 --- a/src/mol-plugin-state/transforms/data.ts +++ b/src/mol-plugin-state/transforms/data.ts @@ -10,8 +10,6 @@ import * as CCP4 from '../../mol-io/reader/ccp4/parser'; import { CIF } from '../../mol-io/reader/cif'; import * as DSN6 from '../../mol-io/reader/dsn6/parser'; import * as PLY from '../../mol-io/reader/ply/parser'; -import * as KIN from '../../mol-io/reader/kin/parser'; -import { Kinemage } from '../../mol-io/reader/kin/schema'; import { parsePsf } from '../../mol-io/reader/psf/parser'; import { PluginContext } from '../../mol-plugin/context'; import { StateObject, StateTransformer } from '../../mol-state'; @@ -43,7 +41,6 @@ export { ParsePsf }; export { ParsePrmtop }; export { ParseTop }; export { ParsePly }; -export { ParseKin } export { ParseCcp4 }; export { ParseDsn6 }; export { ParseDx }; @@ -406,26 +403,6 @@ const ParsePly = PluginStateTransform.BuiltIn({ } }); -type ParseKin = typeof ParseKin -const ParseKin = PluginStateTransform.BuiltIn({ - name: 'parse-kin', - display: { name: 'Parse KIN', description: 'Parse KIN from String data' }, - from: [SO.Data.String], - to: SO.Format.Kin -})({ - apply({ a }) { - return Task.create('Parse KIN', async ctx => { - const parsedList = await KIN.parseKin(a.data).runInContext(ctx); - if (parsedList.isError) throw new Error(parsedList.message); - // Read the last entry, handling the case where it is an error - const kinemages: Kinemage[] = parsedList.result; - const parsed = kinemages.length ? parsedList.result[kinemages.length - 1] : undefined; - if (!parsed) return StateObject.Null; - return new SO.Format.Kin(parsed, { label: parsed.comments[0] || 'KIN Data' }); - }); - } -}); - type ParseCcp4 = typeof ParseCcp4 const ParseCcp4 = PluginStateTransform.BuiltIn({ name: 'parse-ccp4', diff --git a/src/mol-plugin-state/transforms/model.ts b/src/mol-plugin-state/transforms/model.ts index 11f037809..55de522af 100644 --- a/src/mol-plugin-state/transforms/model.ts +++ b/src/mol-plugin-state/transforms/model.ts @@ -12,7 +12,6 @@ import { parseGRO } from '../../mol-io/reader/gro/parser'; import { parsePDB } from '../../mol-io/reader/pdb/parser'; import { Mat4, Vec3 } from '../../mol-math/linear-algebra'; import { shapeFromPly } from '../../mol-model-formats/shape/ply'; -import { shapeLinesFromKin } from '../../mol-model-formats/shape/kin'; import { coordinatesFromDcd } from '../../mol-model-formats/structure/dcd'; import { trajectoryFromGRO } from '../../mol-model-formats/structure/gro'; import { trajectoryFromCCD, trajectoryFromMmCIF } from '../../mol-model-formats/structure/mmcif'; @@ -95,7 +94,6 @@ export { StructureComponent }; export { CustomModelProperties }; export { CustomStructureProperties }; export { ShapeFromPly }; -export { ShapeLinesFromKin }; type CoordinatesFromDcd = typeof CoordinatesFromDcd const CoordinatesFromDcd = PluginStateTransform.BuiltIn({ @@ -1320,24 +1318,3 @@ const ShapeFromPly = PluginStateTransform.BuiltIn({ } }); -type ShapeLinesFromKin = typeof ShapeLinesFromKin -const ShapeLinesFromKin = PluginStateTransform.BuiltIn({ - name: 'shape-lines-from-kin', - display: { name: 'Shape Lines from KIN', description: 'Create Shape from KIN data' }, - from: SO.Format.Kin, - to: SO.Shape.Provider, - params(a) { - return { - transforms: PD.Optional(PD.Value([], { isHidden: true })), - label: PD.Optional(PD.Text('', { isHidden: true })) - }; - } -})({ - apply({ a, params }) { - return Task.create('Create shape from KIN', async ctx => { - const shape = await shapeLinesFromKin(a.data, params).runInContext(ctx); - const props = { label: params.label || 'Shape' }; - return new SO.Shape.Provider(shape, props); - }); - } -});