PlateMaps.jl
PlateMaps places nodes on plates. Given a set of nodes and the edges that relate them, it decides which well on which plate each node occupies. It is the placement half of plate scheduling in CHESS.
The relationships between nodes, such as which run needs which controls and which runs are duplicates, belong to the separate package RunMaps. PlateMaps has no notion of a run or a control. Its core type, PlateMap, records which node occupies which well.
Core type
struct PlateMap{T}
wells::BitMatrix # which grid cells are usable
occupant::Matrix{Union{Missing,T}} # which node sits in each well
endT is the type that identifies a node. It is chosen by the caller and matches the edges, for example an Int, a Symbol, or a RunMap node id. A PlateMap is the solution of a scheduling problem and does not describe the problem.
Ways to use PlateMaps
- Standalone.
mkedgebuilds edges andschedule_platemapplaces them. No other CHESS package is needed. - With
RunMaps. A package extension that is active when both packages are loaded addsschedule_platemap(wells, rm::RunMap, placeable_roles; kwargs...)and methods ofdescribe,plot, andDataFramefor aRunMap. - With
CHESSCore. Another package extension addswells_from_locationkindandschedule_platemap(kind::CHESSCore.LocationKind, ...). A registered plateLocationKindthen replaces a hand-builtwells::BitMatrix. This combines with theRunMapsextension, soschedule_platemap(kind, rm, placeable_roles; kwargs...)works when both are loaded.
The docstrings of the extensions (PlateMapsRunMapsExt and PlateMapsCHESSCoreExt) are not part of the API Reference, because Documenter does not load package extensions as it loads PlateMaps. The Quick Start shows how to use them. It also covers scheduling across several plates and the DataFrame and JSON interfaces.
Installation
PlateMaps is a package of the CHESS repository and is installed with it. Follow the CHESS installation instructions, then, in the clone, start Julia with the PlateMaps environment:
julia --project=PlateMapsand load the package:
using PlateMaps