UNPKG

@rcsb/rcsb-saguaro-3d

Version:
2 lines 8.2 MB
/*! For license information please see app.js.LICENSE.txt */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("RcsbFv3D",[],t):"object"==typeof exports?exports.RcsbFv3D=t():e.RcsbFv3D=t()}(self,(()=>(()=>{var e,t,n={94334(e,t,n){"use strict";var r,o,i,A,a,s,c,l,u,d,g,p,m,f,h,B,C,I,y,E,Q,b,v,w,S,D,x,F;n.r(t),n.d(t,{AggregationMethod:()=>h,AggregationType:()=>d,AtomPairingScheme:()=>D,DescriptorType:()=>v,Format:()=>b,GroupByReturnType:()=>l,GroupCountRankingOption:()=>A,Interval:()=>g,LogicalOperator:()=>m,MatchType:()=>w,MotifPruningStrategy:()=>x,Operator:()=>f,PatternType:()=>S,RelevanceScoreRankingOption:()=>o,RequestOptionsResultsVerbosity:()=>r,ReturnType:()=>s,ScoringStrategy:()=>u,SequenceType:()=>y,Service:()=>C,ServiceType:()=>F,SimilarityType:()=>Q,SortBy:()=>B,SortDirection:()=>i,SortOptionGroupsSortBy:()=>a,Src:()=>c,Target:()=>I,TargetSearchSpace:()=>E,Type:()=>p}),function(e){e.Compact="compact",e.Minimal="minimal",e.Verbose="verbose"}(r||(r={})),function(e){e.Score="score"}(o||(o={})),function(e){e.Asc="asc",e.Desc="desc"}(i||(i={})),function(e){e.Count="count"}(A||(A={})),function(e){e.Size="size",e.Count="count"}(a||(a={})),function(e){e.Entry="entry",e.PolymerEntity="polymer_entity",e.NonPolymerEntity="non_polymer_entity",e.PolymerInstance="polymer_instance",e.Assembly="assembly",e.MolDefinition="mol_definition"}(s||(s={})),function(e){e.Ui="ui",e.MypdbService="mypdb_service",e.MypdbUser="mypdb_user",e.RcsbTest="rcsb_test"}(c||(c={})),function(e){e.Groups="groups",e.Representatives="representatives"}(l||(l={})),function(e){e.Combined="combined",e.Sequence="sequence",e.Seqmotif="seqmotif",e.Strucmotif="strucmotif",e.Structure="structure",e.Chemical="chemical",e.Text="text",e.TextChem="text_chem",e.FullText="full_text"}(u||(u={})),function(e){e.Terms="terms",e.Histogram="histogram",e.DateHistogram="date_histogram",e.Range="range",e.DateRange="date_range",e.Cardinality="cardinality"}(d||(d={})),function(e){e.Year="year"}(g||(g={})),function(e){e.Group="group",e.Terminal="terminal",e.Formula="formula",e.Descriptor="descriptor"}(p||(p={})),function(e){e.Or="or",e.And="and"}(m||(m={})),function(e){e.Equals="equals",e.Greater="greater",e.GreaterOrEqual="greater_or_equal",e.Less="less",e.LessOrEqual="less_or_equal",e.Range="range",e.ExactMatch="exact_match",e.In="in",e.Exists="exists",e.ContainsWords="contains_words",e.ContainsPhrase="contains_phrase",e.StrictShapeMatch="strict_shape_match",e.RelaxedShapeMatch="relaxed_shape_match"}(f||(f={})),function(e){e.MatchingDepositGroupId="matching_deposit_group_id",e.SequenceIdentity="sequence_identity",e.MatchingUniprotAccession="matching_uniprot_accession",e.MatchingChemicalComponentId="matching_chemical_component_id"}(h||(h={})),function(e){e.Coverage="coverage"}(B||(B={})),function(e){e.FullText="full_text",e.Text="text",e.TextChem="text_chem",e.Sequence="sequence",e.Structure="structure",e.Chemical="chemical",e.Seqmotif="seqmotif",e.Strucmotif="strucmotif"}(C||(C={})),function(e){e.PdbProteinSequence="pdb_protein_sequence",e.PdbRnaSequence="pdb_rna_sequence",e.PdbDnaSequence="pdb_dna_sequence"}(I||(I={})),function(e){e.Protein="protein",e.Rna="rna",e.Dna="dna"}(y||(y={})),function(e){e.Assembly="assembly",e.PolymerEntityInstance="polymer_entity_instance"}(E||(E={})),function(e){e.Local="local",e.Global="global"}(Q||(Q={})),function(e){e.Cif="cif",e.Bcif="bcif",e.Pdb="pdb"}(b||(b={})),function(e){e.Smiles="SMILES",e.InChI="InChI"}(v||(v={})),function(e){e.GraphExact_="graph-exact",e.GraphStrict_="graph-strict",e.GraphRelaxed_="graph-relaxed",e.GraphRelaxedStereo_="graph-relaxed-stereo",e.FingerprintSimilarity_="fingerprint-similarity",e.SubStructGraphExact_="sub-struct-graph-exact",e.SubStructGraphStrict_="sub-struct-graph-strict",e.SubStructGraphRelaxed_="sub-struct-graph-relaxed",e.SubStructGraphRelaxedStereo_="sub-struct-graph-relaxed-stereo"}(w||(w={})),function(e){e.Simple="simple",e.Prosite="prosite",e.Regex="regex"}(S||(S={})),function(e){e.All="ALL",e.Backbone="BACKBONE",e.SideChain="SIDE_CHAIN",e.PseudoAtoms="PSEUDO_ATOMS"}(D||(D={})),function(e){e.None="NONE",e.Kruskal="KRUSKAL"}(x||(x={})),function(e){e.FullText="full_text",e.Text="text",e.TextChem="text_chem",e.Sequence="sequence",e.Structure="structure",e.Chemical="chemical",e.Seqmotif="seqmotif",e.Strucmotif="strucmotif"}(F||(F={}))},49345(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModelLoader=void 0;const r=n(2189),o=n(55178),i=n(45212),A=n(66139),a=n(98567);t.ModelLoader=class{async load(e,t,n,r,i){const{fileOrUrl:A,format:a,isBinary:s}=e,c=A instanceof File?(await this.plugin.builders.data.readFile({file:o.Asset.File(A),isBinary:s,label:null==t?void 0:t.dataLabel})).data:await this.plugin.builders.data.download({url:A,isBinary:s,label:null==t?void 0:t.dataLabel});return await this.handleTrajectory(c,a,t,n,r,i)}async parse(e,t,n,r,o){const{data:i,format:A}=e,a=await this.plugin.builders.data.rawData({data:i,label:null==t?void 0:t.dataLabel});return await this.handleTrajectory(a,A,t,n,r,o)}async handleTrajectory(e,t,n,o,s,c){var l,u;const d=await this.plugin.builders.structure.parseTrajectory(e,t);if(!d)throw new Error("Trajectory data is unavailable or invalid");if(s)return this.plugin.builders.structure.hierarchy.applyPreset(d,s,c);{const e=await this.plugin.builders.structure.hierarchy.applyPreset(d,r.RcsbPreset,{preset:n||{kind:"standard",assemblyId:""}});if(o&&(null==e?void 0:e.structureProperties)){const t={transform:{name:"matrix",params:{data:o,transpose:!1}}},n=this.plugin.state.data.build().to(e.structureProperties).insert(i.StateTransforms.Model.TransformStructureConformation,t);await this.plugin.runTask(this.plugin.state.data.updateTree(n))}const t=A.StateObjectRef.resolveAndCheck(this.plugin.state.data,null==e?void 0:e.structure);if((null===(l=null==t?void 0:t.obj)||void 0===l?void 0:l.data)&&a.ModelExport.setStructureName(null===(u=null==t?void 0:t.obj)||void 0===u?void 0:u.data,(null==n?void 0:n.dataLabel)||""),"motif"===(null==n?void 0:n.kind)){const e=this.plugin.managers.structure.hierarchy.currentComponentGroups[0];this.plugin.managers.camera.focusSpheres(e,(e=>{var t;return null===(t=e.cell.obj)||void 0===t?void 0:t.data.boundary.sphere}),{durationMs:0})}return e}}constructor(e){this.plugin=e}}},54554(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NakbColorThemeProvider=t.NakbColorThemeParams=void 0,t.getNakbColorThemeParams=g,t.NakbColorTheme=I;const r=n(28243),o=n(78739),i=n(66129),A=n(9422),a=n(43244),s=n(96927),c=n(3108),l=n(15037),u=n(98391),d=(0,o.Color)(13421772);function g(e){return A.ParamDefinition.clone(t.NakbColorThemeParams)}t.NakbColorThemeParams={};const p=(0,u.getAdjustedColorMap)(l.ResidueNameColors,0,1),m=A.ParamDefinition.getDefaultValues({palette:A.ParamDefinition.MappedStatic("colors",{colors:A.ParamDefinition.Group({list:A.ParamDefinition.ColorList("many-distinct")},{isFlat:!0}),generate:A.ParamDefinition.Group({...s.DistinctColorsParams,maxCount:A.ParamDefinition.Numeric(75,{min:1,max:250,step:1})},{isFlat:!0})},{options:[["colors","Color List"],["generate","Generate Distinct"]]})});function f(e){const t=(0,c.getElementMoleculeType)(e.unit,e.element);return 6===t||7===t||8===t}function h(e){if(r.Unit.isAtomic(e.unit)){const r=(t=e.unit,n=e.element,t.model.atomicHierarchy.atoms.label_comp_id.value(n));return(0,l.residueNameColor)(p,r)}{const t=function(e,t){const n=e.coarseElements.seq_id_begin.value(t);if(n===e.coarseElements.seq_id_end.value(t)){const r=e.coarseElements.entityKey[t];return e.model.sequence.byEntityKey[r].sequence.compId.value(n-1)}}(e.unit,e.element);if(t)return(0,l.residueNameColor)(p,t)}var t,n;return d}function B(e,t){return`${e}|${t}`}function C(e){switch(e.unit.kind){case 0:return r.StructureProperties.chain.label_entity_id(e);case 1:case 2:return r.StructureProperties.coarse.entity_id(e)}}function I(e,t){let n;if(e.structure){const t=r.StructureElement.Location.create(e.structure.root),o=function(e){const t=new Map;for(let n=0,r=e.models.length;n<r;++n){const{label_entity_id:r}=e.models[n].atomicHierarchy.chains;for(let e=0,o=r.rowCount;e<o;++e){const o=B(r.value(e),n);t.has(o)||t.set(o,t.size)}const{coarseHierarchy:o}=e.models[n];if(o.isDefined){const{entity_id:e}=o.spheres;for(let r=0,o=e.rowCount;r<o;++r){const o=B(e.value(r),n);t.has(o)||t.set(o,t.size)}const{entity_id:r}=o.gaussians;for(let e=0,o=r.rowCount;e<o;++e){const o=B(r.value(e),n);t.has(o)||t.set(o,t.size)}}}return t}(e.structure.root),i=(0,a.getPalette)(o.size,m);n=e=>{let n;if(r.StructureElement.Location.is(e)){if(f(e))return h(e);const t=B(C(e),e.structure.models.indexOf(e.unit.model));n=o.get(t)}else if(r.Bond.isLocation(e)){if(t.unit=e.aUnit,t.element=e.aUnit.elements[e.aIndex],f(t))return h(t);const r=B(C(t),t.structure.models.indexOf(t.unit.model));n=o.get(r)}return void 0===n?d:i.color(n)}}else n=()=>d;return{factory:I,granularity:"group",color:n,props:t,description:"Color nucleic residues by their name, color everything else by its `label_entity_id` value."}}t.NakbColorThemeProvider={name:"nakb",label:"NAKB",category:i.ColorTheme.Category.Misc,factory:I,getParams:g,defaultValues:A.ParamDefinition.getDefaultValues(t.NakbColorThemeParams),isApplicable:e=>!!e.structure}},2189(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RcsbPreset=t.Mat4=void 0;const r=n(9422),o=n(41925),i=n(49586),A=n(72875),a=n(29173),s=n(28243),c=n(27463),l=n(66139),u=n(12514),d=n(19090),g=n(17e3),p=n(83561),m=n(15883),f=n(31511),h=n(459),B=n(18730),C=n(5566),I=n(42219),y=n(65514),E=n(38685),Q=n(672),b=n(35256);var v=n(22422);Object.defineProperty(t,"Mat4",{enumerable:!0,get:function(){return v.Mat4}});const w=a.StructureRepresentationPresetProvider.CommonParams;async function S(e,t,n){var o,i;if(null===(o=null==t?void 0:t.cell)||void 0===o?void 0:o.parent){if(!l.StateSelection.findTagInSubtree(t.cell.parent.tree,t.cell.transform.ref,f.VolumeStreaming.RootTag)){const o=e.state.data,A=r.ParamDefinition.getDefaultValues(h.InitVolumeStreaming.definition.params(t.obj,e));if((null==n?void 0:n.wireframe)&&(A.options.channelParams.em={wireframe:!0},A.options.channelParams["2fo-fc"]={wireframe:!0},A.options.channelParams["fo-fc(+ve)"]={wireframe:!0},A.options.channelParams["fo-fc(-ve)"]={wireframe:!0}),await e.runTask(o.applyAction(h.InitVolumeStreaming,A,t.ref)),void 0!==(null==n?void 0:n.overrideRadius)){const{params:e,transform:t}=o.select(l.StateSelection.Generators.ofType(f.VolumeStreaming))[0],r=null==e?void 0:e.values;r.entry.params.view.params.radius=n.overrideRadius,await o.build().to(t.ref).update(r).commit()}if(null===(i=null==n?void 0:n.hiddenChannels)||void 0===i?void 0:i.length){const e=o.select(l.StateSelection.Generators.ofTransformer(h.VolumeStreamingVisual));for(const t of e)-1!==n.hiddenChannels.indexOf(t.obj.tags[0])&&(0,m.setSubtreeVisibility)(o,t.transform.ref,!0)}}(0,c.ViewerState)(e).collapsed.next({...(0,c.ViewerState)(e).collapsed.value,volume:!1})}}t.RcsbPreset=(0,o.TrajectoryHierarchyPresetProvider)({id:"preset-trajectory-rcsb",display:{name:"RCSB"},isApplicable:()=>!0,params:()=>({preset:r.ParamDefinition.Value({kind:"standard",assemblyId:""},{isHidden:!0})}),async apply(e,t,n){var r,o,a,l,m,f;const h=n.builders.structure,v=t.preset,D={modelIndex:v.modelIndex||0};"motif"===v.kind&&function(e,t){if(t.assemblyId&&""!==t.assemblyId&&"0"!==t.assemblyId)return;const n=t.targets.map((e=>[e.structOperId||"1",e.labelAsymId])).filter(((e,t,n)=>n.indexOf(e)===t));try{const r=e.obj.data.representative.sourceData.data.frame.categories.pdbx_struct_assembly_gen,o=(0,Q.firstMatchingAssemblyId)(r,n);if(o)return void Object.assign(t,{assemblyId:o})}catch(e){console.warn(e)}console.warn('Could not auto-detect assembly-of-interest. Defaulting to model coordinates and dropping "structOperId" values'),Object.assign(t,{assemblyId:void 0}),Object.assign(t,{targets:t.targets.map((({structOperId:e,...t})=>t))})}(e,v);const x=await h.createModel(e,D),F=await h.insertModelProperties(x),k={name:"model",params:{}};if("default-assembly"===v.kind){const e=null===(o=null===(r=x.cell)||void 0===r?void 0:r.obj)||void 0===o?void 0:o.data,t=e?b.ModelSymmetry.Provider.get(e):void 0,n=Array.isArray(null==t?void 0:t.assemblies)&&t.assemblies.length>0?t.assemblies.map((e=>e.id)):[];n.length>0&&Object.assign(k,{name:"assembly",params:{id:n[0]}})}else v.assemblyId&&""!==v.assemblyId&&"0"!==v.assemblyId&&Object.assign(k,{name:"assembly",params:{id:v.assemblyId}});let _,N,U;"alignment"===v.kind||(_=await h.createStructure(F||x,k),N=await h.insertStructureProperties(_),"motif"!==v.kind&&(U=await h.tryCreateUnitcell(F,void 0,{isHidden:!0})));const R=Object.create(null);let M;if(function(e,t){var n;return!!(null==e?void 0:e.data)&&"off"!==t&&("single-chain"!==t||1===(null===(n=e.data)||void 0===n?void 0:n.polymerUnitCount))&&e.data.models.some((e=>E.QualityAssessment.isApplicable(e,"pLDDT")))}(_,null!==(a=v.plddt)&&void 0!==a?a:"single-chain")&&Object.assign(R,{theme:{globalName:"plddt-confidence",focus:{name:"plddt-confidence"}}}),"alignment"===v.kind){const e=n.state.data.build().to(F).apply(d.FlexibleStructureFromModel,{targets:v.targets});_=await e.commit();const t=n.state.data.build().to(_).apply(u.CustomStructureProperties);N=await t.commit(),_.data.inheritedPropertyData.colors=Object.create(null);for(const e of v.colors){const t=e.value,n=e.targets;for(const e of n){if(!e.labelAsymId)continue;_.data.inheritedPropertyData.colors[e.labelAsymId]||(_.data.inheritedPropertyData.colors[e.labelAsymId]=new Map);const n=e.labelSeqRange?(0,B.toRange)(e.labelSeqRange.beg,e.labelSeqRange.end):[];for(const r of n)_.data.inheritedPropertyData.colors[e.labelAsymId].set(r,t)}}const r=x.data.entryId;let o=[];if(v.targets)for(const e of v.targets)o=o.concat((0,B.createSelectionExpressions)(r,e));else o=o.concat((0,B.createSelectionExpressions)(r));const i={ignoreHydrogens:w.ignoreHydrogens.defaultValue,quality:w.quality.defaultValue,theme:{globalName:"superpose",focus:{name:"superpose"}},selectionExpressions:o};M=await n.builders.structure.representation.applyPreset(N,C.RcsbSuperpositionRepresentationPreset,{...R,...i})}else if("motif"===v.kind&&(null==_?void 0:_.obj)){const e=v.targets.map((e=>(0,B.normalizeTarget)(e,_.obj.data)));let t=(0,B.createSelectionExpressions)(v.label||x.data.entryId,e);const r=(0,B.createSelectionExpressions)(v.label||x.data.entryId);t=t.concat(r.map((e=>({...e,alpha:.21})))),v.color&&(t=t.map((e=>({...e,color:v.color}))));const o={ignoreHydrogens:!0,quality:w.quality.defaultValue,selectionExpressions:t};M=await n.builders.structure.representation.applyPreset(N,C.RcsbSuperpositionRepresentationPreset,{...R,...o})}else if("glygen"===v.kind&&(null==_?void 0:_.obj)){const e=(0,B.createGlyGenSelectionExpressions)(v,v.label||x.data.entryId),t={ignoreHydrogens:!0,quality:w.quality.defaultValue,selectionExpressions:e};M=await n.builders.structure.representation.applyPreset(N,C.RcsbSuperpositionRepresentationPreset,{...R,...t})}else if("validation"===v.kind)M=await n.builders.structure.representation.applyPreset(N,i.ValidationReportGeometryQualityPreset,R);else if("symmetry"===v.kind&&(null==_?void 0:_.obj)){const e=_.obj.data;I.AssemblySymmetryDataProvider.get(e).value||await n.runTask(y.Task.create("Assembly Symmetry",(async t=>{const r={runtime:t,assetManager:n.managers.asset};await I.AssemblySymmetryDataProvider.attach(r,e),await I.AssemblySymmetryProvider.attach(r,e,{symmetryIndex:v.symmetryIndex})}))),M=await n.builders.structure.representation.applyPreset(N,A.AssemblySymmetryPreset,R),(0,c.ViewerState)(n).collapsed.next({...(0,c.ViewerState)(n).collapsed.value,assemblySymmetry:!1})}else if("empty"===v.kind)console.warn("Using empty representation");else if("membrane"===v.kind)try{M=await n.builders.structure.representation.applyPreset(N,p.MembraneOrientationPreset,R),requestAnimationFrame((()=>{var e;return null===(e=n.canvas3d)||void 0===e?void 0:e.requestCameraReset()}))}catch(e){const t="Membrane calculation failed! - This can happen for tiny structures with only a dozen of residues.";n.log.error(t),console.error(t),console.error(e),M=await n.builders.structure.representation.applyPreset(N,"auto",R)}else M="nakb"===v.kind?await n.builders.structure.representation.applyPreset(N,"auto",{...R,theme:{globalName:"nakb",focus:{name:"nakb"}}}):await n.builders.structure.representation.applyPreset(N,"auto",R);if(("feature"===v.kind||"feature-density"===v.kind)&&(null==_?void 0:_.obj)){let e=(0,B.targetToLoci)(v.target,_.obj.data);const r=!!v.target.extendToChain;if(0===e.elements.length&&v.assemblyId){const{selection:r}=n.managers.structure.hierarchy,o=r.structures[0];await n.managers.structure.hierarchy.updateStructure(o,{...t,preset:{...t.preset,assemblyId:void 0}}),e=(0,B.targetToLoci)(v.target,_.obj.data)}const o=r?e:s.StructureElement.Loci.firstResidue(e);"feature-density"===v.kind&&await S(n,_,{overrideRadius:null!==(l=v.radius)&&void 0!==l?l:5,hiddenChannels:null!==(m=v.hiddenChannels)&&void 0!==m?m:[],wireframe:null===(f=v.wireframe)||void 0===f||f}),n.managers.structure.focus.setFromLoci(o),n.managers.camera.focusLoci(o)}return"density"===v.kind&&_&&(await S(n,_),await g.PluginCommands.Toast.Show(n,{title:"Electron Density",message:"Click on a residue to display electron density, click background to reset.",key:"toast-density",timeoutMs:6e4}),n.behaviors.interaction.click.subscribe((async e=>{e.current&&e.current.loci&&"empty-loci"!==e.current.loci.kind&&await g.PluginCommands.Toast.Hide(n,{key:"toast-density"})}))),{model:x,modelProperties:F,unitcell:U,structure:_,structureProperties:N,representation:M}}})},76096(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RSCCScore=t.RSCCPreset=void 0;const r=n(29173),o=n(57861),i=n(10486),A=n(66139),a=n(35875),s=n(87053),c=n(89347),l=n(77936),u=n(65533),d=n(9422),g=n(65514);t.RSCCPreset=(0,r.StructureRepresentationPresetProvider)({id:"preset-structure-representation-rcsb-validation-report-rscc",display:{name:"Validation Report (Experimental Support)",group:"Annotation",description:"Color structure based on real-space correlation coefficients. Data from wwPDB Validation Report, obtained via RCSB PDB."},isApplicable:e=>1===e.data.models.length&&o.ValidationReport.isApplicable(e.data.models[0])&&i.Model.isFromXray(e.data.models[0])&&i.Model.probablyHasDensityMap(e.data.models[0]),params:()=>r.StructureRepresentationPresetProvider.CommonParams,async apply(e,t,n){var i,s,c;const l=A.StateObjectRef.resolveAndCheck(n.state.data,e),u=null===(i=null==l?void 0:l.obj)||void 0===i?void 0:i.data;if(!l||!u)return{};const d=u.models[0];if(await n.runTask(g.Task.create("Validation Report",(async e=>{await o.ValidationReportProvider.attach({runtime:e,assetManager:n.managers.asset},d)}))),!(null===(s=o.ValidationReportProvider.get(d).value)||void 0===s?void 0:s.rscc)||0===(null===(c=o.ValidationReportProvider.get(d).value)||void 0===c?void 0:c.rscc.size))throw Error("No RSCC available");const p=a.RSCCColorThemeProvider.name;return r.PresetStructureRepresentations.auto.apply(e,{...t,theme:{globalName:p,focus:{name:p}}},n)}}),t.RSCCScore=s.PluginBehavior.create({name:"rscc-prop",category:"custom-props",display:{name:"Real-Space Correlation Coefficient",description:"Real-Space Correlation Coefficient."},ctor:class extends s.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=c.RSCCProvider,this.labelProvider={label:e=>{if(this.params.showTooltip&&"element-loci"===e.kind){if(0===e.elements.length)return;const t=e.elements[0],n=t.unit;if(!n.model.customProperties.hasReference(c.RSCCProvider.descriptor))return;const r=l.StructureElement.Location.create(e.structure,n,n.elements[u.OrderedSet.getAt(t.indices,0)]),o=c.RSCC.getScore(r);return o&&-1!==o[0]?`RSCC value: ${o[0]} <small>( ${o[1]} )</small>`:"No RSCC value"}}}}register(){this.ctx.customModelProperties.register(this.provider,this.params.autoAttach),this.ctx.managers.lociLabels.addProvider(this.labelProvider),this.ctx.representation.structure.themes.colorThemeRegistry.add(a.RSCCColorThemeProvider),this.ctx.builders.structure.representation.registerPreset(t.RSCCPreset)}update(e){const t=this.params.autoAttach!==e.autoAttach;return this.params.autoAttach=e.autoAttach,this.params.showTooltip=e.showTooltip,this.ctx.customModelProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),t}unregister(){this.ctx.customModelProperties.unregister(this.provider.descriptor.name),this.ctx.managers.lociLabels.removeProvider(this.labelProvider),this.ctx.representation.structure.themes.colorThemeRegistry.remove(a.RSCCColorThemeProvider),this.ctx.builders.structure.representation.unregisterPreset(t.RSCCPreset)}},params:()=>({autoAttach:d.ParamDefinition.Boolean(!1),showTooltip:d.ParamDefinition.Boolean(!0)})})},35875(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RSCCColorThemeProvider=void 0,t.getRSCCColorThemeParams=p,t.RSCCColorTheme=m;const r=n(66129),o=n(9422),i=n(78739),A=n(28243),a=n(57861),s=n(71490),c=n(89347),l=(0,i.Color)(11184810),u=[l,(0,i.Color)(16743749),(0,i.Color)(16767763),(0,i.Color)(6671347),(0,i.Color)(21462)],d={"No Score":u[0],"Very low confidence":u[1],"Low confidence":u[2],"Well resolved":u[3],"Very well resolved":u[4]},g=(0,s.TableLegend)(Object.entries(d));function p(e){const t=c.RSCC.getCategories(e.structure);return 0===t.length?{type:o.ParamDefinition.MappedStatic("score",{score:o.ParamDefinition.Group({})})}:{type:o.ParamDefinition.MappedStatic("score",{score:o.ParamDefinition.Group({}),category:o.ParamDefinition.Group({kind:o.ParamDefinition.Select(t[0],o.ParamDefinition.arrayToOptions(t))},{isFlat:!0})})}}function m(e,t){let n=()=>l;if(e.structure&&e.structure.models.length>0&&e.structure.models[0].customProperties.has(c.RSCCProvider.descriptor)){const r=A.StructureElement.Location.create(e.structure.root),o=e=>{const n=c.RSCC.getScore(e)[1];return"score"!==t.type.name&&t.type.params.kind,d[n]};n=e=>A.StructureElement.Location.is(e)?o(e):A.Bond.isLocation(e)?(r.unit=e.aUnit,r.element=e.aUnit.elements[e.aIndex],o(r)):l}return{factory:m,granularity:"group",preferSmoothing:!0,color:n,props:t,description:"Assigns residue colors according to the real-space correlation coefficient (RSCC) for polymer residues. Colors range from orange (very low confidence) and yellow (low confidence) to cyan (well resolved) and blue (very well resolved). Categories were obtained by archive-wide statistical analysis. Data from wwPDB Validation Report, obtained via RCSB PDB.",legend:g}}t.RSCCColorThemeProvider={name:"rscc",label:"Experimental Support Confidence",category:r.ColorTheme.Category.Validation,factory:m,getParams:p,defaultValues:o.ParamDefinition.getDefaultValues(p({})),isApplicable:e=>!!e.structure&&a.ValidationReport.isApplicable(e.structure.models[0])&&A.Model.isFromXray(e.structure.models[0])&&A.Model.probablyHasDensityMap(e.structure.models[0]),ensureCustomProperties:{attach:(e,t)=>t.structure?c.RSCCProvider.attach(e,t.structure.models[0],void 0,!0):Promise.resolve(),detach:e=>e.structure&&c.RSCCProvider.ref(e.structure.models[0],!1)}}},89347(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RSCCProvider=t.RSCCParams=t.RSCC=void 0;const r=n(31635),o=n(39440),i=n(92510),A=n(5686),a=n(9422),s=r.__importDefault(n(49431)),c=n(75434),l=n(59859),u=n(10486),d=n(10482),g=n(36306),p=n(77936),m=n(57861),f=n(31186);var h;!function(e){e.getScore=function(e){if(!p.Unit.isAtomic(e.unit))return[-1,"No Score"];const n=t.RSCCProvider.get(e.unit.model).value;if(!n||!n.data)return[-1,"No Score"];const r=e.unit.residueIndex[e.element];return n.data.score.has(r)?n.data.score.get(r):[-1,"No Score"]};const n=[];async function r(e,t,n){var r,a;const c=null===(a=null===(r=m.ValidationReportProvider.get(t))||void 0===r?void 0:r.value)||void 0===a?void 0:a.rscc;if(!c)return;const l=await async function(e,t,n){const r=new o.GraphQLClient(n,e.assetManager);return(await r.request(i.SyncRuntimeContext,A.resolution_gql,{entry_id:t.entryId})).data.entry.rcsb_entry_info.resolution_combined}(e,t,B);return l?function(e,t,n){const r=new Map,o=[],i=Math.floor(10*n),A=(e,t)=>e>t[0]?"Very well resolved":e>t[1]?"Well resolved":e>t[2]?"Low confidence":"Very low confidence",a=e.atomicHierarchy.residueAtomSegments.offsets;return t.forEach(((t,n)=>{const c=e.atomicHierarchy.atoms.label_comp_id.value(a[n]),l=s.default[c];if(!l)return;const u=l[i];let d="No score";if(u)d=A(t,u);else{const e=Object.keys(l),[n,r]=[+e[0],+e[e.length-1]];i<n&&(d=A(t,l[e[0]])),i>r&&(d=A(t,l[e[e.length-1]]))}r.set(n,[t,d]),(0,f.arraySetAdd)(o,d)})),{score:g.IndexedCustomProperty.fromResidueMap(r),category:o}}(t,c,l):void 0}e.getCategories=function(e){if(!e||e.isEmpty)return n;const r=t.RSCCProvider.get(e.models[0]).value;return r&&r.data?r.data.category:n},e.isApplicable=function(e){return!!e.structure&&m.ValidationReport.isApplicable(e.structure.models[0])&&u.Model.isFromXray(e.structure.models[0])&&u.Model.probablyHasDensityMap(e.structure.models[0])},e.obtain=async function(e,t,n){return{value:{info:d.PropertyWrapper.createInfo(),data:await r(e,t)}}}}(h||(t.RSCC=h={})),t.RSCCParams={},t.RSCCProvider=c.CustomModelProperty.createProvider({label:"RSCC Score",descriptor:(0,l.CustomPropertyDescriptor)({name:"rscc_score"}),type:"static",defaultParams:t.RSCCParams,getParams:()=>t.RSCCParams,isApplicable:e=>h.isApplicable(e),obtain:async(e,n,r)=>{var o,i;if(await m.ValidationReportProvider.attach(e,n),!(null===(o=m.ValidationReportProvider.get(n).value)||void 0===o?void 0:o.rscc)||0===(null===(i=m.ValidationReportProvider.get(n).value)||void 0===i?void 0:i.rscc.size))throw Error("No RSCC available");const A={...a.ParamDefinition.getDefaultValues(t.RSCCParams),...r};return await h.obtain(e,n,A)}});const B="https://data.rcsb.org/graphql"},5686(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resolution_gql=void 0,t.resolution_gql="\nquery Resolution($entry_id: String!) {\n entry(entry_id: $entry_id) {\n rcsb_entry_info {\n resolution_combined\n }\n }\n}\n"},18730(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.toRange=void 0,t.normalizeTarget=l,t.createSelectionExpressions=u,t.createGlyGenSelectionExpressions=function(e,t){const n=r.MolScriptBuilder.set(...e.glycosylation.map((e=>e.labelAsymId)));return[{expression:r.MolScriptBuilder.struct.generator.atomGroups({"chain-test":r.MolScriptBuilder.core.rel.eq([r.MolScriptBuilder.ammp("label_asym_id"),e.focus.labelAsymId])}),label:`Chain ${e.focus.labelAsymId}`,type:"cartoon",tag:"polymer"},{expression:r.MolScriptBuilder.struct.generator.atomGroups({"chain-test":r.MolScriptBuilder.core.set.has([n,r.MolScriptBuilder.ammp("label_asym_id")])}),label:"Glycosylation",type:"carbohydrate",tag:"carbohydrate"},...u(t).map((e=>({...e,alpha:.21})))]},t.createResidueSelectionExpression=function(e,t){e.structOperId&&!e.operatorName&&(e=l(e,t));const n=e.authSeqId?r.MolScriptBuilder.core.rel.eq([e.authSeqId,r.MolScriptBuilder.ammp("auth_seq_id")]):r.MolScriptBuilder.core.rel.eq([e.labelSeqId,r.MolScriptBuilder.ammp("label_seq_id")]),o={"residue-test":r.MolScriptBuilder.core.logic.and([n]),"chain-test":r.MolScriptBuilder.core.logic.and([r.MolScriptBuilder.core.rel.eq([e.labelAsymId,r.MolScriptBuilder.ammp("label_asym_id")]),r.MolScriptBuilder.core.rel.eq([e.operatorName,r.MolScriptBuilder.acp("operatorName")])])};return r.MolScriptBuilder.struct.modifier.union([r.MolScriptBuilder.struct.generator.atomGroups(o)])},t.getTargetsDistanceToPivot=function(e,t,n){const r=[],o=d(e,n);for(const e of t){const t=d(e,n);let i=1/0;for(const e of o)for(const n of t){const t=c.Vec3.distance(e,n);t<i&&(i=t)}r.push({target:e,distance:i})}return r},t.rangeToTest=p,t.targetToLoci=m,t.lociToTargets=function(e,t){switch(t){case"residue":return function(e){const t=new Set,n=[];return i.StructureElement.Loci.forEachLocation(e,(e=>{if(!a.Unit.isAtomic(e.unit))return;const r=i.StructureProperties.chain.label_asym_id(e),o=i.StructureProperties.chain.auth_asym_id(e),A=i.StructureProperties.residue.label_seq_id(e),c=i.StructureProperties.residue.auth_seq_id(e),l=i.StructureProperties.atom.label_comp_id(e),u=i.StructureProperties.unit.pdbx_struct_oper_list_ids(e),d=(0,s.join)(u),g=[r,o,A,c,l,d].join("|");t.has(g)||(t.add(g),n.push({labelAsymId:r,authAsymId:o,labelSeqId:A,authSeqId:c,labelCompId:l,structOperId:d}))})),n}(e);case"chain":return function(e){const t=new Set,n=[];return i.StructureElement.Loci.forEachLocation(e,(e=>{if(!a.Unit.isAtomic(e.unit))return;const r=i.StructureProperties.chain.label_asym_id(e),o=i.StructureProperties.chain.auth_asym_id(e),A=[r,o].join("|");t.has(A)||(t.add(A),n.push({labelAsymId:r,authAsymId:o}))})),n}(e);case"model":return function(e){const t=new Set,n=[];return i.StructureElement.Loci.forEachLocation(e,(e=>{if(!a.Unit.isAtomic(e.unit))return;const r=e.structure.model.id;t.has(r)||(t.add(r),n.push({modelId:r}))})),n}(e);default:throw new Error(`Failed to return targets: granularity '${t}' is not supported`)}},t.targetToExpression=f;const r=n(13636),o=n(11485),i=n(28243),A=n(1366),a=n(69926),s=n(3801),c=n(98537);function l(e,t,n=void 0){if(e.structOperId){const{structOperId:n,...r}=e,o=function(e,t){let n=!1;for(const r of e.units){const e=r.conformation.operator.assembly;if(!e)continue;n=!0;const{operList:o,operId:i}=e;if(t===(0,s.join)(o))return`ASM_${i}`}if(n)throw Error(`Assemblies exist, but no matching operator expression found: '${t}'`);return"1_555"}(t,n);return{...r,operatorName:o}}return e.operatorName?e:{...e,operatorName:n}}function u(e,n){if(n){if("labelAsymId"in n){const o=n,i=o.labelSeqRange?(0,t.toRange)(o.labelSeqRange.beg,o.labelSeqRange.end):[],A=p(o.labelAsymId,i),a=g(e,o.labelAsymId,i);return[{expression:r.MolScriptBuilder.struct.generator.atomGroups(A),label:`${a}`,type:"cartoon",tag:"polymer"}]}if(Array.isArray(n))return[{expression:function(e){const t=e.map((e=>f(e)));return r.MolScriptBuilder.struct.combinator.merge(t)}(n),label:`${e}`,type:"ball-and-stick",tag:"polymer"}];throw Error("Unable to handle selection: "+n)}return[{expression:o.StructureSelectionQueries.polymer.expression,label:`${e} - Polymers`,type:"cartoon",tag:"polymer"},{expression:o.StructureSelectionQueries.ligand.expression,label:`${e} - Ligands`,type:"ball-and-stick",tag:"ligand"},{expression:o.StructureSelectionQueries.ion.expression,label:`${e} - Ions`,type:"ball-and-stick",tag:"ion"},{expression:o.StructureSelectionQueries.branched.expression,label:`${e} - Carbohydrates`,type:"ball-and-stick",tag:"branched-ball-and-stick",alpha:.3},{expression:o.StructureSelectionQueries.branched.expression,label:`${e} - Carbohydrates`,type:"carbohydrate",tag:"branched-snfg-3d"},{expression:o.StructureSelectionQueries.lipid.expression,label:`${e} - Lipids`,type:"ball-and-stick",tag:"lipid"},{expression:o.StructureSelectionQueries.water.expression,label:`${e} - Waters`,type:"ball-and-stick",tag:"water"}]}function d(e,t){const n=[],r=m(e,t);return i.StructureElement.Loci.forEachLocation(r,(e=>{const t=c.Vec3.create(i.StructureProperties.atom.x(e),i.StructureProperties.atom.y(e),i.StructureProperties.atom.z(e));n.push(t)})),n}t.toRange=(e,t)=>{if(!t)return[e];const n=e<t?e:t;return[...Array((e<t?t:e)-n+1)].map(((e,t)=>n+t))};const g=(e,t,n)=>e+(t?`.${t}`:"")+(n&&n.length>0?`:${n[0]}`:"")+(n&&n.length>1?`-${n[n.length-1]}`:"");function p(e,t,n){const o=[r.MolScriptBuilder.core.rel.eq([r.MolScriptBuilder.ammp("label_asym_id"),e])];return n&&o.push(r.MolScriptBuilder.core.rel.eq([n,r.MolScriptBuilder.acp("operatorName")])),t.length>0?{"chain-test":r.MolScriptBuilder.core.logic.and(o),"residue-test":r.MolScriptBuilder.core.set.has([r.MolScriptBuilder.set(...t),r.MolScriptBuilder.ammp("label_seq_id")])}:{"chain-test":r.MolScriptBuilder.core.logic.and(o)}}function m(e,t){const n=f(e),r=(0,A.compile)(n)(new i.QueryContext(t));return i.StructureSelection.toLociWithSourceUnits(r)}function f(e){var t;const n=[],o=[],i=Object.create(null);return e.authSeqId?n.push(r.MolScriptBuilder.core.rel.eq([e.authSeqId,r.MolScriptBuilder.ammp("auth_seq_id")])):e.labelSeqId?n.push(r.MolScriptBuilder.core.rel.eq([e.labelSeqId,r.MolScriptBuilder.ammp("label_seq_id")])):e.labelSeqRange&&n.push(r.MolScriptBuilder.struct.atomProperty.ihm.overlapsSeqIdRange({beg:e.labelSeqRange.beg,end:null!==(t=e.labelSeqRange.end)&&void 0!==t?t:e.labelSeqRange.beg})),e.labelCompId&&n.push(r.MolScriptBuilder.core.rel.eq([e.labelCompId,r.MolScriptBuilder.ammp("label_comp_id")])),1===n.length?i["residue-test"]=n[0]:n.length>1&&(i["residue-test"]=r.MolScriptBuilder.core.logic.and(n)),e.labelAsymId&&o.push(r.MolScriptBuilder.core.rel.eq([e.labelAsymId,r.MolScriptBuilder.ammp("label_asym_id")])),e.operatorName&&o.push(r.MolScriptBuilder.core.rel.eq([e.operatorName,r.MolScriptBuilder.acp("operatorName")])),1===o.length?i["chain-test"]=o[0]:o.length>1&&(i["chain-test"]=r.MolScriptBuilder.core.logic.and(o)),Object.keys(i).length>0?r.MolScriptBuilder.struct.modifier.union([r.MolScriptBuilder.struct.generator.atomGroups(i)]):r.MolScriptBuilder.struct.generator.empty}},18370(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SuperposeColorThemeProvider=void 0,t.SuperposeColorTheme=a;const r=n(66129),o=n(9422),i=n(78739),A=n(28243);function a(e,t){var n;const r=null===(n=e.structure)||void 0===n?void 0:n.inheritedPropertyData.colors,o=new Map;for(const[e,t]of Object.entries(r)){const n=t.values().next().value,r=i.Color.desaturate(i.Color.lighten(n,1.7),1.2);o.set(e,r)}let s=(0,i.Color)(13421772);const c=Array.from(o.values());c.every(((e,t,n)=>e===n[0]))&&(s=c[0]);const l=A.StructureElement.Location.create(),u=e=>{var t,n,i;const a=A.StructureProperties.chain.label_asym_id(e),c=A.StructureProperties.residue.label_seq_id(e);if(null===(t=null==r?void 0:r[a])||void 0===t?void 0:t.has(c)){if(void 0!==(null===(n=r[a])||void 0===n?void 0:n.get(c)))return null===(i=r[a])||void 0===i?void 0:i.get(c)}else if(null==r?void 0:r[a])return o.get(a);return s};return{factory:a,granularity:"group",color:e=>A.StructureElement.Location.is(e)?u(e):A.Bond.isLocation(e)?(l.structure=e.aStructure,l.unit=e.aUnit,l.element=e.aUnit.elements[e.aIndex],u(l)):s,props:t,description:"Superpose coloring"}}t.SuperposeColorThemeProvider={name:"superpose",label:"Superpose",category:r.ColorTheme.Category.Misc,factory:a,getParams:()=>({}),defaultValues:o.ParamDefinition.getDefaultValues({}),isApplicable:e=>!!e.structure&&!!e.structure.inheritedPropertyData.colors}},19090(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlexibleStructureFromModel=void 0;const r=n(12720),o=n(62752),i=n(65514),A=n(9422),a=n(42730),s=n(13636),c=n(28243),l=n(18730),u=r.PluginStateTransform.BuiltIn({name:"flexible-structure-from-model",display:{name:"Flexible Structure",description:"Create a molecular structure from independently transformed substructures."},from:r.PluginStateObject.Molecule.Model,to:r.PluginStateObject.Molecule.Structure,isDecorator:!0,params:e=>({targets:A.ParamDefinition.Value([])})})({apply:({a:e,params:t},n)=>i.Task.create("Build Flexible Structure",(async i=>{const A=await o.RootStructureDefinition.create(n,i,e.data),{targets:u}=t;if(!(null==u?void 0:u.length))return A;const d=[],g=[];for(const e of u){if(!e.labelAsymId)continue;d.includes(e.labelAsymId)||(d.push(e.labelAsymId),g.push([]));const t=e.labelSeqRange?(0,l.toRange)(e.labelSeqRange.beg,e.labelSeqRange.end):[],n=(0,l.rangeToTest)(e.labelAsymId,t),r=s.MolScriptBuilder.struct.generator.atomGroups(n),{selection:o}=a.StructureQueryHelper.createAndRun(A.data,r),i=c.StructureSelection.unionStructure(o);if(e.matrix){const t=c.Structure.transform(i,e.matrix);g[d.indexOf(e.labelAsymId)].push(t)}else g[d.indexOf(e.labelAsymId)].push(i)}const p=c.Structure.Builder({label:A.data.label});for(const e of g)if(1===e.length){const t=e[0].units[0];p.addUnit(t.kind,t.model,t.conformation.operator,t.elements,t.traits,t.invariantId)}else{p.beginChainGroup();for(const t of e){const e=t.units[0];p.addUnit(e.kind,e.model,e.conformation.operator,e.elements,e.traits,e.invariantId)}p.endChainGroup()}const m=p.getStructure();return new r.PluginStateObject.Molecule.Structure(m,{label:A.data.label})})),dispose({b:e}){null==e||e.data.customPropertyDescriptors.dispose()}});t.FlexibleStructureFromModel=u},5566(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RcsbSuperpositionRepresentationPreset=void 0;const r=n(29173),o=n(9422),i=n(66139);var A=r.StructureRepresentationPresetProvider.reprBuilder,a=r.StructureRepresentationPresetProvider.updateFocusRepr;const s=n(22188);t.RcsbSuperpositionRepresentationPreset=(0,r.StructureRepresentationPresetProvider)({id:"preset-superposition-representation-rcsb",display:{group:"Superposition",name:"Alignment",description:"Show representations based on the structural alignment data."},params:()=>({...r.StructureRepresentationPresetProvider.CommonParams,selectionExpressions:o.ParamDefinition.Value([])}),async apply(e,t,n){var r,o,c,l,u,d;const g=i.StateObjectRef.resolveAndCheck(n.state.data,e);if(!g)return{};const p=g.obj.data,m={sizeFactor:p.isCoarseGrained?.8:.2},f=Object.create(null),h=Object.create(null);for(const e of t.selectionExpressions){const i=await n.builders.structure.tryCreateComponentFromExpression(g,e.expression,e.label,{label:e.label});Object.assign(f,{[e.label]:i});const{update:a,builder:c,typeParams:l,color:u}=A(n,t),d={...l};"cartoon"===e.type&&Object.assign(d,{...m}),void 0!==(null==e?void 0:e.alpha)&&Object.assign(d,{alpha:e.alpha});const p={type:e.type,typeParams:d,color:u};e.color&&Object.assign(p,{color:"uniform",colorParams:{value:e.color}}),Object.assign(h,{[e.label]:c.buildRepresentation(a,i,p,{tag:e.tag,initialState:{isHidden:e.isHidden||!1}})}),(null===(r=null==i?void 0:i.cell)||void 0===r?void 0:r.state)&&e.isHidden&&s.StateTransform.assignState(null===(o=null==i?void 0:i.cell)||void 0===o?void 0:o.state,{isHidden:!0}),await a.commit({revertOnError:!1})}return await a(n,p,null===(l=null===(c=t.theme)||void 0===c?void 0:c.focus)||void 0===l?void 0:l.name,null===(d=null===(u=t.theme)||void 0===u?void 0:u.focus)||void 0===d?void 0:d.params),h}})},672(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setFocusFromRange=function(e,t){var n,r;let o;if(o=t.modelId?l(e.managers.structure.hierarchy.current.structures,t.modelId):null===(r=null===(n=e.managers.structure.hierarchy.current.structures[0])||void 0===n?void 0:n.cell.obj)||void 0===r?void 0:r.data,!o)return;const i=(0,A.targetToLoci)(t,o);i&&e.managers.structure.focus.setFromLoci(i)},t.getStructureRefWithModelId=u,t.select=function(e,t,n,o){"set"===o&&d(e,n);const i=new Map;(Array.isArray(t)?t:[t]).forEach(((t,n)=>{var o;const a=t.modelId?l(e.managers.structure.hierarchy.current.structures,t.modelId):m(e);if(!a)return;t.structOperId&&!t.operatorName&&(t=(0,A.normalizeTarget)(t,a));const s=(0,A.targetToLoci)(t,a);if(!s)return;const c=null!==(o=i.get(a))&&void 0!==o?o:r.StructureElement.Loci(a,[]),u=r.StructureElement.Loci.union(s,c);i.set(a,u)})),i.forEach((t=>{"hover"===n?e.managers.interactivity.lociHighlights.highlight({loci:t}):"select"===n&&e.managers.structure.selection.fromLoci("add",t)}))},t.clearSelection=d,t.createComponent=async function(e,t,n,r){for(const a of Array.isArray(n)?n:[n]){if(!a.modelId)throw Error("createComponent error: model id MUST be provided");const n=u(e.managers.structure.hierarchy.current.structures,a.modelId);if(!n)throw Error("createComponent error: model not found");const s=g(a),c=(0,i.StructureSelectionQuery)("innerQuery_"+Math.random().toString(36).substring(2),o.MolScriptBuilder.struct.generator.atomGroups((0,A.rangeToTest)(a.labelAsymId,s,a.operatorName)));await e.managers.structure.component.add({selection:c,options:{checkExisting:!1,label:t},representation:r},[n])}},t.removeComponent=async function(e,t){const n=[];e.managers.structure.hierarchy.currentComponentGroups.forEach((r=>{var o;for(const i of r)if((null===(o=i.cell.obj)||void 0===o?void 0:o.label)===t){const t=e.managers.structure.hierarchy.remove(r);t&&n.push(t);break}})),await Promise.all(n)},t.getAsymIdsFromStructureModel=function(e,t,n){const o=e.properties.structAsymMap.values(),i=Array.from(o).map((({id:e,auth_id:t})=>[e,t]));return t||n?i.filter((([o])=>{const i=r.Structure.ofModel(e),A=p(i,t,o);return A>0&&(!n||A<=n)})):i},t.getAssemblyIdsFromModel=async function(e,t,n){const o=r.Structure.ofModel(e),i=a.ModelSymmetry.Provider.get(e),A=Array.isArray(null==i?void 0:i.assemblies)&&i.assemblies.length>0?i.assemblies.map((e=>e.id)):["deposited"];if(!t&&!n)return A;const s=[];for(const e of A){const i="deposited"!==e?await r.StructureSymmetry.buildAssembly(o,e).run():o,A=p(i,t);A>0&&(!n||A<=n)&&s.push(e)}return s},t.getDefaultStructure=m,t.getDefaultModel=function(e){var t;const n=e.managers.structure.hierarchy.current.models;if(0===n.length)return;const r=n[0];return r?null===(t=r.cell.obj)||void 0===t?void 0:t.data:void 0},t.firstMatchingAssemblyId=function(e,t){if(e){const n=e.getField("assembly_id"),r=e.getField("oper_expression"),o=e.getField("asym_id_list");for(let i=0,A=e.rowCount;i<A;i++)if(!t.some((e=>!f(r.str(i),e[0])||-1===o.str(i).indexOf(e[1]))))return n.str(i)}else console.warn("Source file is missing 'pdbx_struct_assembly_gen' category")};const r=n(77936),o=n(13636),i=n(11485),A=n(18730),a=n(35256),s=n(28243),c=n(14139);function l(e,t){var n,r;const o=u(e,t);if(o)return null===(r=null===(n=o.cell)||void 0===n?void 0:n.obj)||void 0===r?void 0:r.data}function u(e,t){var n,r,o;for(const i of e)if((null===(o=null===(r=null===(n=i.cell)||void 0===n?void 0:n.obj)||void 0===r?void 0:r.data)||void 0===o?void 0:o.units)&&i.cell.obj.data.units[0].model.id===t)return i}function d(e,t,n){var r,o;if("hover"===t)return void e.managers.interactivity.lociHighlights.clearHighlights();if(!n)return void e.managers.interactivity.lociSelects.deselectAll();const i=n.modelId?l(e.managers.structure.hierarchy.current.structures,n.modelId):null===(o=null===(r=e.managers.structure.hierarchy.current.structures[0])||void 0===r?void 0:r.cell.obj)||void 0===o?void 0:o.data;if(!i)return;n.structOperId&&!n.operatorName&&(n=(0,A.normalizeTarget)(n,i));const a=(0,A.targetToLoci)(n,i);e.managers.interactivity.lociSelects.deselect({loci:a})}function g(e){return"labelSeqRange"in e?(0,A.toRange)(e.labelSeqRange.beg,e.labelSeqRange.end):"labelSeqId"in e?[e.labelSeqId]:[]}const p=(e,t,n)=>{if(!(null==t?void 0:t.length)&&!n)return e.atomicResidueCount;const r={};var i;(null==t?void 0:t.length)&&(r["entity-test"]=o.MolScriptBuilder.core.logic.and([o.MolScriptBuilder.core.rel.eq([o.MolScriptBuilder.ammp("entityType"),"polymer"]),o.MolScriptBuilder.core.str.match([o.MolScriptBuilder.re((i=t,`(${i.map((e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))).join("|")})`),"i"),o.MolScriptBuilder.ammp("entitySubtype")])])),n&&(r["chain-test"]=o.MolScriptBuilder.core.rel.eq([n,o.MolScriptBuilder.ammp("label_asym_id")]));const A=o.MolScriptBuilder.struct.generator.atomGroups(r),a=(0,c.compile)(o.MolScriptBuilder.struct.modifier.union([A]))(new s.QueryContext(e));return s.StructureSelection.unionStructure(a).atomicResidueCount};function m(e){var t;const n=e.managers.structure.hierarchy.current.structures;if(0===n.length)return;const r=n[0];return r?null===(t=r.cell.obj)||void 0===t?void 0:t.data:void 0}function f(e,t){const n=function(e){const t=/\(?([^()]+)\)?]*/g,n=[],r=[];let o;for(;o=t.exec(e);)n[n.length]=o[1];return n.forEach((e=>{const t=[];e.split(",").forEach((e=>{const n=e.indexOf("-");if(n>0){const r=parseInt(e.substring(0,n)),o=parseInt(e.substring(n+1));for(let e=r;e<=o;e++)t[t.length]=e.toString()}else t[t.length]=e.trim()})),r[r.length]=t})),r}(e),r=t.split("x");let o=0;for(let e=0,t=Math.min(n.length,r.length);e<t;e++)-1!==n[e].indexOf(r[e])&&o++;return o===r.length}},55498(e,t,n){"use strict";t.jM=t.o7=t.S=t.x5=void 0;const r=n(31635),o=n(13636),i=n(79364),A=n(1166),a=n(17e3),s=n(27379),c=n(23391),l=r.__importStar(n(96540)),u=n(49345),d=n(61523),g=n(81100),p=n(72875),m=n(49586),f=n(99487),h=n(18370),B=n(54554),C=n(672),I=n(18730),y=n(7367),E=n(54075),Q=n(83561),b=n(12386),v=n(19299),w=n(18093),S=n(29173),D=n(36010),x=n(83826),F=n(98567),k=n(97674),_=n(65762),N=n(76096),U=n(5338),R=n(42219),M=n(28160),L=(n(55483),n(45212)),P=(n(46362),n(78739)),T=n(28243),G=n(14139),H=n(26511),V=n(11485);t.x5="undefined"!=typeof __RCSB_MOLSTAR_VERSION__?__RCSB_MOLSTAR_VERSION__:"none",t.S="undefined"!=typeof __BUILD_TIMESTAMP__?__BUILD_TIMESTAMP__:"none",t.o7=new Date(t.S);const O={"assembly-symmetry":s.PluginSpec.Behavior(p.AssemblySymmetry),"rcsb-validation-report":s.PluginSpec.Behavior(m.RCSBValidationReport),rscc:s.PluginSpec.Behavior(N.RSCCScore),"anvil-membrane-orientation":s.PluginSpec.Behavior(Q.ANVILMembraneOrientation),"ma-quality-assessment":s.PluginSpec.Behavior(D.MAQualityAssessment),"model-export":s.PluginSpec.Behavior(x.ModelExport),"mp4-export":s.PluginSpec.Behavior(_.Mp4Export),"geo-export":s.PluginSpec.Behavior(k.GeometryExport)},Y={showImportControls:!1,showSessionControls:!1,showStructureSourceControls:!0,showMeasurementsControls:!0,showStrucmotifSubmitControls:!0,showSuperpositionControls:!0,showQuickStylesControls:!1,showStructureComponentControls:!0,showVolumeStreamingControls:!0,showAssemblySymmetryControls:!0,showValidationReportControls:!0,showPredictedAlignedErrorPlot:!0,showMembraneOrientationPreset:!1,showNakbColorTheme:!1,detachedFromSierra:!1,modelUrlProviders:[e=>({url:`https://models.rcsb.org/${e.toLowerCase()}.bcif`,format:"mmcif",isBinary:!0}),e=>({url:`https://files.rcsb.org/download/${e.toLowerCase()}.cif`,format:"mmcif",isBinary:!1})],extensions:(0,f.ObjectKeys)(O),layoutIsExpanded:!1,layoutShowControls:!0,layoutShowRightPanel:!0,layoutControlsDisplay:"reactive",layoutShowSequence:!0,layoutShowLog:!1,viewportShowExpand:!0,viewportShowControls:!0,viewportShowSettings:!0,viewportShowScreenshotControls:!0,viewportShowSelectionMode:!0,viewportShowSelectionTools:!0,viewportShowTrajectoryControls:!0,behaviorSelectionModeActive:!1,volumeStreamingServer:"https://maps.rcsb.org/",backgroundColor:c.ColorNames.white,manualReset:!1,pickingAlphaThreshold:.5,showWelcomeToast:!0,config:[]},j=["Polymer","Ligand","Carbohydrate","Lipid","Ion","Water"];function q(e){return j.includes(e)}const K={"wwpdb-chemical-component-dictionary":s.PluginSpec.Behavior(M.wwPDBChemicalComponentDictionary),"mp4-export":s.PluginSpec.Behavior(_.Mp4Export)};(0,f.ObjectKeys)(K),c.ColorNames.white;t.jM=class{constructor(e,n={}){var r,o,s,c,p;this.selectionRefs=new Map;const m="string"==typeof e?document.getElementById(e):e;if(!m)throw new Error(`Could not get element with id '${e}'`);const f={...Y,...n},C=(0,y.DefaultPluginUISpec)(),I={...C,actions:C.actions,behaviors:[...C.behaviors,...f.extensions.map((e=>O[e]))],animations:[...(null===(r=C.animations)||void 0===r?void 0:r.filter((e=>e.name!==v.AnimateStateSnapshots.name)))||[]],layout:{initial:{isExpanded:f.layoutIsExpanded,showControls:f.layoutShowControls,controlsDisplay:f.layoutControlsDisplay}},canvas3d:{...C.canvas3d,...f.canvas3d,renderer:{...null===(o=C.canvas3d)||void 0===o?void 0:o.renderer,...null===(s=f.canvas3d)||void 0===s?void 0:s.renderer,backgroundColor:f.backgroundColor,pickingAlphaThreshold:f.pickingAlphaThreshold},camera:{manualReset:f.manualReset}},components:{...C.components,selectionTools:{controls:f.viewportShowSelectionTools?void 0:()=>{}},controls:{...null===(c=C.components)||void 0===c?void 0:c.controls,top:f.layoutShowSequence?void 0:"none",bottom:f.layoutShowLog?void 0:"none",left:"none",right:f.layoutShowRightPanel?d.ControlsWrapper:"none"},remoteState:"none"},config:[[g.PluginConfig.Viewport.ShowExpand,f.viewportShowExpand],[g.PluginConfig.Viewport.ShowControls,f.viewportShowControls],[g.PluginConfig.Viewport.ShowSettings,f.viewportShowSettings],[g.PluginConfig.Viewport.ShowScreenshotControls,f.viewportShowScreenshotControls],[g.PluginConfig.Viewport.ShowSelectionMode,f.viewportShowSelectionMode],[g.PluginConfig.Viewport.ShowAnimation,!1],[g.PluginConfig.Viewport.ShowTrajectoryControls,f.viewportShowTrajectoryControls],[g.PluginConfig.VolumeStreaming.DefaultServer,f.volumeStreamingServer],[g.PluginConfig.Download.DefaultPdbProvider,"rcsb"],[g.PluginConfig.Download.DefaultEmdbProvider,"rcsb"],[g.PluginConfig.Structure.DefaultRepresentationPreset,S.PresetStructureRepresentations.auto.id],[g.PluginConfig.General.Transparency,w.PluginFeatureDetection.preferWebGl1?"wboit":void 0],[g.PluginConfig.General.PreferWebGl1,w.PluginFeatureDetection.preferWebGl1],...null!==(p=f.config)&&void 0!==p?p:[]]};this._plugin=new E.PluginUIContext(I),this.modelUrlProviders=f.modelUrlProviders,this._plugin.customState={showImportControls:f.showImportControls,showSessionControls:f.showSessionControls,showStructureSourceControls:f.showStructureSourceControls,showMeasurementsControls:f.showMeasurementsControls,showStrucmotifSubmitControls:f.showStrucmotifSubmitControls,showSuperpositionControls:f.showSuperpositionControls,showQuickStylesControls:f.showQuickStylesControls,showStructureComponentControls:f.showStructureComponentControls,showVolumeStreamingControls:f.showVolumeStreamingControls,showAssemblySymmetryControls:f.showAssemblySymmetryControls,showValidationReportControls:f.showValidationReportControls,showPredictedAlignedErrorPlot:f.showPredictedAlignedErrorPlot,modelLoader:new u.ModelLoader(this._plugin),collapsed:new i.BehaviorSubject({selection:!0,measurements:!0,strucmotifSubmit:!0,superposition:!0,quickStyles:!1,component:!1,volume:!0,assemblySymmetry:!0,validationReport:!0,custom:!0}),detachedFromSierra:f.detachedFromSierra},this._plugin.init().then((async()=>{f.showMembraneOrientationPreset||(this._plugin.builders.structure.representation.unregisterPreset(Q.MembraneOrientationPreset),this._plugin.repre