The advent of easy-to-use open source microcontrollers, off-the-shelf electronics and customizable manufacturing technologies has facilitated the development of inexpensive scientific devices and laboratory equipment. In this study, we describe an imaging system that integrates low-cost and open-source hardware, software and genetic resources. The multi-fluorescence imaging system consists of readily available 470 nm LEDs, a Raspberry Pi camera and a set of filters made with low cost acrylics. This device allows imaging in scales ranging from single colonies to entire plates. We developed a set of genetic components (e.g. promoters, coding sequences, terminators) and vectors following the standard framework of Golden Gate, which allowed the fabrication of genetic constructs in a combinatorial, low cost and robust manner. In order to provide simultaneous imaging of multiple wavelength signals, we screened a series of long stokes shift fluorescent proteins that could be combined with cyan/green fluorescent proteins. We found CyOFP1, mBeRFP and sfGFP to be the most compatible set for 3-channel fluorescent imaging. We developed open source Python code to operate the hardware to run time-lapse experiments with automated control of illumination and camera and a Python module to analyze data and extract meaningful biological information. To demonstrate the potential application of this integral system, we tested its performance on a diverse range of imaging assays often used in disciplines such as microbial ecology, microbiology and synthetic biology. We also assessed its potential use in a high school environment to teach biology, hardware design, optics, and programming. Together, these results demonstrate the successful integration of open source hardware, software, genetic resources and customizable manufacturing to obtain a powerful, low cost and robust system for education, scientific research and bioengineering. All the resources developed here are available under open source licenses.

Competing interests: Authors TCM and RHP contributed to this work under employment by Backyard Brains, a company that develops and distributes open source scientific equipment. Backyard Brains worked on this project under support of the OpenPlant fund. This does not alter our adherence to PLOS ONE policies on sharing data and materials. Additionally, there are no patents, products in development or marketed products to declare.

Funding: We would like to thank the funders of this study: OpenPlant Fund for financial support to INN, TFM, RHP, JEK, TCM, TJR, and FF; CONICYT Fondecyt Iniciacion 11140776 for providing financial support to FF; CONICYT Fondecyt Iniciación 11161046 for providing support to TJR; Fondo de Desarrollo de Areas Prioritarias (FONDAP) Center for Genome Regulation (15090007) and Millennium Nucleus Center for Plant Systems and Synthetic Biology (NC130030) for providing financial support to FF; CONICYT Fondecyt Regular 1150430 for providing financial support to JEK and Backyard Brains for providing support in the form of salaries for TCM and RHP. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. The specific roles of these authors are articulated in the ‘author contributions’ section.

