Collective dynamics of macroscopic photoactive matter under alternating excitation patterns
收藏资源简介:
# Collective Dynamics of Macroscopic Photoactive Matter Under Alternating Excitation Patterns — Datasets SQLite databases built from per-video patch-level measurements of a macroscopicphotoactive granular system: $N_T = 100$ hexbug-based self-propelled particlesmoving in a flower-shaped arena under spatiotemporally controlled illumination,recorded at 30 fps. See the accompanying manuscript for the full experimentalsetup and analysis. ## Datasets The experiments fall into two protocols. In the **stationary halved**protocol, the two halves of the arena are kept under fixed (different)illumination levels for the whole run. In the **alternating** protocol, thehigh and low illumination swap between the two halves periodically withswitching period $T$. The three databases correspond to the three sections of the paper: | Database | Section | Protocol | Low-side power $P_\text{low}$ ||-------------------|------------------------------------------|----------------------|-------------------------------|| `ihomog_p.db` | III. *Stationary halved illumination* | stationary halved | 23, 33, 43, 52 mW || `alter_105_p.db` | IV. *Alternating light intensity* | alternating | 23 mW || `alter_130_p.db` | SM. *Alternating, $P_\text{low}=33$ mW* | alternating | 33 mW | In all experiments, the high-illumination side is fixed at $P_\text{high} = 72\ \text{mW}$. The two alternating databases are structurally identical and differ only inthe low-illumination level. They contain both **population** and **clusterdynamics** over time on the two halves. The stationary database`ihomog_p.db` contains only the population dynamics; clustering analysis isnot provided there. The switching period $T$ (in seconds) is given in thevideo metadata table for the alternating case. ## Conventions - **Frame rate:** 30 fps. Time in seconds is `FRAME / 30.0`.- **HALF** labels the illumination level of the half-arena where a patch sits: - `0` = low-illumination (dark) side, $P_\text{low}$ - `1` = high-illumination (bright) side, $P_\text{high} = 72\ \text{mW}$- **INTENSITY** (in `ihomog_p.db` only) is a code for $P_\text{low}$ in the stationary experiment: | code | $P_\text{low}$ | |------|----------------| | 105 | 23 mW | | 130 | 33 mW | | 155 | 43 mW | | 180 | 52 mW | ## Schema ### `video_data` One row per video. | column | type | present in | notes ||-------------|---------|-----------------------------|-----------------------------------------------------------------------------|| `VID_ID` | INTEGER | all | Unique, increasing across the full sweep. Primary key. || `INTENSITY` | INTEGER | `ihomog_p.db` only | Illumination-profile code (105 / 130 / 155 / 180). || `PERIOD` | INTEGER | `alter_*_p.db` only | Illumination-profile code (105 / 130) | In `ihomog_p.db` the primary key column is named `ID` instead of `VID_ID`. ### `population` Per-video, per-frame, per-half population fraction. Computed by summing thepatch-particle counts within each half, then normalizing so that the twohalves sum to 1 within each `(VID_ID, FRAME)`. | column | type | notes ||--------------|---------|-------------------------------------------------------------|| `VID_ID` | INTEGER | Foreign key to `video_data.VID_ID` (or `ID` in `ihomog_p`). || `FRAME` | INTEGER | Frame index (30 fps). || `HALF` | INTEGER | Illumination level of the half: `0` or `1`. || `POPULATION` | REAL | Fraction of particles in that half at that frame, ∈ [0, 1]. | Indexed by `(VID_ID, FRAME)` for fast time-series queries. ### `clusters_summary` (alternating databases only) Mirrors `population` in granularity (per-video, per-frame) but holdscluster-level quantities rather than particle-count fractions. Each clusterin a given frame is identified by an `ID`; **`ID` is not stable acrossframes**, i.e. matching `ID` in two different frames does not imply the samephysical cluster persisted between them. Same `VID_ID` keys back to `video_data`. ## Example queries ```sql-- Stationary halved: mean fraction on the dark side (HALF=0) over time, per intensitySELECT v.INTENSITY, p.FRAME, AVG(p.POPULATION) AS mean_pop_darkFROM population pJOIN video_data v ON v.ID = p.IDWHERE p.HALF = 0GROUP BY v.INTENSITY, p.FRAMEORDER BY v.INTENSITY, p.FRAME; -- Alternating: time series for one video, expressed in secondsSELECT VID_ID, FRAME / 30.0 AS t_seconds, HALF, POPULATIONFROM populationWHERE VID_ID = 1ORDER BY FRAME, HALF; -- Alternating: mean dark-side population per switching periodSELECT v.PERIOD, AVG(p.POPULATION) AS mean_pop_darkFROM population pJOIN video_data v ON v.VID_ID = p.VID_IDWHERE p.HALF = 0GROUP BY v.PERIODORDER BY v.PERIOD;``` ## Citation If you use these data, please cite the accompanying manuscript and theZenodo data record.



