Giter Club home page Giter Club logo

plaid's Introduction

PLAID: Plate Layouts using Artificial Intelligence Design

License Project Status: Active – The project has reached a stable, usable state and is being actively developed. GitHub Repo stars

PLAID is a flexible constraint-programming model for creating highly-effective microplate layouts. PLAID was developed with the goal of helping researchers plan well-designed experiments by creating robust microplate layouts1 and thus improving the quality of the data obtained from an experiment. A web version is available at plaid.pharmb.io.

PLAID is easy and straightforward to use. The current model allows:

  • Choosing how many outermost rows and columns should be left empty in order to reduce errors due to the edge effect.
  • For each compound or combination thereof:
    • all concentration levels of a given replica appear on the same plate.
    • each concentration level can be constrained to appear on a different row and column.
  • The replicated compounds and combinations can be constrained to appear on the same plate or a different plate.
  • For each type of control and concentration, the difference in number between plates is at most 1.
  • Controls of the same kind are separated by at least 1 well in any direction.
  • Empty wells are balanced across the plate together with controls.

Using PLAID does not require any programming knowledge. Users just need to write down the necessary information such as number of compounds, combinations, controls, etc in a simple text file and click run!

The output is a list in CSV format containing plate ID, well, content (compound, combination or control), concentration, and latex name, meant to be used as input for automatic tools. (TODO: visualize the layout using latex)

We believe PLAID is the first attempt to use constraint programming to design microplate layouts. Due to the use of MiniZinc,2 a high level constraint modelling language, PLAID is highly customizable.

Table of Contents

Installation and Usage

  • Download and install MiniZinc.
  • Clone this repo OR download plate-design.mzn, layout_predicates.mzn, and empty-file.dzn.
  • Fill in the specific details of your experiment in a empty-file.dzn. Alternatively, you can download and modify any of the example .dzn files in /regression-tests. (TODO: add an example input file in JSON)

Using the MiniZinc IDE

  • Open both plate-design.mzn and your .dzn file (if you have one) using the MiniZinc IDE
  • In the dropdown menu called "Solver configuration", located in the top middle area of the MiniZinc IDE, select Gecode3 as solver (Do not select Gecode Gist, which is used for debugging).
  • Click the "Run" button, located to the left of "Solver configuration".
  • In the popup window, you can either select a data file (you can only see those that are open in the IDE) or enter all parameters by hand. Note that you need to scroll down inside the popup to be able to type in all the values.
  • Optional: you can change the random seed to obtain a different layout for the same input data under "MiniZinc/Solver Configuration/Show configuration editor...".

Using the command line

TODO: add more info here

$ minizinc --solver Gecode plate-design.mzn pl-example01.dzn

Contact

This project is coordinated by Maria Andreina Francisco Rodriguez (@andreina-francisco) and Ola Spjuth (@olas) and it is part of the research work at the Pharmaceutical Bioinformatics Research Group, Department of Pharmaceutical Biosciences, Uppsala University, Sweden.

Got ideas for improvement? We would love to hear about your suggestions!

Citation

The following manuscript in Artificial Intelligence in the Life Sciences can be used to cite this project:

M. A. Francisco Rodríguez, J. Carreras Puigvert, and O. Spjuth. Designing Microplate Layouts Using Artificial Intelligence, Volume 3, 2023. DOI: 10.1016/j.ailsci.2023.100073 [PDF]

@article{PLAID2023,
	author = {Francisco Rodr\'iguez, Mar\'ia Andre\'ina and Carreras Puigvert, Jordi and Spjuth, Ola},
	title = {Designing Microplate Layouts Using Artificial Intelligence},
	year = {2023},
	doi = {10.1016/j.ailsci.2023.100073},
	URL = {https://doi.org/10.1016/j.ailsci.2023.100073},
	journal = {Artificial Intelligence in the Life Sciences},
	volume = {3}
}

Other Publications

M. A. Francisco Rodríguez, and O. Spjuth. A Constraint Programming Approach to Microplate Layout Design In: J. Espasa and N. Dang (editors), Proceedings of ModRef 2020, the 19th International Workshop on Constraint Modelling and Reformulation, held at CP 2020, September 2020. [PDF] [Slides] [Video]

References

1: M. A. Francisco Rodríguez, and O. Spjuth. A Constraint Programming Approach to Microplate Layout Design In: J. Espasa and N. Dang (editors), Proceedings of ModRef 2020, the 19th International Workshop on Constraint Modelling and Reformulation, held at CP 2020, September 2020.

2: Nethercote, N., Stuckey, P.J., Becket, R., Brand, S., Duck, G.J., Tack, G.: MiniZinc:Towards a Standard CP Modelling Language. In: Bessière, C. (ed.) Principles andPractice of Constraint Programming – CP 2007. pp. 529–543. Lecture Notes inComputer Science, Springer, Berlin, Heidelberg (2007)

3: Gecode Team: Gecode: Generic constraint development environment (2019), available from http://www.gecode.org

License

PLAID has an Apache 2.0 LICENSE. The PLAID team accepts no responsibility or liability for the use of PLAID or any direct or indirect damages arising out of its use.

plaid's People

Contributors

andreina-francisco avatar christaringers avatar gustavbjordal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

plaid's Issues

no output

Hi, I try to generate a layout with 49 compounds (2 replicates, 3 doses), 5 ref compounds (2 replicates, 3 doses) and 20 DMSO controls. PLAID doesn't generate a layout.

No output / returns to "Submit form" page

Thanks for creating this!

The app does not produce an output when provided the attached config (which was generated by app). It shows "Your plate layout is being calculated. This process can take several minutes..." and then returns to the previous page.

config.json

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.