Git Product home page Git Product logo

bemovi's Introduction

Bemovi, software for extracting BEhaviour and MOrphology from VIdeos.

This is the stable version of the bemovi package described here: Pennekamp, F., N. Schtickzelle, and O. L. Petchey. 2015. BEMOVI, software for extracting behavior and morphology from videos, illustrated with analyses of microbes. Ecol Evol 5:2584–2595.

A detailed description how to install BEMOVI and its dependencies, as well as a worked example similar to the illustration in the article introducing BEMOVI can be found here: http://bemovi.info

Please refer to the change log at bemovi.info to follow up on recent hotfixes, features and developments.

bemovi's People

Contributors

pennekampster avatar opetchey avatar marcoplebani85 avatar vader avatar jasonigriff avatar arcimboldo avatar garnier-aurelie avatar

Stargazers

pierluigi colangeli avatar Moritz Lürig avatar  avatar Lennie Budgell avatar Thomas White avatar

Watchers

Rainer M Krug avatar  avatar  avatar Jason Griffiths avatar Emanuel A. Fronhofer avatar Julia Thüringer avatar David Inauen avatar

bemovi's Issues

Improve package documentation on bemovi.info

  1. add information about the content and format of particle.RData, trajectory.RData and Master.RData
  2. add section about trouble shooting tracking parameters
  3. add a change log to the site to inform about recent changes and potential issues with previous versions

Integrate filtering options between locate_and_measure and link_particles

Tracking is the most time-consuming aspect of BEMOVI so far. To cut time down for tracking, pre-filtering on the raw coordinates may be helpful: for instance, morphologies far outside the range encountered could be filtered out (this already happens due to size limits in the locate_and_measure, but more morphology variables could be included).

This requires that the link_particles function is changed to work on the particle.RData instead of the raw text files output by locate_and_measure.

merged_data check

Probably useful to have a check in the merge_data function something like:

if(length(merged2[,1]) == 0)
stop("The merged data has no observations. Probably this is due to no match in filenames in the video description file, and in the video files supplied.")

Population-level summary output

It might be helpful to have a population level summary output including population densities (optimally in individuals per ml).

trajectory summary

We could use the median instead of the mean; probably good idea to check some of the within trajectory variation

add merge_data checks and alter/check video info input

It is quite easy to have mismatches between the output of the trajectory/morphology data and the video input text file.

This can occur for example if file names do not match or if there are differing lengths or simply because spaces are used instead of tabs to separate text input.

Perhaps a .csv file would avoid the spacing issues and some checks could also be made to inform the user that there video input metadata is inconsistent with the names of the raw files.

Move from ImageJ to OpenCV

I will start the discussion the move from ImageJ to OpenCV.

An initial question in the OpenCV forum indicated that it would be possible to use OpenCV instead of ImageJ.

The process would involve the following steps:

Background identification and removal

Blob detection

https://learnopencv.com/blob-detection-using-opencv-python-c/

binarisation

i.e. converting the moving particles to one colour (necessary?)

morphology

particle tracking

particle measuring

Make bemovi work in docker

Java always want's to have access to X11, which causes problems in a docker image. The problem would be solved, if the argument -Djava.awt.headless=true would be added to the java calls. I don't think there would be any negative side effects?

Aspect ratio measurement

Major axis / minor axis measured, rather than length and width.
Get length and width from the direction of movement?

Trouble with link_particles function and data.table

I encountered an error in the link_particles function. Perhaps, as earlier, it has to do with an updated version 1.12.0 of data.table (13 jan, 2019). Here the error code:

Error in [<-.data.table(x, j = name, value = value) :
Cannot use := to add columns to a null data.table (no columns), currently. You can use := to add (empty) columns to a 0-row data.table (1 or more empty columns), though.

I'm a bit of a noob with scripting, but reinstalling data.table and bemovi did not work. :)

Check for no videos in specified directory

Add this to the function check_video_file_names. Would show a message of "no videos in selected directory, or selected directory does not exist, please check the path to the project directory and folder name for raw videos are correct."

trajectory.data contains NA values.

The output of the link_particles function (the trajectory.data object) sometimes contains NA values.
This doesn't seem to effect most things and I expect that it is related to movement variables such as step length being almost zero.

Trouble with the link_particles function

Here is the error message. I think it concerns the merging of ijout.txt files...

Error in [.data.table(data, !(diff(X) == 0 & diff(Y) == 0), ) :
i evaluates to a logical vector length 12336 but there are 12337 rows. Recycling of logical i is no longer allowed as it hides more bugs than is worth the rare convenience. Explicitly use rep(...,length=.N) if you really need to recycle.

analysis of .cxd files not working under Linux

The analysis of .cxd files is not working out-of-the box under Linux. This problem occurs because in the relevant functions the path to the ImageJ plugin directory (for using the required Bio-formats plugin) is hard coded to "/Applications/ImageJ" for all unix systems. However, this specific path is only correct for Mac OS. What we need here is a part of the "IJ.path" path (without "ij.jar"). Couldn't we use this information to make bemovi also work for .cxd files under Linux? NOTE: This will be really relevant if we want to use the MOSAIC plugin instead of the standalone particle tracker.

Bemovi link_particles error

I've been following the tutorial found in bemovi.info/pages/analysis.html and I've run into what I think is a bug. The link_particles function has a line in it that calls the organise_link_data function, which attempts to create an object called files that stores all the .ijout.txt files that are found in the trajectory folder. However, this is an issue because if you're following the tutorial, there are no .ijout.txt files in the trajectory folder. The only .ijout.txt files created are the ones in the particle data folder as created by the locate_and_measure_particles function. Therefore, I can't get through link_particles without getting an error. Am I just missing something?

Change hardcoded path to JAVA

In the link_particles function a hardcoded JAVA path needs to be changed so that different versions of Java may be used.

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.