Git Product home page Git Product logo

planktoscope / planktoscope Goto Github PK

View Code? Open in Web Editor NEW
52.0 5.0 23.0 424.75 MB

Open and Affordable Quantitative Imaging Platform

Home Page: https://www.planktoscope.org

License: Creative Commons Attribution Share Alike 4.0 International

Shell 57.30% Vim Snippet 0.37% Makefile 3.71% C 38.62%
oceanography ocean science citizen water plankton citizen-science raspberry-pi-camera imaging microscopy

planktoscope's Introduction

PlanktoScope: Open and Affordable Quantitative Imaging Platform

planktoscope_hero

What are Plankton?

"Drifting endlessly, midway between the sea of air above and the depths of the abyss below, these strange creatures and the marine inflorescence that sustains them are called 'plankton' — the wanderers" - Rachel Carson

Plankton are tiny organisms that drift in the oceans and play a crucial role in the global ecosystem. They are responsible for fixing 30-50% of the world's carbon dioxide and form the foundation of the global food chain. Despite their importance, studying plankton can be challenging due to the vast area of the oceans and the limited resources of research fleets and specialized equipment. The PlanktoScope is an open-source hardware and software platform that aims to make it easier to study plankton by providing high-throughput quantitative imaging capabilities at a low cost.

What is a PlanktoScope?

The PlanktoScope at tfom23 Expo

The PlanktoScope is a modular, open-source platform for high-throughput quantitative imaging of plankton samples. Its small size, ease of use, and low cost make it suitable for a variety of applications, including the monitoring of laboratory cultures or natural micro-plankton communities. It can be controlled from any WiFi-enabled device and can be easily reconfigured to meet the changing needs of the user.

Learn more about how it works

Read the Paper

The PlanktoScope has been described in the article "PlanktoScope: Affordable Modular Quantitative Imaging Platform for Citizen Oceanography", published in Frontiers in Marine Science in July 2022.

DOI: https://doi.org/10.3389/fmars.2022.949428

Key Features

planktoscope_hero

Here are some key features of the PlanktoScope:

  1. Low cost: The PlanktoScope is designed to be affordable, with parts costing under $1000.
  2. Modular: The PlanktoScope is modular, meaning it can be easily reconfigured to meet the changing needs of users.
  3. Open-source: The PlanktoScope is based on open-source hardware and software, making it accessible to a wide community of engineers, researchers, and citizens.
  4. Versatility: The PlanktoScope is versatile, and can be used to study a variety of plankton types, including laboratory cultures and natural micro-plankton communities.
  5. High-throughput: The PlanktoScope is capable of high-throughput quantitative imaging, allowing users to analyze large numbers of samples quickly and efficiently.
  6. WiFi-enabled: The PlanktoScope can be controlled from any WiFi-enabled device, making it easy to use and deploy in a variety of settings.
  7. Portable: The PlanktoScope is small and portable, making it easy to transport and use in the field.
  8. Ease of use: The PlanktoScope is designed to be easy to use, with instructions for assembly and use available on the PlanktoScope website.

How do I get one?

You can access the complete documentation here: https://planktoscope.github.io/PlanktoScope/

Get the kit Assemble your kit Start your machine
Get the kit Assemble your kit Start your machine

Getting Involved

There are several ways you can join the development effort and contribute to this project.

Communication Platform

We use Slack as a communication platform for interested parties. You can request to join by filling out this form.

Reporting Issues

If you have identified a bug in the software or hardware, please open an issue in this repository to report it.

Contributing to Development

You can also contribute to the development effort by working on open issues. Check out the issues labeled as good first issues and let us know in the comments if you are interested in working on one. We may be able to provide guidance as you get started with the code.

License Information

This repository contains various types of materials that are covered by different licenses. Please read the following information carefully to determine which license applies to the materials you wish to use.

Hardware Files

All hardware files and documentation located in the hardware directory are released under the CERN-OHL-S-2.0 license.

Software Source Code

The source code located in the flows and scripts directories is released under the GPL-3.0 license.

