From 1d22600c2239250d64443fa595223a6b9a1c24dc Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Thu, 14 Feb 2019 17:34:24 -0800 Subject: [PATCH] check for empty Structures --- src/mol-model-props/pdbe/themes/structure-quality-report.ts | 2 +- src/mol-model-props/rcsb/themes/assembly-symmetry-cluster.ts | 4 ++-- src/mol-model/structure/structure/structure.ts | 4 ++++ .../dynamic/custom-props/pdbe/structure-quality-report.ts | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mol-model-props/pdbe/themes/structure-quality-report.ts b/src/mol-model-props/pdbe/themes/structure-quality-report.ts index a527e58f7..928298bd2 100644 --- a/src/mol-model-props/pdbe/themes/structure-quality-report.ts +++ b/src/mol-model-props/pdbe/themes/structure-quality-report.ts @@ -31,7 +31,7 @@ const ValidationColorTable: [string, Color][] = [ export function StructureQualityReportColorTheme(ctx: ThemeDataContext, props: {}): ColorTheme<{}> { let color: LocationColor - if (ctx.structure && ctx.structure.models[0].customProperties.has(StructureQualityReport.Descriptor)) { + if (ctx.structure && !ctx.structure.isEmpty && ctx.structure.models[0].customProperties.has(StructureQualityReport.Descriptor)) { const getIssues = StructureQualityReport.getIssues; color = (location: Location) => { if (StructureElement.isLocation(location)) { diff --git a/src/mol-model-props/rcsb/themes/assembly-symmetry-cluster.ts b/src/mol-model-props/rcsb/themes/assembly-symmetry-cluster.ts index efe1bb6fb..434187445 100644 --- a/src/mol-model-props/rcsb/themes/assembly-symmetry-cluster.ts +++ b/src/mol-model-props/rcsb/themes/assembly-symmetry-cluster.ts @@ -47,7 +47,7 @@ export function AssemblySymmetryClusterColorTheme(ctx: ThemeDataContext, props: const { symmetryId } = props - if (ctx.structure && ctx.structure.models[0].customProperties.has(AssemblySymmetry.Descriptor)) { + if (ctx.structure && !ctx.structure.isEmpty && ctx.structure.models[0].customProperties.has(AssemblySymmetry.Descriptor)) { const assemblySymmetry = AssemblySymmetry.get(ctx.structure.models[0])! const s = assemblySymmetry.db.rcsb_assembly_symmetry @@ -99,5 +99,5 @@ export const AssemblySymmetryClusterColorThemeProvider: ColorTheme.Provider<Asse factory: AssemblySymmetryClusterColorTheme, getParams: getAssemblySymmetryClusterColorThemeParams, defaultValues: PD.getDefaultValues(AssemblySymmetryClusterColorThemeParams), - isApplicable: (ctx: ThemeDataContext) => !!ctx.structure && ctx.structure.models[0].customProperties.has(AssemblySymmetry.Descriptor) + isApplicable: (ctx: ThemeDataContext) => !!ctx.structure && !ctx.structure.isEmpty && ctx.structure.models[0].customProperties.has(AssemblySymmetry.Descriptor) } \ No newline at end of file diff --git a/src/mol-model/structure/structure/structure.ts b/src/mol-model/structure/structure/structure.ts index d7b99e9ff..b1c520601 100644 --- a/src/mol-model/structure/structure/structure.ts +++ b/src/mol-model/structure/structure/structure.ts @@ -72,6 +72,10 @@ class Structure { return prc && ec ? ec / prc < 2 : false } + get isEmpty() { + return this.units.length === 0; + } + get hashCode() { if (this._props.hashCode !== -1) return this._props.hashCode; return this.computeHash(); diff --git a/src/mol-plugin/behavior/dynamic/custom-props/pdbe/structure-quality-report.ts b/src/mol-plugin/behavior/dynamic/custom-props/pdbe/structure-quality-report.ts index 61a09e969..6c0998201 100644 --- a/src/mol-plugin/behavior/dynamic/custom-props/pdbe/structure-quality-report.ts +++ b/src/mol-plugin/behavior/dynamic/custom-props/pdbe/structure-quality-report.ts @@ -40,7 +40,7 @@ export const PDBeStructureQualityReport = PluginBehavior.create<{ autoAttach: bo factory: StructureQualityReportColorTheme, getParams: () => ({}), defaultValues: {}, - isApplicable: (ctx: ThemeDataContext) => !!ctx.structure && ctx.structure.models[0].customProperties.has(StructureQualityReport.Descriptor) + isApplicable: (ctx: ThemeDataContext) => !!ctx.structure && !ctx.structure.isEmpty && ctx.structure.models[0].customProperties.has(StructureQualityReport.Descriptor) }) } -- GitLab