Browse Source

filter display list of select queries, add bonded query

Alexander Rose 5 years ago
parent
commit
ad726a97e4

+ 14 - 8
src/mol-plugin/ui/structure/selection.tsx

@@ -14,6 +14,12 @@ import { Interactivity } from '../../util/interactivity';
 import { ParameterControls } from '../controls/parameters';
 import { stripTags } from '../../../mol-util/string';
 
+const SSQ = StructureSelectionQueries
+const DefaultQueries: (keyof typeof SSQ)[] = [
+    'all', 'polymer', 'trace', 'protein', 'nucleic', 'water', 'branched', 'ligand', 'nonStandardPolymer',
+    'surroundings', 'complement', 'bonded'
+]
+
 const StructureSelectionParams = {
     granularity: Interactivity.Params.granularity,
 }
@@ -69,7 +75,7 @@ export class StructureSelectionControls<P, S extends StructureSelectionControlsS
     }
 
     set = (modifier: SelectionModifier, value: string) => {
-        const query = StructureSelectionQueries[value as keyof typeof StructureSelectionQueries]
+        const query = SSQ[value as keyof typeof SSQ]
         this.plugin.helpers.structureSelection.set(modifier, query.query, false)
     }
 
@@ -91,9 +97,9 @@ export class StructureSelectionControls<P, S extends StructureSelectionControlsS
     }
 
     renderControls() {
-        const queries = Object.keys(StructureSelectionQueries).map(name => {
-            return [name, StructureSelectionQueries[name as keyof typeof StructureSelectionQueries].label] as [string, string]
-        })
+        const queries = Object.keys(StructureSelectionQueries)
+            .map(name => [name, SSQ[name as keyof typeof SSQ].label] as [string, string])
+            .filter(pair => DefaultQueries.includes(pair[0] as keyof typeof SSQ))
 
         return <div>
             <div className='msp-control-row msp-row-text'>
@@ -105,13 +111,13 @@ export class StructureSelectionControls<P, S extends StructureSelectionControlsS
             <ParameterControls params={StructureSelectionParams} values={this.values} onChange={this.setProps} isDisabled={this.state.isDisabled} />
             <div className='msp-control-row'>
                 <div className='msp-select-row'>
-                    <ButtonSelect label='Add' onChange={this.add} disabled={this.state.isDisabled}>
-                        <optgroup label='Add'>
+                    <ButtonSelect label='Select' onChange={this.add} disabled={this.state.isDisabled}>
+                        <optgroup label='Select'>
                             {Options(queries)}
                         </optgroup>
                     </ButtonSelect>
-                    <ButtonSelect label='Remove' onChange={this.remove} disabled={this.state.isDisabled}>
-                        <optgroup label='Remove'>
+                    <ButtonSelect label='Deselect' onChange={this.remove} disabled={this.state.isDisabled}>
+                        <optgroup label='Deselect'>
                             {Options(queries)}
                         </optgroup>
                     </ButtonSelect>

+ 9 - 2
src/mol-plugin/util/structure-selection-helper.ts

@@ -226,7 +226,7 @@ const coarse = StructureSelectionQuery('Coarse Elements', MS.struct.modifier.uni
     })
 ]))
 
-const surroundings = StructureSelectionQuery('Surrounding Residues (5 \u212B)', MS.struct.modifier.union([
+const surroundings = StructureSelectionQuery('Surrounding Residues (5 \u212B) of Selection', MS.struct.modifier.union([
     MS.struct.modifier.exceptBy({
         0: MS.struct.modifier.includeSurroundings({
             0: MS.internal.generator.current(),
@@ -237,13 +237,19 @@ const surroundings = StructureSelectionQuery('Surrounding Residues (5 \u212B)',
     })
 ]), 'Select residues within 5 \u212B of the current selection.')
 
-const complement = StructureSelectionQuery('Inverse / Complement', MS.struct.modifier.union([
+const complement = StructureSelectionQuery('Inverse / Complement of Selection', MS.struct.modifier.union([
     MS.struct.modifier.exceptBy({
         0: MS.struct.generator.all(),
         by: MS.internal.generator.current()
     })
 ]), 'Select everything not in the current selection.')
 
+const bonded = StructureSelectionQuery('Residues Bonded to Selection', MS.struct.modifier.union([
+    MS.struct.modifier.includeConnected({
+        0: MS.internal.generator.current(), 'layer-count': 1, 'as-whole-residues': true
+    })
+]), 'Select residues covalently bonded to current selection.')
+
 export const StructureSelectionQueries = {
     all,
     polymer,
@@ -265,6 +271,7 @@ export const StructureSelectionQueries = {
     coarse,
     surroundings,
     complement,
+    bonded,
 }
 
 //