Other Materials

All other materials, including documentation and pictures, are released under the Creative Commons CC-BY-SA 4.0 license.

If you wish to use any of the materials in this repository for a project that cannot be open-sourced, please contact us using Slack so we can discuss potential solutions.

We encourage you to fork this repository and publish any improvements you make. Doing so helps others and allows us to potentially integrate your changes into this repository.

Citing PlanktoScope

If you use PlanktoScope in your research, please use the following BibTeX entry.

@article{Pollina2022PlanktoScope,
  author={Pollina, Thibaut and Larson, Adam G. and Lombard, Fabien and Li, Hongquan and Le Guen, David and Colin, Sébastien and de Vargas, Colomban and Prakash, Manu},
  title={PlanktoScope: Affordable Modular Quantitative Imaging Platform for Citizen Oceanography},
  journal={Frontiers in Marine Science},
  year={2022},
  doi={10.3389/fmars.2022.949428}
}

planktoscope's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

planktoscope's Issues

Rename node-red metadata to allow import in EcoTaxa

Describe the bug
Few metadata used in Node-Red can't be processed by EcoTaxa since their names doesn't start by either of the following classes of metadata :

  • object_*** - metadata relative to one object to be classified, usually one organism.
  • acq_*** - metadata relative to the image acquisition
  • process_*** - metadata relative to the processing of the raw images
  • sample_*** - metadata relative to a collection event

Expected behavior

  • Rename custom_nb_frame by acq_nb_frame
  • Don't store custom_nb_step, custom_sleep_before, focus_nb_step, pump_flowrate and pump_manual_volume as metadata

Screenshots
image (12)

Unique identifier for the export zipfile

Describe the bug
The archive created by MorphoCut has a fix name export_ecotaxa.zip and is being overwritten during each segmentation.

Expected behavior
Rename export_ecotaxa.zip by a unique identifier including project_name, datetime and sample_id.

Camera failure on capture

Sometimes, during an imaging session, the camera will simply not capture and will wait forever the capture to happen.

This happened two times, once on the third picture taken, the second after ~800/1000 pictures.

Maybe we should stop the streaming server before starting the capture?

Precise the necessary and nice-to-have metadata list

We should list the metadata we want to save during a sampling and during an image analysis.

Top of my head:

  • gps position
  • date and time of sampling
  • sampling volume
  • sampling duration
  • sampling speed
  • sampling device

I'm probably missing a lot, please add to the list!

Better management of sample_id, acq_id and process_id

This issue is closely linked to #44 .

Right now, we have a semi-automatic system in place of management of ids.
sample_id is a number incremented by one on startup, the rest is static and user configured.
However, users commented that sample_id could also be a name, date, etc...
So this field should not be a number only that is incremented automatically.

acq_id and process_id on the other hand could be incremented automatically, that is if a capture of a particular sample already exists, the acq_id could change. Or better yet, we should ask the user what to do.

Same goes for process_id even if for now we don't have a way to change the segmentation settings in the UI (this is tracked by #60).

Limit focus stage movement to prevent crash of the flow cell on the lens

If the movement of the focus stage is too low, the flow cell crash against the bottom of the lens.
This could lead to a cracked and leaking flow cell, or in the worst case scenario a Rapid Unplanned Disassembly of the flow cell leading to water potentially leaking towards the electronics.

We thus need a way to limit the focus stage movement. It could be implemented in software, but it should also exist in hardware, to prevent malfunction linked to a bug or a crash.

ci: Automatically (re-)build OS images reproducibly in GitHub Actions

For now, master images are created using the golden record method (we create and setup a new raspberry, set everything up by hand and once it works, we pull the image from the sd card and share it).

While this method works, it's not very efficient, quite time-consuming, error prone and leads to big images to be shared with no opportunity for first time setup and such. Setting up pi-gen could be a good way to streamline the image creation process, to allow for reproducible builds and make released easier and faster.

Improve Dashboard UI

The current dashboard is a one page document. The elements are grouped by functionality, but to improve usage and readability, we should separate the different logic elements to different tabs, with logical navigation between tabs.

Maybe something @AurelieLabarre would like to have a look at?

docs: BOM unifying and references

A main BOM exists that can be used in the US. Several european suppliers BOM were created by people reproducing the build. These BOM should be unified and listed in the documentation to help people source the various components.

docs: Write a detailed getting started guide

After assembly and setup of the Planktoscope, it is not clear the steps that should be followed.

We need to write a guide to cover those steps:

  • full tests
  • first pictures
  • calibration of the machine
  • plankton collection with nets
  • basic and advanced workflow for data and image creation

Stray light degrades image quality

When using the PlanktoScope in a very bright environment, stray light degrades contrast of the pictures.

Simple cover elements could be used to protect the sample chamber and keep it dark.

Stabilize the node-red flows and python script

We need to stabilize the node-red flows and python script to make them both more robust and more modular. This should improve on-boarding and code understanding by new users, but also make it simpler to have the system evolve over time.
Also, setting this up will allow us to remove all the hard-coded values and addresses from the code (for example in the python code or in the node-red flows).

os: Timekeeping is off on the machine when it's offline or out of GPS signal

If the machine has no access to an NTP server and no GPS signal, timekeeping is not being done.
On a reboot, you expect that the clock will at least start up from where it left. This is not the case today.

After a successful time synchronization, either through GPS reception or through a NTP server, the time is saved on shutdown. On startup, the clock is restored to this state and runs normally (you know the way, one second per second). However, on this subsequent shutdown, the time is not being saved, meaning when we start up the machine a second time, it will go back in time (way more efficient than with a Delorean).

Anyway, this should be fixed.

Easy way to clean up optical path

Right now, the optical path is kind of hard to clean. We need to find a way to clean it, especially the slides that are very exposed.

Maybe so isopropanol with a non-woven tissue would do the trick and not leave anything trace behind.

Write an auto-update script and deployment script

We need a way to update automatically the onboard files to get the latest version of the software (mainly configuration files, flows, etc).

This could be a simple bash script launched from the UI that pulls and update the local repository.

Focus stage is not rigid enough

The imaging plate is only maintained in position by the two nuts on the stepper focus screws. This is clearly not rigid enough since small movement can happen back and forth. This could lead to a premature failure of the plastic nuts leading to a complete replacement of the stepper assembly.

