Parcourir la source

sequence widget, chain -> unit

Alexander Rose il y a 5 ans
Parent
commit
3e52496b4e
1 fichiers modifiés avec 12 ajouts et 9 suppressions
  1. 12 9
      src/mol-plugin/ui/sequence.tsx

+ 12 - 9
src/mol-plugin/ui/sequence.tsx

@@ -62,7 +62,7 @@ function getEntityOptions(structure: Structure) {
     return options
     return options
 }
 }
 
 
-function getChainOptions(structure: Structure, entityId: string) {
+function getUnitOptions(structure: Structure, entityId: string) {
     const options: [number, string][] = []
     const options: [number, string][] = []
     const l = StructureElement.create()
     const l = StructureElement.create()
     const seen = new Set<number>()
     const seen = new Set<number>()
@@ -75,6 +75,9 @@ function getChainOptions(structure: Structure, entityId: string) {
         const id = unit.invariantId
         const id = unit.invariantId
         if (seen.has(id)) continue
         if (seen.has(id)) continue
 
 
+        // TODO handle special cases
+        // - more than one chain in a unit
+        // - chain spread over multiple units
         let label = ''
         let label = ''
         if (Unit.isAtomic(unit)) {
         if (Unit.isAtomic(unit)) {
             label = `${SP.chain.label_asym_id(l)}: ${SP.chain.auth_asym_id(l)}`
             label = `${SP.chain.label_asym_id(l)}: ${SP.chain.auth_asym_id(l)}`
@@ -91,7 +94,7 @@ function getChainOptions(structure: Structure, entityId: string) {
         seen.add(id)
         seen.add(id)
     }
     }
 
 
-    if (options.length === 0) options.push([-1, 'No chains'])
+    if (options.length === 0) options.push([-1, 'No units'])
     return options
     return options
 }
 }
 
 
@@ -151,13 +154,13 @@ export class SequenceView extends PluginUIComponent<{ }, SequenceViewState> {
     }
     }
 
 
     private getSequenceWrapper() {
     private getSequenceWrapper() {
-        return getSequenceWrapper(this.state, this.plugin.helpers.structureSelection)
+        return getSequenceWrapper(this.state, this.plugin.helpers.structureSelectionManager)
     }
     }
 
 
     private getInitialState(): SequenceViewState {
     private getInitialState(): SequenceViewState {
         const structure = this.getStructure()
         const structure = this.getStructure()
         const entityId = getEntityOptions(structure)[0][0]
         const entityId = getEntityOptions(structure)[0][0]
-        const invariantUnitId = getChainOptions(structure, entityId)[0][0]
+        const invariantUnitId = getUnitOptions(structure, entityId)[0][0]
         const operatorKey = getOperatorOptions(structure, entityId, invariantUnitId)[0][0]
         const operatorKey = getOperatorOptions(structure, entityId, invariantUnitId)[0][0]
         return { structure, entityId, invariantUnitId, operatorKey }
         return { structure, entityId, invariantUnitId, operatorKey }
     }
     }
@@ -165,11 +168,11 @@ export class SequenceView extends PluginUIComponent<{ }, SequenceViewState> {
     private get params() {
     private get params() {
         const { structure, entityId, invariantUnitId } = this.state
         const { structure, entityId, invariantUnitId } = this.state
         const entityOptions = getEntityOptions(structure)
         const entityOptions = getEntityOptions(structure)
-        const chainOptions = getChainOptions(structure, entityId)
+        const unitOptions = getUnitOptions(structure, entityId)
         const operatorOptions = getOperatorOptions(structure, entityId, invariantUnitId)
         const operatorOptions = getOperatorOptions(structure, entityId, invariantUnitId)
         return {
         return {
             entity: PD.Select(entityOptions[0][0], entityOptions),
             entity: PD.Select(entityOptions[0][0], entityOptions),
-            chain: PD.Select(chainOptions[0][0], chainOptions),
+            unit: PD.Select(unitOptions[0][0], unitOptions),
             operator: PD.Select(operatorOptions[0][0], operatorOptions)
             operator: PD.Select(operatorOptions[0][0], operatorOptions)
         }
         }
     }
     }
@@ -177,7 +180,7 @@ export class SequenceView extends PluginUIComponent<{ }, SequenceViewState> {
     private get values(): PD.Values<SequenceView['params']> {
     private get values(): PD.Values<SequenceView['params']> {
         return {
         return {
             entity: this.state.entityId,
             entity: this.state.entityId,
-            chain: this.state.invariantUnitId,
+            unit: this.state.invariantUnitId,
             operator: this.state.operatorKey
             operator: this.state.operatorKey
         }
         }
     }
     }
@@ -188,10 +191,10 @@ export class SequenceView extends PluginUIComponent<{ }, SequenceViewState> {
         switch (p.name) {
         switch (p.name) {
             case 'entity':
             case 'entity':
                 state.entityId = p.value
                 state.entityId = p.value
-                state.invariantUnitId = getChainOptions(state.structure, state.entityId)[0][0]
+                state.invariantUnitId = getUnitOptions(state.structure, state.entityId)[0][0]
                 state.operatorKey = getOperatorOptions(state.structure, state.entityId, state.invariantUnitId)[0][0]
                 state.operatorKey = getOperatorOptions(state.structure, state.entityId, state.invariantUnitId)[0][0]
                 break
                 break
-            case 'chain':
+            case 'unit':
                 state.invariantUnitId = p.value
                 state.invariantUnitId = p.value
                 state.operatorKey = getOperatorOptions(state.structure, state.entityId, state.invariantUnitId)[0][0]
                 state.operatorKey = getOperatorOptions(state.structure, state.entityId, state.invariantUnitId)[0][0]
                 break
                 break