Limes User Documentation
Limes (Lab Inventory Management EcoSystem) is a networked system of data providers with both a pip installable client and web portal. Linked data providers include eLab and Shamwow. Limes’ purpose is to provide a single point of access for all LIMS-related information at Hallam Lab.
Contents
Start Here!
Workflows Diagram
Diagram elements:
Items represent starting conditions, desired outcomes, or required intermediates.
Actions show the steps necessary to obtain indicated items.
Standard actions can be performed through the portal with no installations.
Advanced actions require the use of the python client.
Development actions require changes to the code base.
The above shows the possible high-level actions for working with LIMS data, what each action achieves, and how to chain actions together. For example, to get barcoded labels from from physical samples, the action Add Samples must first be done to get ELab Records, followed by the action Print Labels.
List of Actions
Standard Actions
Tip
View eLab’s full documentation here
Advanced Actions with Python
Developer Actions
Example Use Cases
Processing Environmental Samples
From the Overview
Detailed Breakdown
Prerequisites
A sample type must exist in eLab for each type of sample encountered.
A
type
refers to a set of unique descriptors. For example, all Saanich Inlet samples require location, depth and date of collection, while all fosmid pools may require details on the source sample, screening outcomes or gene content information. Since fosmid pools and Saanich Inlet samples each require a different set of descriptors from each other, they are of different types.A label template must exist for each style of label to be printed.
Steps
Review the prerequisites above and ensure they are satisfied.
Record environmental samples in an eLab staging area
Get the barcodes of the newly created sample entries from step 2.
Print labels for the orginal samples by using their barcodes.. Label the orginal samples.
Filter water sample(s) through Sterivex filters [small volume, large volume]
Record filters in an eLab staging area. Specify each filter’s parent to be the respective sample from step 2.
Get the barcodes of the newly created filter entries from step 6.
Print labels for the Sterivex filters. Label the filters.
Move all samples digitally from the staging area to their final locations
Transfer all samples physically to their final storage locations.
Limes Portal
link: https://limes-inventory.github.io/
Log in using your eLab credentials.
Note
A connection to the UBC Secure network is required, via VPN, campus wifi, or ethernet cable.
Search by Storage Location
Log in to the portal and click Search By Storage Location
.
Search for a storage location by entering the names of the storage levels to that location, seperated by commas. This need not be too precise. For example,
11, 2, 3
would yield
-80C Freezer #11, shelf 2, rack 3
Warning
Be aware of ambiguities. 1
, for instance, will match terms like Freezer #01
or
Freezer #15
, and 8
will match -80C Freezer
! The search is simply matching the
name of each storage level.
The barcode and full address of the specified location will appear and all samples in that specific location will be displayed in a table.
Note
If a storage is not found, pressing the Reload Storages
button will have Limes synchronize its remembered storage locations with eLab.
Pressing Print
will display the barcodes of all samples found.
Scanning Labels
Log in to the portal and click Scanner
.
Barcodes can be entered directly into the box: Enter Barcode Here
. After the specified delay
indicated by the box Delay (ms)
, the barcode will be entered into the table. This barcode will
be automatically checked against elab and a checkmark (✔) will appear in the Added?
column if the
barcode was found in eLab.
When ready to confirm the reception of barcodes (and their samples by proxy), select the desired barcodes
from the scanned barcodes table and click Confirm Recieve
. The MMAP API will then be notifed of these barcodes.
The Info
column will display identifiers for the barcode if the MMAP API was succesfully updated, or
continue to display unknown
on failure.
Warning
The MMAP API will only accept confirmation once, so there is no way to tell the difference between a succesful confirmation and a repeat confirmation. Attempts to improve this was met with logistical resistence.
Selected barcodes with retrieved metadata (ex. names or other identifiers) can be copied to the clipboard as a table to be later pasted into a spreadsheet for bulk entry into eLab.
Tip
Double clicking on any row will open the eLab page for that barcode if found in eLab.
Tip
Use the Toggle Camera
button to scan barcodes directly using the built-in camera of the device.
Note
The scanned list of barcodes will persist between login sessions and devices for each user, as long as the server has not restarted.
Printing Labels
Ensure that a template for the style of label you wish to print has been created.
Log in to the portal and click Print
.
In the Items
field, enter each item to print by pasting its’ barcode on a new line like so:
005000009764829
005000009764830
005000009764831
Tip
Consider using the Search By Storage Locaton feature to acquire barcodes of many samples of storage locations like boxes / racks. Have a look at this example for a walkthrough
Note
If a barcode is matched to a sample on eLab, the sample’s name will be automatically sent to the label, otherwise, only the custom text will be sent.
Add additional text by separating it with a comma or the tab
character. Pasting entries
directly from a spreadsheet is possible here.
005000009764829
005000009764830, custom text
005000009764831, text for "o.text2", text for "o.text3"
005000009764831 tab separated & from a spreadsheet
Note
It is possible to print unlinked labels, though this is highly NOT recommended. Simply enter your own barcode or start with a comma to indicate a blank barcode, for example:
12345, a lonely label not connected to eLab
, a sad label with no barcode
The information to be printed for each label will be shown in the table at the bottom.
Pressing the Copy to Clipboard
button will allow you to paste the label information
into a spreadsheet for editing. It should then be possible to directly paste the updated
contents back into the Items
box.
A Label Template
and Printer
must be selected before printing.
Note
Ensure that the selected template matches the physical labels loaded in the printer.
When ready, press Print All
and wait for confirmation.
Changing Labels
Troubleshooting
Using the Python Client
Install
(env)$ pip install limes-inventory
Import
from limes import Limes
Login
Limes.Login('username', 'password')
Search
result = Limes.Search('guag')
result.ToDict()
On the Network
ELab
A wrapper inheriting Connections
was created to provide typing for
eLab’s API and integrate it as a
Provider
.
Server
The server runs on a VM where access is only possible via SSH. It impliments the
Provider
interface (specified by the Connections
module) with additional
endpoints for the portal and printers. This is meant to be the
persistent source of truth for the network, though communications with other network
elements need not always go through the server.
The server utilizes both REST
and SocketIO
protocols.
Shamwow
An SshConnection
module allows for Shamwow to be connected as a Provider
by
emulating a bash console and connecting via ssh. While not explicitly implimented, the
SshConnection
module allows Limes to access Shamwow on behaf of a user
(using their ssh credentials) and run commands.
Printers
A python driver handles print requests
from the server via SocketIO
. For each request, it generates a barcode, QR code, and
label from an existing template using
Apache OpenOffice Writer before sending a print command
over USB.
Contributing
More details coming soon. In the meantime, take a peek at the repo on Git.