a conceptual gambit in collaboration with chatGPT4 /// POC v0.9.6
Built from first principles and drawing upon 30 years experience scaling laboratory process. Constructed with as few object model shortcuts as I could manage ( I believe these shortcuts are among the main reasons LIMS nearly universally dissapoint ). Supporting both arbitrary and prescribed interacting objects. Intended for use: by small to factory scale laboratories, in regulated environments, for both research & operations usecases. Bloom can handle multiple areas LIS tend to touch: acessioning, lab processes, specimen/sample management, equipment, regulatory and compliance.
bloom early peeks
and flexible whitelisting, etc...
bloom natively will support arbitrarily defined labware, a 96w plate is just one example. Anything that nested arrays of arrays can describe can be configured as a type of labware with next to no effort!
Pacage receipt -> kits registration (multiple) -> specimen registration (multiple) -> requisition capture & association -> adding specimens to assay queues. Fedex tracking details fetched, barcode printing available.
Plasma Isolation -> DNA Extraction -> DNA Quant
managing all object relationships, tracking all details, printing labels, etc.
see build test badges above for all supported platforms
brew install coreutils
is required for the gtimeout
command for some rclone functionality. run alias timeout=gtimeout
to use the gtimeout w/zsh.Conda (you may swap in mamba if you prefer). Installing conda:
wget
is available to you.linux _a pinned version: https://repo.anaconda.com/miniconda/Miniconda3-py312_24.5.0-0-Linux-x86_64.sh_
x86_64:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
arm64:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
macOS
intel:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
ARM:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
~/miniconda3/bin/conda init
bash # newly created shells should not auto load the conda (base) env.
assumes you have completed the prerequisites
# Clone the repository
git clone git@github.com:Daylily-Informatics/bloom_lims.git
cd bloom_lims
# This will attempt to build the conda env, install postgres, the database, build the schema and start postgres
source bloom_lims/env/install_postgres.sh
# conda activate BLOOM if is has not happened already.
# Start the Bloom LIMS UI
source run_bloomui.sh
# RUN TESTS
pytest
# START THE UIs (on localhost:8080)
source bloom_lims/env/install_pgadmin.sh
If they have APIs, integration to fetch things like physician or patient identifiers/metadata is straight forward.
yaml
file for this library: fedex_tracking_day.simple_salesforce
or salesforce
python packages, would be very straight forward.All other relationships are subsets of this, and designing parts of the LIMS which disallow many to many will result in an inflexible system.
You may deploy bloom wherever it will run. This does mean you are responsible for all aspects of the deployment, including security, backups (AND recovery), performance optimization, monitoring, etc. This need not be daunting. I am available for consulting on there topics.
conda activate BLOOM
pytest
note: all commands below are expected to be run from a shell with conda activated.
conda activate BLOOM
The steps are wrapped in a script, please see clear_and_rebuild_postgres.sh.
It is executed as follows:
source clear_and_rebuild_postgres.sh
source bloom_lims/bin/stop_bloom_db.sh
rm -rf bloom_lims/database/*
source bloom_lims/env/install_postgres.sh skip
the skip will skip building the conda env. This will start pgsql in the env, and build the schema.Similar to pytest
, but more extensive. Largely useful in development work. The following will auto-gen 'n=2' passes of the lims schema
python tx.py 2
.source source run_bloomui.sh
source bloom_lims/env/install_pgadmin.sh
python bloom_shell.py
echo "test" >test.log
echo "TEST" >TEST.LOG
more test.log
TEST
more TEST.log
TEST
echo "test" > test.log
echo "TEST" > TEST.LOG
more test.log
test
TEST.LOG
TEST
A widely adopted UUID spec (and used by postgres), rfc4122, treates uc and lc as the same character. Bloom EUIDs only contain uc characters in a prefix followed by integers.