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