Life scientists have a need for making their work more efficient, cost-effective, and reproducible. The ongoing reproducibility crisis underscores the need for efforts to improve and transform existing methods, and the normative 10-15 years and $2.6 billion cost to develop new life-saving drugs is harrowing.
This dissertation consists of two parts that aim to partially address these concerns: the first reviews programmable microfluidic labs-on-a-chip (pLoCs), which have been widely promised to solve issues with human error and resource waste when used for biochemical experimentation (assays). Despite touted advantages, existing pLoCs are unwieldy to operate, requiring manual translation of assays to sequences of electrode actuations to control their operation. Progress on high-level languages for pLoCs is encouraging, but back-end compiler support is lacking. This part provides solutions to fill in gaps between existing languages and pLoCs, allowing would-be adopters to translate their existing workflows to utilize these devices. Namely, it details (1) abstractions necessary for translating and compiling assays featuring time-constrained reactions, (2) optimizations that reduce waste, decrease latency, and---perhaps most importantly---enable targeting the very small surfaces of existing devices, and (3) a strategy for statically compiling and executing assays featuring pre-compiled functions, showcased on a real-world pLoC.
The second part introduces MediSyn, a pharmaceutical research framework providing abstractions for building systems for discovering, synthesizing, and verifying safe drugs. MediSyn implements a superoptimizing search utilizing a Markov chain Monte Carlo strategy over a candidate space of drugs specified as a probabilistic context-free grammar (PCFG). Back-end modules (for candidate synthesis and evaluation) provide abstractions for connecting to remote cloud labs, local execution on pLoC(s), or manual entry when work is carried out on a benchtop. A proof-of-concept is presented as PepSyn, which implements two front-ends: (1) a regex-style domain-specific language (PepSketch) that takes inspiration from sketch-based syntax-guided synthesis, and (2) a user-interface that harnesses techniques used in natural language processing (PepGen) in the programming-by-example paradigm.