mnml/ops/fetch.molecules.js
2019-03-27 13:34:43 +11:00

46 lines
1.2 KiB
JavaScript

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();