Skip to content

Instantly share code, notes, and snippets.

@jvwong
Created February 12, 2018 15:44
Show Gist options
  • Save jvwong/739e3b6222d77ba050cd0f72dc7a78a0 to your computer and use it in GitHub Desktop.
Save jvwong/739e3b6222d77ba050cd0f72dc7a78a0 to your computer and use it in GitHub Desktop.
'enrichment' endpoint
// const request = require('request');
// const Promise = require('promise-simple');
// const csv = require('csvtojson');
// const fs = require('fs');
// const _ = require('lodash');
const enrichment = function (query) {
var promise = new Promise(function(resolve, reject) {
// do a thing, possibly async, then…
if (query) {
resolve("Stuff worked!");
}
else {
reject(Error("It broke"));
}
});
return promise;
// var formData = {
// "output": "mini",
// "organism": "hsapiens",
// "significant": "1",
// "sort_by_structure": "1",
// "ordered_query": "0",
// "as_ranges": "0",
// "no_iea": "1",
// "underrep": "0",
// "hierfiltering": "none",
// "user_thr": "1",
// "min_set_size": "5",
// "max_set_size": "200",
// "threshold_algo": "fdr",
// "domain_size_type": "annotated",
// "custbg_cb": "none",
// "sf_GO:BP": "1",
// "query": query
// };
// const d = Promise.defer();
// request.post({ url: "http://biit.cs.ut.ee/gprofiler/", formData: formData }, function optionalCallback(err, httpResponse, body) {
// if (err) {
// d.reject(err);
// }
// // remove the second line
// const lines = body.split('\n');
// lines.slice(0, 1);
// const str1 = body.split('\n').slice(0, 1).join("\n");
// let str2 = body.split('\n').slice(2).join("\n"); // concatenate at last
// // remove lines starting with #
// const str3 = str2.replace(/^#.*$/mg, "");
// const str4 = (str1 + '\n').concat(str3);
// fs.writeFileSync("outputFile", str4);
// // convert csv to json, extract "term id"
// let collection = [];
// let ret = [];
// csv({ delimiter: "\t" })
// .fromFile("outputFile")
// .on('json', (jsonObj) => {
// collection.push(jsonObj);
// })
// .on('done', (error) => {
// _.forEach(collection, function (elem) {
// ret.push(elem["term ID"]);
// });
// d.resolve(ret);
// });
// });
// return d;
};
module.exports = enrichment;
const enrichment = require('./enrichment');
module.exports = { enrichment};
//Import Depedencies
const express = require('express');
const router = express.Router();
const controller = require('./controller');
const config = require('../../config');
const {validate, proceed } = require('../gene-query');
const enrichment = require("../enrichment");
const isAuthenticated = token => {
return config.MASTER_PASSWORD != '' && config.MASTER_PASSWORD === token;
};
const errorMsg = {
error: 'Invalid access token'
};
// Expose a rest endpoint for controller.submitLayout
router.post('/submit-layout', function (req, res) {
if (isAuthenticated(req.body.token)) {
controller.submitLayout(req.body.uri, req.body.version, req.body.layout, req.body.user)
.then((package) => {
res.json(package);
});
} else {
res.json(errorMsg);
}
});
// Expose a rest endpoint for controller.submitGraph
router.post('/submit-graph', function (req, res) {
if (isAuthenticated(req.body.token)) {
controller.submitGraph(req.body.uri, req.body.version, req.body.graph)
.then((package) => {
res.json(package);
});
} else {
res.json(errorMsg);
}
});
// Expose a rest endpoint for controller.submitDiff
router.post('/submit-diff', function (req, res) {
if (isAuthenticated(req.body.token)) {
controller.submitDiff(req.body.uri, req.body.version, req.body.diff, req.body.user)
.then((package) => {
res.json(package);
});
} else {
res.json(errorMsg);
}
});
// Expose a rest endpoint for controller.getGraphAndLayout
router.get('/get-graph-and-layout', function (req, res) {
controller.getGraphAndLayout(req.query.uri, req.query.version).then((package) => {
res.json(package);
});
});
// expose a rest endpoint for validator
router.get('/gene-query/', (req, res) => {
const genes = req.query.gene;
console.log("endpoint genes are: "+genes);
const geneTokens = validate(genes);
const results = proceed(geneTokens);
res.json(results);
});
//expose a rest endpoint for enrichment
router.get('/enrichment/', (req, res) => {
const genes = req.query.gene;
console.log("endpoint genes are: "+genes);
console.log(enrichment.enrichment);
enrichment.enrichment(genes).then(function(results) {
// res.json(results);
res.send(results);
});
});
// Expose a rest endpoint for controller.endSession
router.get('/disconnect', function (req, res) {
controller.endSession(req.query.uri, req.query.version, req.query.user)
.then((package) => {
res.json(package);
});
});
module.exports = router;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment