GithubHelp home page GithubHelp logo

jshoyer / raspi-topdown-plant-imaging-12x Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 0.0 46 KB

Cron tables and helper shell scripts for top-down timelapse imaging of plant rosettes in a two-level controlled-environment growth chamber. See https://doi.org/cmxw

License: MIT License

Shell 100.00%
imaging plant-development raspberry-pi science timelapse

raspi-topdown-plant-imaging-12x's Introduction

  • πŸ‘‹ Hi, I’m Steen @jshoyer
  • πŸ‘€ I’m interested in viruses and plant growth.
  • 🌱 I’m currently studying mutational diversity in cassava and tomato ssDNA viruses.
  • πŸ’žοΈ I’m looking to collaborate on image analysis with R, python, and/or ImageJ.
  • πŸ“« [email protected]

I completed my PhD in computational and systems biology, working primarily at the Donald Danforth Plant Science Center, and then worked as a postdoc at Rutgers, the state university of New Jersey. See my google scholar profile or ORCID page for publications and datasets.

raspi-topdown-plant-imaging-12x's People

Contributors

jshoyer avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

raspi-topdown-plant-imaging-12x's Issues

More introductory material, especially on photo capture settings?

I may clean up some of the old notes below, though it is not obvious to me that this github project is the best place for them. Some of this stuff is briefly summarized in the methods section of my manuscript, which is version-specific.
May link to Nusinow lab tutorial in the future, especially if it gets cleaned up. Maybe that page should be split and made more general, possibly by drawing on materials from various branches of the 'outreach' repo.

  • Downloaded initial image from https://www.raspberrypi.org/downloads/raspbian/
  • Configured a few things---steps below.
  • Used Apple Pi Baker to back up disk image and write it to the other microSD cards, then booted with those SD cards and set the hostname for each one.
  1. sudo raspi-config
    1. Timezone
      • Direct method: sudo dpkg-reconfigure tzdata
      • What is the default timezone (and keyboard layout)? I can't remember.
    2. Enable camera
    3. Advanced --> Change hostname
    4. Change password
  2. Adjusted wifi power at some point, as Cesar does:
    sudo nano /etc/network/interfaces
    in a new line under wlan0:
    wireless-power off
  3. Add SSH keys to ~/.ssh/authorized_keys
  4. Put info into /etc/wpa_supplicant/wpa_supplicant.conf
  5. sudo apt-get update (or upgrade?)
  6. sudo apt-get install ganglia-monitor ganglia-monitor-python rsync sqlite3 python-picamera python3-picamera

I have not attempted to document ganglia stuff here. I am afraid that ganglia will change, rendering notes obsolete. Treat it as optional, as CΓ©sar does.
gmond.conf
gmond-receiver.conf

The first line/variable of the following caused me problems:

udp_send_channel {
       bind_hostname = yes  # Highly recommended, soon to be default.
       ...

More detailed/rigorous log files and/or better alert methods

These are just general thoughts---I will not necessarily follow up on any of them.

Metadata is baked into file names (and the exif fields), so we can semiautomatically "audit" the files to make sure every capture proceeded as scheduled. However, it would be preferable to check that captures occurred as scheduled right away, so that we could correct problems sooner rather than later. One would probably want to use python rather than bash scripting, and perhaps also sqlite.

rsync seems pretty solid, so I am less worried about failed transfers causing loss of data, but I would like to record stats of which file transfers worked the first time, second time, etc., to have a better baseline for wifi uptime. (This would be useful for distinguishing wifi problems from crashes.)

Ganglia logs all sorts of stuff, but I do not know how to query it. I also do not have a good sense about when I should start worrying about averaging of old data in the round-robin databases.
As fair as I can tell, Ganglia does not log anything equivalent the output of cat /proc/net/wireless ("Wifi link quality", "Wifi signal level" [in dBm], and "Wifi noise"), nor the output of iwconfig wlan0 (which includes 'Bit Rate' in Mb/s and 'Tx-Power' in dBm).

One can get notifications from Ansible (e.g. via slack): https://github.com/maliagehan/gehan-bramble/blob/master/playbooks/take-pictures.yml

Formatting and file name annoyances

These are notes to myself---I am probably just going to live with these annoyances. Switching to (exported) Markdown might be the path of least resistance if some non-Emacs-user started making substantial edits, so I have tested export (on a branch). Export worked well enough.

GitLab.com is set to mirror changes in this repository once per hour. It appears to do a good job rendering Org-Mode files, except for the fact that it does not auto-recognize URIs unless they are enclosed in double brackets. As of this writing, GitLab renders plain lists containing paragraph breaks differently than GitHub does. See 'The most reliable way to deal with this issue...' lines

Bitbucket does not even try to render org files. It does not even register 'README.org' as a Read-Me file worth displaying in the project summary page.

Recall that GitHub uses file extension (.org) when deciding how to render a readme file. It does not pay any attention to emacs first-line variables (i.e. -*- mode: org; var: value; … -*-)

Perhaps I should have used the traditional file name 'LICENSE' instead of 'LICENSE-MIT'. Hopefully the file name will not confuse too many bots.

  • Update (next day): I manually set the License field for Zenodo record. I cannot tell if Zenodo would have automatically recognized the type of license if I had used a standard file name (i.e. LICENSE or COPYING).

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.