From d81f37c78b9eb03db14c5be97e43cc9cc3b331f1 Mon Sep 17 00:00:00 2001
From: Alexander Rose <alex.rose@rcsb.org>
Date: Tue, 24 Sep 2019 12:07:26 -0700
Subject: [PATCH] added AtomicUnit.residueCount
---
src/mol-model/structure/structure/unit.ts | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/mol-model/structure/structure/unit.ts b/src/mol-model/structure/structure/unit.ts
index 88db3d07d..d50179acd 100644
--- a/src/mol-model/structure/structure/unit.ts
+++ b/src/mol-model/structure/structure/unit.ts
@@ -14,7 +14,7 @@ import { ValueRef } from '../../../mol-util';
import { UnitRings } from './unit/rings';
import StructureElement from './element'
import { ChainIndex, ResidueIndex, ElementIndex } from '../model/indexing';
-import { IntMap, SortedArray } from '../../../mol-data/int';
+import { IntMap, SortedArray, Segmentation } from '../../../mol-data/int';
import { hash2, hashFnv32a } from '../../../mol-data/util';
import { getAtomicPolymerElements, getCoarsePolymerElements, getAtomicGapElements, getCoarseGapElements, getNucleotideElements, getProteinElements } from './util/polymer';
import { mmCIF_Schema } from '../../../mol-io/reader/cif/schema/mmcif';
@@ -202,6 +202,20 @@ namespace Unit {
return this.props.proteinElements.ref;
}
+ get residueCount(): number {
+ if (this.props.residueCount.ref !== undefined) return this.props.residueCount.ref;
+
+ let residueCount = 0
+ const residueIt = Segmentation.transientSegments(this.model.atomicHierarchy.residueAtomSegments, this.elements)
+ while (residueIt.hasNext) {
+ residueIt.move()
+ residueCount += 1
+ }
+
+ this.props.residueCount.ref = residueCount;
+ return this.props.residueCount.ref!;
+ }
+
getResidueIndex(elementIndex: StructureElement.UnitIndex) {
return this.model.atomicHierarchy.residueAtomSegments.index[this.elements[elementIndex]];
}
@@ -227,6 +241,7 @@ namespace Unit {
gapElements: ValueRef<SortedArray<ElementIndex> | undefined>
nucleotideElements: ValueRef<SortedArray<ElementIndex> | undefined>
proteinElements: ValueRef<SortedArray<ElementIndex> | undefined>
+ residueCount: ValueRef<number | undefined>
}
function AtomicProperties(): AtomicProperties {
@@ -238,6 +253,7 @@ namespace Unit {
gapElements: ValueRef.create(void 0),
nucleotideElements: ValueRef.create(void 0),
proteinElements: ValueRef.create(void 0),
+ residueCount: ValueRef.create(void 0),
};
}
--
GitLab