Data Availability: All sequence and images files are available from the Open Science framework database ( https://osf.io/dy6p2/ ). All the documentation for hardware is available at Docubricks ( http://docubricks.com/viewer.jsp?id=701517893260717056 ). Code is available from GitHUB ( www.github.com/synbiouc/fluopi ).

Copyright: © 2017 Nuñez et al. This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.

Here, we combined low-cost color cameras, off-the-shelf electronics, inexpensive acrylic filters, open-source software, easy-to-use genetic resources, and recently developed long Stokes shift fluorescent proteins to create an integrated imaging system for multiple fluorescence signals from a single excitation wavelength ( Fig 1 ). The device was designed to allow imaging at different scales, ranging from a single bacterial colony (~500–1000 μm) to entire petri dishes (~10 cm), scales not often covered by commercially available devices. We explored the applications and limitations of this system in a series of diverse experimental setups that required spatio-temporal tracking of multiple fluorescence signals. We demonstrate the value and robustness of our system for low cost science, technology, engineering and mathematics (STEM) education, scientific research and bioengineering. All the resources developed here are available under open source licenses.

A broad series of open source digital microscopes and imaging devices have been created (e.g. [ 16 – 20 ]). Some of these include advanced features such as light-sheet illumination [ 21 , 22 ], two photon scanning [ 23 ], a motorized stage [ 24 , 25 ], optogenetic stimulation [ 26 ], cell phone adaptability (e.g. [ 27 – 31 ]), wireless connectivity [ 32 ], and cost as little as US$1 [ 33 ]. Open source devices for in vivo fluorescence imaging of whole organisms and cell populations are of special interest for spatio-temporal studies [ 26 , 34 , 35 ]. Fluorescence imaging has traditionally relied on broad-spectrum illumination systems, such as mercury lamps, that require channel separation for multicolor imaging. This is usually achieved by switching filters, which involves moving mechanical parts that complicates designs and can cause unwanted vibrations in imaging mainframes. One alternative is to use multiband filters and switch between different wavelength lasers or multiple Light Emitting Diodes (LEDs) whose output can be modulated in microseconds to excite different fluorophores consecutively [ 36 ].

Fluorescence imaging has become an essential tool for research and education in biological sciences and bioengineering. However, instrumentation for fluorescence imaging is expensive and access to software is often restricted, which imposes a high barrier for democratizing its usage outside academic labs and wealthy research institutions. Open hardware and free/libre and open source software (FLOSS) provides the tools for fabricating these devices at a much lower cost and with better adaptability. The advent of easy-to-use microcontrollers, off-the-shelf electronics and customizable manufacturing technologies such as 3D printers and laser-cutting machines, has given rise to a diverse community of open hardware developers, users and tinkerers. This ethos has facilitated the development of inexpensive scientific devices and laboratory equipment [ 1 – 4 ]; such as PCR thermocyclers [ 5 ], photometric sensors [ 6 ], a quartz crystal microbalance [ 7 ] and neuroscience instrumentation [ 8 – 10 ], among many others [ 11 ]. The use of online platforms for project documentation and sharing [ 12 – 14 ], along with the implementation of collaborative practices borrowed from the FLOSS community, is enabling crowdsourced development of advance instrumentation (e.g [ 15 ]). These modes of development are lubricated by licenses that guarantee freedom to access, use, modify and distribute source code, design files and derived works.

(A) kymograph of the pixel signal in the central slice of an example colony. The x marks show the radius estimated for each time and the red line is the radius value obtained from a fitted area function (also red circles). (B) Colony area curve fitting for some example colonies. Dots are the estimated area from the standard deviation of the blobs and the continuous lines are the model fitting of this values (C) Mean fluorescence intensity signal over time for the example colonies. Lines were obtained by spline smoothing. (D) Colony growth rate estimation from the data for each selected colony. (E) Protein expression rate parameter estimation using the previous data.

A) Endpoint timelapse image (see S4 Movie ) of a plate with growing colonies of three different strains, each one expressing a different fluorescent protein. Scale bar = 1cm. B) Colony identification (label them with an ID), by getting position in the image and final size. C) Segmentation of regions of interest (ROIs) defined by the standard deviation of the identified blobs. One example of each strain is shown.

(A) Image of ISO-GRID permeable membrane used in experiments shown in B to D. Scale bar, 1000 μm. (B) Schematic representation of diffusion assay for E. coli cells producing (“sender cells”) and responding to (“receiver cells”) C6 and C12 homoserine lactones plated on permeable membranes printed with hydrophobics grid lines. (C) Images of a time-lapse experiment of cell responses to C6 and C12 homoserine lactones. Images were taken at 12 and 28 hours after plating. Cells were grown at 37°C outside the device. Vector co-transformation for: strong C12 receiver, pTet_32 LasR + pLas8O; weak C12 receiver, pTet_32 LasR + pLas33O; strong C6 receiver, 1LU2 + pLux34G; weak C6 receiver, 1LU2 + pLux54G; strong C6 sender, Std34BeRFP + pLac34LuxI; weak C6 sender, Std34BeRFP + pLac54LuxI; strong C12 sender, Std34BeRFP + pLac34LasI; weak C12 sender, Std34BeRFP + pLac54LasI. See Table 1 for sequence information. Scale bar, 1000 μm. (D) Images at 48h after plating a mix of C6 and C12 sender cells (expressing mBeRFP, in red) and a mix of C6 and C12 receiver cells expressing sfGFP and CyOFP, respectively. ROH: pTet_32 LasR + pLas8O. (E) Colony-sectoring assay. Strains labelled with CyOFP1, mBeRFP and sfGFP fluorescent proteins seeded on agar LB plates in combinations of two (CyOFP1-mBeRFP, CyOFP1sfGFP and sfGFP-mBeRFP) or three (CyOFP1, mBeRFP and sfGFP) and tracked every 24h for 6 days. No post-editing has been applied to these images; only cropping and alignment. Scale bar, 500 μm.

(A) CyOFP1, hmKeima8.5, mBeRFP, mRuby2, mTFP1, sfGFP, mTurquoise2, and EYFP, with R0010 promoter and RiboJ 54 insulator-RBS treated with (right) and without (left) IPTG. (B) Representative image showing growing E. coli colonies expressing sfGFP, CyOFP1 and mBeRFP. (C) Schematic representation of Golden Gate one-step assembly for the construction of genetic systems from level 0 parts. (D) Schematic representation of combinations of promoter, ribosome binding sites (RBS), coding DNA sequence (CDS) and terminator that can be assembled with the standardized Golden Gate method. (E) Image of agar plates with streaks of E. coli expressing sfGFP, CyOFP1 and mBeRFP under J23101 promoter and different ribosome binding sites (RBS): BCD12; BCD8; BCD2; RiboJ54; B0034; B0033; and B0032. B0015 terminator was used for all the constructs. No post-editing has been applied to these images; only cropping and alignment.

Time lapses and experiments shown in Figs 4 and 5 were performed by mixing liquid cultures of the different strains transformed with mBeRFP, CyOFP1 and sfGFP (eg, 100 μl of each one), performing three consecutive 1:100 volume dilutions of the culture (pure or mixture) and plating this mixed culture on a LB agar plate. We have created a protocol online describing this experimental procedure in more details ( dx.doi.org/10.17504/protocols.io.jsucnew ).

An ISO-GRID membrane filter (Neogen corporation, 1600 Grid 0.45μm, 36 Grid; product #6802) was placed on top of LB agar plates, with the hydrophobic grid facing up. Bacteria co-transformed with the sender/receiver plasmids were grown at 37°C in LB liquid media to OD600 0.03 (~5 hours) and 0.5 μl of cell culture was pipetted within each well following arrangements that depend on the assays. We have created a protocol online describing this experimental procedure in more details ( dx.doi.org/10.17504/protocols.io.jsfcnbn ).

Cultures of the three TOP10 cells containing the different vectors were grown overnight and mixed proportionally. The culture mixture was diluted 1:100 or 1:10,000 and a 0.5 μl drop was placed in the center of a petri dish. Plates were then incubated at 37°C for 12 hours and imaged every 12 hours for 7 days at room temperature.

A 250 μl volume of LB medium was added to each transformation and incubated with shaking (250 rpm) at 37°C. The incubation time for the single transformation was 1 hour, after which a volume of 25 μl of transformed cells was plated in solid LB medium supplemented with antibiotics. In the case of co-transformations, the incubation time was 1.5 hours, after which 35 μl of transformed cells were plated on LB-agar supplemented with antibiotics. Plates were incubated at 37°C overnight (~ 12–16 hours) for colony formation.

The chemocompetent cells used for all the transformations were made by the CCMB80 method in E.coli Top10 (Invitrogen) (OpenWetWare: "TOP10 Chemically competent cells", 2013). Cells stored at -80°C were thawed on ice for 20 minutes. For single transformations, a 1 μl of plasmid stock (concentration ~ 1ng/μl) was added to 50 μl of chemocompetent Top10 E. coli. In the case of co-transformations, 100 ng total of each plasmid were mixed with deionized water to obtain a final volume of 6 μl, which were then added to 50 μl of chemocompetent Top10 E. coli. The cells were incubated for 25 minutes and heat-shocked at 42°C for 1 minute, after which they were incubated on ice for an additional 2 minutes.

All tests were carried out on E.coli Top10 (Invitrogen) grown at 37°C in LB medium. Media were supplemented with 1.5% m/v agar for assays on solid media. For inducer applications, we prepared a stock solution of 0.1 M IPTG, sterilized by 0.22 mm filter. Antibiotics were used as solutions of kanamycin (50 ug/ml) and carbenicillin (100 μg/ml).

All vectors were constructed by Golden Gate using BsaI (NEB) and T4 ligase (NEB). The acceptor vectors for Golden Gate assembly were constructed by Gibson Assembly. Nine level 0 vectors and one acceptor vector compatible with the CIDAR MoClo Toolkit (Addgene) were constructed by Gibson Assembly. The CIDAR MoClo Parts Kit was a gift from Douglas Densmore (Addgene kit # 1000000059). The PCR fragments were amplified using Phusion High-Fidelity ADN Polymerase (NEB) and purified using Wizard SV Gel and PCR Clean-Up System (Promega). The purification of all plasmids was performed using Wizard Plus SV Miniprep DNA Purification System (Promega). All the assembled vectors were checked by colony PCR and later sequenced commercially (Macrogen Inc.). See Table 1 for full description of genetic parts. All genbank files can be dowloaded from the following Open Science Framework link: https://osf.io/dy6p2/ .

Results

Hardware design To allow for full customization, the mainframe was developed as enclosures made of editable laser-cut 3mm acrylic pieces (S1 File). These can be easily stacked and shipped since they are mostly flat. The imaging device was assembled by holding together the acrylic plates with small 3D printed corner holders, designed to be used with standard nuts and bolts that can be replaced depending on local supply. All 3D printed parts were designed considering the FDM process: using mostly horizontal and vertical faces, low inclination angles and no “ceilings”, therefore no support structures were needed. The object architecture is fully modular (S1 File). The top module supports the Raspberry Pi 3 computer for camera control (Fig 1A) (S2 File). The top enclosure also provides support to the camera bed, height regulator and camera holder (S3 File). The camera holder also supports an acrylic emission filter in front of the lens and a focus adapter wheel for manual adjustable focus lens (Fig 1B and 1C). Recorded images are transmitted to the Raspberry Pi with a standard 15 pin (300 mm) ribbon cable. Height adjustment works with a standard bolt and nut mounted with a knob, which slides up and down tightens for fixation on the back plate of the module. The maximum height of the imaging system allows the camera module to get images as wide as the illuminated area at the base of the top module, designed to fit a 90mm standard petri dish. The adapter wheel at the lens permits correcting for focus when height is changed. Together, the top enclosure maximizes the use of space while providing light-blockage for complete darkness during imaging (Fig 1C). The 3D printed adaptor that encloses the camera module is detachable, allowing for standalone use, transforming the camera in a powerful microscope and visualizer by its own, not described in this project. The bottom module, inspired by open source blue transilluminators used for DNA electrophoresis gels [37], holds the illumination system composed of a matrix of 100 blue (470 nm) 5 mm LEDs. We designed a printed circuit board (“PCB”) to operate these LEDs, which also supports components for analog and digital on/off control (S4 File). For digital control, a TIP122 transistor was used, considering 3.3 volts for the Raspberry GPIO control. A regulable 12–24 volts power supply was chosen so the PCB required less components (using 5 LEDs in parallel for a resistor) and there would not be a need for additional security requirements (i.e. a fuse). The excitation filter is housed in between the top plates of this enclosure and is fastened between the top adjusting screws and the main mounting screws on the base (Fig 1B). This is a blue 3 mm acrylic that slides in from the front, allowing the filter to be exchangeable. The distance between this blue filter and the LEDs was optimized to obtain an even distribution of light on the diffuser that sits at top of the bottom module. Care should be taken to ensure an even distribution of light if redesign of the bottom module is needed (e.g. varying the height between LEDs and diffuser/blue acrylic). The top module mounts on the bottom module by sliding in from the front and secures with the top adjusting screws. Please see http://docubricks.com/viewer.jsp?id=701517893260717056 for detailed assembly instructions and full description of the pieces.

Genetic resources for simultaneous imaging of multiple fluorescent signals under single excitation/emission setup In order to obtain multiple fluorescent signals simultaneously from a single excitation wavelength and a fixed filter, we evaluated a series of fluorescent proteins potentially excitable at 470 nm and detectable with the amber filter (Fig 2A). We tested CyOFP1 [38], hmKeima8.5 [39], mBeRFP [40], mRuby2 [41], mTFP1 [42], sfGFP [43], mTurquoise2 [44], EYFP [45]. We took images at different camera settings and evaluated their performance. For full transparency, none of the images shown in this work was edited. We selected sfGFP (ex 485/em 510) and the long stokes shift fluorescent proteins CyOFP1 (ex 497/em 589) and mBeRFP (ex 446/em 611) since they showed distinguishable signals in colonies of Escherichia coli grown in the same plate (Fig 2B). mTurquoise2 and hmKeima8.5 did not show detectable signals (Fig 2A). All these fluorescent proteins, as well as all regulatory sequences (e.g. promoters, RBSes, terminators), developed in this work were created as modular parts standardized for fast, combinatorial and efficient fabrication of genetic constructs. In particular, we domesticated these components as “level 0” components following the CIDAR MoClo standards for Golden Gate assembly DNA assembly [45] (Fig 2C). This design also made our resources compatible with hundreds of parts distributed in other registries and labs (e.g. [46]). This method allowed us to combine the chosen fluorescent proteins with different regulatory elements (Fig 2D). We were able to test different ribosome binding sites (Fig 2D) and promoters (S1 Fig). In order to demonstrate the range of possible applications of our system, we tested different experimental setups using the Raspberry Pi camera software (RPI foundation). First, we imaged DNA electrophoresis gels loaded with different volumes of 1 kb DNA ladder; obtaining signal detection in the range of volumes often used in DNA gel electrophoresis (e.g. 4–6 μl) (S2 Fig). Next, we tested the detection of spatio-temporal fluorescent signals as a consequence of artificial cell–cell communication based on 3-oxo-C6- and 3-oxo-C12 homoserine lactones (HSLs). Bacterial cells that produce (i.e. senders) and respond to (i.e. receivers) homoserine lactones were plated within wells outlined by hydrophobic ink on permeable membranes (ISO-GRID membrane filters) (Fig 3A–3D). These grid membranes were placed on top of agar plates containing growth media (Fig 3A). This setup allows for cell containment in each well while permits the diffusion of the homoserine lactones through agar to neighboring wells (Fig 3B). Then, cellular responses to diffusive signals were tracked over time [47]. In order to provide resources that permit full flexibility in the construction of cells that produce and/or respond to these signals, we created level 0 parts for: i) LuxI and LasI enzymes, in charge of the synthesis of C6 and C12 homoserine lactones, respectively. ii) LuxR and LasR genes, in charge of binding and responding to C6 and C12 HSLs, respectively. and iii) pLux and pLas promoters, from which transcription is induced by LuxR/LasR in response to C6-HSL or C12-HSL respectively. With these tools, we created strong and weak senders and receivers of both signals and registered their behaviour in time (Fig 3C). The imaging system showed good contrast and permitted to track CyOFP1, mBeRFP and sfGFP fluorescent signals simultaneously. Moreover, this system allowed us to track and distinguish the responses of mixed populations of C6 and C12 senders/receivers (Fig 3D). Next, we evaluated an experimental design used in microbial ecology studies, colony-sectoring assay, in which a mix of bacterial strains is inoculated as a single drop on a petri dish and the dynamics of their growth registered in time lapse [48, 49] (Fig 3E). Strains labelled with CyOFP1, mBeRFP and sfGFP fluorescent proteins were plated in pairs and triplets. These plates were grown in a 37°C incubator and imaged every 24h over 6 days. Since the device is modular and customizable, we were able to use a shorter top module for the last image at 6 days that permitted a closer position to the plate (see hardware description). The system permitted good detection and discrimination of the three signals. All images were taken with the same settings (described in materials and methods). Under these standard conditions, the CyOFP1-mBeRFP combination showed some background noise in the last image. None of these images has been edited, with the aim of showing raw data produced by our system. These data demonstrate the utility of our system for experimental setups commonly used microbiology, synthetic biology and microbial ecology studies.

Open-source software for hardware control and data analysis We developed simple python code to operate hardware, run time-lapse experiments and store resulting image sequences (e.g. S1–S3 Movies), which is available via Github (https://github.com/SynBioUC/FluoPi; see folder “Hardware_control”). We also created an extensive Python module (fluopi) with functions for analyzing and visualizing these image sequences. We made extensive use of existing open-source projects Numpy, Scipy, Matplotlib, and Scikit-image, as well as the Raspberry Pi foundations python modules. Separately, we provide example Jupyter (IPython) notebooks containing code for analysis of time-lapse image series that contain detailed explanation of the analysis process. A simple tutorial notebook introduces the concepts used in loading images and processing them to extract biologically meaningful information (see “Image_processing.ipynb” in folder “Tutorials”). We also provide a simple tutorial notebook describing how to control the imaging hardware from Python (see “FluoPi_control_timelapse.ipynb” in folder “Tutorials”). Jupyter provides an intuitive and interactive way to run and develop Python code while immediately viewing the results. As such, these notebooks are ideal for teaching classes or as an introductory tutorial for those students new to programming. Below we show how this open source software is used to find the location of colonies, estimate their size, growth-rate, and fluorescence and from these data extract the rate of gene expression.

Images data management and colony slicing Timelapse image sequences of bacterial colonies expressing fluorescent proteins contain valuable data about growth, gene expression and possible inter-colony interactions. The first step in extracting this information is to process images to generate separate signals for each colony’s size and fluorescence. The images are composed of three channels—red (R), green (G), blue (B) -, each of which can contain different information about the cells and is managed separately. We created a Jupyter notebook to analyze timelapse images of growing colonies constitutively expressing different fluorescent proteins (Fig 4A, S4 Movie) as an example of the kind of data it is possible to obtain with FluoPi and the fluopi Python module. We provide a simplified tutorial demonstrating the principles and mathematical analysis behind the Python module (see “Colony_size_and_fluo.ipynb” in folder “Examples”). The first steps in the analysis involve data management, essential for teaching programming: reading the image files and organizing their data in arrays. Next image processing is introduced to remove the background signal, sum all the channel values over time for each pixel, and smooth the data with a gaussian filter. After this pre-processing a gaussian shape (“blob”) detector from skimage is used to find the position of each colony in the plate and assign labels to them (Fig 4B). With the standard deviation of these blobs it is possible to define square regions of interest (SROIs) where colonies are situated (Fig 4C) and allows management of each of them separately.

Growth and fluorescent expression rate of colonies From the data extracted from images as described above, it is possible to estimate the growth rate of each colony and the average constitutive gene expression rate of a fluorescent reporter, considering multiple colonies on a single plate. To get growth information—size (area) and growth rate (relative change in area) -, it is possible to approximate the colony size by the region expressing fluorescent signal. This size can be obtained by applying the gaussian blob detector to each SROI in all frames (i.e. time points), obtaining the colony radius/area over time (Fig 5A). The result is noisy, mainly at the beginning, and so we fit the sigmoidal area model in Eq (1) to the area values computed with the above radii (Fig 5B). (1) Then, as growth rate is defined by Eq (2), we are able to directly estimate the growth rate of the colonies with Eq (3) as shown in Fig 5D (2) (3) On the other hand, we show (see S5 File) that the fluorescent expression rate, proportional to protein expression rate, is given by: (4) Then, we need to compute the mean intensity signal per unit of area (I/A). To achieve this, we get the colony fluorescent intensity in each frame by summing the three channel values for each pixel inside its computed area. Then dividing by the total number of pixels within this area it is possible to get the mean fluorescent intensity in each time step (Fig 5C). These values were smoothed by applying a smoothing spline function (scipy.interpolate.UnivariateSpline), which allows to compute analytically its derivatives with respect to time. Finally, with all these values, we are able to characterize the fluorescent protein dynamics by estimating the fluorescent reporter expression rate (Fig 5E).