Emergent programmable behavior and chaos in dynamically driven active filaments
Data files
Sep 27, 2023 version files 11.66 GB
Abstract
How the behavior of cells emerges from their constituent subcellular biochemical and physical parts is an outstanding challenge at the intersection of biology and physics. A remarkable example of single-cell behavior occurs in the ciliate Lacrymaria olor, which hunts for its prey via rapid movements and protrusions of a slender neck, many times the size of the original cell body. The dynamics of this cell neck is powered by a coat of cilia across its length and tip. How a cell can program this active filamentous structure to produce desirable behaviors like search and homing to a target remains unknown. Here, we present an active filament model that allows us to uncover how a “program” (time sequence of active forcing) leads to “behavior” (filament shape dynamics). Our model captures two key features of this system—time-varying activity patterns (extension and compression cycles) and active stresses that are uniquely aligned with the filament geometry—a “follower force” constraint. We show that active filaments under deterministic, time-varying follower forces display rich behaviors including periodic and aperiodic dynamics over long times. We further show that aperiodicity occurs due to a transition to chaos in regions of a biologically accessible parameter space. We also identify a simple nonlinear iterated map of filament shape that approximately predicts long-term behavior suggesting simple, artificial “programs” for filament functions such as homing and searching space. Last, we directly measure the statistical properties of biological programs in L. olor, enabling comparisons between model predictions and experiments.
README: Data for the paper Krishnamurthy and Prakash (2023), Emergent Programmable Behavior and Chaos in Dynamically Driven Active Filaments
Brief Description
This dataset contains simulation data for the paper titled "Emergent Programmable Behavior and Chaos in Dynamically Driven Active Filaments" Link. Published paper Link
All the data was generated using the PyFilaments library developed as part of the above work.
Dataset Version and Release History
- First Published Version:
- Number: v0.1
- Date: April 3, 2023
- Persistent identifier: DOI: https://doi.org/10.6078/D12T52
Associated Publication
- Article Title: *Emergent Programmable Behavior and Chaos in Dynamically Driven Active Filaments
- Article Authors: Deepak Krishnamurthy (1, *) and Manu Prakash (2, *)
- Publication Date: July 5, 2023
- Journal: PNAS
- Volume: 120
- Issue: 28
(1) Department of Bioengineering, U C Berkeley
(2) Department of Bioengineering, Stanford University
*Corresponding authors:
Corresponding Author Contact Information
- Name: Deepak Krishnamurthy
- Affiliations: University of California, Berkeley
- ORCID ID: 0000-0002-4504-1530
- Email: deepak90@berkeley.edu
- Alternate Email: dkrishnamurthy@schmidtsciencefellows.org
Alternative Contact:
- Name: Manu Prakash
- Affiliations: Stanford University
- ORCID ID: 0000-0002-8046-8388
- Email: manup@stanford.edu
Description of the data and file structure
Summary Metrics
- Uncompressed file count: 4
- Total file size: 11.66 Gb, compressed
- File formats:
.zip
,.hdf5
,.csv
,.json
Table of Contents
- README.md
- Pyfilaments_data_sample.zip
- TipActivity_PeriodicForcing.zip
- DistributedActivity_PeriodicForcing.zip
- StochasticForcing.zip
Downloading and accessing the data
Data should be downloaded and extracted locally. Scripts for data analysis and visualization are shared in the accompanying PyFilaments repo, and the examples therein. We provide both a GUI-based data visualizer as well as low-level scripts for different filament analysis in the same repo.
Download any/all of these files and extract the simulation data from the .zip files.
To first get a feel for the data, we recommend downloading the Pyfilaments_data_sample.zip file first and extracting it locally.
Data General Description
The full dataset is split into four parts, which appear as the following top level directories:
- TipActivity_PeriodicForcing.zip: Simulation data for filaments with activity at the tip and driven by periodic activity profiles
- DistributedActivity_PeriodicForcing.zip: Simulation data for filaments with activity distributed along the filament and driven by periodic activity profiles
- StochasticForcing.zip: Simulation data for filaments with activity distributed along the filament and driven by normal or log-normal activity profiles
- Pyfilaments_data_sample.zip: A small data sample which can be used for data exploration.
Simulation datasets corresponding to a given set of parameters is contained in a folder that contains a metadata.csv file, an activity_metadata.json file along with one or more .hdf5 files containing the computed simulation data. Each .hdf5 file within a simulation folder corresponds to a simulation run from a distinct initial condition. This .hdf5 file contains all the simulation data including the positions of all colloids corresponding to the filament centerline for each time-step, as well as the actual activity profile used, etc. The metadata.csv contains the simulations parameters and other metadata corresponding to a set of simulations. The activity_metadata.json contains metadata about the activity profile used in the particular set of simulations.
For a subset of the data we also include sample analysis data files wherein we have included the results from PCA, Search dynamics analysis etc. These are stored in a folder titled /Analysis/
which appears inside the main simulation folders that are labelled SimData_*
. These analysis files can be generated from raw simulation data using the Python scripts included in the PyFilaments repo.
File/Folder Structure Details
Herein we describe the folder structure for each of the four datasets contained in the top-layer directories, for the first of these we give details about the sub-folders and file structure which are consistent for all the other datasets.
For all datasets a given set of simulation runs corresponding to a set of parameters are grouped within a folder whose name also gives information about the parameters. For eg.
/SimData_Np_32_Shape_line_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_0.134_activityTime_750_simType_lacry/
This is a folder containing multiple simulation runs from distinct initial conditions as well as analysis data. The folder name additionally contains the simulation parameters in the format parameterName_parameterValue
.
- Np: Number colloids in the active filament
- Shape: Initial shape of the filament
- kappa_hat: Bending rigidity
- k: Spring constant
- b0: Equilibrium bond length
- F: Body force amplitude
- S: Stresslet amplitude
- D: Potential Dipole term amplitude
- activityTime: Duration of one activity phase (compression + extension)
- simType: Activity distribution type
Folder structure
1. Tip Activity Periodic Forcing
├── TipActivity_PeriodicForcing (# Dataset corresponding to activity confined to the filament tip)
│ ├── ActivityStrengthSweep (# Dataset with varying activity strengths)
│ │ ├── SimData_Np_32_Shape_line_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_0.5_activityTime_750_simType_point
│ │ │ ├── Analysis # (Folder containing analysis data derived from raw simulations)
│ │ │ │ ├── SearchCoverage # (Analysis data corresponding to search dynamics of the filament tip)
│ │ │ │ │ ├── sim_data_00__unique_counts_timeseries.csv #(time series of unique locations visited by fiament tip)
│ │ │ │ │ ├── sim_data_00__unique_positions.csv #(list of all unique positions visited by filament tip)
│ │ │ │ │ ├── sim_data_01__unique_counts_timeseries.csv
│ │ │ │ │ ├── sim_data_01__unique_positions.csv
│ │ │ │ │ ├── sim_data_02__unique_counts_timeseries.csv
│ │ │ │ │ └── sim_data_02__unique_positions.csv
│ │ │ │ ├── sim_data_00__ModeAmplitudes.csv #(Time series of PCA mode amplitudes, only included for datasets for which PCA shape analysis has been performed. For other datasets PCA can be run using the code in the Pyfilamnents repo.)
│ │ │ │ ├── sim_data_00__analysis.csv
│ │ │ │ ├── sim_data_00__analysis.hdf5
│ │ │ │ ├── sim_data_00__eigenvectors.hdf5 # (Eigenvectors corresponding to PCA, only included for datasets for which PCA shape analysis has been performed. For other datasets PCA can be run using the code in the Pyfilamnents repo.)
│ │ │ │ ├── sim_data_01__analysis.csv
│ │ │ │ ├── sim_data_01__analysis.hdf5
│ │ │ │ ├── sim_data_01__eigenvectors.hdf5
│ │ │ │ ├── sim_data_02__analysis.csv
│ │ │ │ ├── sim_data_02__analysis.hdf5
│ │ │ │ └── sim_data_02__eigenvectors.hdf5
│ │ │ ├── activity_metadata.json # (Activity profile metadata)
│ │ │ ├── metadata.csv # (Simulation metadata)
│ │ │ ├── sim_data_00_.hdf5 # (Raw simulation data containing time series of positions of N colloids making up the active filament)
│ │ │ ├── sim_data_01_.hdf5
│ │ │ └── sim_data_02_.hdf5
.
.
.
│ ├── ActivityTimeSweep (# Dataset for varying activity time durations)
│ │ ├── SimData_Np_32_Shape_line_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_1.5_activityTime_300_simType_point
│ │ │ ├── Analysis
│ │ │ │ ├── SearchCoverage
│ │ │ │ │ ├── sim_data_00__unique_counts_timeseries.csv
│ │ │ │ │ ├── sim_data_00__unique_positions.csv
│ │ │ │ │ ├── sim_data_01__unique_counts_timeseries.csv
│ │ │ │ │ ├── sim_data_01__unique_positions.csv
│ │ │ │ │ ├── sim_data_02__unique_counts_timeseries.csv
│ │ │ │ │ └── sim_data_02__unique_positions.csv
│ │ │ │ ├── sim_data_00__analysis.csv
│ │ │ │ ├── sim_data_00__analysis.hdf5
│ │ │ │ ├── sim_data_01__analysis.csv
│ │ │ │ ├── sim_data_01__analysis.hdf5
│ │ │ │ ├── sim_data_02__analysis.csv
│ │ │ │ └── sim_data_02__analysis.hdf5
│ │ │ ├── activity_metadata.json
│ │ │ ├── metadata.csv
│ │ │ ├── sim_data_00_.hdf5
│ │ │ ├── sim_data_01_.hdf5
│ │ │ └── sim_data_02_.hdf5
2. Distributed Activity Periodic Forcing
.
├── DistributedActivity_PeriodicForcing
│ ├── Lacrymaria_distribution # (Contains data for "Lacrymaria-like" activity distribution (see paper for details))
│ │ ├── SimData_Np_32_Shape_line_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_0.134_activityTime_750_simType_lacry # (Main sub-folder containig raw simulation data and analysis for a given set of parameters.)
│ │ │ ├── Analysis
│ │ │ │ ├── SearchCoverage
│ │ │ │ │ ├── sim_data_00__unique_counts_timeseries.csv
│ │ │ │ │ ├── sim_data_00__unique_positions.csv
│ │ │ │ │ ├── sim_data_01__unique_counts_timeseries.csv
│ │ │ │ │ ├── sim_data_01__unique_positions.csv
│ │ │ │ │ ├── sim_data_02__unique_counts_timeseries.csv
│ │ │ │ │ └── sim_data_02__unique_positions.csv
│ │ │ │ ├── sim_data_00__analysis.csv
│ │ │ │ ├── sim_data_00__analysis.hdf5
│ │ │ │ ├── sim_data_01__analysis.csv
│ │ │ │ ├── sim_data_01__analysis.hdf5
│ │ │ │ ├── sim_data_02__analysis.csv
│ │ │ │ └── sim_data_02__analysis.hdf5
│ │ │ ├── activity_metadata.json
│ │ │ ├── metadata.csv
│ │ │ ├── sim_data_00_.hdf5
│ │ │ ├── sim_data_01_.hdf5
│ │ │ └── sim_data_02_.hdf5
.
.
.
└── Uniform_distribution # Contains data for uniform activity distribution (see paper for details)
│ ├── SimData_Np_32_Shape_line_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_0.05_activityTime_750_simType_dist
│ │ ├── Analysis
│ │ │ ├── SearchCoverage
│ │ │ │ ├── sim_data_00__unique_counts_timeseries.csv
│ │ │ │ └── sim_data_00__unique_positions.csv
│ │ │ ├── sim_data_00__analysis.csv
│ │ │ └── sim_data_00__analysis.hdf5
│ │ ├── activity_metadata.json
│ │ ├── metadata.csv
│ │ └── sim_data_00_.hdf5
│ ├── SimData_Np_32_Shape_line_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_0.138_activityTime_750_simType_dist
│ │ ├── Analysis
│ │ │ ├── SearchCoverage
│ │ │ │ ├── sim_data_00__unique_counts_timeseries.csv
│ │ │ │ ├── sim_data_00__unique_positions.csv
│ │ │ │ ├── sim_data_01__unique_counts_timeseries.csv
│ │ │ │ ├── sim_data_01__unique_positions.csv
│ │ │ │ ├── sim_data_02__unique_counts_timeseries.csv
│ │ │ │ └── sim_data_02__unique_positions.csv
│ │ │ ├── sim_data_00__analysis.csv
│ │ │ ├── sim_data_00__analysis.hdf5
│ │ │ ├── sim_data_01__analysis.csv
│ │ │ ├── sim_data_01__analysis.hdf5
│ │ │ ├── sim_data_02__analysis.csv
│ │ │ └── sim_data_02__analysis.hdf5
│ │ ├── activity_metadata.json
│ │ ├── metadata.csv
│ │ ├── sim_data_00_.hdf5
│ │ ├── sim_data_01_.hdf5
│ │ └── sim_data_02_.hdf5
3. Stochastic Forcing
├── StochasticForcing # Dataset for the activity profiles that are stochastic in nature
│ ├── Lognormal_distribution # Lognormally distributed activity durations
│ │ ├── SimData_Np_32_Shape_line_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_0.05_activityTime_150_simType_lacry
│ │ │ ├── Analysis
│ │ │ │ ├── SearchCoverage
│ │ │ │ │ ├── sim_data_00__unique_counts_timeseries.csv
│ │ │ │ │ ├── sim_data_00__unique_positions.csv
│ │ │ │ │ ├── sim_data_01__unique_counts_timeseries.csv
│ │ │ │ │ ├── sim_data_01__unique_positions.csv
│ │ │ │ │ ├── sim_data_02__unique_counts_timeseries.csv
│ │ │ │ │ └── sim_data_02__unique_positions.csv
│ │ │ │ ├── sim_data_00__analysis.csv
│ │ │ │ ├── sim_data_00__analysis.hdf5
│ │ │ │ ├── sim_data_01__analysis.csv
│ │ │ │ ├── sim_data_01__analysis.hdf5
│ │ │ │ ├── sim_data_02__analysis.csv
│ │ │ │ └── sim_data_02__analysis.hdf5
│ │ │ ├── activity_metadata.json
│ │ │ ├── metadata.csv
│ │ │ ├── sim_data_00_.hdf5
│ │ │ ├── sim_data_01_.hdf5
│ │ │ └── sim_data_02_.hdf5
.
.
.
│ └── NormalDistribution # Normally distributed activity durations
│ ├── noise_01 # Each such folder contains data corresponding to a distinct amplitude of noise which is proportional to the standard deviation of the Gaussian distribution from which activity durations are drawn.
│ │ ├── SimData_Np_32_Shape_line_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_0.5_activityTime_750_simType_point
│ │ │ ├── Analysis
│ │ │ │ ├── SearchCoverage
│ │ │ │ │ ├── sim_data_00__unique_counts_timeseries.csv
│ │ │ │ │ ├── sim_data_00__unique_positions.csv
│ │ │ │ │ ├── sim_data_01__unique_counts_timeseries.csv
│ │ │ │ │ ├── sim_data_01__unique_positions.csv
│ │ │ │ │ ├── sim_data_02__unique_counts_timeseries.csv
│ │ │ │ │ └── sim_data_02__unique_positions.csv
│ │ │ │ ├── sim_data_00__analysis.csv
│ │ │ │ ├── sim_data_00__analysis.hdf5
│ │ │ │ ├── sim_data_01__analysis.csv
│ │ │ │ ├── sim_data_01__analysis.hdf5
│ │ │ │ ├── sim_data_02__analysis.csv
│ │ │ │ └── sim_data_02__analysis.hdf5
│ │ │ ├── activity_metadata.json
│ │ │ ├── metadata.csv
│ │ │ ├── sim_data_00_.hdf5
│ │ │ ├── sim_data_01_.hdf5
│ │ │ └── sim_data_02_.hdf5
4. Pyfilaments data sample
├── Pyfilaments_data_sample
│ ├── SimResults_Np_32_Shape_line at angle_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_1.333_activityTime_750_simType_point
│ │ ├── SimResults_00_.hdf5
│ │ └── metadata.csv
│ └── SimResults_Np_32_Shape_line at angle_kappa_hat_6_k_25_b0_2.1_F_0_S_0_D_2.744_activityTime_750_simType_point
│ ├── SimResults_00_.hdf5
│ └── metadata.csv
All the code for analysis, plotting and data-visualization are provided in the accompanying Github repo PyFilaments.
Code/Software
All the code for analysis, plotting and data-visualization are provided in the accompanying Github repo PyFilaments.
Methods
Computational simulations of active filaments. All data was generated using the PyFilaments repo. All code written in Python and Cython. Data processing using Python.