diff --git a/client/.gitignore b/client/.gitignore index b06e564c..2106e507 100644 --- a/client/.gitignore +++ b/client/.gitignore @@ -2,3 +2,4 @@ package-lock.json node_modules/ dist/ .cache/ +assets/molecules diff --git a/ops/.gitignore b/ops/.gitignore index 3ea1bb5c..ee38e5d5 100755 --- a/ops/.gitignore +++ b/ops/.gitignore @@ -1,2 +1,3 @@ node_modules/ -package-lock.json \ No newline at end of file +package-lock.json +molecules/ diff --git a/ops/fetch.molecules.js b/ops/fetch.molecules.js new file mode 100644 index 00000000..bb0f7bed --- /dev/null +++ b/ops/fetch.molecules.js @@ -0,0 +1,45 @@ +const request = require('request'); +const fs = require('fs'); +const renderer = require('sdftosvg'); + +const SVG_OPTS = { + backgroundColor: 'none', +} + +function fetch(i) { + return new Promise((resolve, reject) => { + const url = `https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/CID/${i}/record/SDF/?record_type=2d&response_type=save&response_basename=Structure2D_CID_2519`; + const output = `./../client/assets/molecules/${i}.svg`; + + request(url, function cb(err, res, body) { + if (err) reject(err); + + // write file + fs.writeFile(`./molecules/Structure2D_CID_${i}.sdf`, body, function written(err) { + if (err) reject(err); + }); + + // write svg + renderer.renderSdfToSvg(body, SVG_OPTS, function(err, svg) { + if (err) reject(err); + fs.writeFile(output, svg, function written(err) { + if (err) reject(err); + resolve(); + }); + }); + }); + }); +} + +async function loop() { + for (var i = 10000; i >= 0; i--) { + try { + await fetch(i); + console.log('finished record', i); + } catch (e) { + console.error(e); + } + } +} + +loop(); diff --git a/ops/molecules.js b/ops/molecules.js new file mode 100644 index 00000000..39c7d1b5 --- /dev/null +++ b/ops/molecules.js @@ -0,0 +1,18 @@ +const renderer = require('sdftosvg'); +const uuidv4 = require('uuid/v4'); +const fs = require('fs'); + +function convert(f) { + const uuid = uuidv4(); + const input = `./molecules/${f}`; + const output = `./../client/assets/molecules/${uuid}.svg`; + fs.readFile(input, 'utf8', (err, sdf) => { + renderer.renderSdfToSvg(sdf, {}, function(err, svg) { + if (err) console.error(input, err); + fs.writeFile(output, svg, 'utf8', err => { + if (err) console.error(err); + }); + }); + }); +} + diff --git a/ops/package.json b/ops/package.json index 3ee5cdf7..9ab56e0a 100755 --- a/ops/package.json +++ b/ops/package.json @@ -12,6 +12,9 @@ "license": "UNLICENSED", "dependencies": { "knex": "^0.15.2", - "pg": "^7.4.3" + "pg": "^7.4.3", + "request": "^2.88.0", + "sdftosvg": "0.0.4", + "uuid": "^3.3.2" } }