Skip to main content

Virtual Interface for Production & Experimental Research

Easy | Modular | Lightweight

A simple, highly scalable & adaptable LIMS system for rapidly evolving laboratory teams.

Features

  • Customisable clientside: Build your own VIPER modules in Python and help from Boa Constructor
  • Boa Constructor: Make new HTML-Javascript-Python front-end modules with simple drag and drop
  • Client Scripting: Beginner friendly code with complete control for advanced programmers
  • Client Commands: Scriptable client to server requests passed through Server Methods
  • Server Methods: Programmable permission authenticated serverside functions
  • Security: OAuth2 user verification and encrypted HTTP requests
  • SQL: Intrinsic support for MySQL, PostgreSQL and SQLite
  • OAuth2: Intrinsic support for Github and LinkedIn OAuth2 Apps

The Vision

  • Lightweight plug-and-play framework
  • Power for beginner programmers
  • Freedom for advanced programmers
  • Competency based permissions

Installation

Desktop Installation

Requires Python (>=3.7)

Operating System terminal:

pip install VIPER_LIMS

Python terminal or script:

import VIPER_LIMS
VIPER_LIMS.Install()

Please see the Server Installation Guide or Client Installation Guide below.

Alternatively: download this repository and run VIPER_Installer/VIPER_LIMS/VIPER_Installer.py

Android Installation

Only the VIPER_Client is available for Android; it is not advised to run a VIPER_Server from Android devices.

  1. Install Termux from Github or FDroid
  2. In the Termux app run the following commands in order, whilst reading and accepting appropraite requests:
    pkg install python
    apt update
    apt upgrade
    pkg install python-cryptography
    pip install VIPER_LIMS
    python3
    import VIPER_LIMS
    VIPER_LIMS.Install()
    Please see the Client Installation Guide below and type exit() when you are finished.

Once the installation is complete you can run the VIPER_Client through Termux with the command:
python3 VIPER_Client/VIPER_Client.py

Server Installation Guide

Server Install Tutorial

Store the VIPER_Server will need: information from the SQL Database and OAuth 2.0 Service sections below
Run the following command and provide the requested information: VIPER_LIMS.Install("Server")

Server IP Address:

Before you start you should know the local IP of your VIPER_Server.
Use ipconfig on Windows or ifconfig on Unix based systems and get your IPV4 local IP address (usually 192.168.X.X)
If you do not intend to host your VIPER_Server online then your VIPER_Server IP Address will be this local IP

If you want your VIPER_Server to be accessible through the internet you need to Port Forward TCP 8000 on your router to the local IP of your VIPER_Server
Afterwards use your public IP Address

You will use this IP address for the OAuth2 service callback URL. If your IP Address changes you must update the callback URL.

SQL Database

The database which your LIMS requests will access.
MySQL is recommended but PostgreSQL or SQLite should be compatible

The VIPER_Server will need:

  • Username
  • Password
  • IP Address of SQL Server
  • Port of SQL Server (default is 3306 for MySQL)

OAuth 2.0 Service

The service which hosts your users accounts, pick ONE:

The VIPER_Server will need:

  • Client ID
  • Client Secret
  • Callback URL

Client Installation Guide

Client Install Tutorial

  1. VIPER_LIMS.Install("Client")
  2. Paste the desired deployment folder directory
  3. Paste the VIPER_Server SDump (or "none" if you do not have one yet)
  4. To connect to a new Server go to Settings_Panel -> Local_Settings, then Paste an SDump -> Click Autosetup SDump
  5. Type off or on and click Set ServerURL to disable or enable online mode
    To Logout go to Settings_Panel/Logout AND Logout of your OAuth2 Service Client Tour Tutorial

Applications

Boa Constructor

Build your own modules: Boa Constructor Tutorial

Highly modular, simple, completely customisable scripts for rapidly evolving teams

  1. Launch the Client
  2. Assemble an HTML page using Boa Constructor
  3. See Coding a Module_Script.py
  4. Activate your module in Settings_Panel/Module_Toggler
  5. Restart VIPER_Client

Coding a Module_Script.py:

Expired_Ethanol_List = LIMSQuery(False, "Reagents", ["Ethanol","Expired"], "fetchall_criteria")) #Access the LIMS SQL Database

Which could execute the following on the server through a fetchall_criteria Method:

SELECT * FROM Ethanol WHERE Expired = True

In this example we are fetching all Expired Reagents:
LIMSQuery(
False: Initiates LIMSQuery's Third Party App support,
Database: The database within which to execute the SQL process,
Command: The data necessary to perform the request,
Method: The VIPER_Server method through which the Command will be processed,
)

#Example Boa Constructed module script:
def Process_User_Request(request):  #Runs when the user clicks a button on your Boa Constructed VIPER Module
    try:
        ButtonPressed = request.form['SubmitButtonPressed']  #Which action button has the user pressed?
        if ButtonPressed == "Button 0":                      #If the user pressed Action button 0 run the following
##YOUR CODE: ##
            Textbox_2 = request.form.get("Textbox 2")             #Input: The user's Textbox 2 input (e.g "Ethanol")
            Textbox_3 = request.form.get("Textbox 3")             #Input: The user's Textbox 3 input (e.g "Expired")

            ##Process the input however you want!##
            Expired_Ethanol_List = LIMSQuery(request,"Reagents", [Textbox_2,Textbox_3], "fetchall_expired") 
            SubmissionResponse = {"Label 4":Expired_Ethanol_List} #Output: Change the text in Label 4

        elif ButtonPressed == "Button 1":                 #if the user pressed a different button...
            #etc
##END OF YOUR CODE##
    except:
        return 'An error has occured.', 400 #If nothing happens, return nothing
    finally:        
        return jsonify(Info=SubmissionResponse) 

Jupyter Notebook integration:

Enable Third Party App Integration in Settings_Panel/Local_Settings

import sys, requests #required imports
VIPERFolder = requests.post("http://127.0.0.1:7800/RefreshLogin", data="locate") #get VIPER_Utility folder
print(f"VIPER Folder: {VIPERFolder.text}")
sys.path.insert(0, VIPERFolder.text) #Prepare VIPER folder for importation
from VIPER_Utility import LIMSQuery #Import VIPER_Utility from VIPER_Client

print( LIMSQuery(request,"Reagents", [Textbox_2,Textbox_3], "fetchall_expired") )

Metadata

Release files for VIPER-LIMS 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for VIPER-LIMS 0.1.3
File Size Uploaded
VIPER-LIMS-0.1.3.tar.gz 13.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for VIPER-LIMS 0.1.3
File Interpreter ABI Platform
VIPER_LIMS-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 24.2 kB

Release files / VIPER-LIMS-0.1.3.tar.gz

Download URL VIPER-LIMS-0.1.3.tar.gz
Size 13.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5547703e8c058bec22b7ab77c91710060bcdb2707d45852a3c6e749f491e172d
BLAKE2b-256 checksum
How to use checksums
d2af2dfdf8707fd2de22f10002cc8c3bdc2e9cf062f190a2f36420c650671139
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.5

Release files / VIPER_LIMS-0.1.3-py3-none-any.whl

Download URL VIPER_LIMS-0.1.3-py3-none-any.whl
Size 10.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b9d95f5d9887d410475c4789440c44ac29ee0402e625b4821be322f0ecbcc1bc
BLAKE2b-256 checksum
How to use checksums
2f8b29b8fa2d1e09a8f8adbd4fdc01c37789a1fd4d4682688515f88bcb447423
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.5

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page