diff --git a/src/apps/rednatco/api.ts b/src/apps/rednatco/api.ts index e6143205e37fb488b8689b33a014ad37be9da291..fce22576002dc8e6d4d53a21a22151b7fb9ebd14 100644 --- a/src/apps/rednatco/api.ts +++ b/src/apps/rednatco/api.ts @@ -1,4 +1,4 @@ -import { Filtering } from './filtering'; +import { Filters } from './filters'; export namespace ReDNATCOMspApi { export namespace Commands { @@ -9,8 +9,8 @@ export namespace ReDNATCOMspApi { return { type: 'deselect-step' }; } - export type Filter = { type: 'filter', filter: Filtering.Filter }; - export function Filter(filter: Filtering.Filter) { + export type Filter = { type: 'filter', filter: Filters.All }; + export function Filter(filter: Filters.All) { return { type: 'filter', filter }; } diff --git a/src/apps/rednatco/filtering.ts b/src/apps/rednatco/filtering.ts index 141e30efa44061f1539e30fbaf9d52463bf16332..5857e05b2712837c2a5e65da5398694af9ffe9db 100644 --- a/src/apps/rednatco/filtering.ts +++ b/src/apps/rednatco/filtering.ts @@ -1,36 +1,14 @@ +import { Filters } from './filters'; import { Expression } from '../../mol-script/language/expression'; import { MolScriptBuilder as MSB } from '../../mol-script/language/builder'; import { formatMolScript } from '../../mol-script/language/expression-formatter'; export namespace Filtering { - export type FilterKind = 'empty'|'slices'; - - export type EmptyFilter = { - kind: 'empty', - }; - export function EmptyFilter(): EmptyFilter { - return { kind: 'empty' }; - } - - export type SlicesFilter = { - kind: 'slices', - slices: { - chain: string; - residues?: number[]; - altIds?: string[]; - }[]; - }; - export function SlicesFilter(slices: SlicesFilter['slices']): SlicesFilter { - return { kind: 'slices', slices }; - } - - export type Filter = EmptyFilter|SlicesFilter; - function empty() { return MSB.struct.generator.all(); } - function sliceExpr(slice: SlicesFilter['slices'][0]) { + function sliceExpr(slice: Filters.Slices['slices'][0]) { let expr = MSB.core.rel.eq([MSB.struct.atomProperty.macromolecular.label_asym_id(), slice.chain]); if (slice.residues && slice.residues.length > 0) { @@ -59,7 +37,7 @@ export namespace Filtering { return expr; } - function slices(slices: SlicesFilter['slices']) { + function slices(slices: Filters.Slices['slices']) { if (slices.length > 0) { let expr = sliceExpr(slices[0]); @@ -78,7 +56,7 @@ export namespace Filtering { return MSB.struct.generator.all(); } - export function toExpression(filter: Filter): Expression { + export function toExpression(filter: Filters.All): Expression { switch (filter.kind) { case 'empty': return empty(); diff --git a/src/apps/rednatco/filters.ts b/src/apps/rednatco/filters.ts new file mode 100644 index 0000000000000000000000000000000000000000..a108881d485596f23cb7abeca3285c7b27168be5 --- /dev/null +++ b/src/apps/rednatco/filters.ts @@ -0,0 +1,24 @@ +export namespace Filters { + export type Kind = 'empty'|'slices'; + + export type Empty = { + kind: 'empty', + }; + export function Empty(): Empty { + return { kind: 'empty' }; + } + + export type Slices = { + kind: 'slices', + slices: { + chain: string; + residues?: number[]; + altIds?: string[]; + }[]; + }; + export function Slices(slices: Slices['slices']): Slices { + return { kind: 'slices', slices }; + } + + export type All = Empty|Slices; +} diff --git a/src/apps/rednatco/viewer.ts b/src/apps/rednatco/viewer.ts index 63aaf14bcc8eca3e52cad8c21d24881897f2233a..f7cf4ec3767ded4f2ac5470f5fc2601f391ec61f 100644 --- a/src/apps/rednatco/viewer.ts +++ b/src/apps/rednatco/viewer.ts @@ -2,6 +2,7 @@ import * as IDs from './idents'; import * as RefCfmr from './reference-conformers'; import { ReDNATCOMsp, Display, VisualRepresentations } from './index'; import { NtCColors } from './colors'; +import { Filters } from './filters'; import { Filtering } from './filtering'; import { ReferenceConformersPdbs } from './reference-conformers-pdbs'; import { Step } from './step'; @@ -857,7 +858,7 @@ export class ReDNATCOMspViewer { b2.to(IDs.ID('entire-structure', 'nucleic', BaseRef)) .apply( StateTransforms.Model.StructureSelectionFromExpression, - { expression: Filtering.toExpression(Filtering.EmptyFilter()) }, + { expression: Filtering.toExpression(Filters.Empty()) }, { ref: IDs.ID('structure', 'nucleic', BaseRef) } ); } @@ -865,7 +866,7 @@ export class ReDNATCOMspViewer { b2.to(IDs.ID('entire-structure', 'protein', BaseRef)) .apply( StateTransforms.Model.StructureSelectionFromExpression, - { expression: Filtering.toExpression(Filtering.EmptyFilter()) }, + { expression: Filtering.toExpression(Filters.Empty()) }, { ref: IDs.ID('structure', 'protein', BaseRef) } ); } @@ -873,7 +874,7 @@ export class ReDNATCOMspViewer { b2.to(IDs.ID('entire-structure', 'water', BaseRef)) .apply( StateTransforms.Model.StructureSelectionFromExpression, - { expression: Filtering.toExpression(Filtering.EmptyFilter()) }, + { expression: Filtering.toExpression(Filters.Empty()) }, { ref: IDs.ID('structure', 'water', BaseRef) } ); }