A proposed low tech alternative is to only have manual control of the focus stage. If we reduce the different flow cells number (see #21) and lens disparity (#36), the interest in having a motorized focus stage is reduced a lot. The stepper assembly could then be replaced by a simple screw/nut assembly with two sliding rods on the side for guiding.

Design output of PlanktoScope as  "Fit for archive"

Raw output format of the PlanktonScope needs to be “fit for archive”, meaning we need a zip file with the images and an according txt file with the metadata (Lat, Lon, Datetime, Depth, Instrument set up, Segmentation algorithm details) that we can submit to a recognised data archive (zenodo, seanoe, pangaea or the like) in an almost automatic fashion. That way, we can submit it, get a DOI and then build the tools to analyse the data on the archived raw material (e.g. import to EcoTaxa and sort it there, but also other data processing will then be enabled). As datasets get a DOI, it will be easy to follow the data.

PlanktonScope should have a 'play' mode and a 'fit for archive' mode. Fit for archive mode will require all metadata set properly (including automatic tests; e.g. lat lon format correct, time correct, e-mail address of data provider, ...)

  • need to decide on an archive where to put the data

  • need an agreement in the PlanktonScope user group that data is first submitted to archive

  • data processing should follow the fair principles: https://www.go-fair.org/fair-principles/

Test Kamoer pump

We need to source an appropriate peristaltic pump, with consistent quality and availability.
Kamoer pumps seems to be appropriate candidates (see the catalog at http://kamoer.com/upload/file/201910/1571712939838489.pdf ).

We need to choose one or two models, get them to run 24/7 and see their lifetime (in terms of total volume pumped or something similar).

Stabilize the imager script

If we have a dirty shutdown of the imager script (via a sudo killall -9 python3 for example), the script sometimes doesn't start and fails silently on the camera instantiation. The only way to salvage the situation is to do a full restart of the machine.
So yeah, not good.

One way to manage this could be to capture signals in all the sub-scripts. Another way could be to wrap the camera api calls in try ... except wrappers.

Remove as much as possible the glue points

Using glue for mounting make things permanent and the part assembled in this way cannot be unmounted or adjusted after setup.

Specifically a new way to fix the focus motors should be found.

Invert the mount of the flowcell

Changing the flow cell necessitate to operate in the region of the lens, and neodymium magnets of the lens are interacting with the one blocking the flowcell (plus often need to loose the focus zone because the space is not large enough)

Could be solved by inverting the design between the fixed flowcell holder and the amovible flowcell holder (which would Then be on the side of the led light)

Node red becomes super slow

When the PlanktonScope folder is bloated (for example with thousands of pictures), node-red becomes super slow on deploy (i.e. when deploying the flows from the interface, node-red becomes unresponsive for several minutes).

This is fixed by moving the img and export folders to /home/pi/data.

Replacement for ibidi flow cell

Ibidi flow cells are expensive, hard to find and quite fragile.

A proposed inexpensive alternative is to use a flat capillary glass tube. Suppliers are still being searched.
A 3D printed support for this tube could be used to mount it in place of the ibidi flow cell.

focus stepper motor are prone to stop

The bottom stepper motor for focus can block (dust on it?). A gentle manual help unblock it

We should get a protection to this to avoid mist and dust on the focus structure

Reference image dataset to compare and intercalibrate different versions and parameters of the image processing pipeline

We should also have an image dataset to compare and intercalibrate different versions and parameters of the image processing pipeline. Preferably with manual measurements of the original physical sample.

I guess it would be impractical to run one specific wet sample through the machine again and again, as the sample will decay over time. I'm only talking about image processing after capture: Different image image enhancement methods, segmentation methods, ... We need to compare different pipelines among each other in terms of the numbers that are relevant in downstream analyses (biovolume/biomass estimates, abundance estimates, what else?).

What measures are needed here? Please complete the list.

  • Biovolume
  • Biomass
  • Abundance

Waterproofing electronics

We need to find a way to waterproof the electronics. Doesn't need to be IP69, but at least resistant to spray.

A good way to do this would be to use a waterproofing spray (some kind of water repellent spray). A simple very low cost and widely available solution could be to use a fine mist of WD40 (this doesn't dry, so it will leave the electronics kind of moist to the touch).

Systematic tests of lenses combination

We need to improve on two fields:

  • depth of field
  • field size

To that end, we need to have a systematic approach to test lens combination and decide on the best compromise.
Fabien reports having tested with a simple macro lens for smartphone as the reverse lens and to have great results, however we currently have no way of measuring the field size.

Ideally, the lens combination is fixed before Tara's test

Strobing the LED?

Have you experimented with strobing the LED to increase image clarity and/or capture rate?

Simultaneous movement of the pump stage and the focus stage.

It's not possible to have a simultaneous movement of the focus stage when the pump is running and vice versa.

This functionality could be useful when doing focus for example as it helps to see the particle movement in the imaging chamber.

Improve lens mount precision

The lens thread are sometimes fragile. We need a way to improve the lens mount, make sure they are perpendicular to their support and make sure the thread is not biased.

frontend/node-red-dashboard: Reset to recommended settings button

It is easy to play with settings, but we should add way to return to « recommended » settings

Bonus: if the settings could be saved in an easy configuration files, users could save their preferred settings (and we could provide several preferred depending on the lens)

Add a way to view the generated pictures

We need to find a way to extract the collected pictures other than having to connect through ssh/ftp to the planktoscope.

I'm thinking about setting up a basic webserver that would list the directory where the zip files generated are located.

This basic webserver could eventually also host the streaming flux from the camera.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.