message: ANVIL: fix for 6y1z
diff: @@ -101,6 +101,10 @@ async function initialize(structure: Structure, props: ANVILProps, accessibleSur
  const hydrophobic = new Array<boolean>();
  const definition = props.tmdetDefinition ? TMDET_DEFINITION : ANVIL_DEFINITION;
  + function isPartOfEntity(l: StructureElement.Location): boolean {
  + return !Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.residues.label_seq_id.valueKind(l.unit.residueIndex[l.element]) === 0;
  + }
  +
  const vec = v3zero();
  for (let i = 0, il = structure.units.length; i < il; ++i) {
  const unit = structure.units[i];
  @@ -111,8 +115,8 @@ async function initialize(structure: Structure, props: ANVILProps, accessibleSur
  const eI = elements[j];
  l.element = eI;
  - // consider only amino acids
  - if (getElementMoleculeType(unit, eI) !== MoleculeType.Protein) {
  + // consider only amino acids in chains
  + if (getElementMoleculeType(unit, eI) !== MoleculeType.Protein || !isPartOfEntity(l)) {
  continue;
  }
  @@ -357,7 +361,7 @@ function membraneSegments(ctx: ANVILContext, membrane: MembraneCandidate): Array
  // collect all residues in membrane layer
  for (let k = 0, kl = offsets.length; k < kl; k++) {
  const unit = units[unitIndices[offsets[k]]];
  - if (!Unit.isAtomic(unit)) throw 'Property only available for atomic models.';
  + if (!Unit.isAtomic(unit)) notAtomic();
  const elementIndex = elementIndices[offsets[k]];
  authAsymId = unit.model.atomicHierarchy.chains.auth_asym_id.value(unit.chainIndex[elementIndex]);
  @@ -378,7 +382,7 @@ function membraneSegments(ctx: ANVILContext, membrane: MembraneCandidate): Array
  for (let k = 0, kl = offsets.length; k < kl; k++) {
  const unit = units[unitIndices[offsets[k]]];
  - if (!Unit.isAtomic(unit)) throw 'Property only available for atomic models.';
  + if (!Unit.isAtomic(unit)) notAtomic();
  const elementIndex = elementIndices[offsets[k]];
  authAsymId = unit.model.atomicHierarchy.chains.auth_asym_id.value(unit.chainIndex[elementIndex]);
  @@ -441,6 +445,10 @@ function membraneSegments(ctx: ANVILContext, membrane: MembraneCandidate): Array
  return refinedSegments;
  }
  +function notAtomic(): never {
  + throw 'Property only available for atomic models.';
  +}
  +
  /** Filter for membrane residues and calculate the final extent of the membrane layer */
  function adjustExtent(ctx: ANVILContext, membrane: MembraneCandidate, centroid: Vec3): number {
  const { offsets, structure } = ctx;
  