Skip to content
/ plaid Public

PLAID (Plate Layouts using Artificial Intelligence Design) is a flexible constraint-programming model representing the Plate Layout Design problem.

Notifications You must be signed in to change notification settings

pharmbio/plaid

Repository files navigation

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 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. Whenever possible (if the total number of controls falls below a given threshold), controls are separated by at least 2 wells 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 the 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 and Practice of Constraint Programming – CP 2007. pp. 529–543. Lecture Notes in Computer 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.

About

PLAID (Plate Layouts using Artificial Intelligence Design) is a flexible constraint-programming model representing the Plate Layout Design problem.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published