Figures and data

BuzzWatch: an open platform for long-term mosquito flight activity monitoring.
A. Cartoon of the set-up with the minimal set of elements required to monitor mosquito flight activity over weeks. B. Pictures of transparent acrylic cage with Raspberry Pi and Camera NoIR V2 on the bottom. See Supp. Fig1 for details and assembly instructions. C. Flow chart of BuzzWatch pipeline for constructing the complete set-up and analyzing video data. Step-by-step guides are available in a dedicated website (https://theomaire.github.io/buzzwatch/). A GUI python app (https://github.com/theomaire/BuzzWatch_app_v2) facilitates analysis from raw .mp4 video files to comparisons between experiments, and statistical analysis (see Fig 2-4.) D. Left: Raw snapshot image from a typical .mp4 movie as registered by the Pi Camera. Center: Overlay of the image with identity tracker, blue circles correspond to resting mosquitos, red circles indicate flying mosquitoes. Filled black to red circles indicate position of flying mosquito in the previous 20 frames. Right: Overlay of camera image showing a 37 second-long flight trajectory of a single mosquito. Line color indicates time. E. Top: Graph showing the instantaneous fraction of flying mosquitoes of a cohort of 40 Ae. aegypti females for 24 hours (moving average over 20 minutes). Bottom: Horizontal bar showing light intensity profile inside the set-up over a 24 hour cycle. We use the Zeitgeber time notation and the light cycle is programmed to have 12 hours of white light gradually changing (from ZT0 to ZT12), and12 hours of complete darkness (ZT12 to ZT24) and mimicking real sunlight variation. By convention we use a periodic boundary notation for ZT times before ZT0, such that e.g. ZT-8 is the same as ZT16. F. Graph showing the instantaneous fraction of flying mosquitoes of a cohort of 40 Ae. aegypti females for 31 days (moving average over 60 minutes). G Statistics of flight trajectories from the same experiment as 1E. Histograms showing the average flight speed (green bars, top panel) and the duration of flight (blue bars, bottom panel) of n = 47, 190 flight trajectories. For flight speed (top graph), the average speed is computed from first averaging instantaneous speed over single trajectories and then averaging over all trajectories. As we use 2D trajectories, the average value of 9.1cm/sec does not correspond to the “real” flight speed, but is rather a 2D approximation. Assuming a uniform distribution over the height of the cage and isotropic movement, the 3D flight speed can be approximated by applying a factor

Mosquito strains used in this study

BuzzWatch parts list

BuzzWatch uncovers distinct flight behavior patterns of Aedes aegypti subspecies.
A. Fraction of mosquitoes flying, 20min moving average, dashed lines are std over 10 consecutive days. Aedes albopictus ABP, Aedes aegypti KPP, Anopheles stephensi (Sind-Kasur Nijmegen strain (Feldmann and Ponnudurai 1989)). B. Map of the initial sampling location of Aedes aegypti colonies, circles (for Aaa) and squares (for Aaf) represent the original sampling location.C. Generalized linear mixed model (GLMM) statistical test on fraction flying at different time of the day (1 hour interval) between Aaa and Aaf groups (each composed of 5 colonies monitored for 10 days with 1-3 replicates). Different days are interpreted as independent variables. Independent tests were performed for each hour of the day. (Top) z-score for each test as function of time of the day. (Middle) p-value associated with the z-score. (Bottom) 20 min moving average, averaged over 10 days for each colony. Blue line shows the average for Aaa colonies (KPP-PHN-GUA-COL-CAY), and red line the average of Aaf colonies (RAB-KUM-KED-KAK-ZIK). D. Activity profiles averaged over 10 days for each colony, dashed lines are std over 10 consecutive days. E. Summary heatmap of GLMM test similar to C (average over 1-hour bin, Aaa vs Aaf) for 6 different variables: “fraction flying” is the instantaneous fraction flying as in 1; “Day Rel. fraction flying” is the instantaneous fraction flying normalized to the cumulative sum of fraction flying during a day (day-relative); “Sugar feeding” is the difference between the fraction of mosquito resting on the sugar feeder and the fraction of mosquito on a surface of similar dimension without sugar feeder; “Flight duration” is the average duration of flight tracks in seconds; “Flight speed” is the average speed of flight tracks in cm/second. Color indicates the value of z-scores (purple for positive, green for negative), only z-scores corresponding to a p-value < 0.05 are displayed. F. Scatter plot of flight duration vs. fraction flying for the period ZT2-ZT10. Each dot corresponds to the value of a single day of a single cage of a single colony. Color code for the colonies as in B-D. Pearson correlation coefficient ρ = 0.51, p-value <0.001. Dots with error bar correspond to average over all the data points from a given colony, error bar is standard deviation. G. PCA dimension reduction, 1 point represents 1 day of 1 replicate of 1 colony. Aaf are circles and Aaf are squares. Data used for dimensionality reduction are (mean; std; min; max) of the fraction flying computed in 20 minute bins. H. Linear dispersion analysis over the PCA-reduced coordinates (PC1 and PC2 only) to find the direction (dashed red line) separating Aaa (blue) from Aaf (red) points. I. Relative contribution of features from specific time intervals to the direction separating Aaa from Aaf best in PCA-reduced space (H).

BuzzWatch allows measuring the long-term effect of physiological perturbations.
A. Fraction of flying mosquitoes blood-fed at day 6 (red line) or not blood-fed (black line). B. Barcode plot of GLMM for different variables: variable names are identical to 2E. Color indicates the value of z-scores (purple for positive and. green for negative) and only z-scores corresponding to a p-value <0.05 are displayed. Data from day 10 to 19, non-blood fed control is the baseline. C. Day 10-19 average activity profile of blood-fed (red) and not blood-fed (black) mosquitoes. Shaded area is std. error of 2 replicate cages. D. Temporal heatmap for GLMM z-score (top) and p-value (bottom) on the day-relative fraction of flying mosquitoes. Columns are time of the day interval (1 hour), rows are median day interval (over a 5-day moving window). For instance, for median day 2.5 and hour ZT0, a GLMM fit was performed on data from day 1-5 with day-relative fraction flying average from ZT-1 to ZT0. In the bottom heatmap, the gradient is scaled so that p<0.01 appears in red, p = 0.01 in white and p>0.01 in blue. 1 star indicates 0.01<p<0.05, 2 stars p<0.01. E. Average fraction flying over the entire day (top), day-relative fraction flying between ZT1-ZT5 (middle) and ZT10-ZT11 (bottom) for each day, blood-fed (red) and control (black) condition. Dots are average over 2 replicate cages and error bars indicate std over these two cages. F. Schematic of egg-laying experiment, see Fig.S7 and methods for detailed protocol. G. Barcode interval based GLMM plot, baseline is “no egg laying” condition. H. Scatter plot comparing the average day-relative fraction flying between ZT1-ZT5 (top) and ZT10-ZT11 (bottom) over 10 days for blood-feeding and egg-laying experiments. Filled dots are average over 10 days, transparent dots are individual days, error bar indicates standard deviation over 10 days. Black is control not blood-fed, red is blood-fed – eggs not laid (from blood-feeding exp); Orange is blood-fed and eggs not laid (from egg-laying exp.), purple is blood-fed and eggs laid (from egg-laying exp.)

BuzzWatch reveals long-term effects of environmental perturbations.
A. Fraction of flying mosquitoes of a representative experiment, 20 minutes moving average (black line). B. Top, multi-day average, in 12L12D light cycle regime (from day 3 to 12, black line). Shaded area represents std over days. Bottom, visible light intensity (blue line). At ZT0, light intensity gradually increases until ZT3, at ZT9 light intensity gradually decreases until turning off at ZT12. C. Top, multi-day average, in 20L4D light cycle regime (from day 13 to 23, orange line). Shaded area is std over days. Bottom, visible light intensity (blue line). At ZT0, light intensity gradually increases until ZT3, at ZT17 light intensity gradually decreases util turning off at ZT20. D. Barcode plot (variable same as in Fig.2E) showing changes in response to shifting the photoperiod from 12L-12D (baseline) to 20L4D. Nine days were analyzed for each condition. Only z-score for p-value<0.05 are shown. E. Average fraction of mosquitoes flying over a day, averaged between 2 replicate cages, error bars are std. deviation between 2 replicate cages. Black (rsp. orange) dots indicate days in 12L12D (rsp. 20L4D) photoperiod.F. PCA dimension reduction on day vectors, grey are days in 12L-12D and orange are days in 20L-4D. Day numbers are indicated next to each dot. G. Linear dispersion analysis on PCA-reduced coordinate on two groups 12L-12D (purple) and 20L-4D (yellow). Red dashed line indicates the direction of the LDA axis in PCA coordinates, blue dashed line indicates the direction of the axis orthogonal to LDA axis. H. Relative contributions of LDA axis (red dashed line) or orthogonal axis (blue dashed line) to hour intervals.

BuzzWatch allows investigating response to pulses of host-cues at different times of the day.
A. Delivery of host-cue pulses is controlled by a raspberry pi, with the following sequence : (1) opening of the solenoid valve for 5 minutes, CO2 goes from the CO2 canister to a mixing box (increasing the concentration from 400ppm to 1000ppm) (2) Mix of Air+CO2 is pumped for 30sec from the mix box to the cage containing mosquitoes, at approximately 2.5 liter/minute (equivalent to 1/3 of the cage volume). (3) Peltier placed 5mm behind the surface of the cage is heated at 37°C for 4min30sec. B. Response to a single pulse of host-cues (CO2 and heat) starting at t = 0min and finishing at t = 5min (brown bar), for a cage of 40 unfed Ae. aegypti females (8-10 days old at the start of the pulse and kept in the cage with 12L12D for 5 days). Moving average with 3-second window of the fraction of mosquitoes either flying (blue line); on the heated surface (orange line, from orange region of interest (roi) in 5D); on the sugar feeder (green line, from green roi in Fig.5D) and control surface (black line, from black roi in Fig. 5D). Black lines in the middle and bottom graph are the same (control for reference) C. Snapshot images of movies, before the initiation of a host-cue pulse sequence (top, t =-2min) and during the pulse (bottom, t =+1min45sec). Colored rectangle overlayed indicates the roi used to track the number of mosquitos on the heated surface (orange); the sugar feeder (green); control surfaces (black). D. Timing of host-cue pulse stimulation. (brown bars, CO2+heat), 4 times per day over 9 consecutive days, at night times (ZT-8, ZT-4) and at day times (ZT4, ZT8). Three replicate cages of 40 Ae. aegypti females. Bottom, fraction flying averaged over 32 days from Fig.1, Ae. aegypti not stimulated by host-cue pulses. E. For each host-cue pulse, fraction of flying and fraction on the heated surface (or control) was averaged with 10sec rolling window. Then the max between t=0 (the beginning of the pulse) and t = 10min (5min after the end of the pulse) was computed for the fraction flying (blue), the fraction on the heated surface (orange) and the fraction on the control surface (black). The transparent dots are max value of a single pulse, different shapes represent different replicate cages; plain dots with black edges are average of all the pulses at a given time over 9 days for a given replicate. Horizontal black line is the average over the 3 replicate cages for a given pulse time, error bars are s.e.m. One-sided t-test on averages per replicate (n=3) for flight activity (left) ZT-8 - ZT-4 p-value = 0.439; ZT-8 - ZT4 p-value = 0.010; ZT-8 - ZT4 p-value = 0.0006; ZT4 - ZT4 p-value = 0.074. For difference between heated (orange) and control surface (grey) (right) : ZT-8 : p-value = 0.062; ZT-4 : p-value = 0.019; ZT4 : p-value = 0.0017; ZT4 : p-value = 0.0002; For difference between heated surface at different times (orange) (right) : ZT-8-ZT-4 p-value = 0.029; ZT-8-ZT4 p-value = 0.002; ZT-8-ZT4 p-value = 0.002; ZT4-ZT4 p-value = 0.184. F. Response to host pulse for a single replicate cage, curves are averaged over 9 different pulses of 9 different days. Shaded is standard deviation over the 9 pulses.

Pictures of different versions of the BuzzWatch setup
A. Unmounted cage, base, and sugar feeder. The cage has a transparent base so that all mosquitoes are visible to the camera placed beneath the cage. The base can be easily unmounted and attached with screws. B. Cage with mosquitoes and sugar feeder attached. The cage is made of 3mm acrylic except for the square “windows” on each side. These windows are 1.5mm or 2mm wide and perforated with a grid of 1mm diameter holes to allow mosquitoes to insert their proboscis for sugar feeding. Cotton soaked in a 10% sucrose solution is placed on the other side of the window. Filling the sugar feeder with soaked cotton and fixing it to the windows with elastic bands allows mosquitoes to feed ad libitum. After one week, the cotton is usually still wet, but it is preferable to change it to avoid the accumulation of fungi and mold. The rest of the cage is also perforated with 1mm diameter holes to allow air circulation. This version was used for experiments at Institut Pasteur (all data from Fig. 1-5, except for the experiment with Anopheles conducted at Radboud UMC). C. C D. Enclosure without cages and camera installed. A white LED strip creates the artificial day/night cycle, and sensors for temperature, humidity, and light are attached near the top of the enclosure. LEDs and sensors are connected to a Raspberry Pi, controlling LED intensity and logging environmental data. Aluminum beams and white opaque acrylic panels isolate four cages from the room environment, maintaining a uniform light, humidity, and temperature environment. Silent 12V DC fans run continuously on top of the container to mix the air and maintain a uniform temperature. E. The enclosure can accommodate four mosquito cages. In environments without external humidity control, a tray filled with tap water can be placed beneath the cages to maintain high humidity. While closed with infrared light on, the humidity remains between 60-70% over weeks, and the temperature between 24-26°C, with little fluctuation between day and night due to the white LED strip heating (see supplementary material). Acrylic lids covered with white paper were placed on top of each cage to improve the uniformity of the background image during video recording (white paper produces a uniform background that contrasts well with mosquito bodies). F. On the left, the unmounted tower; on the right, the complete tower with three levels: the base part holds the camera at the bottom and supports the mosquito cage; the middle part is the mosquito cage surrounded by white paper to make the background image more suitable for image analysis (mosquito detection is facilitated if the background is white and uniform). The top part holds the infrared light. The three parts can be removed or attached by screws on the sides. Once attached, the camera view is fixed relative to the mosquito cage and infrared light, so the background image is little affected by displacement of the entire tower. This is an individual tower version, with complete construction details available at https://theomaire.github.io/buzzwatch/construct.html. G. Two fully mounted and functional BuzzWatch towers are placed in a climatic chamber. Light, temperature, and humidity are controlled by the climatic chamber. Raspberry Pi units recording videos are placed outside the climatic chamber.

Single video analysis and mosquito tracking.
A. Our analysis pipeline utilizes standard computer vision methods to segment mosquitoes from the cage background, employing techniques such as background subtraction and thresholding. Accurateness of this approach relies on obtaining a clean background image devoid of mosquitoes but closely resembling the videos with mosquitoes. We achieve this by averaging frames from multiple videos spanning over a day. While mosquitoes can rest in the same spot for several hours, over a 24-hour period, they will move at least once. By averaging 100 frames from 100 consecutive 20-minute videos (one frame per 20 minutes over 30 hours, step 1), we obtain a background image without mosquitoes (step 2). We then perform two distinct operations in parallel to obtain tracks of resting and flying mosquitoes. This separation is based on the observation that, with our camera’s frame rate (25 FPS) and resolution, flying mosquitoes appear relatively blurred and low contrast compared to the sharp, dark appearance of resting mosquitoes. Therefore, tracking them separately improves overall performance. For resting mosquitoes, we subtract the background from all frames and apply a blob detection method to segment and track mosquitoes using their centroids. A greedy algorithm is used on these centroids to obtain tracks of resting mosquitoes, which include those not moving or moving slowly by walking. For flying mosquitoes, instead of using the background image, we subtract the previous frame, as is standard for motion detection in videos. We then apply similar segmentation and centroid tracking with parameters optimized for flying mosquitoes. After obtaining tracks for both resting (immobile or walking) and moving (flying) mosquitoes, we use a custom algorithm to link these tracks if they belong to the same mosquito. This algorithm detects take-off events when a resting track disappears and a moving track appears. By assuming that for a real take-off event, the end of the resting track and the start of the moving track should be close, the algorithm performs a local search to find the best match. It uses a similar strategy for landing events, linking the end of a moving track with the start of a resting track. The algorithm also attempts to connect different moving tracks. This bootstrapping procedure is iterated five times, logging the percentage of matched or unmatched tracks. While imperfect, it does not affect the robustness of population-level variables, such as the fraction of mosquitoes flying or resting on a given surface like the sugar feeder. The final mosquito tracks are stored as a single pickle file for each video analyzed. These files contain the coordinates of 40 mosquitoes at 25 FPS resolution for 20 minutes (including corresponding IDs) and typically range from 20-30 MB in size. B. In the GUI app, we can manually draw the different region of interest for analysis: the exact border of the cage (any detection outside of this boundary will not be taken into account) and the 4 windows, behind which there is sugar cotton for instance. In that example, the green frame indicates the boundary of the sugar feeder window, orange the opposite control area, and the purple and pink to other control areas. During mosquito tracking, the number of resting mosquitoes within each window is registered over time. C. Example of time series (population level variable) extracted for a single video based on the algorithm in A and boundaries defined in B. D. Example of histogram (individual track variable) of flight speed, flight duration and resting time for the entire video. For resting times, the last bin on the right at 1200 seconds indicates mosquitos that did not move at all for the entire video. E.Example flight trajectories extracted from the same video, color indicates time, normalized to the duration of each flight trajectory.

Sugar feeding and other flight variables.
A. Snapshot from movie recorded in Fig.1 experiment during the night (0h30 left) and at the evening peak (19h30 right). Areas manually selected in the app for sugar feeder (orange) and control (black) are overlayed. B. Picture of a BuzzWatch cage being monitored with 40 mosquitoes inside, sugar feeder filled with soaked cotton on the left and nothing on the 3 other side windows. C. Day average profile (from 32 days) of fraction mosquitoes resting on the sugar feeder window (orange), or the control opposite window (black). Lines indicate the average over 32 days and shaded area are the s.t.d. over 32 days. 20-minutes rolling average was used before averaging different days. D. Day average profile of the difference between fraction mosquitoes resting within the sugar feeder window and the fraction resting on the control window opposite. We aimed at quantifying sugar-feeding behavior. Due to the optical setup’s limitations, which prevent direct visualization of proboscis contact with the sugar meal, we implemented an alternative strategy to estimate the number of mosquitoes feeding on sugar at a given time. In the cage, mosquitoes have access to a cotton patch soaked with sugar water through a square window in the sidewall (A-B). We analyzed tracking data to determine the fraction of mosquitoes resting on this sugar-feeder window (orange square in A). and compare it to a control window on the opposite side (black square in A), which has similar geometry but no sugar cotton behind it. By calculating the daily averages, we found that a significantly higher fraction of mosquitoes rested on the sugar-feeder window (orange line C) compared to the control (black line C). This difference was most pronounced around ZT12 (start of dark period), coinciding with the peak of evening flight activity (see Fig.1). These findings suggest that sugar-feeding activity can be indirectly detected by comparing these two curves. For simplicity, we used the difference between these two curves as a “sugar feeding index” (orange line in D). E. Sugar feeding activity averaged per day over the course of the 32 day experiment from Fig.1. F. Daily average of flight speed (top) and flight duration (bottom) over the 32 day experiment from Fig.1. G. Average for each entire day over the course of the 32 day experiment from Fig. 1 for flight speed (top) and flight duration (bottom). Regarding flight duration and speed averaged over days, we did not observe any clear trends over the 32 days of the experiment.

Instantaneous vs global fraction flying.
Example data over 5 days from Fig.1. A. “Instantaneous” fraction of mosquitoes flying over 5 days. Initially, the time series represents the number of flying mosquitoes at 1-second resolution. The data is resampled to 1-minute intervals (averaged), smoothed with a rolling 20-minute window average, and normalized by the total number of alive mosquitoes (typically 40, decreasing if mosquitoes die during the experiment). B. “Global” fraction flying over 5 days. For each 20-minute interval, we extract the distribution of resting times from individual mosquito tracks. To estimate the number of mosquitoes that did not fly during the entire video, we calculate the number of tracks with resting times of 1200 seconds (the 20-minute video duration). We derive the same variable X for each 20-minute video and report (Number_alive_mosquitoes − X)/Number_alive_mosquitoes (green curve). This provides the fraction of mosquitoes that flew at least once within a 20-minute window. C. “Instantaneous fraction flying” and “20-minute global fraction flying” are normalized by their maximum value over the 5-day window considered here. Interestingly, at the peak of mosquito activity, only about 10% of the population is flying at any moment, indicating that most mosquitoes spend their time resting (A). However, when we measured the total number of mosquitoes that flew at least once during a 20-minute period, the number reached nearly 100% during the evening peak (B). This suggests that all mosquitoes take flight eventually in the evening. Due to individual differences in flight timing and their short flight duration (10-20 seconds), the percentage of mosquitoes flying at any given moment is only around 10-20% at most. While these two measurements of flight activity provide slightly different perspectives on flight behavior, they largely overlap (C). For the remainder of the study, we chose to focus on the instantaneous fraction flying, as it is more robust to quantify and more directly linked to the transition rate between resting and flying.

Day-averaged variable comparison between Aaa and Aaf colonies.
Average over 5 colonies for Aedes aegypti aegypti (blue) and Aedes aegypti formosus (orange), shaded area is std. over colonies. 20 minutes – moving average; average over 10 days for each colony. A. fraction flying B. Sugar feeding index C. Flight speed D. Flight duration

Species and colony level analysis
A. Barcode GLMM plot between two Aedes aegypti aegypti colonies : KPP (Thailand) colony and PHN (Cambodia) colony. Each colony was measured with 3 independent replicate cages over 10 days (40 females). KPP colony is used as baseline. B. Barcode GLMM plot between two Aedes aegypti formosus colonies : KUM (Ghana) colony and RAB (Kenya) colony. Each colony was measured with 3 independent replicate cages over 10 days (40 females). KUM colony is used as baseline. C. Barcode GLMM plot between Aedes (Aedes aegypti and Aedes albopictus) and Anopheles species (gambiae, stephensi, coluzzii). Aedes is taken as baseline. D. Pattern based analysis for all Aedes and Anopheles fraction flying data. Each dot is a single day of measurements. Every cage was monitored for at least 10 days, only Ae. aegypti colonies KPP,PHN,RAB and KUM were monitored in three independent replicate cages. On the left, hour based contribution to PC2 and on the bottom, PC1. After focusing on the difference between Ae. aegypti sub-species, we wanted to enlarge the scope and see how our methods would behave when e.g. investigating differences between species and colonies. Using our local GLMM approach, we compared two different colonies for each sub-species of Ae. aegypti (KUM and RAB for Aaf and KPP PHN for Aaa) and found statistical differences for the fraction flying over time, but less clearly for other behavioral variables. For instance the Aaa colony from Phnom Penh (PHN) happened to be more active at night compared to the Thailand strain (KPP) (A); while the Aaf colony from Kenya (RAB) was more active between 11h-17h than the colony from Ghana (KUM) (B). These specific differences between colonies were of similar magnitude within the two sub-species, and could reflect specific adaptation to an ecological niche or latitude. At a much larger scale, we compare different between Anopheles, known to be active at night and Aedes, known to be active during the day. The local ‘barcode” analysis revealed strong differences for all variables at almost all times of day, as we could expect from such different mosquito species. We then also used our global dimensionality reduction approach to compare the pattern of 3 different Anopheles species, the two Aedes sub-species and Ae. albopictus (D). This approach revealed that on the scale of difference between distant species, the observed distinction between Aaa and Aaf is still visible, but relatively minor compared to difference with Ae. albopictus.

Egg-laying experiment
A. Protocol to estimate the effect of egg-laying on mosquito flight behavior. After rearing and mating, females were sorted on ice and allowed to have a blood meal for 1 hour. Fully engorged females were sorted on ice and placed in a box (60 females per box) for 6 days with either a beaker filled with water and Whatman paper to lay eggs, or nothing. Most of the egg laying happens 3-4 days after the blood meal. Females were then sorted on ice and transferred to BuzzWatch cages, 40 females per cage and 2 cages per condition (egg laid versus not laid). Mosquito behavior was monitored over 21 days, sugar was changed weekly. B. Averaged day-relative fraction flying (fraction flying normalized by cumulative sum of fraction flying over each day) for mosquito that laid eggs (blue line) or did not lay eggs (orange line). Day relative time series was averaged from 24 days, then average between 2 replicate cage. Shaded area corresponds to standard variation over 2 replicate cages. C. Average fraction flying per day for mosquito that laid eggs (blue) or did not lay eggs (orange). (Top) “absolute” fraction flying averaged over entire days for each day. (Middle) Day-relative fraction flying averaged between ZT1 and ZT5 or ZT10 and ZT11 (Bottom). Error bars are standard deviation between 2 replicate cages.