From 5decb6e914de0a3ec70150f0434be248a399e35c Mon Sep 17 00:00:00 2001 From: sauloal <sauloal@yahoo.com.br> Date: Mon, 18 Apr 2016 19:02:27 +0200 Subject: [PATCH] added jbrowse --- .gitignore | 1 + README.md | 4 ++ app.js | 60 +++++++++++++++++ bin/www | 90 ++++++++++++++++++++++++++ data/exp_refineFinal1_merged_r.cmap.sh | 2 +- init.sh | 9 +++ lib/gen_sizes.js | 44 +++++++++++++ gen_sizes.py => lib/gen_sizes.py | 0 package.json | 17 +++++ public/.gitignore | 1 + public/jbrowse.sh | 21 ++++++ public/stylesheets/style.css | 8 +++ routes/index.js | 14 ++++ routes/users.js | 9 +++ run.sh | 1 + views/error.jade | 6 ++ views/helloworld.jade | 5 ++ views/index.jade | 5 ++ views/layout.jade | 7 ++ 19 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 app.js create mode 100755 bin/www create mode 100644 init.sh create mode 100644 lib/gen_sizes.js rename gen_sizes.py => lib/gen_sizes.py (100%) create mode 100644 package.json create mode 100644 public/.gitignore create mode 100644 public/jbrowse.sh create mode 100644 public/stylesheets/style.css create mode 100644 routes/index.js create mode 100644 routes/users.js create mode 100755 run.sh create mode 100644 views/error.jade create mode 100644 views/helloworld.jade create mode 100644 views/index.jade create mode 100644 views/layout.jade diff --git a/.gitignore b/.gitignore index 20ca217..fa8e0d5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.sizes *.bb *_static* +node_modules/ diff --git a/README.md b/README.md index 8cde298..687526d 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ Uses github.com:sauloal/kentjs.git + +Express from: + http://expressjs.com/en/starter/generator.html + http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/ diff --git a/app.js b/app.js new file mode 100644 index 0000000..80a3c36 --- /dev/null +++ b/app.js @@ -0,0 +1,60 @@ +var express = require('express'); +var path = require('path'); +var favicon = require('serve-favicon'); +var logger = require('morgan'); +var cookieParser = require('cookie-parser'); +var bodyParser = require('body-parser'); + +var routes = require('./routes/index'); +var users = require('./routes/users'); + +var app = express(); + +// view engine setup +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'jade'); + +// uncomment after placing your favicon in /public +//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); +app.use(logger('dev')); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: false })); +app.use(cookieParser()); +app.use(express.static(path.join(__dirname, 'public'))); + +app.use('/', routes); +app.use('/users', users); + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + var err = new Error('Not Found'); + err.status = 404; + next(err); +}); + +// error handlers + +// development error handler +// will print stacktrace +if (app.get('env') === 'development') { + app.use(function(err, req, res, next) { + res.status(err.status || 500); + res.render('error', { + message: err.message, + error: err + }); + }); +} + +// production error handler +// no stacktraces leaked to user +app.use(function(err, req, res, next) { + res.status(err.status || 500); + res.render('error', { + message: err.message, + error: {} + }); +}); + + +module.exports = app; diff --git a/bin/www b/bin/www new file mode 100755 index 0000000..c3ada00 --- /dev/null +++ b/bin/www @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var app = require('../app'); +var debug = require('debug')('data:server'); +var http = require('http'); + +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.PORT || '3000'); +app.set('port', port); + +/** + * Create HTTP server. + */ + +var server = http.createServer(app); + +/** + * Listen on provided port, on all network interfaces. + */ + +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); + +/** + * Normalize a port into a number, string, or false. + */ + +function normalizePort(val) { + var port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +} + +/** + * Event listener for HTTP server "error" event. + */ + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' + ? 'Pipe ' + port + : 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +/** + * Event listener for HTTP server "listening" event. + */ + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' + ? 'pipe ' + addr + : 'port ' + addr.port; + debug('Listening on ' + bind); +} diff --git a/data/exp_refineFinal1_merged_r.cmap.sh b/data/exp_refineFinal1_merged_r.cmap.sh index 1a25124..3b9fd29 100755 --- a/data/exp_refineFinal1_merged_r.cmap.sh +++ b/data/exp_refineFinal1_merged_r.cmap.sh @@ -21,4 +21,4 @@ SIZES=${FA}.sizes #./bedToBigBed_static -tab ${BED} ${SIZES} ${BIGBED} -ENVIRONMENT=NONE node bedToBigBed_static.js -tab ${BED} ${SIZES} ${BIGBED} +node bedToBigBed_static.js -tab ${BED} ${SIZES} ${BIGBED} diff --git a/init.sh b/init.sh new file mode 100644 index 0000000..145ce73 --- /dev/null +++ b/init.sh @@ -0,0 +1,9 @@ +npm install express-generator + +node_modules/.bin/express . + +npm install + +cd public + +bash jbrowse.sh diff --git a/lib/gen_sizes.js b/lib/gen_sizes.js new file mode 100644 index 0000000..10aa6d3 --- /dev/null +++ b/lib/gen_sizes.js @@ -0,0 +1,44 @@ +//var exports = module.exports = {}; +var fs = require('fs'); +var readline = require('readline'); + +function gen_size(filename, cb) { + console.log("filename", filename); + + var lineReader = readline.createInterface({ + terminal: false, + input: fs.createReadStream(filename) + }); + + var stats = []; + + lineReader.on('line', function (line) { + //console.log('Line from file:', line); + + if (line.length >0){ + if (line[0] == ">") { + console.log("HEADER", line); + + var names = line.split(/[ ,\|]/g); + var name = names[0].substr(1); + + //console.log("NAMES ", names); + console.log("NAME '"+name +"'"); + + stats.push([name, 0]); + + //console.log(stats); + + } else { + //console.log("SEQ ", line); + stats[stats.length-1][1] += line.length; + } + } + }); + + lineReader.on('close', function() { cb(stats); }); +} + +//node -e 'var gs = require("./gen_sizes.js"); gs("../data/S_lycopersicum_chromosomes.2.50.fa",function(stats){console.log("stats",stats);});' + +module.exports = gen_size; diff --git a/gen_sizes.py b/lib/gen_sizes.py similarity index 100% rename from gen_sizes.py rename to lib/gen_sizes.py diff --git a/package.json b/package.json new file mode 100644 index 0000000..836cc49 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "bionanoconverter", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "node ./bin/www" + }, + "dependencies": { + "body-parser": "~1.13.2", + "cookie-parser": "~1.3.5", + "debug": "~2.2.0", + "express": "~4.13.1", + "jade": "~1.11.0", + "morgan": "~1.6.1", + "serve-favicon": "~2.3.0" + } +} diff --git a/public/.gitignore b/public/.gitignore new file mode 100644 index 0000000..14fda8b --- /dev/null +++ b/public/.gitignore @@ -0,0 +1 @@ +jbrowse diff --git a/public/jbrowse.sh b/public/jbrowse.sh new file mode 100644 index 0000000..01c7eb6 --- /dev/null +++ b/public/jbrowse.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -xeu + +TAG=1.12.1-release + +#URL=https://github.com/GMOD/jbrowse/archive/${TAG}.tar.gz + +#mkdir jbrowse || true + +#wget ${URL} -O - | tar xzvf - --strip-components=1 -C jbrowse + +git clone https://github.com/GMOD/jbrowse.git + +cd jbrowse + +git checkout tags/${TAG} + +git submodule update --init --recursive --force + +./setup.sh diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css new file mode 100644 index 0000000..9453385 --- /dev/null +++ b/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} diff --git a/routes/index.js b/routes/index.js new file mode 100644 index 0000000..53108bb --- /dev/null +++ b/routes/index.js @@ -0,0 +1,14 @@ +var express = require('express'); +var router = express.Router(); + +/* GET home page. */ +router.get('/', function(req, res, next) { + res.render('index', { title: 'Express' }); +}); + +/* GET Hello World page. */ +router.get('/helloworld', function(req, res) { + res.render('helloworld', { title: 'Hello, World!' }); +}); + +module.exports = router; diff --git a/routes/users.js b/routes/users.js new file mode 100644 index 0000000..623e430 --- /dev/null +++ b/routes/users.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET users listing. */ +router.get('/', function(req, res, next) { + res.send('respond with a resource'); +}); + +module.exports = router; diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..2eaa4f9 --- /dev/null +++ b/run.sh @@ -0,0 +1 @@ +DEBUG=bionanoconverter:* npm start diff --git a/views/error.jade b/views/error.jade new file mode 100644 index 0000000..51ec12c --- /dev/null +++ b/views/error.jade @@ -0,0 +1,6 @@ +extends layout + +block content + h1= message + h2= error.status + pre #{error.stack} diff --git a/views/helloworld.jade b/views/helloworld.jade new file mode 100644 index 0000000..a2c3217 --- /dev/null +++ b/views/helloworld.jade @@ -0,0 +1,5 @@ +extends layout + +block content + h1= title + p Welcome to #{title} diff --git a/views/index.jade b/views/index.jade new file mode 100644 index 0000000..3d63b9a --- /dev/null +++ b/views/index.jade @@ -0,0 +1,5 @@ +extends layout + +block content + h1= title + p Welcome to #{title} diff --git a/views/layout.jade b/views/layout.jade new file mode 100644 index 0000000..15af079 --- /dev/null +++ b/views/layout.jade @@ -0,0 +1,7 @@ +doctype html +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content -- GitLab