GithubHelp home page GithubHelp logo

chemos2.0's Introduction

ChemOS 2.0

License: MIT

ChemOS 2.0 is an orchestration framework for automating chemistry labs.

This repository contains code used in the creation of ChemOS 2.0, as well as data collected during development. https://chemrxiv.org/engage/chemrxiv/article-details/64cbe80adfabaf06ffa61204

There is also a demontstrative collection of simulators to showcase the functioning of ChemOS 2.0.

Output data for the machine's runs can be found in the folder "the-machine-data".

Output data for the closed loop can be found in the folder "closed-loop-data".

ChemOS 2.0 is currently under peer review. Additional changes to this repository's code following publication

NOTE: Specific implementations of ChemOS 2.0 require a unique customization of the architecture for a specific experimental setting. repository does not contain a complete package for immediate deployment

Contact

For all enquiries about the code, please contact [Malcolm] as [email protected] of the sila2 servers used by chemos to conduct a closed-loop experimental campaign.

This code is for demonstration purposes only and is meant to showcase the functionality of ChemOS 2.0

Installation of simulator code

Install The simulation demo code from source by either cloning this repository or downloading it as a zip file. All code for the simulations may be found in the folder ChemOS2.0-simulation

Once the repository is downloaded, you must use the nixos configuration, or open a nix shell as instructed in the README for https://github.com/malcolmsimgithub/ChemOS2.0/tree/master/nixos. You can also find instructions for installation of the database here.

IMPORTANT: this code assumes that postgresql is running on port 5432 ((default))

Once Postgresql is installed and you nix environment is configured, please make sure to fill out the script ChemOS2.0-simulation/dblogin.py as well as ChemOS2.0-simulation/streamlit/dblogin.py with your database login credentials. The default user and password for this code is "chemos"

def get_login():
    dbname = "chemos"
    dbuser = "chemos"
    dbpassword = "chemos"
    return dbname, dbuser, dbpassword

Usage of simulators

IMPORTANT: the simulators are primarily meant to showcase the functionality of SiLA2 as an interface for laboratory hardware. They are not meant for deployment or any real-world usage. The simulators allow users to send commands to virtual clones of the hardware used in the organic-laser campaign of the ChemOS 2.0 project. like their deployment counterparts, they utilize SiLA2 to receive and execute commands from ChemOS2.0, and stream output data back to ChemOS2.0. Whilst the SiLA2 servers for the simulators are all hosted locally on the same device, note that for the actual deployment, each SiLA2 server was hosted on a separate computer connected to its respective hardware. The simulators return (identical) sample data from each instrument, which is automatically logged in the database (which should be configured according to the instructions above).

Next, we can start of the sila2 servers:

cd ChemOS2.0-simulation
python start_sila_servers.py

To start the gui:

cd streamlit
streamlit run Hello.py

Finally, to run the "closed loop" using all of the simulators:

python laserworkflow.py

One can look at results in the database using psql. Data generated is dummy data and is identical for all parameters.

example job files to use with the GUI can be found in the folder ChemOS2.0-simulation/job_files

if a sila2 server crashes, one can restart the servers using the command once more. this will usually clear all of the folders and solve runtime errors.

python start_sila_servers.py

Screenshot 2023-10-30 at 11 49 53 AM

Web application for ChemOS 2.0. A:sidebar for toggling between instruments/features. B:job submission for the HPLC-MS. C:data visualiza- tion of the HLPC-MS’s job results.

Faulty simulators

The folder ChemOS2.0-simulation-errors contains code for modified HPLC and optics table simulators that can crash randomly. It aslo contains some scripts that demonstrate error handling in workflows These are intended to demonstrate the error handling capabilities of ChemOS 2.0

Parallel simulators

The folder ChemOS2.0-simulation-parallel contains code for two HPLC simulators, and a script designed to showcase the job parallelization capabilities of ChemOS 2.0 using python's asyncio library.

echem data

Note that we have included a folder called "echem_data". This code is a part of a thesis that incorporates this project, and is not directly related to the ChemOS 2.0 white paper.

License

Distributed under the MIT license. See LICENSE for more information.

Contact

Please reach out to Malcolm by email if you have questions.

chemos2.0's People

Contributors

malcolmsimgithub avatar spgarcica avatar

Stargazers

antony1029 avatar Mitsunori Nakamoto avatar  avatar Mengjia Zhu avatar  avatar Anish Rao avatar Sterling G. Baird avatar bluestonebasilica avatar Matterhorn Studio avatar Søren Bertelsen avatar Colloidal Systems Chemistry avatar

Watchers

 avatar

chemos2.0's Issues

README improvements

I'm interested to see where ChemOS 2.0 goes, and I think there's a lot of potential here. There are some things that I think should be clarified in the README, which would help visitors to get a better sense of the purpose and capabilities of the software.

  • Does this repo contain all the necessary code to run ChemOS 2.0 in full?
  • Does this repo reflect the latest updates to ChemOS 2.0, or is it being developed internally (e.g., with occasional pushes to the repo)?
  • Some context to the simulator should be provided. In addition to a brief description, this could be linked back to specific sections or figures in the manuscript. Likewise, perhaps an introductory figure from the manuscript could be placed into the README?
  • I think the ChemOS README should point to ChemOS 2.0 and vice-versa. ChemOS 2.0 should also contain a link to the preprint.
  • In the simulator usage section, one or two key images of the GUI should be included

Also:

  • Are there any video demos or any follow-along tutorials of the code?

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.