Giter Club home page Giter Club logo

chemios's Introduction

Chemios Framework ReadMe Banner

CircleCI Documentation Status

Contents

πŸ‘¨πŸΎβ€πŸ”¬ Why chemios?

The Problem

Laboratories have a lot of equipmentβ€”pumps, spectrometers, incubators, etc. One laboratory's equipment is usually worth millions of dollars.

Despite their price tag, these devices rarely have simple software interfaces. So, monitoring them remotely or integrating them into automated experiments is difficult.

We looked at the existing solutions, and we were not satisfied. Tetrascience is a paid monitoring platform that is unaffordable for most labs. Labview has been used to automate lab equipment (see Epps et al., Reizman et al., or Dragone et al.). However, LabView licenses cost $5000 annually. ThermoFisher Cloud is the most promising solution, but it only works with a limited number of Thermofisher products.

The Solution

The Chemios Framework is a simple, open-source (i.e. FREE) software package for laboratory automation and monitoring. It is easy-to-use and extensible. It currently works with pumps, spectrometers and temperature controllers. And, the list of equipment will continue to grow (see Compatible Equipment) through an open source community.

The framework is written in python (the unoffical language of science) and actively maintained. We are looking for which equipment to automate next; please vote for what equipment you'd like to see with what you would like to see!

πŸ› οΈ Installation

Follow the steps below to design and run your first experiment in minutes.

  1. Install python (version 3 or above) if you haven't already. If you are using Windows, it is recommended to install python in the cygwin terminal.
  2. Download this repository (via the green button above) or clone it:
    $ git clone https://github.com/Chemios/chemios.git
  3. Enter into the root of the repository directory and run:
    pip install -e .;pip install -r requirements.txt

πŸ‘ Examples

Here is a how you'd use chemios to run a pump in an automated fashion.

from chemios.pumps import Chemyx
from time import sleep
import serial

#Set up serial port for communciation with pump over USB
ser = serial.Serial(port='ttyUSB0', timeout=1, baudrate=9600)

#Connect to a Harvard Apparatus PhD Ultra
C = Chemyx(model='Phd-Ultra', ser=ser, 
           syringe_manufacturer='Hamilton', syringe_volume=10)

#Set the flowrate to infuse at 100 microliters per minute
rate = {'value': 100, 'units': 'UM'}                   
C.set_rate(rate=rate, direction = 'INF')

#Run the pump for 5 seconds
C.run()
sleep(5)

#Stop the pump
C.stop()

πŸ“‹ Documentation

You can find documentation for the chemios framework here. More examples will be added soon.

βš™οΈ Compatible Equipment

  • Chemios currently works with the following types of devices:

    • Syringe Pumps: Harvard Apparatus, Chemyx, and New-Era
    • Spectrometers: Ocean Optics
    • Temperature Controllers: Omega CN 9300 Series
  • Please vote for what equipment you'd like to see with what you would like to see!

  • Roadmap:

    • Finish unit testing syringe pumps (May 2018)
    • Add create-device script for easily creating a device (May 2018)
    • Publish package on PyPI (June 2018)
    • Create experiments module for automating (June 2018)
    • More to come based on your input.

🎁 Contributing

We ❀️ contributors! The Chemios Framework came out of a senior design project at NC State and is now maintained by Kobi Felton @marcosfelt.

We are looking in particular for people to extend the framework to work with more types of laboratory equipment. Feel free to email Kobi if you're interested. If you already have some changes, please submit a pull request.

chemios's People

Contributors

marcosfelt avatar sgbaird avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

chemios's Issues

Instrument/Instrument-type Templating Engine

Problem: Currently, creating a new instrument is time-consuming and error prone; you might forget to add the new instrument to the subpackage level in init.py or not use a consistent interface across all instruments of a certain type.

Solution: As a developer, I would like a script that creates the proper folders, files, etc for a new instrument type (e.g., pumps) or instruments (e.g., Harvard Apparatus). My thought is that the folder structure should be something like this:

chemios/
   __init__.py
   pumps/ 
       __init__.py #Import classes from individual pumps to subpackage level
       _base_pump.py  #Contains abstract base class that all pumps must inherit
       {{cookiecutter.pumpname}}.py  #Contains template for all pumps.
       Chemyx.py 
       HarvardApparatus.py
       NewEra.py 
    temperature_controllers/
       ....same thing

For a new instrument type, the script would create a directory called the name of the instrument type. Inside the directory, the script would create a base{instrumenttype}.py and a template file. The _base file would contain the abstract base class (ABC)that determines which methods each instance of that instrument must implement. For example, the abstract base class for a pump will probably look something like:

from collections import ABC

class pumpABC(ABC):
     @abstractmethod
    def set_rate(rate, direction):
         pass

    @abstractmethod
    def run():
         pass   

Each pump will inherit this ABC and be required to implement the set_rate and run methods.

The template file, which is named using Jinja syntax, could be copied and the name of the pump substittuted by cookiecutter. This file will already have the abstract base classes ready to implement, making the setup process less error-prone.

An promising work

Dear,
Now I am trying to control my NE1000 pump and find chemios occasionally. I believe it's a promising framework. My major is Biomechanics and need to control many equipments in my lab. I will read chemios' documents in detail and contribute to this project. Of course, it's most likely that I need your help later!

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.