@datagrok/sequence-translator 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@datagrok/sequence-translator",
3
3
  "friendlyName": "Sequence Translator",
4
- "version": "1.6.0",
4
+ "version": "1.6.1",
5
5
  "author": {
6
6
  "name": "Leonid Stolbov",
7
7
  "email": "lstolbov@datagrok.ai"
@@ -30,6 +30,7 @@ export async function getOverriddenLibrary(rules: Rules): Promise<IMonomerLibBas
30
30
  names = [];
31
31
  monomers = [];
32
32
  console.error(e);
33
+ grok.shell.warning(e);
33
34
  } finally {
34
35
  for (let j = 0; j < names.length; j ++)
35
36
  argLib[names[j]] = monomers[j];
@@ -52,12 +53,12 @@ export function getNewMonomers(rdkit: RDModule, mLib: IMonomerLib, rule: RuleRea
52
53
 
53
54
  const monomerNames = new Array<string>(totalLength);
54
55
  const resMonomers = new Array<Monomer>(totalLength);
55
- const rawMonomers = new Array<string>(totalLength);
56
+ const monomers = new Array<string>(totalLength);
56
57
 
57
58
  const mainRxn = getReactionSmirks(rdkit, reacSmarts);
58
59
 
59
- const reacCutFirst = `${reactants[0]}>>[C:1]`;
60
- const reacCutSecond = `${reactants[1]}>>[C:2]`;
60
+ const reacCutFirst = `${reactants[0]}>>[C:1]C`;
61
+ const reacCutSecond = `${reactants[1]}>>[C:2]C`;
61
62
 
62
63
  const rxnCutFirst = getReactionSmirks(rdkit, reacCutFirst);
63
64
  const rxnCutSecond = getReactionSmirks(rdkit, reacCutSecond);
@@ -68,7 +69,7 @@ export function getNewMonomers(rdkit: RDModule, mLib: IMonomerLib, rule: RuleRea
68
69
  if (!monomer) throw new MonomerNotFoundError('PEPTIDE', rule.firstMonomers[i]);
69
70
 
70
71
  const sMolBlock = cutReactant(rdkit, monomer.molfile, rxnCutFirst, monomer.name);
71
- rawMonomers[counter] = sMolBlock;
72
+ monomers[counter] = sMolBlock;
72
73
  monomerNames[counter] = `${monomer.symbol}_${monomerName}`;
73
74
  counter++;
74
75
  }
@@ -77,7 +78,7 @@ export function getNewMonomers(rdkit: RDModule, mLib: IMonomerLib, rule: RuleRea
77
78
  if (!monomer) throw new MonomerNotFoundError('PEPTIDE', rule.secondMonomers[i]);
78
79
 
79
80
  const sMolBlock = cutReactant(rdkit, monomer.molfile, rxnCutSecond, monomer.name);
80
- rawMonomers[counter] = sMolBlock;
81
+ monomers[counter] = sMolBlock;
81
82
  monomerNames[counter] = `${monomer.symbol}_${monomerName}`;
82
83
  counter++;
83
84
  }
@@ -97,20 +98,22 @@ export function getNewMonomers(rdkit: RDModule, mLib: IMonomerLib, rule: RuleRea
97
98
  mol?.delete();
98
99
  }
99
100
  //pMolblock = reactionMembers[1]//cutProduct(rdkit, monomer1?.molfile, monomer2?.molfile, mainRxn, monomerName);
100
- rawMonomers[counter] = pMolblock;
101
+ monomers[counter] = pMolblock;
101
102
  monomerNames[counter] = monomerName;
102
103
 
103
- //after RDKit works
104
- for (let i = 0; i < totalLength - 1; i ++)
105
- rawMonomers[i] = rawMonomers[i].replace('0.0000 C ', '0.0000 R# ').replace('M RGP 2', 'M RGP 3 1 3');
106
- rawMonomers[totalLength - 1] = modProduct(rawMonomers[totalLength - 1]);
104
+ //after RDKit works - [X:N] is first atom which is exploited
105
+ for (let i = 0; i < totalLength - 1; i ++) {
106
+ monomers[i] = monomers[i].replace(' 0.0000 0.0000 0.0000 C ', ' 0.0000 0.0000 0.0000 R# ')
107
+ .replace('M RGP 2', 'M RGP 3 2 3');
108
+ }
109
+ monomers[totalLength - 1] = modProduct(monomers[totalLength - 1]);
107
110
 
108
111
  for (let i = 0; i < totalLength; i ++) {
109
112
  const isProduct = i == totalLength - 1 ? true : false;
110
113
  const resMonomer: Monomer = {
111
114
  [REQ.SYMBOL]: monomerNames[i],
112
115
  [REQ.NAME]: monomerNames[i],
113
- [REQ.MOLFILE]: rawMonomers[i],
116
+ [REQ.MOLFILE]: monomers[i],
114
117
  [REQ.AUTHOR]: '',
115
118
  [REQ.ID]: 0,
116
119
  [REQ.RGROUPS]: getNewGroups(isProduct),
@@ -99,8 +99,8 @@ export async function getPolyToolConvertDialog(srcCol?: DG.Column): Promise<DG.D
99
99
  const generateHelmInput = ui.input.bool(PT_UI_GET_HELM, {value: true});
100
100
  ui.tooltip.bind(generateHelmInput.root, PT_UI_ADD_HELM);
101
101
 
102
- const chiralityEngineInput = ui.input.bool(PT_UI_USE_CHIRALITY, {value: false});
103
- const highlightMonomersInput = ui.input.bool(PT_UI_HIGHLIGHT_MONOMERS, {value: false});
102
+ const chiralityEngineInput = ui.input.bool(PT_UI_USE_CHIRALITY, {value: true});
103
+ const highlightMonomersInput = ui.input.bool(PT_UI_HIGHLIGHT_MONOMERS, {value: true});
104
104
  let ruleFileList: string[];
105
105
  const ruleInputs = new RuleInputs(RULES_PATH, RULES_STORAGE_NAME, '.json', {
106
106
  onValueChanged: (value: string[]) => { ruleFileList = value; }
@@ -85,8 +85,8 @@ category('toAtomicLevel', () => {
85
85
  try {
86
86
  const molInchi = mol.get_inchi();
87
87
  const molInchiKey = rdKitModule.get_inchikey_for_inchi(molInchi);
88
- expect(mol.get_num_bonds(), 6);
89
- expect(mol.get_num_atoms(), 7);
88
+ expect(mol.get_num_bonds(), 7);
89
+ expect(mol.get_num_atoms(), 8);
90
90
  // TODO: Check inchi key for the new monomer molfile
91
91
  // expect(molInchiKey, 'V2H10N2O3S-UHFFFAOYSA-N');
92
92
  } finally {