Browse Source

fixed exceptBy and structureSubtract

Alexander Rose 5 years ago
parent
commit
560da38687

+ 1 - 1
src/mol-model/structure/query/queries/modifiers.ts

@@ -222,7 +222,7 @@ export function exceptBy(query: StructureQuery, by: StructureQuery): StructureQu
         if (StructureSelection.structureCount(selection) === 0) return selection;
 
         const bySel = by(ctx);
-        if (StructureSelection.structureCount(bySel) === 0) return StructureSelection.Empty(ctx.inputStructure);
+        if (StructureSelection.structureCount(bySel) === 0) return selection;
         const subtractBy = StructureSelection.unionStructure(bySel);
 
         const ret = StructureSelection.UniqueBuilder(ctx.inputStructure);

+ 4 - 1
src/mol-model/structure/query/utils/structure-set.ts

@@ -92,7 +92,10 @@ export function structureSubtract(a: Structure, b: Structure): Structure {
 
     for (let i = 0, _i = aU.length; i < _i; i++) {
         const u = aU[i];
-        if (!bU.has(u.id)) continue;
+        if (!bU.has(u.id)) {
+            units[units.length] = u;
+            continue;
+        }
         const v = bU.get(u.id);
         const sub = SortedArray.subtract(u.elements, v.elements);
         if (sub.length > 0) {