openchemlib-extended
Advanced tools
Comparing version 4.0.1 to 6.0.0
'use strict'; | ||
module.exports = function (Molecule) { | ||
var fields = new Map(); | ||
const fields = new Map(); | ||
@@ -6,0 +6,0 @@ fields.set('oclid', Molecule.fromIDCode); |
'use strict'; | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
module.exports = function (OCL) { | ||
@@ -17,11 +13,5 @@ /* | ||
var MoleculeDB = function () { | ||
function MoleculeDB() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
_classCallCheck(this, MoleculeDB); | ||
var _options$computePrope = options.computeProperties, | ||
computeProperties = _options$computePrope === undefined ? false : _options$computePrope; | ||
class MoleculeDB { | ||
constructor(options = {}) { | ||
const { computeProperties = false } = options; | ||
this.db = {}; | ||
@@ -33,36 +23,24 @@ this.statistics = null; | ||
_createClass(MoleculeDB, [{ | ||
key: 'pushEntry', | ||
value: function pushEntry(molecule, data, moleculeInfo) { | ||
var pushEntry = require('./pushEntry'); | ||
return pushEntry.call({ moleculeDB: this, OCL }, molecule, data, moleculeInfo); | ||
} | ||
}, { | ||
key: 'pushMoleculeInfo', | ||
value: function pushMoleculeInfo(moleculeInfo, data) { | ||
var pushMoleculeInfo = require('./pushMoleculeInfo'); | ||
return pushMoleculeInfo.call({ moleculeDB: this, OCL }, moleculeInfo, data); | ||
} | ||
}, { | ||
key: 'search', | ||
value: function search(query, options) { | ||
var search = require('./search'); | ||
return search.call({ moleculeDB: this, OCL, searcher: this.searcher }, query, options); | ||
} | ||
}, { | ||
key: 'getDB', | ||
value: function getDB() { | ||
var _this = this; | ||
pushEntry(molecule, data, moleculeInfo) { | ||
const pushEntry = require('./pushEntry'); | ||
return pushEntry.call({ moleculeDB: this, OCL }, molecule, data, moleculeInfo); | ||
} | ||
return Object.keys(this.db).map(function (key) { | ||
return _this.db[key]; | ||
}); | ||
} | ||
}]); | ||
pushMoleculeInfo(moleculeInfo, data) { | ||
const pushMoleculeInfo = require('./pushMoleculeInfo'); | ||
return pushMoleculeInfo.call({ moleculeDB: this, OCL }, moleculeInfo, data); | ||
} | ||
return MoleculeDB; | ||
}(); | ||
search(query, options) { | ||
const search = require('./search'); | ||
return search.call({ moleculeDB: this, OCL, searcher: this.searcher }, query, options); | ||
} | ||
getDB() { | ||
return Object.keys(this.db).map(key => this.db[key]); | ||
} | ||
} | ||
MoleculeDB.parseCSV = function (csv, options) { | ||
var parseCSV = require('./parseCSV'); | ||
const parseCSV = require('./parseCSV'); | ||
return parseCSV.call({ OCL, MoleculeDB }, csv, options); | ||
@@ -72,3 +50,3 @@ }; | ||
MoleculeDB.parseSDF = function (sdf, options) { | ||
var parseSDF = require('./parseSDF'); | ||
const parseSDF = require('./parseSDF'); | ||
return parseSDF.call({ OCL, MoleculeDB }, sdf, options); | ||
@@ -75,0 +53,0 @@ }; |
'use strict'; | ||
var Papa = require('papaparse'); | ||
const Papa = require('papaparse'); | ||
var defaultCSVOptions = { | ||
const defaultCSVOptions = { | ||
header: true, | ||
dynamicTyping: true, | ||
skipEmptyLines: true, | ||
onStep: function onStep() /* current, total*/{ | ||
onStep: function () /* current, total*/{ | ||
// empty function | ||
@@ -27,8 +27,6 @@ } | ||
function parseCSV(csv) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
function parseCSV(csv, options = {}) { | ||
const getMoleculeCreators = require('./moleculeCreators'); | ||
const moleculeCreators = getMoleculeCreators(this.OCL.Molecule); | ||
var getMoleculeCreators = require('./moleculeCreators'); | ||
var moleculeCreators = getMoleculeCreators(this.OCL.Molecule); | ||
if (typeof csv !== 'string') { | ||
@@ -39,19 +37,18 @@ throw new TypeError('csv must be a string'); | ||
var db = new this.MoleculeDB(options); | ||
let db = new this.MoleculeDB(options); | ||
return new Promise(function (resolve, reject) { | ||
var parsed = Papa.parse(csv, options); | ||
var fields = parsed.meta.fields; | ||
var stats = new Array(fields.length); | ||
var firstElement = parsed.data[0]; | ||
var moleculeCreator = void 0, | ||
moleculeField = void 0; | ||
for (var _i = 0; _i < fields.length; _i++) { | ||
stats[_i] = { | ||
label: fields[_i], | ||
isNumeric: typeof firstElement[fields[_i]] === 'number' | ||
const parsed = Papa.parse(csv, options); | ||
const fields = parsed.meta.fields; | ||
const stats = new Array(fields.length); | ||
const firstElement = parsed.data[0]; | ||
let moleculeCreator, moleculeField; | ||
for (let i = 0; i < fields.length; i++) { | ||
stats[i] = { | ||
label: fields[i], | ||
isNumeric: typeof firstElement[fields[i]] === 'number' | ||
}; | ||
var lowerField = fields[_i].toLowerCase(); | ||
const lowerField = fields[i].toLowerCase(); | ||
if (moleculeCreators.has(lowerField)) { | ||
moleculeCreator = moleculeCreators.get(lowerField); | ||
moleculeField = fields[_i]; | ||
moleculeField = fields[i]; | ||
} | ||
@@ -64,4 +61,4 @@ } | ||
var i = 0; | ||
var l = parsed.data.length; | ||
let i = 0; | ||
const l = parsed.data.length; | ||
parseNext(); | ||
@@ -80,3 +77,3 @@ function parseNext() { | ||
options.onStep(++i, l); | ||
setImmediate(parseNext); | ||
setTimeout(parseNext, 0); | ||
} | ||
@@ -83,0 +80,0 @@ }); |
'use strict'; | ||
var sdfParser = require('sdf-parser'); | ||
const sdfParser = require('sdf-parser'); | ||
var defaultSDFOptions = { | ||
onStep: function onStep() /* current, total*/{ | ||
const defaultSDFOptions = { | ||
onStep: function () /* current, total*/{ | ||
// empty function | ||
@@ -21,17 +21,15 @@ } | ||
function parseSDF(sdf) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
function parseSDF(sdf, options = {}) { | ||
if (typeof sdf !== 'string') { | ||
throw new TypeError('sdf must be a string'); | ||
} | ||
var Molecule = this.OCL.Molecule; | ||
let Molecule = this.OCL.Molecule; | ||
options = Object.assign({}, defaultSDFOptions, options); | ||
var db = new this.MoleculeDB(options); | ||
let db = new this.MoleculeDB(options); | ||
return new Promise(function (resolve, reject) { | ||
var parsed = sdfParser(sdf); | ||
var molecules = parsed.molecules; | ||
const parsed = sdfParser(sdf); | ||
const molecules = parsed.molecules; | ||
db.statistics = parsed.statistics; | ||
var i = 0; | ||
var l = molecules.length; | ||
let i = 0; | ||
const l = molecules.length; | ||
parseNext(); | ||
@@ -50,3 +48,3 @@ function parseNext() { | ||
options.onStep(++i, l); | ||
setImmediate(parseNext); | ||
setTimeout(parseNext, 0); | ||
} | ||
@@ -53,0 +51,0 @@ }); |
@@ -10,9 +10,8 @@ 'use strict'; | ||
function pushEntry(molecule) { | ||
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var moleculeInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; | ||
function pushEntry(molecule, data = {}, moleculeInfo = {}) { | ||
// the following lin could be the source of problems if the idCode version | ||
// changes | ||
// the following lin could be the source of problems if the idCode version changes | ||
var moleculeIDCode = moleculeInfo.idCode ? moleculeInfo.idCode : molecule.getIDCode(); | ||
var entry = this.moleculeDB.db[moleculeIDCode]; | ||
let moleculeIDCode = moleculeInfo.idCode ? moleculeInfo.idCode : molecule.getIDCode(); | ||
let entry = this.moleculeDB.db[moleculeIDCode]; | ||
if (!entry) { | ||
@@ -31,3 +30,3 @@ // a new molecule | ||
var molecularFormula = void 0; | ||
let molecularFormula; | ||
if (!moleculeInfo.mw) { | ||
@@ -44,3 +43,3 @@ molecularFormula = molecule.getMolecularFormula(); | ||
} | ||
var properties = new this.OCL.MoleculeProperties(molecule); | ||
const properties = new this.OCL.MoleculeProperties(molecule); | ||
entry.properties.em = molecularFormula.absoluteWeight; | ||
@@ -47,0 +46,0 @@ entry.properties.mf = molecularFormula.formula; |
@@ -10,10 +10,8 @@ 'use strict'; | ||
function pushMoleculeInfo(moleculeInfo) { | ||
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
function pushMoleculeInfo(moleculeInfo, data = {}) { | ||
if (typeof moleculeInfo !== 'object') { | ||
throw new Error('pushMoleculeInfo requires an object as first parameter'); | ||
} | ||
var Molecule = this.OCL.Molecule; | ||
var molecule = void 0; | ||
const Molecule = this.OCL.Molecule; | ||
let molecule; | ||
if (moleculeInfo.molfile) { | ||
@@ -24,7 +22,14 @@ molecule = Molecule.fromMolfile(moleculeInfo.molfile); | ||
if (moleculeInfo.idCode) { | ||
molecule = Molecule.fromIDCode(moleculeInfo.idCode, moleculeInfo.coordinates || false); | ||
if (this.moleculeDB.db[moleculeInfo.idCode]) { | ||
molecule = this.moleculeDB.db[moleculeInfo.idCode].molecule; | ||
} else { | ||
molecule = Molecule.fromIDCode(moleculeInfo.idCode, moleculeInfo.coordinates || false); | ||
} | ||
} | ||
if (molecule) this.moleculeDB.pushEntry(molecule, data, moleculeInfo); | ||
if (molecule) { | ||
this.moleculeDB.pushEntry(molecule, data, moleculeInfo); | ||
} | ||
} | ||
module.exports = pushMoleculeInfo; |
@@ -10,3 +10,3 @@ 'use strict'; | ||
* @param {object} [options={}] | ||
* @param {string} [options.format='oclid'] - query is in the format 'smiles', 'oclid' or 'molfile' | ||
* @param {string} [options.format='idCode'] - query is in the format 'smiles', 'oclid' or 'molfile' | ||
* @param {string} [options.mode='substructure'] - search by 'substructure', 'exact' or 'similarity' | ||
@@ -19,19 +19,14 @@ * @param {boolean} [options.flattenResult=true] - The database group the data for the same product. This allows to flatten the result | ||
function search(query) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var _options$format = options.format, | ||
format = _options$format === undefined ? 'oclid' : _options$format, | ||
_options$mode = options.mode, | ||
mode = _options$mode === undefined ? 'substructure' : _options$mode, | ||
_options$flattenResul = options.flattenResult, | ||
flattenResult = _options$flattenResul === undefined ? true : _options$flattenResul, | ||
_options$keepMolecule = options.keepMolecule, | ||
keepMolecule = _options$keepMolecule === undefined ? false : _options$keepMolecule, | ||
_options$limit = options.limit, | ||
limit = _options$limit === undefined ? Number.MAX_SAFE_INTEGER : _options$limit; | ||
function search(query, options = {}) { | ||
const { | ||
format = 'idCode', | ||
mode = 'substructure', | ||
flattenResult = true, | ||
keepMolecule = false, | ||
limit = Number.MAX_SAFE_INTEGER | ||
} = options; | ||
if (typeof query === 'string') { | ||
var getMoleculeCreators = require('./moleculeCreators'); | ||
var moleculeCreators = getMoleculeCreators(this.OCL.Molecule); | ||
const getMoleculeCreators = require('./moleculeCreators'); | ||
const moleculeCreators = getMoleculeCreators(this.OCL.Molecule); | ||
query = moleculeCreators.get(format.toLowerCase())(query); | ||
@@ -42,3 +37,3 @@ } else if (!(query instanceof this.OCL.Molecule)) { | ||
var result = void 0; | ||
let result; | ||
switch (mode.toLowerCase()) { | ||
@@ -61,4 +56,4 @@ case 'exact': | ||
function exactSearch(db, query) { | ||
var queryIDCode = query.getIDCode(); | ||
var searchResult = db[queryIDCode] ? [db[queryIDCode]] : []; | ||
const queryIDCode = query.getIDCode(); | ||
let searchResult = db[queryIDCode] ? [db[queryIDCode]] : []; | ||
return searchResult; | ||
@@ -68,3 +63,3 @@ } | ||
function subStructureSearch(moleculeDB, query) { | ||
var resetFragment = false; | ||
let resetFragment = false; | ||
if (!query.isFragment()) { | ||
@@ -75,13 +70,19 @@ resetFragment = true; | ||
var queryMW = getMW(query); | ||
var queryIndex = query.getIndex(); | ||
var searcher = moleculeDB.searcher; | ||
const queryMW = getMW(query); | ||
const searchResult = []; | ||
if (query.getAllAtoms() === 0) { | ||
for (let idCode in moleculeDB.db) { | ||
searchResult.push(moleculeDB.db[idCode]); | ||
} | ||
} else { | ||
const queryIndex = query.getIndex(); | ||
const searcher = moleculeDB.searcher; | ||
searcher.setFragment(query, queryIndex); | ||
var searchResult = []; | ||
for (var idCode in moleculeDB.db) { | ||
var entry = moleculeDB.db[idCode]; | ||
searcher.setMolecule(entry.molecule, entry.index); | ||
if (searcher.isFragmentInMolecule()) { | ||
searchResult.push(entry); | ||
searcher.setFragment(query, queryIndex); | ||
for (let idCode in moleculeDB.db) { | ||
let entry = moleculeDB.db[idCode]; | ||
searcher.setMolecule(entry.molecule, entry.index); | ||
if (searcher.isFragmentInMolecule()) { | ||
searchResult.push(entry); | ||
} | ||
} | ||
@@ -102,10 +103,10 @@ } | ||
function similaritySearch(moleculeDB, OCL, query) { | ||
var queryIndex = query.getIndex(); | ||
var queryMW = getMW(query); | ||
var queryIdCode = query.getIDCode(); | ||
const queryIndex = query.getIndex(); | ||
const queryMW = getMW(query); | ||
const queryIdCode = query.getIDCode(); | ||
var searchResult = []; | ||
var similarity = void 0; | ||
for (var idCode in moleculeDB.db) { | ||
var entry = moleculeDB.db[idCode]; | ||
const searchResult = []; | ||
let similarity; | ||
for (let idCode in moleculeDB.db) { | ||
let entry = moleculeDB.db[idCode]; | ||
if (entry.idCode === queryIdCode) { | ||
@@ -121,9 +122,7 @@ similarity = Number.MAX_SAFE_INTEGER; | ||
}); | ||
return searchResult.map(function (entry) { | ||
return entry.entry; | ||
}); | ||
return searchResult.map(entry => entry.entry); | ||
} | ||
function getMW(query) { | ||
var copy = query.getCompactCopy(); | ||
let copy = query.getCompactCopy(); | ||
copy.setFragment(false); | ||
@@ -133,95 +132,30 @@ return copy.getMolecularFormula().relativeWeight; | ||
function processResult(entries) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var _options$flattenResul2 = options.flattenResult, | ||
flattenResult = _options$flattenResul2 === undefined ? true : _options$flattenResul2, | ||
_options$keepMolecule2 = options.keepMolecule, | ||
keepMolecule = _options$keepMolecule2 === undefined ? false : _options$keepMolecule2, | ||
_options$limit2 = options.limit, | ||
limit = _options$limit2 === undefined ? Number.MAX_SAFE_INTEGER : _options$limit2; | ||
function processResult(entries, options = {}) { | ||
const { | ||
flattenResult = true, | ||
keepMolecule = false, | ||
limit = Number.MAX_SAFE_INTEGER | ||
} = options; | ||
let results = []; | ||
var results = []; | ||
if (flattenResult) { | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var entry = _step.value; | ||
var _iteratorNormalCompletion2 = true; | ||
var _didIteratorError2 = false; | ||
var _iteratorError2 = undefined; | ||
try { | ||
for (var _iterator2 = entry.data[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { | ||
var data = _step2.value; | ||
results.push({ | ||
data, | ||
idCode: entry.idCode, | ||
properties: entry.properties, | ||
molecule: keepMolecule ? entry.molecule : undefined | ||
}); | ||
} | ||
} catch (err) { | ||
_didIteratorError2 = true; | ||
_iteratorError2 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion2 && _iterator2.return) { | ||
_iterator2.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError2) { | ||
throw _iteratorError2; | ||
} | ||
} | ||
} | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
} else { | ||
var _iteratorNormalCompletion3 = true; | ||
var _didIteratorError3 = false; | ||
var _iteratorError3 = undefined; | ||
try { | ||
for (var _iterator3 = entries[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { | ||
var _entry = _step3.value; | ||
for (let entry of entries) { | ||
for (let data of entry.data) { | ||
results.push({ | ||
data: _entry.data, | ||
idCode: _entry.idCode, | ||
properties: _entry.properties, | ||
molecule: keepMolecule ? _entry.molecule : undefined | ||
data, | ||
idCode: entry.idCode, | ||
properties: entry.properties, | ||
molecule: keepMolecule ? entry.molecule : undefined | ||
}); | ||
} | ||
} catch (err) { | ||
_didIteratorError3 = true; | ||
_iteratorError3 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion3 && _iterator3.return) { | ||
_iterator3.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError3) { | ||
throw _iteratorError3; | ||
} | ||
} | ||
} | ||
} else { | ||
for (let entry of entries) { | ||
results.push({ | ||
data: entry.data, | ||
idCode: entry.idCode, | ||
properties: entry.properties, | ||
molecule: keepMolecule ? entry.molecule : undefined | ||
}); | ||
} | ||
} | ||
@@ -228,0 +162,0 @@ if (limit < results.length) results.length = limit; |
'use strict'; | ||
var staticMethods = { | ||
const staticMethods = { | ||
DB: require('./db/MoleculeDB'), | ||
@@ -9,3 +9,3 @@ RXN: require('./rxn/RXN') | ||
// These methods don't need to directly access OCL | ||
var moleculePrototypeMethods = { | ||
const moleculePrototypeMethods = { | ||
getAllPaths: require('./extend/getAllPaths'), | ||
@@ -23,3 +23,3 @@ getFunctions: require('./extend/functions/getFunctions'), | ||
// that receives OCL and returns the method that will use it. | ||
var moleculePrototypeMethodsNeedOCL = { | ||
const moleculePrototypeMethodsNeedOCL = { | ||
getAtomsInfo: require('./extend/getAtomsInfo'), | ||
@@ -38,3 +38,3 @@ getConnectivityMatrix: require('./extend/getConnectivityMatrix'), | ||
module.exports = function extend(OCL) { | ||
var key = void 0; | ||
let key; | ||
for (key in staticMethods) { | ||
@@ -44,3 +44,3 @@ OCL[key] = staticMethods[key](OCL); | ||
var MoleculePrototype = OCL.Molecule.prototype; | ||
const MoleculePrototype = OCL.Molecule.prototype; | ||
for (key in moleculePrototypeMethods) { | ||
@@ -47,0 +47,0 @@ MoleculePrototype[key] = moleculePrototypeMethods[key]; |
@@ -9,12 +9,11 @@ 'use strict'; | ||
module.exports = function () { | ||
return function addMoleculeAndAlign(molecule) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var _options$space = options.space, | ||
space = _options$space === undefined ? 2 : _options$space; | ||
return function addMoleculeAndAlign(molecule, options = {}) { | ||
const { | ||
space = 2 | ||
} = options; | ||
let boundary = this.getBoundary(); | ||
let addBoundary = molecule.getBoundary(); | ||
var boundary = this.getBoundary(); | ||
var addBoundary = molecule.getBoundary(); | ||
let y = (boundary.minY + boundary.maxY) / 2 - (addBoundary.minY + addBoundary.maxY) / 2; | ||
var y = (boundary.minY + boundary.maxY) / 2 - (addBoundary.minY + addBoundary.maxY) / 2; | ||
molecule.translateCoords(boundary.maxX - addBoundary.minX + space, y); | ||
@@ -21,0 +20,0 @@ this.addMolecule(molecule); |
@@ -8,15 +8,11 @@ 'use strict'; | ||
module.exports = function (OCL) { | ||
return function cleaveBonds() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
var _options$filter = options.filter, | ||
filter = _options$filter === undefined ? function (bond) { | ||
return !bond.isAromatic && bond.kind === 1 && bond.ringSize === 0; | ||
} : _options$filter, | ||
_options$hose = options.hose, | ||
hose = _options$hose === undefined ? { | ||
minSphereSize: 1, | ||
maxSphereSize: 3 | ||
} : _options$hose; | ||
return function cleaveBonds(options = {}) { | ||
const { | ||
filter = bond => !bond.isAromatic && bond.kind === 1 && bond.ringSize === 0, | ||
hose = { | ||
minSphereSize: 1, | ||
maxSphereSize: 3 | ||
} | ||
} = options; | ||
var atoms = []; | ||
@@ -32,44 +28,22 @@ for (var i = 0; i < this.getAllAtoms(); i++) { | ||
var bonds = []; | ||
for (var _i = 0; _i < this.getAllBonds(); _i++) { | ||
var _bond = {}; | ||
_bond.i = _i; | ||
_bond.order = this.getBondOrder(_i); | ||
_bond.atom1 = this.getBondAtom(0, _i); | ||
_bond.atom2 = this.getBondAtom(1, _i); | ||
_bond.kind = this.getBondType(_i); | ||
_bond.isAromatic = this.isAromaticBond(_i); | ||
_bond.ringSize = this.getBondRingSize(_i); | ||
if (filter(_bond)) { | ||
_bond.selected = true; | ||
atoms[_bond.atom1].links.push(_bond.atom2); | ||
atoms[_bond.atom2].links.push(_bond.atom1); | ||
bonds.push(_bond); | ||
for (let i = 0; i < this.getAllBonds(); i++) { | ||
let bond = {}; | ||
bond.i = i; | ||
bond.order = this.getBondOrder(i); | ||
bond.atom1 = this.getBondAtom(0, i); | ||
bond.atom2 = this.getBondAtom(1, i); | ||
bond.kind = this.getBondType(i); | ||
bond.isAromatic = this.isAromaticBond(i); | ||
bond.ringSize = this.getBondRingSize(i); | ||
if (filter(bond)) { | ||
bond.selected = true; | ||
atoms[bond.atom1].links.push(bond.atom2); | ||
atoms[bond.atom2].links.push(bond.atom1); | ||
bonds.push(bond); | ||
} | ||
} | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = bonds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var bond = _step.value; | ||
bond.fragments = breakMolecule(this, atoms, bond, hose); | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
for (var bond of bonds) { | ||
bond.fragments = breakMolecule(this, atoms, bond, hose); | ||
} | ||
return bonds; | ||
@@ -79,3 +53,3 @@ }; | ||
function breakMolecule(molecule, atoms, bond, hoseOptions) { | ||
var brokenMolecule = molecule.getCompactCopy(); | ||
let brokenMolecule = molecule.getCompactCopy(); | ||
brokenMolecule.markBondForDeletion(bond.i); | ||
@@ -89,5 +63,3 @@ brokenMolecule.deleteMarkedAtomsAndBonds(); | ||
result.atomMap = []; | ||
var includeAtom = fragmentMap.map(function (id) { | ||
return id === i; | ||
}); // eslint-disable-line no-loop-func | ||
var includeAtom = fragmentMap.map(id => id === i); // eslint-disable-line no-loop-func | ||
var fragment = new OCL.Molecule(0, 0); | ||
@@ -100,11 +72,7 @@ var atomMap = []; | ||
fragment.addBond(atomMap[bond.atom1], fragment.addAtom(154), 1); | ||
bond.hoses1 = fragment.getHoseCodesForAtom(atomMap[bond.atom1], hoseOptions).map(function (f, i) { | ||
return { f, i }; | ||
}); | ||
bond.hoses1 = fragment.getHoseCodesForAtom(atomMap[bond.atom1], hoseOptions).map((f, i) => ({ f, i })); | ||
} | ||
if (atomMap[bond.atom2] > -1) { | ||
fragment.addBond(atomMap[bond.atom2], fragment.addAtom(154), 1); | ||
bond.hoses2 = fragment.getHoseCodesForAtom(atomMap[bond.atom2], hoseOptions).map(function (f, i) { | ||
return { f, i }; | ||
}); | ||
bond.hoses2 = fragment.getHoseCodesForAtom(atomMap[bond.atom2], hoseOptions).map((f, i) => ({ f, i })); | ||
} | ||
@@ -111,0 +79,0 @@ result.idCode = fragment.getIDCode(); |
'use strict'; | ||
var electronegativities = require('./electronegativities'); | ||
var fragments = require('./fragments'); | ||
const electronegativities = require('./electronegativities'); | ||
const fragments = require('./fragments'); | ||
@@ -12,5 +12,5 @@ module.exports = function getAllCouplings() { | ||
var couplings = []; | ||
for (var i = 0; i < molecule.getAllAtoms(); i++) { | ||
for (let i = 0; i < molecule.getAllAtoms(); i++) { | ||
if (molecule.getAtomLabel(i) === 'H') { | ||
for (var j = i + 1; j < molecule.getAllAtoms(); j++) { | ||
for (let j = i + 1; j < molecule.getAllAtoms(); j++) { | ||
if (molecule.getAtomLabel(j) === 'H') { | ||
@@ -51,3 +51,3 @@ if (!isAttachedToHeteroAtom(molecule, i) && !isAttachedToHeteroAtom(molecule, j)) { | ||
var nbConnectedAtoms = molecule.getAllConnAtoms(idInit); | ||
for (var i = 0; i < nbConnectedAtoms; i++) { | ||
for (let i = 0; i < nbConnectedAtoms; i++) { | ||
if (molecule.getConnAtom(idInit, i) === idEnd) { | ||
@@ -74,4 +74,4 @@ var coordinates = new Array(3); | ||
for (var _i = 0; _i < nbConnectedAtoms; _i++) { | ||
var connectivityAtom = molecule.getConnAtom(idInit, _i); | ||
for (let i = 0; i < nbConnectedAtoms; i++) { | ||
var connectivityAtom = molecule.getConnAtom(idInit, i); | ||
if (connectivityAtom !== parent) { | ||
@@ -96,6 +96,6 @@ getPath(molecule, idInit, connectivityAtom, idEnd, pathLength, atoms, xyz); | ||
var index = atoms.length - 1; | ||
for (var i = 0; i < matchFragments.length; i++) { | ||
for (let i = 0; i < matchFragments.length; i++) { | ||
match = 0; | ||
for (var j = 0; j < matchFragments[i].length; j++) { | ||
for (var k = 1; k < index; k++) { | ||
for (let j = 0; j < matchFragments[i].length; j++) { | ||
for (let k = 1; k < index; k++) { | ||
if (matchFragments[i][j] === atoms[k]) { | ||
@@ -135,5 +135,3 @@ match++; | ||
if (C1 > C2) { | ||
var _ref = [C2, C1]; | ||
C1 = _ref[0]; | ||
C2 = _ref[1]; | ||
[C1, C2] = [C2, C1]; | ||
} | ||
@@ -169,6 +167,6 @@ | ||
xyz = coupling.xyz; | ||
for (var _i2 = 0; _i2 < xyz.length; _i2++) { | ||
coords[_i2] = new Array(3); | ||
for (var j = 0; j < 3; j++) { | ||
coords[_i2][j] = xyz[_i2][j]; | ||
for (let i = 0; i < xyz.length; i++) { | ||
coords[i] = new Array(3); | ||
for (let j = 0; j < 3; j++) { | ||
coords[i][j] = xyz[i][j]; | ||
} | ||
@@ -192,8 +190,8 @@ } | ||
for (var _i3 = 0; _i3 < xyz.length; _i3++) { | ||
coords[_i3] = new Array(3); | ||
for (var _j = 0; _j < 3; _j++) { | ||
coords[_i3][_j] = xyz[_i3][_j]; | ||
for (let i = 0; i < xyz.length; i++) { | ||
coords[i] = new Array(3); | ||
for (let j = 0; j < 3; j++) { | ||
coords[i][j] = xyz[i][j]; | ||
} | ||
sumZ += Math.abs(coords[_i3][2]); | ||
sumZ += Math.abs(coords[i][2]); | ||
} | ||
@@ -271,4 +269,4 @@ if (sumZ === 0 && !isDoubleOrTripleBond(molecule, atoms[1], atoms[2])) { | ||
for (var i = 0; i < xyz.length; i++) { | ||
for (var j = i + 1; j < xyz.length; j++) { | ||
for (let i = 0; i < xyz.length; i++) { | ||
for (let j = i + 1; j < xyz.length; j++) { | ||
Sdistances[k] = (xyz[i][0] - xyz[j][0]) * (xyz[i][0] - xyz[j][0]) + (xyz[i][1] - xyz[j][1]) * (xyz[i][1] - xyz[j][1]) + (xyz[i][2] - xyz[j][2]) * (xyz[i][2] - xyz[j][2]); | ||
@@ -314,5 +312,5 @@ distances[k] = Math.sqrt(Sdistances[k]); | ||
p = [13.7, -0.73, 0, 0.56, -2.47, 16.9]; | ||
for (var j = 1; j < atoms.length - 1; j++) { | ||
for (let j = 1; j < atoms.length - 1; j++) { | ||
nbConnectedAtoms = molecule.getAllConnAtoms(j); | ||
for (var i = 0; i < nbConnectedAtoms; i++) { | ||
for (let i = 0; i < nbConnectedAtoms; i++) { | ||
delta = electronegativities[molecule.getAtomLabel(molecule.getConnAtom(j, i))] - electH; | ||
@@ -333,11 +331,11 @@ J += delta * (p[3] + p[4] * Math.cos(direction[j] * dihedralAngle + p[5] * Math.abs(delta)) * Math.cos(direction[j] * dihedralAngle + p[5] * Math.abs(delta))); | ||
for (var _j2 = 1; _j2 < atoms.length - 1; _j2++) { | ||
nbConnectedAtoms = molecule.getAllConnAtoms(_j2); | ||
for (let j = 1; j < atoms.length - 1; j++) { | ||
nbConnectedAtoms = molecule.getAllConnAtoms(j); | ||
I = 0; | ||
for (var _i4 = 0; _i4 < nbConnectedAtoms; _i4++) { | ||
atom2 = molecule.getConnAtom(_j2, _i4); | ||
for (let i = 0; i < nbConnectedAtoms; i++) { | ||
atom2 = molecule.getConnAtom(j, i); | ||
delta = electronegativities[molecule.getAtomLabel(atom2)] - electH; | ||
atom2 = molecule.getConnAtom(_j2, _i4); | ||
atom2 = molecule.getConnAtom(j, i); | ||
nbConnectedAtoms2 = molecule.getAllConnAtoms(atom2); | ||
for (var k = 0; k < nbConnectedAtoms2; k++) { | ||
for (let k = 0; k < nbConnectedAtoms2; k++) { | ||
// i = (Ca -CH) + p7 S ( Cb -CH) | ||
@@ -349,3 +347,3 @@ I += electronegativities[molecule.getAtomLabel(molecule.getConnAtom(atom2, k))] - electH; | ||
J += I * (p[3] + p[4] * (Math.cos(direction[_j2] * dihedralAngle + p[5] * Math.abs(I)) * Math.cos(direction[_j2] * dihedralAngle + p[5] * Math.abs(I)))); | ||
J += I * (p[3] + p[4] * (Math.cos(direction[j] * dihedralAngle + p[5] * Math.abs(I)) * Math.cos(direction[j] * dihedralAngle + p[5] * Math.abs(I)))); | ||
} | ||
@@ -377,5 +375,5 @@ J += p[0] * Math.cos(dihedralAngle) * Math.cos(dihedralAngle) + p[1] * Math.cos(dihedralAngle) + p[2]; | ||
var nbConnectedAtoms; | ||
for (var j = 1; j < atoms.length - 1; j++) { | ||
for (let j = 1; j < atoms.length - 1; j++) { | ||
nbConnectedAtoms = molecule.getAllConnAtoms(j); | ||
for (var i = 0; i < nbConnectedAtoms; i++) { | ||
for (let i = 0; i < nbConnectedAtoms; i++) { | ||
x += electronegativities[molecule.getAtomLabel(molecule.getConnAtom(j, i))] - electronegativities.H; | ||
@@ -382,0 +380,0 @@ } |
'use strict'; | ||
module.exports = function (OCL) { | ||
var Util = OCL.Util; | ||
return function getDiastereotopicHoseCodes() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
var diaIDs = this.getDiastereotopicAtomIDs(options).map(function (a) { | ||
return { oclID: a }; | ||
}); | ||
const Util = OCL.Util; | ||
return function getDiastereotopicHoseCodes(options = {}) { | ||
const diaIDs = this.getDiastereotopicAtomIDs(options).map(a => ({ oclID: a })); | ||
diaIDs.forEach(function (diaID) { | ||
var hoses = Util.getHoseCodesFromDiastereotopicID(diaID.oclID, options); | ||
const hoses = Util.getHoseCodesFromDiastereotopicID(diaID.oclID, options); | ||
diaID.hoses = []; | ||
var level = 1; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = hoses[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var hose = _step.value; | ||
diaID.hoses.push({ | ||
level: level++, | ||
oclID: hose | ||
}); | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
let level = 1; | ||
for (const hose of hoses) { | ||
diaID.hoses.push({ | ||
level: level++, | ||
oclID: hose | ||
}); | ||
} | ||
@@ -42,0 +17,0 @@ }); |
@@ -5,3 +5,3 @@ 'use strict'; | ||
return function getExtendedDiastereotopicAtomIDs() { | ||
var molecule = this.getCompactCopy(); | ||
const molecule = this.getCompactCopy(); | ||
molecule.addImplicitHydrogens(); | ||
@@ -11,8 +11,8 @@ // TODO Temporary code ??? | ||
var diaIDs = molecule.getDiastereotopicAtomIDs(); | ||
var newDiaIDs = []; | ||
const diaIDs = molecule.getDiastereotopicAtomIDs(); | ||
const newDiaIDs = []; | ||
for (var i = 0; i < diaIDs.length; i++) { | ||
var diaID = diaIDs[i]; | ||
var newDiaID = { | ||
const diaID = diaIDs[i]; | ||
const newDiaID = { | ||
oclID: diaID, | ||
@@ -23,3 +23,3 @@ hydrogenOCLIDs: [], | ||
for (var j = 0; j < molecule.getAllConnAtoms(i); j++) { | ||
var atom = molecule.getConnAtom(i, j); | ||
const atom = molecule.getConnAtom(i, j); | ||
if (molecule.getAtomicNo(atom) === 1) { | ||
@@ -26,0 +26,0 @@ newDiaID.nbHydrogens++; |
'use strict'; | ||
module.exports = function getGroupedDiastereotopicAtomIDs() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
module.exports = function getGroupedDiastereotopicAtomIDs(options = {}) { | ||
var label = options.atomLabel; | ||
@@ -30,28 +28,6 @@ | ||
var diaIDsTable = []; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = Object.keys(diaIDsObject)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var key = _step.value; | ||
diaIDsTable.push(diaIDsObject[key]); | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
for (var key of Object.keys(diaIDsObject)) { | ||
diaIDsTable.push(diaIDsObject[key]); | ||
} | ||
return diaIDsTable; | ||
}; |
'use strict'; | ||
module.exports = function toDiastereotopicSVG() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
var _options$width = options.width, | ||
width = _options$width === undefined ? 300 : _options$width, | ||
_options$height = options.height, | ||
height = _options$height === undefined ? 200 : _options$height, | ||
_options$prefix = options.prefix, | ||
prefix = _options$prefix === undefined ? 'ocl' : _options$prefix, | ||
_options$heavyAtomHyd = options.heavyAtomHydrogen, | ||
heavyAtomHydrogen = _options$heavyAtomHyd === undefined ? false : _options$heavyAtomHyd; | ||
module.exports = function toDiastereotopicSVG(options = {}) { | ||
var { | ||
width = 300, | ||
height = 200, | ||
prefix = 'ocl', | ||
heavyAtomHydrogen = false | ||
} = options; | ||
var svg = options.svg; | ||
@@ -23,10 +20,10 @@ var diaIDs = []; | ||
if (heavyAtomHydrogen) { | ||
for (var i = 0; i < this.getAtoms(); i++) { | ||
for (let i = 0; i < this.getAtoms(); i++) { | ||
diaIDs.push([]); | ||
} | ||
var groupedDiaIDs = this.getGroupedDiastereotopicAtomIDs(); | ||
let groupedDiaIDs = this.getGroupedDiastereotopicAtomIDs(); | ||
groupedDiaIDs.forEach(function (diaID) { | ||
if (hydrogenInfo[diaID.oclID] && hydrogenInfo[diaID.oclID].nbHydrogens > 0) { | ||
diaID.atoms.forEach(function (atom) { | ||
hydrogenInfo[diaID.oclID].hydrogenOCLIDs.forEach(function (id) { | ||
diaID.atoms.forEach(atom => { | ||
hydrogenInfo[diaID.oclID].hydrogenOCLIDs.forEach(id => { | ||
if (!diaIDs[atom * 1].includes(id)) diaIDs[atom].push(id); | ||
@@ -38,5 +35,3 @@ }); | ||
} else { | ||
diaIDs = this.getDiastereotopicAtomIDs().map(function (a) { | ||
return [a]; | ||
}); | ||
diaIDs = this.getDiastereotopicAtomIDs().map(a => [a]); | ||
} | ||
@@ -43,0 +38,0 @@ |
@@ -7,3 +7,3 @@ 'use strict'; | ||
var atoms = molecule.getAtomsInfo(); | ||
for (var i = 0; i < molecule.getAllAtoms(); i++) { | ||
for (let i = 0; i < molecule.getAllAtoms(); i++) { | ||
var atom = atoms[i]; | ||
@@ -16,13 +16,13 @@ atom.i = i; | ||
var bonds = []; | ||
for (var _i = 0; _i < molecule.getAllBonds(); _i++) { | ||
for (let i = 0; i < molecule.getAllBonds(); i++) { | ||
var bond = {}; | ||
bonds.push(bond); | ||
bond.i = _i; | ||
bond.order = molecule.getBondOrder(_i); | ||
bond.atom1 = molecule.getBondAtom(0, _i); | ||
bond.atom2 = molecule.getBondAtom(1, _i); | ||
bond.type = molecule.getBondType(_i); | ||
bond.isAromatic = molecule.isAromaticBond(_i); | ||
bond.i = i; | ||
bond.order = molecule.getBondOrder(i); | ||
bond.atom1 = molecule.getBondAtom(0, i); | ||
bond.atom2 = molecule.getBondAtom(1, i); | ||
bond.type = molecule.getBondType(i); | ||
bond.isAromatic = molecule.isAromaticBond(i); | ||
if (!bond.isAromatic && molecule.getBondTypeSimple(_i) === 1 && molecule.getAtomicNo(bond.atom1) === 6 && molecule.getAtomicNo(bond.atom2) === 6 && (atoms[bond.atom1].extra.cnoHybridation === 3 || atoms[bond.atom2].extra.cnoHybridation === 3)) { | ||
if (!bond.isAromatic && molecule.getBondTypeSimple(i) === 1 && molecule.getAtomicNo(bond.atom1) === 6 && molecule.getAtomicNo(bond.atom2) === 6 && (atoms[bond.atom1].extra.cnoHybridation === 3 || atoms[bond.atom2].extra.cnoHybridation === 3)) { | ||
bond.selected = true; | ||
@@ -35,27 +35,6 @@ atoms[bond.atom1].links.push(bond.atom2); | ||
var brokenMolecule = molecule.getCompactCopy(); | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = bonds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var _bond = _step.value; | ||
if (_bond.selected) { | ||
brokenMolecule.markBondForDeletion(_bond.i); | ||
} | ||
for (let bond of bonds) { | ||
if (bond.selected) { | ||
brokenMolecule.markBondForDeletion(bond.i); | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
@@ -69,22 +48,19 @@ | ||
var _loop = function _loop(_i2) { | ||
result = {}; | ||
for (let i = 0; i < nbFragments; i++) { | ||
var result = {}; | ||
result.atomMap = []; | ||
includeAtom = fragmentMap.map(function (id) { | ||
return id === _i2; | ||
var includeAtom = fragmentMap.map(function (id) { | ||
return id === i; | ||
}); | ||
fragment = new OCL.Molecule(0, 0); | ||
atomMap = []; | ||
var fragment = new OCL.Molecule(0, 0); | ||
var atomMap = []; | ||
brokenMolecule.copyMoleculeByAtoms(fragment, includeAtom, false, atomMap); | ||
parent = fragment.getCompactCopy(); | ||
var parent = fragment.getCompactCopy(); | ||
parent.setFragment(true); | ||
// we will remove the hydrogens of the broken carbon | ||
for (var j = 0; j < atomMap.length; j++) { | ||
for (let j = 0; j < atomMap.length; j++) { | ||
if (atomMap[j] > -1) { | ||
// var numberDeletedHydrogens = 0; | ||
if (atoms[j].links.length > 0) { | ||
for (var k = 0; k < atoms[j].links.length; k++) { | ||
for (let k = 0; k < atoms[j].links.length; k++) { | ||
if (parent.getAtomicNo(atoms[j].links[k]) === 1) { | ||
@@ -116,14 +92,13 @@ // numberDeletedHydrogens++; | ||
// we will add some R groups at the level of the broken bonds | ||
for (var _j = 0; _j < atomMap.length; _j++) { | ||
if (atomMap[_j] > -1) { | ||
result.atomMap.push(_j); | ||
if (atoms[_j].links.length > 0) { | ||
for (var _k = 0; _k < atoms[_j].links.length; _k++) { | ||
rGroup = fragment.addAtom(154); | ||
x = molecule.getAtomX(atoms[_j].links[_k]); | ||
y = molecule.getAtomY(atoms[_j].links[_k]); | ||
for (let j = 0; j < atomMap.length; j++) { | ||
if (atomMap[j] > -1) { | ||
result.atomMap.push(j); | ||
if (atoms[j].links.length > 0) { | ||
for (let k = 0; k < atoms[j].links.length; k++) { | ||
var rGroup = fragment.addAtom(154); | ||
var x = molecule.getAtomX(atoms[j].links[k]); | ||
var y = molecule.getAtomY(atoms[j].links[k]); | ||
fragment.setAtomX(rGroup, x); | ||
fragment.setAtomY(rGroup, y); | ||
fragment.addBond(atomMap[_j], rGroup, 1); | ||
fragment.addBond(atomMap[j], rGroup, 1); | ||
} | ||
@@ -152,15 +127,2 @@ } | ||
} | ||
}; | ||
for (var _i2 = 0; _i2 < nbFragments; _i2++) { | ||
var result; | ||
var includeAtom; | ||
var fragment; | ||
var atomMap; | ||
var parent; | ||
var rGroup; | ||
var x; | ||
var y; | ||
_loop(_i2); | ||
} | ||
@@ -167,0 +129,0 @@ |
@@ -8,32 +8,10 @@ 'use strict'; | ||
var currentFunctions = []; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = currentFunctionCodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var fragment = _step.value; | ||
if (functionIndex[fragment.idCode]) { | ||
var currentFunction = JSON.parse(JSON.stringify(functionIndex[fragment.idCode])); | ||
currentFunction.atomMap = fragment.atomMap; | ||
currentFunctions.push(currentFunction); | ||
} | ||
for (var fragment of currentFunctionCodes) { | ||
if (functionIndex[fragment.idCode]) { | ||
var currentFunction = JSON.parse(JSON.stringify(functionIndex[fragment.idCode])); | ||
currentFunction.atomMap = fragment.atomMap; | ||
currentFunctions.push(currentFunction); | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
return currentFunctions; | ||
}; |
@@ -6,5 +6,3 @@ 'use strict'; | ||
module.exports = function getAllPaths() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
module.exports = function getAllPaths(options = {}) { | ||
var fromLabel = options.fromLabel || ''; | ||
@@ -54,12 +52,8 @@ var toLabel = options.toLabel || ''; | ||
var finalResults = []; | ||
for (var _key in results) { | ||
results[_key].fromAtoms.sort(function (a, b) { | ||
return a - b; | ||
}); | ||
results[_key].toAtoms.sort(function (a, b) { | ||
return a - b; | ||
}); | ||
finalResults.push(results[_key]); | ||
for (let key in results) { | ||
results[key].fromAtoms.sort((a, b) => a - b); | ||
results[key].toAtoms.sort((a, b) => a - b); | ||
finalResults.push(results[key]); | ||
} | ||
return finalResults; | ||
}; |
@@ -9,13 +9,13 @@ 'use strict'; | ||
return function getBoundary() { | ||
var minX = Number.POSITIVE_INFINITY; | ||
var maxX = Number.NEGATIVE_INFINITY; | ||
var minY = Number.POSITIVE_INFINITY; | ||
var maxY = Number.NEGATIVE_INFINITY; | ||
var minZ = Number.POSITIVE_INFINITY; | ||
var maxZ = Number.NEGATIVE_INFINITY; | ||
let minX = Number.POSITIVE_INFINITY; | ||
let maxX = Number.NEGATIVE_INFINITY; | ||
let minY = Number.POSITIVE_INFINITY; | ||
let maxY = Number.NEGATIVE_INFINITY; | ||
let minZ = Number.POSITIVE_INFINITY; | ||
let maxZ = Number.NEGATIVE_INFINITY; | ||
for (var i = 0; i < this.getAllAtoms(); i++) { | ||
var x = this.getAtomX(i); | ||
var y = this.getAtomY(i); | ||
var z = this.getAtomZ(i); | ||
for (let i = 0; i < this.getAllAtoms(); i++) { | ||
let x = this.getAtomX(i); | ||
let y = this.getAtomY(i); | ||
let z = this.getAtomZ(i); | ||
minX = Math.min(minX, x); | ||
@@ -22,0 +22,0 @@ maxX = Math.max(maxX, x); |
@@ -7,5 +7,3 @@ 'use strict'; | ||
module.exports = function (OCL) { | ||
return function getConnectivityMatrix() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
return function getConnectivityMatrix(options = {}) { | ||
this.ensureHelperArrays(OCL.Molecule.cHelperNeighbours); | ||
@@ -15,5 +13,3 @@ var nbAtoms = this.getAllAtoms(); | ||
var result = new Array(nbAtoms).fill(); | ||
result = result.map(function () { | ||
return new Array(nbAtoms).fill(0); | ||
}); | ||
result = result.map(() => new Array(nbAtoms).fill(0)); | ||
@@ -20,0 +16,0 @@ if (!options.pathLength) { |
'use strict'; | ||
module.exports = function (OCL) { | ||
var Util = OCL.Util; | ||
return function getGroupedHOSECodes() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
var diaIDs = this.getGroupedDiastereotopicAtomIDs(options); | ||
const Util = OCL.Util; | ||
return function getGroupedHOSECodes(options = {}) { | ||
const diaIDs = this.getGroupedDiastereotopicAtomIDs(options); | ||
diaIDs.forEach(function (diaID) { | ||
var hoses = Util.getHoseCodesFromDiastereotopicID(diaID.oclID, options); | ||
const hoses = Util.getHoseCodesFromDiastereotopicID(diaID.oclID, options); | ||
diaID.hoses = []; | ||
var level = 1; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = hoses[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var hose = _step.value; | ||
diaID.hoses.push({ | ||
level: level++, | ||
oclID: hose | ||
}); | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
let level = 1; | ||
for (const hose of hoses) { | ||
diaID.hoses.push({ | ||
level: level++, | ||
oclID: hose | ||
}); | ||
} | ||
@@ -41,0 +18,0 @@ }); |
@@ -6,26 +6,22 @@ | ||
module.exports = function (OCL) { | ||
return function getHoseCodesForAtom(rootAtom) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
return function getHoseCodesForAtom(rootAtom, options = {}) { | ||
let FULL_HOSE_CODE = 1; | ||
let HOSE_CODE_CUT_C_SP3_SP3 = 2; | ||
const { | ||
minSphereSize = 0, | ||
maxSphereSize = 4, | ||
kind = FULL_HOSE_CODE | ||
} = options; | ||
var FULL_HOSE_CODE = 1; | ||
var HOSE_CODE_CUT_C_SP3_SP3 = 2; | ||
var _options$minSphereSiz = options.minSphereSize, | ||
minSphereSize = _options$minSphereSiz === undefined ? 0 : _options$minSphereSiz, | ||
_options$maxSphereSiz = options.maxSphereSize, | ||
maxSphereSize = _options$maxSphereSiz === undefined ? 4 : _options$maxSphereSiz, | ||
_options$kind = options.kind, | ||
kind = _options$kind === undefined ? FULL_HOSE_CODE : _options$kind; | ||
let molecule = this.getCompactCopy(); | ||
var molecule = this.getCompactCopy(); | ||
molecule.setAtomCustomLabel(rootAtom, `${molecule.getAtomLabel(rootAtom)}*`); | ||
molecule.setAtomicNo(rootAtom, OCL.Molecule.getAtomicNoFromLabel('X')); | ||
var fragment = new OCL.Molecule(0, 0); | ||
var results = []; | ||
var min = 0; | ||
var max = 0; | ||
var atomMask = new Array(molecule.getAllAtoms()); | ||
var atomList = new Array(molecule.getAllAtoms()); | ||
let fragment = new OCL.Molecule(0, 0); | ||
let results = []; | ||
let min = 0; | ||
let max = 0; | ||
let atomMask = new Array(molecule.getAllAtoms()); | ||
let atomList = new Array(molecule.getAllAtoms()); | ||
@@ -38,7 +34,7 @@ for (var sphere = 0; sphere <= maxSphereSize; sphere++) { | ||
} else { | ||
var newMax = max; | ||
for (var i = min; i < max; i++) { | ||
var atom = atomList[i]; | ||
for (var j = 0; j < molecule.getConnAtoms(atom); j++) { | ||
var connAtom = molecule.getConnAtom(atom, j); | ||
let newMax = max; | ||
for (let i = min; i < max; i++) { | ||
let atom = atomList[i]; | ||
for (let j = 0; j < molecule.getConnAtoms(atom); j++) { | ||
let connAtom = molecule.getConnAtom(atom, j); | ||
if (!atomMask[connAtom]) { | ||
@@ -45,0 +41,0 @@ switch (kind) { |
@@ -19,56 +19,13 @@ 'use strict'; | ||
var counts = {}; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = parts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var part = _step.value; | ||
if (!counts[part]) counts[part] = 0; | ||
counts[part]++; | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
for (var part of parts) { | ||
if (!counts[part]) counts[part] = 0; | ||
counts[part]++; | ||
} | ||
parts = []; | ||
var _iteratorNormalCompletion2 = true; | ||
var _didIteratorError2 = false; | ||
var _iteratorError2 = undefined; | ||
try { | ||
for (var _iterator2 = Object.keys(counts).sort()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { | ||
var key = _step2.value; | ||
if (counts[key] > 1) { | ||
parts.push(counts[key] + key); | ||
} else { | ||
parts.push(key); | ||
} | ||
for (var key of Object.keys(counts).sort()) { | ||
if (counts[key] > 1) { | ||
parts.push(counts[key] + key); | ||
} else { | ||
parts.push(key); | ||
} | ||
} catch (err) { | ||
_didIteratorError2 = true; | ||
_iteratorError2 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion2 && _iterator2.return) { | ||
_iterator2.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError2) { | ||
throw _iteratorError2; | ||
} | ||
} | ||
} | ||
@@ -97,38 +54,17 @@ | ||
var mfs = {}; | ||
var _iteratorNormalCompletion3 = true; | ||
var _didIteratorError3 = false; | ||
var _iteratorError3 = undefined; | ||
try { | ||
for (var _iterator3 = atoms[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { | ||
var atom = _step3.value; | ||
var label = atom.label; | ||
charge += atom.charge; | ||
if (atom.mass) { | ||
label = `[${atom.mass}${label}]`; | ||
} | ||
var mfAtom = mfs[label]; | ||
if (!mfAtom) { | ||
mfs[label] = 0; | ||
} | ||
mfs[label] += 1; | ||
if (atom.implicitHydrogens) { | ||
if (!mfs.H) mfs.H = 0; | ||
mfs.H += atom.implicitHydrogens; | ||
} | ||
for (var atom of atoms) { | ||
var label = atom.label; | ||
charge += atom.charge; | ||
if (atom.mass) { | ||
label = `[${atom.mass}${label}]`; | ||
} | ||
} catch (err) { | ||
_didIteratorError3 = true; | ||
_iteratorError3 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion3 && _iterator3.return) { | ||
_iterator3.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError3) { | ||
throw _iteratorError3; | ||
} | ||
var mfAtom = mfs[label]; | ||
if (!mfAtom) { | ||
mfs[label] = 0; | ||
} | ||
mfs[label] += 1; | ||
if (atom.implicitHydrogens) { | ||
if (!mfs.H) mfs.H = 0; | ||
mfs.H += atom.implicitHydrogens; | ||
} | ||
} | ||
@@ -145,26 +81,5 @@ | ||
}); | ||
var _iteratorNormalCompletion4 = true; | ||
var _didIteratorError4 = false; | ||
var _iteratorError4 = undefined; | ||
try { | ||
for (var _iterator4 = keys[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { | ||
var key = _step4.value; | ||
mf += key; | ||
if (mfs[key] > 1) mf += mfs[key]; | ||
} | ||
} catch (err) { | ||
_didIteratorError4 = true; | ||
_iteratorError4 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion4 && _iterator4.return) { | ||
_iterator4.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError4) { | ||
throw _iteratorError4; | ||
} | ||
} | ||
for (var key of keys) { | ||
mf += key; | ||
if (mfs[key] > 1) mf += mfs[key]; | ||
} | ||
@@ -171,0 +86,0 @@ |
'use strict'; | ||
module.exports = function getNumberOfAtoms() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
module.exports = function getNumberOfAtoms(options = {}) { | ||
var label = options.atomLabel; | ||
var mf = this.getMolecularFormula().formula; | ||
var parts = mf.split(/(?=[A-Z])/); | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = parts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var part = _step.value; | ||
var atom = part.replace(/[0-9]/g, ''); | ||
if (atom === label) { | ||
return part.replace(/[^0-9]/g, '') * 1 || 1; | ||
} | ||
for (var part of parts) { | ||
var atom = part.replace(/[0-9]/g, ''); | ||
if (atom === label) { | ||
return part.replace(/[^0-9]/g, '') * 1 || 1; | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
@@ -36,0 +13,0 @@ |
'use strict'; | ||
module.exports = function toVisualizerMolfile() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
module.exports = function toVisualizerMolfile(options = {}) { | ||
var diastereotopic = options.diastereotopic; | ||
@@ -32,8 +30,4 @@ | ||
var size = this.getAllAtoms(); | ||
highlight = new Array(size).fill(0).map(function (a, index) { | ||
return index; | ||
}); | ||
atoms = highlight.map(function (a) { | ||
return [a]; | ||
}); | ||
highlight = new Array(size).fill(0).map((a, index) => index); | ||
atoms = highlight.map(a => [a]); | ||
} | ||
@@ -40,0 +34,0 @@ |
'use strict'; | ||
require('setimmediate'); | ||
var OCL = require('openchemlib'); | ||
@@ -5,0 +4,0 @@ |
@@ -32,9 +32,9 @@ 'use strict'; | ||
result.push(format3(this.reagents.length) + format3(this.products.length)); | ||
for (var i = 0; i < this.reagents.length; i++) { | ||
for (let i = 0; i < this.reagents.length; i++) { | ||
result.push('$MOL'); | ||
result.push(getMolfile(this.reagents[i].molfile)); | ||
} | ||
for (var _i = 0; _i < this.products.length; _i++) { | ||
for (let i = 0; i < this.products.length; i++) { | ||
result.push('$MOL'); | ||
result.push(getMolfile(this.products[_i].molfile)); | ||
result.push(getMolfile(this.products[i].molfile)); | ||
} | ||
@@ -41,0 +41,0 @@ return result.join('\n'); |
{ | ||
"name": "openchemlib-extended", | ||
"version": "4.0.1", | ||
"version": "6.0.0", | ||
"description": "Openchemlib extended", | ||
@@ -10,3 +10,6 @@ "keywords": [ | ||
"files": [ | ||
"lib" | ||
"lib", | ||
"minimal.js", | ||
"core.js", | ||
"full.js" | ||
], | ||
@@ -20,7 +23,11 @@ "author": "Michaël Zasso", | ||
"license": "BSD-3-Clause", | ||
"main": "./lib/index.js", | ||
"main": "./core.js", | ||
"directories": { | ||
"lib": "src", | ||
"test": "test" | ||
"lib": "src" | ||
}, | ||
"jest": { | ||
"roots": [ | ||
"<rootDir>/src" | ||
] | ||
}, | ||
"scripts": { | ||
@@ -38,25 +45,20 @@ "test": "npm run testonly && npm run eslint", | ||
"devDependencies": { | ||
"babel-cli": "^6.23.0", | ||
"babel-cli": "^6.26.0", | ||
"babel-preset-env": "^1.7.0", | ||
"benchmark": "^2.1.3", | ||
"cheminfo-tools": "^1.22.4", | ||
"eslint": "^4.19.1", | ||
"eslint-config-cheminfo": "^1.18.0", | ||
"eslint-plugin-import": "^2.14.0", | ||
"eslint-plugin-jest": "^21.27.2", | ||
"eslint-plugin-no-only-tests": "^1.1.0", | ||
"jest": "^23.0.0", | ||
"npm-run-all": "^4.1.3", | ||
"rimraf": "^2.6.2", | ||
"should": "^11.2.1" | ||
"cheminfo-tools": "^1.23.2", | ||
"eslint": "^5.15.3", | ||
"eslint-config-cheminfo": "^1.20.1", | ||
"eslint-plugin-import": "^2.16.0", | ||
"eslint-plugin-jest": "^22.4.1", | ||
"jest": "^24.5.0", | ||
"rimraf": "^2.6.3" | ||
}, | ||
"dependencies": { | ||
"ml-floyd-warshall": "^1.0.0", | ||
"ml-matrix": "^5.2.0", | ||
"openchemlib": "^5.6.1", | ||
"papaparse": "^4.6.2", | ||
"ml-matrix": "^5.3.0", | ||
"openchemlib": "^6.0.1", | ||
"papaparse": "^4.6.3", | ||
"rxn-parser": "0.1.0", | ||
"sdf-parser": "^3.1.0", | ||
"setimmediate": "^1.0.2" | ||
"sdf-parser": "^3.1.0" | ||
} | ||
} |
@@ -66,3 +66,3 @@ # openchemlib-extended | ||
- oclCode (or idCode or value): the OCL unique code | ||
- idCode: the OCL unique code | ||
- smiles | ||
@@ -69,0 +69,0 @@ - molfile |
6
9
37
70749
1831
+ Addedopenchemlib@6.0.1(transitive)
- Removedsetimmediate@^1.0.2
- Removedopenchemlib@5.9.1(transitive)
- Removedsetimmediate@1.0.5(transitive)
Updatedml-matrix@^5.3.0
Updatedopenchemlib@^6.0.1
Updatedpapaparse@^4.6.3