Counting snails#
For a more detailed description see: https://www.phenopype.org/gallery/projects/snail-counting/
import phenopype as pp
import os
## my root directory - modify as you see fit
os.chdir(r"D:\science\packages\phenopype\phenopype-gallery_exec")
## my laptop has a small screen, so I use a smaller phenopype window
pp._config.window_max_dim = 800
Make phenopype project#
Create a phenopype project (remember, Project
is used to both create new projects, and load existing ones). Different phenopype projects can be useful, e.g., to process different batches of images from field seasons, perspectives, etc,. It makes sense to create them side by side in a subfolder, which I call “phenopype”. Thus, my research projects often have the following directory structure (just my way of working - this is really totally up to you):
my-project
data # processed data (e.g., tables)
data_raw # raw data (images, videos, etc.)
phenopype # phenopype projects
phenopype_templates # phenopype .yaml config templates
scripts # python, R, etc.
[...] # manuscripts, figures, literature, etc.
proj = pp.Project(r"phenopype\snail-counting")
proj.add_files(image_dir = r"data_raw\snail-counting")
proj.add_config(template_path=r"phenopype_templates\snail-counting_template1.yaml", tag="v1")
## run image processing
for path in proj.dir_paths:
pp.Pype(path, tag="v1")
Edit config to extract shape features#
target1 = """ - measurement:"""
replacement1 = """ - measurement:
- compute_shape_features
- compute_texture_features"""
proj.edit_config(tag="v1", target=target1, replacement=replacement1)
## run image processing with deactivated feedback
for path in proj.dir_paths:
pp.Pype(path, tag="v1", feedback=False)
proj.collect_results(files=["canvas", "shape", "texture"], tag="v1", aggregate_csv=True, overwrite=True)