A persistence server for the plateyplatey-ui
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
configuration-files
src
.gitignore
LICENSE
Procfile
README.md
pom.xml

README.md

This is the server API code for PlateyPlatey. The frontend code is available in another repo.

What is PlateyPlatey?

This is a shorter form of a blog post that explains the story behind PlateyPlatey

Many lab robotic and analytical platforms—for example, HPLCs and FTIRs—accept plates containing samples as inputs. Many researchers, and research software platforms, however, require standard spreadsheet layouts for data.

Although the grid layout of most plates translates straightforwardly into an spreadsheet format, that layout is annoying to sort, aggregate, and apply formulas accross. As a result, there's a disconnect between tables—a format that suits straightforward manipulation—and plates—the format that's actually being used.

I have personally witnessed how much time and effort that simple disconnect can cost. When I was in the lab, I wanted a visual representation of the work I needed to do. I've had very tedious plating session where I would read an excel spreadsheet and perform a common mental juggling act along the lines of "ok, row A5 of my excel spreadsheet is actually B6 on the plate, time to pipette that acid. Wait, what row was it again?". When I was in the office, I wanted to plot column A against column B. Having the data in a plate layout would be very annoying for that.

In response to that, I made PlateyPlatey, a home project I have been casually chipping away at for around a year now. Although it's not anywhere near the level I'd like it to be, hopefully other people will find it useful in some restricted situations.

Architecture

The server is a basic Java Dropwizard application that serves up plateyplatey documents, plates, and configurations from from resources and the filesystem. It does not support saving users plates or anything like that (not needeed for early prototypes).

Building

Use maven to get dependencies and package the application:

mvn compile

This will create the output class files.

Running

From the target/ folder generated by the compiler:

java -cp target/classes:target/dependency/* com.plateyplatey.server.App server configuration-files/development.yml

The server's port can be set from the command line (used for heroku deploys):

java $JAVA_OPTS -Ddw.server.connector.port=$PORT -cp target/classes:target/dependency/* com.plateyplatey.server.App server configuration-files/development.yml