Public | Automated Build

Last pushed: a year ago
Short Description
Global Names Recognition and Discovery Service
Full Description

Global Names Recognition and Discovery (GNRD)

GNRD is a web-application. It finds scientific names in texts, PDF
files, images, web-pages, MS Word and MS Excel documents. RESTful API
allows to search for scientific names using scripts.


There are quite a few moving parts in the system -- Tesseract for OCR,
Libre Office to read various file formats, Postgresql for data, Redis for
asyncronous execution of commands, NetiNeti and TaxonFinder for name-finding
etc. We recommend to install Docker and Docker Compose to dramatically simplify
the installation process.

You can follow .travis.yml file to see necessary components for the system on a
Debian-based GNU/Linux distribution. You can see docker-compose file to get
an insight on how to make a complete Docker-based installation.


  • Docker >= 1.10
  • Docker Compose >= 1.6
  • Git

Install for production on one machine

Get source code and swich to production branch

git clone
cd gnrd
git checkout production

Create directories for database and configuration files

sudo mkdir -p /opt/gna/data/gnrd/postgresql/data
sudo mkdir -p /opt/gna/config/gnrd
sudo chown 999:999 -R /opt/gna/data/gnrd/postgresql
sudo cp ./config/config.json.example /opt/gna/config/gnrd/config.json
sudo cp ./config/docker/gnrd.env.example /opt/gna/config/gnrd/gnrd.env

Modify config.json and gnrd.env to suit your needs (defaults are not secure,
but work as well).

Optionally pull gnames/gnrd from dockerhub to save time on the gnrd docker
image building step

docker pull gnames/gnrd

Run docker compose from the project's root directory

docker-compose up
# or in daemon mode:
nohup docker-compose up -d

Initialize database:

docker-compose run app rake db:reset

Now you should have a working version of GNRD on and
the following command should work as expected

curl -L

You can change the placement of default directories, and ports by modifying

Development and Testing

You need Docker >= 1.10 and Docker Compose >= 1.6

Build application's image (needs to be done only if a new gem or new
Ubuntu package are added)

docker-compose build

Start Docker Compose (in the background)

docker-compose up -d

Create/update database

docker-compose run app rake db:reset

should be sufficient

Run all tests

docker-compose run app rake

Run a specific test

# with rake
docker-compose run app rake spec SPEC=spec/lib/some_spec.rb:44

# with rspec
docker-compose run app rspec -r factories spec/lib/some_spec.rb:44

Contributing to GNRD

  • Check out the latest master to make sure the feature hasn't been implemented
    or the bug hasn't been fixed yet
  • Check out the issue tracker to make sure someone already hasn't requested
    it and/or contributed it
  • Fork the project
  • Start a feature/bugfix branch
  • Commit and push until you are happy with your contribution
  • Make sure to add tests for it. This is important so I don't break it in a
    future version unintentionally.
  • Please try not to mess with the Rakefile, version, or history. If you want
    to have your own version, or is otherwise necessary, that is fine, but please
    isolate to its own commit so I can cherry-pick around it.


Authors: David Shorthouse, Dmitry Mozzherin

Copyright (c) 2012-2016 Marine Biological Laboratory.
See LICENSE.txt for further details.

Docker Pull Command
Source Repository