User Tools

Site Tools


Data Storage

  • Behavior recordings (for Nicolina)
    • Recordings stored on soma
    • Experiment log with info for every recording in Dropbox/Projects/Natascha/BehaviorRecordings_Nicolina_Log
  • Hackathon material
    • All material (Lectures, environment, jupyter notebooks with practice tasks) on Dropbox/Projects/Natascha/Hackathon
  • Paper Summaries / Presentations
    • Papers summarized at beginning of position in Dropbox/Projects/Natascha/Paper Summaries
  • Presentations for JournalClubs / Update Meetings in Dropbox/Presentations
  • Autofocus testing
    • some example files on dropbox/Projects/Natascha/Autofocus_TestingFiles (didn't want to waste too much storage space)
    • otherwise displayed in the wiki scholzlab entries
  • Petridish design / Zaber Motion Library Info
    • file for 3D sketches of petridish holder & file with link to zaber motion library for python in dropbox/Projects/Macroscope
  • StageTrackingCode / MacroscopeGUI
    • everything inside the repository 'macroscope' on github
2020/08/31 02:07 · nhofmann

To Do's for Macroscope Set-Up

  • Code itself
    • Alter exposure time (15ms)
    • Size change for FOV (big field to find worm and center it, then switch to small)
    • Add exception if no worm is within FOV for clean exit (so connections to camera & stage are properly closed)
    • Add log file attaching all stage coordinates
  • Add live imaging (Window open parallel to GUI)
  • Create GUI
  • Create step-by-step manual for set-up
    • include most important alterations for stage & where to find additional info
    • put info for Zaber stage on dropbox
  • Test tracking under different conditions
    • see if it works with micro-lawns
    • put plate directly on table without petridish holder
  • Install set-up on 3011 behavior computer
  • Clean up github code & and make sure it's well documented/commented!
  • Run through set-up with one person from lab (Luis?)
2020/08/10 01:49 · nhofmann

Autofocus using z axis

  • Autofocus Code altered to use stage instead of objective
  • “Big” sweep is executed with 25 focus steps across 7 mm
  • “Narrow” sweep is then executed with 25 focus steps around 1.4 mm centered around the focalplane of the big sweep
  • Moves directly to position of the focal plane of the narrow sweep
    • for now done by list of axis positions, might be more elegantly solved by adding that information to img stack (numpy array)?

2020/07/22 08:41 · nhofmann

Macroscope GUI design

2020/07/22 02:09 · nhofmann

16.07.20 Monika log

  • Recordings for Nicolina with fresh lawn
    • About two thirds done, should only need one more day of recording (17.7.)
  • Hackathon lectures
    • learned a lot in terms of organization for a class
  • Further testing with the autofocus
    • Tried taking images with 70 steps again, function worked in choosing the right frame but camera is still off when moving to the focal plane
    • Laplace filter hasn't worked yet, need to find correct settings
    • Alterations to the way the z axis is swept still to be tested
    • Most important part: try figuring out whether the camera is consistent in its offset from the focal plane, maybe a stepcommand more or less can fix the issue
  • Stage Tracking
    • General first draft of stage code is done
    • Worm was successfully tracked for 5 min and kept in image center
    • Hard range limits for axes introduced to avoid collision with other setup parts
    • Extra file for homing and setting ranges, as well as moving the dish to the middle if device gets turned off set up
    • Extra file to test control of all the devices and general functionality set up
  • Issues to solve:
    • Only works with a longer runtime for now, stage movement needs time
      • Alter image segmentation process
        • bin four times
      • Maybe use an approach were stage movement is only executed inside the loop if device isn't busy, otherwise just keep taking pictures
      • Loop for image grabbing and inside that move stage?
      • Also slow down the speed at which stage moves so images aren't blurred
      • Reduce exposure time?
    • Filters have to be altered, with OP50-microlawn present program didn't identify worms
      • set Gaussian filter lower (3)
      • try quantile by using li threshold
    • Exceptions have to be handled
      • Axis out of range
      • No worm in the field of view in the beginning
    • Loop inside main functions needs proper input on how long to run for
    • Proper translation matrix needs to be set up to allow easy calibration
    • Function for prediction of next location needs to be added
  • Additional aims for the month of august:
    • Get the petridish holder sanded down and a rubber ring added to allow for different sized petridishes
      • Get it anodized
    • Set up a Stage and Autofocus manual including step-by-step instructions
      • Include a few commands that might be useful for the stage if settings need to be altered (e.g. range limits if set up changes)
    • Create a GUI to allow easier usage of the scripts/programs
2020/07/16 03:01 · nhofmann

StageCode - Testing

  • First draft of stage code done
    • Tested on lawn, able to center it
    • Tested on worm, able to follow it (around 5 min)
  • Hard range limits for axes introduced to avoid collision with other setup parts
  • Runtime was recorded and reduced from 3.32 s per loop to 1.12 s on average by altering execution order of stage initialization
  • Next steps to be done
    • filters have to be altered, with OP50-microlawn present program couldn't identify worm
    • exceptions have to be handled
      • axis out of range
      • no worm in the field of view in the beginning
    • loop inside main function needs proper input on how long to run for
    • proper file with translation matrix needs to be introduced to allow for easy calibration
    • function for prediction of next location needs to be added (see Flavell paper Monika provided:

2020/07/15 07:48 · nhofmann

24.06.20 Monika log


  • petridish holder and adapter 3D sketches are done and send to the workshop
  • Recordings for Nicolina with fresh lawns (one third done)
  • Hackathon Preparation
    • Self-assessment questionnaire
    • Short outline for every lecture
  • Autofocus
    • Testing function on micro-lawns worked
    • Testing function on worms not reliably successful, adjustments to be made
    • Worked through code, better understanding in general
  • Motion Stage
    • Hardware Initialization done
    • Stage Motion function done
    • Worked through pharaGlow code to understand prior image processing, tracking and what sort of input I get from this for my stage functions


  • Continue recordings for Nicolina, will need two more days of recording (29.6. & 17.7.)
  • Hackathon preparation
    • Prepare lectures by Friday 26th
    • Prepare project outlines
  • Autofocus
    • Testing on worms with adjusted stepsize
    • Read up on information transmission (bits)
  • Motion Stage
    • Create file to generate translation matrix (“stage calibration”)
    • Create function that takes in worm coordinates and uses translation matrix to determine coordinates for stage, will give out distances for each axis
2020/06/24 00:56 · nhofmann

Motion Stage Code - Notes

  • Hardware Initialization done
    • solved problem with renumbering devices after recognition
    • initialization of devices and axis not most elegant, but found no other solution without dynamically creating variables (check with Luis or Monika?)
    • change homing position of z-axis to max position? (otherwise the objective will get in the way)
  • Function to move axes to relative position done
    • problem: connection is closed after initialization, look up different code to open connection at beginning of code and only close after recording is done!
  • Next functions to define:
    • generating translation matrix from camera picture to stage coordinates (grid to check for stretching vector, rotation, and general sizes for pixels)
    • taking coordinates from camera picture and using translation matrix to translate to coordinates for stage axes (should return distances for motion function)
  • After this main body for stage motion is done, adjust functions from image processing and tracking from pharaGlow
    • add a function to predict next location of worm using previous vector(s?)

2020/06/23 13:45 · nhofmann

Autofocus testing with worms

  • Autofocus function itself works (choses right frame within recorded images), but when reopening pylonViewer the worm is out of focus
  • When running the function multiple times without moving the sample, half the time the focus is correctly identified in frame 15, the other half it seems like the focus is correctly identified in frame 16 but when opening pylon the worm is only actually in focus for focalplane 15
  • Testing a batch of different lawns showed that the focalplane was always around frame 15(±1), so I will make the range over which images are taken smaller and decrease stepsize to see whether this solves the issue

2020/06/18 10:01 · nhofmann

Autofocus Testing

  • Fluorescence settings: Gain 20 dB; Exposure time 300,000 us
    • Problem: Camera focuses on outer ring of hole in bottom instead of lawn
    • Tried to lift sample up to different heights to create space between bottom table and sample
    • Results at 29.0 mm above table satisfying
    • Camera position, height etc was realigned to have focus in middle range (result see below)
  • Same set-up was then used to test autofocus with transmission light & settings (Gain 5 dB; Exposure time 300 us)
    • Solutions for higher variance at end frames? (Will look at original frames and try to crop them to see how this alters variance)
  • Distance to table should be provided once the petridish holder is used
  • Other suggestion to improve set-up: it seems that cables at the top can restrict camera movement (can cause side ward motion), think of structure to relief weight

2020/06/15 09:58 · nhofmann
wiki/documentation/natascha.txt · Last modified: 2020/07/31 00:21 by mscholz