asoid
An active learning platform for expert-guided, data efficient discovery of behavior.
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 20 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org, biorxiv.org, nature.com, zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.9%) to scientific vocabulary
Repository
An active learning platform for expert-guided, data efficient discovery of behavior.
Basic Info
- Host: GitHub
- Owner: YttriLab
- License: other
- Language: Python
- Default Branch: main
- Size: 70.3 MB
Statistics
- Stars: 61
- Watchers: 4
- Forks: 16
- Open Issues: 12
- Releases: 2
Metadata Files
README.md
A-SOiD: An active learning platform for expert-guided, data efficient discovery of behavior.
Read the paper!
IF YOU ARE NEW HERE: CHECK OUT THE OVERVIEW AND INSTALLATION SECTION TO GET STARTED!
News:
February 2024: Paper published and A-SOiD v0.3.1 released!
August 2023: A-SOiD v0.3.0 is released!
Our first major update is launched! This update includes major changes in the workflow and the GUI.
- New features:
- New manual refinement step: allows users to refine the classification of individual bouts.
- Predict tab: Ethogram, Pie charts, Stats and Videos!
- Extended features:
- Discover tab: simultaneous split of multiple behaviors in one go
- Data upload: Sample rate of annotation files can now be set explicitly during upload.
- Active learning: Confidence threshold now accessible in the GUI
- Other changes:
- Several UX improvements
- Bug fixes
- Increased performance during active learning
How to update:
Please be aware that this update is not backwards compatible with previous versions of A-SOiD. 1. Download or clone the latest version of A-SOiD from this repository. 2. Create a new environment using the
asoid.ymlfile (see below).conda env create --file asoid.yml3. Activate the environment you installed A-SOiD in. 4. Start A-SOiD and use it just like before. ```` asoid app````
Introduction:
DeepLabCut 1,2,3, SLEAP 4, and OpenPose 5 have revolutionized the way behavioral scientists analyze data. These algorithm utilizes advances in computer vision and deep learning to automatically estimate poses. Interpreting the positions of an animal can be useful in studying behavior; however, it does not encompass the whole dynamic range of naturalistic behaviors.
Behavior identification and quantification techniques have undergone rapid development. To this end, supervised or unsupervised methods (such as B-SOiD6 ) are chosen based upon their intrinsic strengths and weaknesses (e.g. user bias, training cost, complexity, action discovery).
Here, a new active learning platform, A-SOiD, blends these strengths and in doing so, overcomes several of their inherent drawbacks. A-SOiD iteratively learns user-defined groups with a fraction of the usual training data while attaining expansive classification through directed unsupervised classification.
Overview:

A-SOiD is a streamlit-based application that integrates the core features of A-SOiD into a user-friendly, no-coding required GUI solution that can be downloaded and used on custom data.
For this we developed a multi-step pipeline that guides users, independent of their previous machine learning abilities through the process of generating a well-trained classifier for their own use-case.
In general, users are required to provide a small labeled data set (ground truth) with behavioral categories of their choice using one of the many available labeling tools (e.g. BORIS7 ) or import their previous supervised machine learning data sets. Following the upload of data (see Fig. above, a), a A-SOiD project is created, including several parameters that further enable users to select individual animals (in social data) and exclude body parts from the feature extraction.
Input:
A-SOiD supports the following input types:
Pose estimation:
Annotation files:
- BORIS -> exported as binary files in 0.1 sec time steps (10 Hz): Read the docs
- any annotation files in this style (one-hot encoded), including an index that specifies time steps in seconds.
You can see an example of this using pandas in our docs: Convert annotations to binary format
System Requirements
Hardware requirements
A-SOiD requires only a standard computer with enough RAM to support the model training during active learning. For clustering, CPU and RAM requirements are increased. Refer to B-SOiD or our paper for details.
Software requirements
OS Requirements
This package is supported for Windows and Mac but can be run on Linux computers given additional installation of require packages.
Python Dependencies
For dependencies please refer to the requirements.txt file. No additional requirements.
Installation
Note: This is a quick guide to get you started. For a more detailed guide, see Installation.
Download repository and install locally as python package within a new environment
Clone this repository and create a new environment in which A-SOiD will be installed automatically (recommended) Anaconda/Python3.
Change your current working directory to the location where you want the directory to be made.
cd path/to/A-SOiD
Clone it directly from GitHub
bash
git clone https://github.com/YttriLab/A-SOID.git
or download ZIP and unpack where you want.
Install A-SOiD using conda (recommended)
- Create a new environment using the
asoid.ymlfile (see below).conda env create --file asoid.yml
How to start A-SOiD:
Activate the environment you installed A-SOiD in.
conda activate asoidYou can run A-SOiD now from inside your environment:
asoid appDemo:
We invite you to test A-SOiD using the CalMS21 data set. The data set can be used within the app by simply specifying the path to the train and test set files (see below). While you can reproduce our figures using the provided notebooks, the data set also allows an easy first use case to get familiar with all significant steps in A-SOiD.
- Download the data set and convert it into npy format using their provided script.
- Run A-SOiD and select 'CalMS21 (paper)' in the
Upload Datatab. - Enter the full path to both train and test files from the first challenge (e.g. 'C:\Dataset\task1classicclassification\calms21task1train.npy' and 'C:\Dataset\task1classicclassification\calms21task1test.npy').
- Enter a directory and prefix to create the A-SOiD project in.
- Click on 'Preprocess' and follow the remaining workflow of the app. After successful importing the data set, you can now run the CalMS21 project as any other project in A-SOiD.
The overall runtime depends on your setup and parameters set during training, but should be completed within 1h of starting the project. Tested on: AMD Ryzen 9 6900HX 3.30 GHz and 16 GB RAM; Windows 11 Home
Contributors:
A-SOiD was developed as a collaboration between the Yttri Lab and Schwarz Lab by:
Jens Tillmann, University Bonn
Alex Hsu, Carnegie Mellon University
Martin Schwarz, University Bonn
Eric Yttri, Carnegie Mellon University
Get in contact:
Corresponding authors:
Martin K. Schwarz SchwarzLab
Eric A. Yttri YttriLab
Contributing
For recommended changes that you would like to see, open an issue.
There are many exciting avenues to explore based on this work. Please do not hesitate to contact us for collaborations.
Issues running A-SOiD
If you are having issues, please refer to our issue page first, to see whether a similar issue was already solved. If this does not apply to your problem, please submit an issue with enough information that we can replicate it. Thank you!
License
A-SOiD is released under a Clear BSD License and is intended for research/academic use only.
References
If you are using our work, please make sure to cite us and any additional resources you were using
How to cite us:
Tillmann, J.F., Hsu, A.I., Schwarz, M.K. et al. A-SOiD, an active-learning platform for expert-guided, data-efficient discovery of behavior. Nat Methods (2024). https://doi.org/10.1038/s41592-024-02200-1
or see Cite Us
Owner
- Login: YttriLab
- Kind: user
- Website: https://labs.bio.cmu.edu/yttri/
- Twitter: YttriLab
- Repositories: 3
- Profile: https://github.com/YttriLab
Citation (CITATION)
@Article{Tillmann2024,
author={Tillmann, Jens F.
and Hsu, Alexander I.
and Schwarz, Martin K.
and Yttri, Eric A.},
title={A-SOiD, an active-learning platform for expert-guided, data-efficient discovery of behavior},
journal={Nature Methods},
year={2024},
month={Feb},
day={21},
abstract={To identify and extract naturalistic behavior, two methods have become popular: supervised and unsupervised. Each approach carries its own strengths and weaknesses (for example, user bias, training cost, complexity and action discovery), which the user must consider in their decision. Here, an active-learning platform, A-SOiD, blends these strengths, and in doing so, overcomes several of their inherent drawbacks. A-SOiD iteratively learns user-defined groups with a fraction of the usual training data, while attaining expansive classification through directed unsupervised classification. In socially interacting mice, A-SOiD outperformed standard methods despite requiring 85{\%} less training data. Additionally, it isolated ethologically distinct mouse interactions via unsupervised classification. We observed similar performance and efficiency using nonhuman primate and human three-dimensional pose data. In both cases, the transparency in A-SOiD's cluster definitions revealed the defining features of the supervised classification through a game-theoretic approach. To facilitate use, A-SOiD comes as an intuitive, open-source interface for efficient segmentation of user-defined behaviors and discovered sub-actions.},
issn={1548-7105},
doi={10.1038/s41592-024-02200-1},
url={https://doi.org/10.1038/s41592-024-02200-1}
}
@article {Tillmann2022.11.04.515138,
author = {Jens F. Tillmann and Alexander I. Hsu and Martin K. Schwarz and Eric A. Yttri},
title = {A-SOiD, an active learning platform for expert-guided, data efficient discovery of behavior},
elocation-id = {2022.11.04.515138},
year = {2023},
doi = {10.1101/2022.11.04.515138},
publisher = {Cold Spring Harbor Laboratory},
abstract = {To identify and extract naturalistic behavior, two schools of methods have become popular: supervised and unsupervised. Each approach carries its own strengths and weaknesses, which the user must weigh in on their decision. Here, a new active learning platform, A-SOiD, blends these strengths and, in doing so, overcomes several of their inherent drawbacks. A-SOiD iteratively learns user-defined groups and can considerably reduce the necessary training data while attaining expansive classification through directed unsupervised classification. In socially-interacting mice, A-SOiD outperformed other methods and required 85\% less training data than was available. Additionally, it isolated two additional ethologically-distinct mouse interactions via unsupervised classification. Similar performance and efficiency were observed using non-human primate 3D pose data. In both cases, the transparency in A-SOiD{\textquoteright}s cluster definitions revealed the defining features of the supervised classification through a game-theoretic approach. Lastly, we show the potential of A-SOiD to segment a large and rich variety of human social and single-person behaviors with 3D position keypoints. To facilitate use, A-SOiD comes as an intuitive, open-source interface for efficient segmentation of user-defined behaviors and discovered sub-actions.Competing Interest StatementThe authors have declared no competing interest.},
URL = {https://www.biorxiv.org/content/early/2023/11/06/2022.11.04.515138},
eprint = {https://www.biorxiv.org/content/early/2023/11/06/2022.11.04.515138.full.pdf},
journal = {bioRxiv}
}
GitHub Events
Total
- Issues event: 15
- Watch event: 6
- Delete event: 1
- Issue comment event: 16
- Push event: 6
- Pull request review event: 4
- Pull request event: 4
- Fork event: 5
- Create event: 1
Last Year
- Issues event: 15
- Watch event: 6
- Delete event: 1
- Issue comment event: 16
- Push event: 6
- Pull request review event: 4
- Pull request event: 4
- Fork event: 5
- Create event: 1
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 83
- Total pull requests: 30
- Average time to close issues: about 2 months
- Average time to close pull requests: 20 days
- Total issue authors: 44
- Total pull request authors: 4
- Average comments per issue: 2.76
- Average comments per pull request: 0.17
- Merged pull requests: 21
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 8
- Pull requests: 7
- Average time to close issues: 3 months
- Average time to close pull requests: 17 days
- Issue authors: 7
- Pull request authors: 3
- Average comments per issue: 0.25
- Average comments per pull request: 0.57
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- JensBlack (9)
- Mijar007 (6)
- vickerse1 (5)
- kipkeller (3)
- DavidGill159 (3)
- koosjedr (3)
- vic7538 (3)
- mauricev (3)
- eacrummy (3)
- JHartig (3)
- kapilsaxena33 (2)
- pozel (2)
- zhenyuan992 (2)
- mitras1210 (2)
- aidanpriceUON (2)
Pull Request Authors
- JensBlack (26)
- ali-mohammadi-scrc (2)
- TristanLawson (2)
- nickdelgrosso (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 24 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 1
- Total maintainers: 1
pypi.org: asoid
ASOiD: An active learning approach to behavioral classification
- Homepage: https://github.com/YttriLab/A-SOID
- Documentation: https://github.com/YttriLab/A-SOID
- License: BSD 3-Clause License
-
Latest release: 0.3b9
published almost 3 years ago
Rankings
Maintainers (1)
Dependencies
- click *
- h5py *
- hdbscan *
- ipython *
- joblib *
- matplotlib *
- moviepy *
- numba *
- numpy *
- pandas *
- pillow *
- plotly *
- psutil *
- scikit-learn *
- scipy *
- seaborn *
- setuptools *
- stqdm *
- streamlit *
- tqdm *
- click *
- h5py *
- hdbscan *
- ipython *
- joblib *
- matplotlib *
- numba *
- numpy *
- opencv-python *
- pandas *
- psutil *
- scikit-learn *
- scipy *
- seaborn *
- setuptools *
- streamlit ==1.11.0
- streamlit *
- tqdm *
- umap-learn *