Browse Source

wip sybyl

JonStargaryen 4 years ago
parent
commit
20450e352f
1 changed files with 5 additions and 5 deletions
  1. 5 5
      src/mol-io/writer/mol2/encoder.ts

+ 5 - 5
src/mol-io/writer/mol2/encoder.ts

@@ -44,7 +44,7 @@ export class Mol2Encoder extends LigandEncoder {
                 const label2 = this.getLabel(lai2);
                 if (i1 < i2 && atoms.findIndex(e => e.label_atom_id === lai2) > -1 && !this.skipHydrogen(label2)) {
                     const { order, flags } = v;
-                    const ar = flags === BondType.Flag.Aromatic;
+                    const ar = BondType.is(BondType.Flag.Aromatic, flags);
                     StringBuilder.writeSafe(b, `${++bondCount} ${i1 + 1} ${i2 + 1} ${ar ? 'ar' : order}`);
                     StringBuilder.newline(b);
                 }
@@ -62,20 +62,19 @@ export class Mol2Encoder extends LigandEncoder {
 
     private toArray(map: Map<string, { order: number, flags: number }>): BondData[] {
         const array: BondData[] = [];
-        map.forEach((v, k) => array.push({ label_atom_id: k, order: v.order, aromatic: v.flags === BondType.Flag.Aromatic }));
+        map.forEach((v, k) => array.push({ label_atom_id: k, order: v.order, aromatic: BondType.is(BondType.Flag.Aromatic, v.flags) }));
         return array;
     }
 
     // see https://www.sdsc.edu/CCMS/Packages/cambridge/pluto/atom_types.html
     private mapToSybyl(label_atom_id: string, type_symbol: string, bondMap: ComponentBond.Entry) {
         const partialBondMap = bondMap.map.get(label_atom_id)!;
-        const partialBondArray = this.toArray(partialBondMap);
+        const bond = this.toArray(partialBondMap);
 
-        const bond = partialBondArray.filter(e => !e.aromatic);
         const num_bond = bond.length;
         const nonmet = bond.filter(e => NON_METAL_ATOMS.has(e.label_atom_id));
         const num_nonmet = nonmet.length;
-        const arom = partialBondArray.filter(e => e.aromatic);
+        const arom = bond.filter(e => e.aromatic);
         const num_arom = arom.length;
 
         // TODO if altLoc: 'Du' // 1.1
@@ -84,6 +83,7 @@ export class Mol2Encoder extends LigandEncoder {
         if (type_symbol === 'P') return 'P.3'; // 1.4
         if (type_symbol === 'Co' || type_symbol === 'Ru') return type_symbol + '.oh'; // 1.5
         if (type_symbol === 'C') { // 1.6
+            console.log(num_bond + ' ' + num_arom);
             if (num_bond >= 4 && bond.every(b => b.order === 1)) return 'C.3'; // 1.6.1
             if (num_bond === 3 && this.isCat(label_atom_id, bond, bondMap)) return 'C.cat'; // 1.6.2
             if (num_bond >= 2 && num_arom === 2) return 'C.ar'; // 1.6.3