Giter Site home page Giter Site logo

mcneilco / acas Goto Github PK

View Code? Open in Web Editor NEW
11.0 4.0 5.0 47.85 MB

Home Page: http://mcneilco.com/acas.html

License: GNU General Public License v3.0

CoffeeScript 16.53% JavaScript 49.42% Shell 0.22% Awk 0.01% HTML 16.93% CSS 2.00% R 3.06% PHP 4.74% Python 0.39% Makefile 0.01% Ruby 0.19% Go 0.08% Perl 6.05% Batchfile 0.01% Dockerfile 0.02% Pug 0.15% SCSS 0.21% Less 0.01%
lims chemistry eln biology laboratory-automation

acas's Introduction

ACAS (Assay Capture and Analysis System)

License: GPL v3

This repository Contains the source code for the main ACAS NodeJS/Web app.

The other required ACAS Open Source Projects can be found here:

JM&Co offer a number of commercial ACAS modules. An introduction to ACAS with additional modules is available [here] (http://www.mcneilco.com/acas.html)

This Open Source release includes the Experiment Loader, Dose Response, and Compound Registration modules, as well as the various ACAS APIs.

ACAS Requirements

  • Postgres (or optionally oracle)

Commercial Third-party (optional) requirements

  • Oracle
  • Compound Registration
  • Chemaxon jchembase (with valid license to be obtained at sales [at] chemaxon.com See note in license section of this file)
  • Chemaxon marvinjs (with valid license to be obtained at sales [at] chemaxon.com See note in license section of this file)

ACAS Documentation

Public Documentation Table of Contents

Release Notes

https://github.com/mcneilco/acas/releases

Docker installation instructions

ACAS has been configured to run a full stack in the docker environment. The instructions below outline the process of getting a basic working stack running on your system.

Some of the docker images in the ACAS stack are available in the mcneilco dockerhub repository while others (due to license restrictions) must be built by the developer.

Available Images:

Images Built by Developer (instructions below):

  • ACAS Roo Server
  • ACAS Compound Registration Roo Server

Requirements

Installation

Docker settings

Download and install docker for your operating system.

Memory

It is recommended to run the stack with at least 4GB of memory but is helpful to have up to 8GB available. Docker for mac and windows do not need to reserve the entire 8GB for itself so it's ok to give it a little extra if you have it available.

See docker instructions for you operating system to adjust

Make a working folder

mkdir -p ~/Documents/mcneilco/oss/

Building a working image for ACAS Roo Server

Due to license restrictions, this is one of the images that must be built by the developer.

Checkout
cd ~/Documents/mcneilco/oss/
git clone [email protected]:mcneilco/acas-roo-server.git
cd acas-roo-server
Build
docker build -t mcneilco/acas-roo-server-oss:latest .

Building a working image for Compound Registration ROO Server

Checkout
cd ~/Documents/mcneilco/oss/
git clone [email protected]:mcneilco/acas-cmpdreg-roo-server.git
cd acas-cmpdreg-roo-server
Add chemaxon jar file
Add chemaxon jar file to a lib folder in the checkout
cd ~/Documents/mcneilco/oss/acas-cmpdreg-roo-server
mkdir lib
cd lib
cp <jchem-16.4.25.0.jar> .
cd ..
Build
docker build -t mcneilco/acas-cmpdreg-roo-server-oss:latest .

ACAS

The acas repository contains a docker-compose.yml file that orchestrates the creation of the ACAS stack. For this reason, it is helpful to have a clone of the ACAS repo even if you aren't doing ACAS development or don't need compound registration.

Checkout
cd ~/Documents/mcneilco/oss/
git clone [email protected]:mcneilco/acas.git
cd acas
Add chemaxon licenses and download marvin4js
mkdir -p chemaxon/licenses
Place your marvin4js-license.cxl and license.cxl (jchem base license) as follows:
cp <path/to/marvin4js-license.cxl> chemaxon/licenses
cp <path/to/license.cxl> chemaxon/licenses

Place your marvin4js download into a folder called "marvinjs" as follows:

cp -r <path/to/marvinjs-16.10.17-all> chemaxon/marvinjs

Start acas stack

cd ~/Documents/mcneilco/oss/acas
docker-compose up -d

Login

Visit http://localhost:3000 in your browser to login. You will need to create a user in order to access the web app:

curl localhost:3001/api/systemTest/getOrCreateACASBob
curl localhost:3001/api/systemTest/getOrCreateGlobalProject
curl localhost:3001/api/systemTest/getOrCreateGlobalProjectRole
curl localhost:3001/api/systemTest/giveBobRoles
curl localhost:3001/api/systemTest/getOrCreateCmpdRegBob
curl localhost:3001/api/systemTest/syncRoles

Optionally you could run the shell script docker_bob_setup.sh in this repository instead of manually curling each endpoint.

This will create a user "bob" with password "secret".

Viewing logs

docker-compose logs --tail=20 -f <service>

e.g. for all containers

docker-compose logs -f 

e.g. for only tomcat

docker-compose logs --tail=20 -f tomcat

Stop the web stack

docker-compose down

Troubleshooting

  • There is a known timing issue where tomcat may try to connect to the database before the database is accepting connections. If this happens, try restarting tomcat.
docker-compose restart tomcat

Configuration

Environment variable configuration overrides

ACAS can read configuration overrides from environment variables prefixed with ACAS_. ACAS maps environment variable names to flat file configuration names by a 4 step process (e.g. ACAS_CLIENT_MODULEMENUS_LOGOTEXT=ACME Labs):

  1. Match any environment variable name prefixed with ACAS_ and remove the prefix from the name.

Step output: CLIENT_MODULEMENUS_LOGOTEXT

  1. Replace _ characters with . characters in the environment variable name.

Note, that you can escape substitution for flat file configs contain underscore by using double underscores __ in the environment variable.

Step output: ACAS.CLIENT.MODULEMENUS.LOGOTEXT

  1. Do a case insensitive match of the now processed environment variable name with a flat file configuration name.

Match: client.moduleMenus.logoText

  1. Replace the value in the flat file name with the value provided by the matched environment variable.

Final outcome: client.moduleMenus.logoText=ACME Labs

Example environment variables:

Simple override:

Replaces client.moduleMenus.logoText

ACAS_CLIENT_MODULEMENUS_LOGOTEXT=ACME Labs
Escape character usage using __

Replaces server.datafiles.relative_path (note this isn't a realistic example of a config you would ever override but demonstrates the escape sequence)

ACAS_SERVER_DATAFILES_RELATIVE__PATH=..
Override containing configs which will be replaced with other configs

Replaces client.service.cmpdReg.persistence.fullpath

docker-compose example which requires $$ to esacpe the $ override

environment:
  - ACAS_CLIENT_SERVICE_CMPDREG_PERSISTENCE_FULLPATH=http://$${client.service.cmpdReg.persistence.host}:$${client.service.persistence.port}/$${client.service.cmpdReg.persistence.path}/

Shell example requires escape $

ACAS_CLIENT_SERVICE_CMPDREG_PERSISTENCE_FULLPATH=http://\${client.service.cmpdReg.persistence.host}:\${client.service.persistence.port}/\${client.service.cmpdReg.persistence.path}/

or

ACAS_CLIENT_SERVICE_CMPDREG_PERSISTENCE_FULLPATH='http://${client.service.cmpdReg.persistence.host}:${client.service.persistence.port}/${client.service.cmpdReg.persistence.path}/'

License

License: GPL v3 [License] (./LICENSE)

ChemAxon license note: Subject to possession of valid license, you may use ChemAxon's proprietary software JChemBase and Marvin JS under John McNeil &Co., Inc's application as known as ACAS Compound Registration. Note that it is a restricted license, which is not valid for other (open source) applications. Terms and conditions of such license are covered by ChemAxon standard EULA (available at https://docs.chemaxon.com/display/docs/End+User+License+Agreement+(EULA)+LIC) with the exemption of bullet six (6) of section entitled 'YOU MAY NOT'. Please contact ChemAxon for obtaining the license at sales [at] chemaxon.com.

Copyright

[Copyright (c) 2012-2016 John McNeil & Co. Inc. All rights reserved.] (./COPYRIGHT.txt)

acas's People

Contributors

antonio-osorio avatar bffrost avatar brianbolt avatar dalejerikson avatar dependabot[bot] avatar egao12 avatar fkmeyer avatar goshiro2010 avatar hhan-schrodinger avatar iamanandkr avatar jmcneil86043 avatar mkeshaw005 avatar mprincipato avatar philippcheung avatar samanthamunoz avatar simonkeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

acas's Issues

SEL file loaded with ฮ” character in column header breaks

Proper result type with ฮ” does appear in value_kind table, however csv file generated by SEL contains unicode version <U+0394>
Roo hits a ConstraintViolation on tsvSave because the <U+0394> lsKind does not match anything in the value_kind table.

Appears to be a regression, but the cause is unknown.

Bulk Loader and Single Reg GUI save parent alias types differently

The bulk loader has three alias properties, that save with the following lsTypes and lsKinds:
"Parent LiveDesign Corp Name"
lsType: "external id"
lsKind: "LiveDesign Corp Name"

"Parent Common Name"
lsType: "other name"
lsKind: "Parent Common Name"

"Parent Alias"
lsType: "default"
lsKind: "default"

However when the GUI saves aliases via single reg, they are saved with lsTypes like
lsType: "other name: Parent Common Name"
lsKind: "Parent Common Name"

The symptom of this is that aliases loaded in through the bulk loader are not rendered with type/kinds in the GUI.

GUI correctly shows "Can Not Purge" and only has an OK button, but then asks "Are you sure you want to purge this file?" This happens when a bulk load file is the source of parent compounds that have single-registered lots off of them, so there is no way to purge.

GUI correctly shows "Can Not Purge" and only has an OK button, but then asks "Are you sure you want to purge this file?"

This happens when a bulk load file is the source of parent compounds that have single-registered lots off of them, so there is no way to purge.

If a bulk load file cannot be purged from CmpdReg, the GUI reports a list of dependent bulk load files and dependent experiments. It should ALSO report a list of singleton lots, or at least a message that there are singleton lots that are blocking the purge. Should not show Can Not Purge with "Are you sure you want to purge this file?" text

CReg allows blank structure to be saved via Edit Parent

Current status
Single Reg: cannot register empty structure
Bulk Reg: CAN register empty structure
Edit Parent: CAN edit structure to be empty structure

These should be consistent across the board, and there should exist a configuration where it is not possible to register empty structures. This should be the default configuration.

SEL should report value kinds that are too long (>64 characters)

Currently if a user inputs column headers / result types / value kinds that are over the 64 character limit, SEL throws an internal error on the second step (non-dry run load) because Roo throws a RollbackException upon valueKind POST. SEL should validate this on dry run and display a helpful error to the user.

docker container tags shouldn't be hardecoded in docker or docker-compose files

We could the default docker-compose and docker files to key off an environment variable. That way we don't have to change it with every release. Users would just need to export an environment variable specifying the build they would like to pull down (e.g. "export ACAS_TAG=latest") before running builds or starting a stack. Each of the compose and docker file lines will use the ACAS_TAG as the tagged version of the docker build they would like to use.

Websocket Configuration

Basic ACAS start / configuration updates to enable web sockets, along with setup that allows the web sockets to access data in the session.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.