Repository files navigation

Drifting In Situ Chamber User Software in R

Installation

  1. Install R from http://cran.rstudio.com/

  2. Optionally install RStudio from http://www.rstudio.com/products/rstudio/download/

  3. Install discr. discr is an R package but it is not (yet) available in the official R packages repositories. To install it, start RStudio and, in the console, type

     install.packages("devtools")
    devtools::install_github("jiho/discr")
    
  4. Load discr and check your installation with

     library("discr")
    disc_check()
    

    disc_check() will give you platform-specific pointers to install the software discr depends on. discr needs

    • A java JRE to run the image manipulation parts; from https://www.java.com/en/download/
    • The exif executable from libexif to extract timestamp from images; installation is usually done through a package manager
    • ImageMagick (the convert executable) to resize images to more manageable sizes; from http://www.imagemagick.org/ or through a package manager

Basic usage

Start a new project

In R, use

library("discr")
disc_start_project()

to create a new project template in the current directory (you can then move it to wherever you want). See ?disc_start_project for other arguments.

Data collection

Raw data collected with the DISC is stored in one directory (raw in the project template). A subdirectory is created for each deployment leg (usually one per day). Within each leg, a subdirectory is created for each sensor on the DISC (camera, compass, light sensor, etc.). The information for every leg and every deployment within each leg is written down in a log file, in the form of a spreadsheet (saved as a Comma Separated Values, *.csv, file), which is stored in the raw directory.

The final hierarchy usually looks like

DISC_A/
raw/
leg_1/
pics/
G001234.JPG
G001235.JPG
G001236.JPG
...
compass/
DATALOG.txt
hobo/
123459.hobo
123459.csv
...
leg_2/
pics/
compass/
hobo/
...
leg_log.csv
deployment_log.csv

The format for the leg_log.csv file is:

 leg, gopro_start, gopro_stop, gopro_dir, gopro_offset, cc_start, ...
leg_1, 12:22:25, 17:35:01, pics, -6, 12:20:10, ...
leg_2, ...,

It has the leg directory name and information for each sensor. The column names are in the form sensorName_informationLabel. The underscore (_) in the middle is important. The usual information labels for each sensor are :

  • start and stop : the start and stop time of the sensor (not used by discr but important to record)
  • dir : the name of the directory in which the sensor data is stored. When absent, this is supposed to be the name of the sensor itself. Pictures should always be stored in a directory called pics; compass data should always be stored in a directory called compass; the rest of the names are free.
  • offset : the time offset (in seconds) between the sensor time and a reference time (usually the time of a computer). When absent, it is supposed to be 0. The offset is added to the timestamp of the data to correct it back to the reference time. So it should be negative when the sensor is early and positive when it is late. For example, if the sensor records 08:55:12 but the actual time is 08:55:10, the sensor is early and the offset is -2.

Other columns can be added but should not have an underscore in their names. Use dots (personal.comments) or capitals (personalComments) to separate words.

The format for the deployment_log.csv is:

deploy_id, leg, date_start, date_stop, time_start, time_stop
1, leg_1, 2014-05-22, 2014-05-22, 23:31:23, 23:52:10
2, leg_1, 2014-05-22, 2014-05-23, 23:54:34, 00:05:12
3, leg_1, 2014-05-23, 2014-05-23, 00:08:15, 00:29:12
...

It has

  • deploy_id : a unique deployment identifier. It can be anything but is usually an integer number(as here), which makes it easy to specify ranges of deployments.
  • leg : the corresponding leg directory name
  • date_start, date_stop : date in format YYYY-MM-DD.
  • time_start, time_stop : time in format HH:MM:SS; the combination of date and time allows deployments to cross midnight

The deployment log usually has other columns such as fish species, meteorological conditions, etc. The names of those columns are free, but try to avoid special characters (accents, parentheses, exponents, etc.)

Extract deployments

The directory described above holds the whole raw data record. To be analysed, it needs to be split into deployments. The deployments are smaller than the raw data and are usually stored in another directory of your project called deployments. Once all the deployments are extracted, the raw data (which can be quite big) can be moved and stored elsewhere.

In an R console, in your project directory:

library("discr")
disc_extract_deployments(raw="raw")

If you want to extract only a few deployments, use

disc_extract_deployments(raw="raw", ids=10:20)

for deployments 10 to 20 or

disc_extract_deployments(raw="raw", ids=c("1a", "2a", "2b", "6"))

for deployments 1a, 2a, 3b and 6, for example. (NB: This highlights why having integer deployment identifiers is easier.)

See ?disc_extract_deployments for more information.

Process deployments

In your project directory, load discr

library("discr")

Then process deployments with a command such as

disc(1:10, actions=c("calib", "track"))

to calibrate the arena dimensions and track the larva, in deployments 1 to 10.

See ?disc for a description of all actions and more examples. Default actions are "calibrate", "track", "correct", and "stats".

Check your progress with

disc_status()
# or
dstatus()
# for short

and now disc() again. Good luck!

Analyse data

Again, open R in your project directory and load discr

library("discr")

Check available data with

disc_status()

Collect statistics for all larvae in a data.frame with

disc_assemble("stats")

Alternatively, you can select a few deployments only with

disc_assemble("stats", ids=1:10)

You can also collect all tracks, or gps data, or hobo data, etc. with

disc_assemble("rotated_larvae_tracks")
disc_assemble("gps_log")
disc_assemble("hobo_log")

What disc_assemble() does is look for files with the given pattern in their name, read them all and concatenate the result.

Now you are ready to do you analyses in R. discr provides a few helpful functions to work with angles

?summary.circular
?polar
?circular_dotplot
?angles

check out the circular package for other.

Advanced usage

If storing your deployments in a subdirectory of your working directory is not appropriate (not enough space on hard drive, etc.), you can store them elsewhere and still get to them from your working directory, either by providing the path through the deploy.dir argument of each function, or, more efficiently, by setting it at the start of the session with disc_dd. See ?disc_dd for more information.

New sensors can easily be added and handled by discr; see ?disc_read for more information.

Credit

discr is written by Jean-Olivier Irisson, at Université Pierre et Marie Curie (UPMC). All code is released under the GNU General Public License v3.0.

The DISC instrument is developed by Claire Paris at the Rosenstiel School of Marine and Atmospheric Sciences (RSMAS) of the University of Miami.

Most of the image analysis functionality relies on ImageJ by Wayne Rasband.

Circular statistics are performed with the package circular for R.

About

Drifting In Situ Chamber

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Drifting In Situ Chamber User Software in R

Installation

  1. Install R from http://cran.rstudio.com/

  2. Optionally install RStudio from http://www.rstudio.com/products/rstudio/download/

  3. Install discr. discr is an R package but it is not (yet) available in the official R packages repositories. To install it, start RStudio and, in the console, type

     install.packages("devtools")
    devtools::install_github("jiho/discr")
    
  4. Load discr and check your installation with

     library("discr")
    disc_check()
    

    disc_check() will give you platform-specific pointers to install the software discr depends on. discr needs

    • A java JRE to run the image manipulation parts; from https://www.java.com/en/download/
    • The exif executable from libexif to extract timestamp from images; installation is usually done through a package manager
    • ImageMagick (the convert executable) to resize images to more manageable sizes; from http://www.imagemagick.org/ or through a package manager

Basic usage

Start a new project

In R, use

library("discr")
disc_start_project()

to create a new project template in the current directory (you can then move it to wherever you want). See ?disc_start_project for other arguments.

Data collection

Raw data collected with the DISC is stored in one directory (raw in the project template). A subdirectory is created for each deployment leg (usually one per day). Within each leg, a subdirectory is created for each sensor on the DISC (camera, compass, light sensor, etc.). The information for every leg and every deployment within each leg is written down in a log file, in the form of a spreadsheet (saved as a Comma Separated Values, *.csv, file), which is stored in the raw directory.

The final hierarchy usually looks like

DISC_A/
raw/
leg_1/
pics/
G001234.JPG
G001235.JPG
G001236.JPG
...
compass/
DATALOG.txt
hobo/
123459.hobo
123459.csv
...
leg_2/
pics/
compass/
hobo/
...
leg_log.csv
deployment_log.csv

The format for the leg_log.csv file is:

 leg, gopro_start, gopro_stop, gopro_dir, gopro_offset, cc_start, ...
leg_1, 12:22:25, 17:35:01, pics, -6, 12:20:10, ...
leg_2, ...,

It has the leg directory name and information for each sensor. The column names are in the form sensorName_informationLabel. The underscore (_) in the middle is important. The usual information labels for each sensor are :

  • start and stop : the start and stop time of the sensor (not used by discr but important to record)
  • dir : the name of the directory in which the sensor data is stored. When absent, this is supposed to be the name of the sensor itself. Pictures should always be stored in a directory called pics; compass data should always be stored in a directory called compass; the rest of the names are free.
  • offset : the time offset (in seconds) between the sensor time and a reference time (usually the time of a computer). When absent, it is supposed to be 0. The offset is added to the timestamp of the data to correct it back to the reference time. So it should be negative when the sensor is early and positive when it is late. For example, if the sensor records 08:55:12 but the actual time is 08:55:10, the sensor is early and the offset is -2.

Other columns can be added but should not have an underscore in their names. Use dots (personal.comments) or capitals (personalComments) to separate words.

The format for the deployment_log.csv is:

deploy_id, leg, date_start, date_stop, time_start, time_stop
1, leg_1, 2014-05-22, 2014-05-22, 23:31:23, 23:52:10
2, leg_1, 2014-05-22, 2014-05-23, 23:54:34, 00:05:12
3, leg_1, 2014-05-23, 2014-05-23, 00:08:15, 00:29:12
...

It has

  • deploy_id : a unique deployment identifier. It can be anything but is usually an integer number(as here), which makes it easy to specify ranges of deployments.
  • leg : the corresponding leg directory name
  • date_start, date_stop : date in format YYYY-MM-DD.
  • time_start, time_stop : time in format HH:MM:SS; the combination of date and time allows deployments to cross midnight

The deployment log usually has other columns such as fish species, meteorological conditions, etc. The names of those columns are free, but try to avoid special characters (accents, parentheses, exponents, etc.)

Extract deployments

The directory described above holds the whole raw data record. To be analysed, it needs to be split into deployments. The deployments are smaller than the raw data and are usually stored in another directory of your project called deployments. Once all the deployments are extracted, the raw data (which can be quite big) can be moved and stored elsewhere.

In an R console, in your project directory:

library("discr")
disc_extract_deployments(raw="raw")

If you want to extract only a few deployments, use

disc_extract_deployments(raw="raw", ids=10:20)

for deployments 10 to 20 or

disc_extract_deployments(raw="raw", ids=c("1a", "2a", "2b", "6"))

for deployments 1a, 2a, 3b and 6, for example. (NB: This highlights why having integer deployment identifiers is easier.)

See ?disc_extract_deployments for more information.

Process deployments

In your project directory, load discr

library("discr")

Then process deployments with a command such as

disc(1:10, actions=c("calib", "track"))

to calibrate the arena dimensions and track the larva, in deployments 1 to 10.

See ?disc for a description of all actions and more examples. Default actions are "calibrate", "track", "correct", and "stats".

Check your progress with

disc_status()
# or
dstatus()
# for short

and now disc() again. Good luck!

Analyse data

Again, open R in your project directory and load discr

library("discr")

Check available data with

disc_status()

Collect statistics for all larvae in a data.frame with

disc_assemble("stats")

Alternatively, you can select a few deployments only with

disc_assemble("stats", ids=1:10)

You can also collect all tracks, or gps data, or hobo data, etc. with

disc_assemble("rotated_larvae_tracks")
disc_assemble("gps_log")
disc_assemble("hobo_log")

What disc_assemble() does is look for files with the given pattern in their name, read them all and concatenate the result.

Now you are ready to do you analyses in R. discr provides a few helpful functions to work with angles

?summary.circular
?polar
?circular_dotplot
?angles

check out the circular package for other.

Advanced usage

If storing your deployments in a subdirectory of your working directory is not appropriate (not enough space on hard drive, etc.), you can store them elsewhere and still get to them from your working directory, either by providing the path through the deploy.dir argument of each function, or, more efficiently, by setting it at the start of the session with disc_dd. See ?disc_dd for more information.

New sensors can easily be added and handled by discr; see ?disc_read for more information.

Credit

discr is written by Jean-Olivier Irisson, at Université Pierre et Marie Curie (UPMC). All code is released under the GNU General Public License v3.0.

The DISC instrument is developed by Claire Paris at the Rosenstiel School of Marine and Atmospheric Sciences (RSMAS) of the University of Miami.

Most of the image analysis functionality relies on ImageJ by Wayne Rasband.

Circular statistics are performed with the package circular for R.

About

Drifting In Situ Chamber

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Drifting In Situ Chamber User Software in R

Installation

  1. Install R from http://cran.rstudio.com/

  2. Optionally install RStudio from http://www.rstudio.com/products/rstudio/download/

  3. Install discr. discr is an R package but it is not (yet) available in the official R packages repositories. To install it, start RStudio and, in the console, type

     install.packages("devtools")
    devtools::install_github("jiho/discr")
    
  4. Load discr and check your installation with

     library("discr")
    disc_check()
    

    disc_check() will give you platform-specific pointers to install the software discr depends on. discr needs

    • A java JRE to run the image manipulation parts; from https://www.java.com/en/download/
    • The exif executable from libexif to extract timestamp from images; installation is usually done through a package manager
    • ImageMagick (the convert executable) to resize images to more manageable sizes; from http://www.imagemagick.org/ or through a package manager

Basic usage

Start a new project

In R, use

library("discr")
disc_start_project()

to create a new project template in the current directory (you can then move it to wherever you want). See ?disc_start_project for other arguments.

Data collection

Raw data collected with the DISC is stored in one directory (raw in the project template). A subdirectory is created for each deployment leg (usually one per day). Within each leg, a subdirectory is created for each sensor on the DISC (camera, compass, light sensor, etc.). The information for every leg and every deployment within each leg is written down in a log file, in the form of a spreadsheet (saved as a Comma Separated Values, *.csv, file), which is stored in the raw directory.

The final hierarchy usually looks like

DISC_A/
raw/
leg_1/
pics/
G001234.JPG
G001235.JPG
G001236.JPG
...
compass/
DATALOG.txt
hobo/
123459.hobo
123459.csv
...
leg_2/
pics/
compass/
hobo/
...
leg_log.csv
deployment_log.csv

The format for the leg_log.csv file is:

 leg, gopro_start, gopro_stop, gopro_dir, gopro_offset, cc_start, ...
leg_1, 12:22:25, 17:35:01, pics, -6, 12:20:10, ...
leg_2, ...,

It has the leg directory name and information for each sensor. The column names are in the form sensorName_informationLabel. The underscore (_) in the middle is important. The usual information labels for each sensor are :

  • start and stop : the start and stop time of the sensor (not used by discr but important to record)
  • dir : the name of the directory in which the sensor data is stored. When absent, this is supposed to be the name of the sensor itself. Pictures should always be stored in a directory called pics; compass data should always be stored in a directory called compass; the rest of the names are free.
  • offset : the time offset (in seconds) between the sensor time and a reference time (usually the time of a computer). When absent, it is supposed to be 0. The offset is added to the timestamp of the data to correct it back to the reference time. So it should be negative when the sensor is early and positive when it is late. For example, if the sensor records 08:55:12 but the actual time is 08:55:10, the sensor is early and the offset is -2.

Other columns can be added but should not have an underscore in their names. Use dots (personal.comments) or capitals (personalComments) to separate words.

The format for the deployment_log.csv is:

deploy_id, leg, date_start, date_stop, time_start, time_stop
1, leg_1, 2014-05-22, 2014-05-22, 23:31:23, 23:52:10
2, leg_1, 2014-05-22, 2014-05-23, 23:54:34, 00:05:12
3, leg_1, 2014-05-23, 2014-05-23, 00:08:15, 00:29:12
...

It has

  • deploy_id : a unique deployment identifier. It can be anything but is usually an integer number(as here), which makes it easy to specify ranges of deployments.
  • leg : the corresponding leg directory name
  • date_start, date_stop : date in format YYYY-MM-DD.
  • time_start, time_stop : time in format HH:MM:SS; the combination of date and time allows deployments to cross midnight

The deployment log usually has other columns such as fish species, meteorological conditions, etc. The names of those columns are free, but try to avoid special characters (accents, parentheses, exponents, etc.)

Extract deployments

The directory described above holds the whole raw data record. To be analysed, it needs to be split into deployments. The deployments are smaller than the raw data and are usually stored in another directory of your project called deployments. Once all the deployments are extracted, the raw data (which can be quite big) can be moved and stored elsewhere.

In an R console, in your project directory:

library("discr")
disc_extract_deployments(raw="raw")

If you want to extract only a few deployments, use

disc_extract_deployments(raw="raw", ids=10:20)

for deployments 10 to 20 or

disc_extract_deployments(raw="raw", ids=c("1a", "2a", "2b", "6"))

for deployments 1a, 2a, 3b and 6, for example. (NB: This highlights why having integer deployment identifiers is easier.)

See ?disc_extract_deployments for more information.

Process deployments

In your project directory, load discr

library("discr")

Then process deployments with a command such as

disc(1:10, actions=c("calib", "track"))

to calibrate the arena dimensions and track the larva, in deployments 1 to 10.

See ?disc for a description of all actions and more examples. Default actions are "calibrate", "track", "correct", and "stats".

Check your progress with

disc_status()
# or
dstatus()
# for short

and now disc() again. Good luck!

Analyse data

Again, open R in your project directory and load discr

library("discr")

Check available data with

disc_status()

Collect statistics for all larvae in a data.frame with

disc_assemble("stats")

Alternatively, you can select a few deployments only with

disc_assemble("stats", ids=1:10)

You can also collect all tracks, or gps data, or hobo data, etc. with

disc_assemble("rotated_larvae_tracks")
disc_assemble("gps_log")
disc_assemble("hobo_log")

What disc_assemble() does is look for files with the given pattern in their name, read them all and concatenate the result.

Now you are ready to do you analyses in R. discr provides a few helpful functions to work with angles

?summary.circular
?polar
?circular_dotplot
?angles

check out the circular package for other.

Advanced usage

If storing your deployments in a subdirectory of your working directory is not appropriate (not enough space on hard drive, etc.), you can store them elsewhere and still get to them from your working directory, either by providing the path through the deploy.dir argument of each function, or, more efficiently, by setting it at the start of the session with disc_dd. See ?disc_dd for more information.

New sensors can easily be added and handled by discr; see ?disc_read for more information.

Credit

discr is written by Jean-Olivier Irisson, at Université Pierre et Marie Curie (UPMC). All code is released under the GNU General Public License v3.0.

The DISC instrument is developed by Claire Paris at the Rosenstiel School of Marine and Atmospheric Sciences (RSMAS) of the University of Miami.

Most of the image analysis functionality relies on ImageJ by Wayne Rasband.

Circular statistics are performed with the package circular for R.

About

Drifting In Situ Chamber

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Drifting In Situ Chamber User Software in R

Installation

  1. Install R from http://cran.rstudio.com/

  2. Optionally install RStudio from http://www.rstudio.com/products/rstudio/download/

  3. Install discr. discr is an R package but it is not (yet) available in the official R packages repositories. To install it, start RStudio and, in the console, type

     install.packages("devtools")
    devtools::install_github("jiho/discr")
    
  4. Load discr and check your installation with

     library("discr")
    disc_check()
    

    disc_check() will give you platform-specific pointers to install the software discr depends on. discr needs

    • A java JRE to run the image manipulation parts; from https://www.java.com/en/download/
    • The exif executable from libexif to extract timestamp from images; installation is usually done through a package manager
    • ImageMagick (the convert executable) to resize images to more manageable sizes; from http://www.imagemagick.org/ or through a package manager

Basic usage

Start a new project

In R, use

library("discr")
disc_start_project()

to create a new project template in the current directory (you can then move it to wherever you want). See ?disc_start_project for other arguments.

Data collection

Raw data collected with the DISC is stored in one directory (raw in the project template). A subdirectory is created for each deployment leg (usually one per day). Within each leg, a subdirectory is created for each sensor on the DISC (camera, compass, light sensor, etc.). The information for every leg and every deployment within each leg is written down in a log file, in the form of a spreadsheet (saved as a Comma Separated Values, *.csv, file), which is stored in the raw directory.

The final hierarchy usually looks like

DISC_A/
raw/
leg_1/
pics/
G001234.JPG
G001235.JPG
G001236.JPG
...
compass/
DATALOG.txt
hobo/
123459.hobo
123459.csv
...
leg_2/
pics/
compass/
hobo/
...
leg_log.csv
deployment_log.csv

The format for the leg_log.csv file is:

 leg, gopro_start, gopro_stop, gopro_dir, gopro_offset, cc_start, ...
leg_1, 12:22:25, 17:35:01, pics, -6, 12:20:10, ...
leg_2, ...,

It has the leg directory name and information for each sensor. The column names are in the form sensorName_informationLabel. The underscore (_) in the middle is important. The usual information labels for each sensor are :

  • start and stop : the start and stop time of the sensor (not used by discr but important to record)
  • dir : the name of the directory in which the sensor data is stored. When absent, this is supposed to be the name of the sensor itself. Pictures should always be stored in a directory called pics; compass data should always be stored in a directory called compass; the rest of the names are free.
  • offset : the time offset (in seconds) between the sensor time and a reference time (usually the time of a computer). When absent, it is supposed to be 0. The offset is added to the timestamp of the data to correct it back to the reference time. So it should be negative when the sensor is early and positive when it is late. For example, if the sensor records 08:55:12 but the actual time is 08:55:10, the sensor is early and the offset is -2.

Other columns can be added but should not have an underscore in their names. Use dots (personal.comments) or capitals (personalComments) to separate words.

The format for the deployment_log.csv is:

deploy_id, leg, date_start, date_stop, time_start, time_stop
1, leg_1, 2014-05-22, 2014-05-22, 23:31:23, 23:52:10
2, leg_1, 2014-05-22, 2014-05-23, 23:54:34, 00:05:12
3, leg_1, 2014-05-23, 2014-05-23, 00:08:15, 00:29:12
...

It has

  • deploy_id : a unique deployment identifier. It can be anything but is usually an integer number(as here), which makes it easy to specify ranges of deployments.
  • leg : the corresponding leg directory name
  • date_start, date_stop : date in format YYYY-MM-DD.
  • time_start, time_stop : time in format HH:MM:SS; the combination of date and time allows deployments to cross midnight

The deployment log usually has other columns such as fish species, meteorological conditions, etc. The names of those columns are free, but try to avoid special characters (accents, parentheses, exponents, etc.)

Extract deployments

The directory described above holds the whole raw data record. To be analysed, it needs to be split into deployments. The deployments are smaller than the raw data and are usually stored in another directory of your project called deployments. Once all the deployments are extracted, the raw data (which can be quite big) can be moved and stored elsewhere.

In an R console, in your project directory:

library("discr")
disc_extract_deployments(raw="raw")

If you want to extract only a few deployments, use

disc_extract_deployments(raw="raw", ids=10:20)

for deployments 10 to 20 or

disc_extract_deployments(raw="raw", ids=c("1a", "2a", "2b", "6"))

for deployments 1a, 2a, 3b and 6, for example. (NB: This highlights why having integer deployment identifiers is easier.)

See ?disc_extract_deployments for more information.

Process deployments

In your project directory, load discr

library("discr")

Then process deployments with a command such as

disc(1:10, actions=c("calib", "track"))

to calibrate the arena dimensions and track the larva, in deployments 1 to 10.

See ?disc for a description of all actions and more examples. Default actions are "calibrate", "track", "correct", and "stats".

Check your progress with

disc_status()
# or
dstatus()
# for short

and now disc() again. Good luck!

Analyse data

Again, open R in your project directory and load discr

library("discr")

Check available data with

disc_status()

Collect statistics for all larvae in a data.frame with

disc_assemble("stats")

Alternatively, you can select a few deployments only with

disc_assemble("stats", ids=1:10)

You can also collect all tracks, or gps data, or hobo data, etc. with

disc_assemble("rotated_larvae_tracks")
disc_assemble("gps_log")
disc_assemble("hobo_log")

What disc_assemble() does is look for files with the given pattern in their name, read them all and concatenate the result.

Now you are ready to do you analyses in R. discr provides a few helpful functions to work with angles

?summary.circular
?polar
?circular_dotplot
?angles

check out the circular package for other.

Advanced usage

If storing your deployments in a subdirectory of your working directory is not appropriate (not enough space on hard drive, etc.), you can store them elsewhere and still get to them from your working directory, either by providing the path through the deploy.dir argument of each function, or, more efficiently, by setting it at the start of the session with disc_dd. See ?disc_dd for more information.

New sensors can easily be added and handled by discr; see ?disc_read for more information.

Credit

discr is written by Jean-Olivier Irisson, at Université Pierre et Marie Curie (UPMC). All code is released under the GNU General Public License v3.0.

The DISC instrument is developed by Claire Paris at the Rosenstiel School of Marine and Atmospheric Sciences (RSMAS) of the University of Miami.

Most of the image analysis functionality relies on ImageJ by Wayne Rasband.

Circular statistics are performed with the package circular for R.

About

Drifting In Situ Chamber

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Drifting In Situ Chamber User Software in R

Installation

  1. Install R from http://cran.rstudio.com/

  2. Optionally install RStudio from http://www.rstudio.com/products/rstudio/download/

  3. Install discr. discr is an R package but it is not (yet) available in the official R packages repositories. To install it, start RStudio and, in the console, type

     install.packages("devtools")
    devtools::install_github("jiho/discr")
    
  4. Load discr and check your installation with

     library("discr")
    disc_check()
    

    disc_check() will give you platform-specific pointers to install the software discr depends on. discr needs

    • A java JRE to run the image manipulation parts; from https://www.java.com/en/download/
    • The exif executable from libexif to extract timestamp from images; installation is usually done through a package manager
    • ImageMagick (the convert executable) to resize images to more manageable sizes; from http://www.imagemagick.org/ or through a package manager

Basic usage

Start a new project

In R, use

library("discr")
disc_start_project()

to create a new project template in the current directory (you can then move it to wherever you want). See ?disc_start_project for other arguments.

Data collection

Raw data collected with the DISC is stored in one directory (raw in the project template). A subdirectory is created for each deployment leg (usually one per day). Within each leg, a subdirectory is created for each sensor on the DISC (camera, compass, light sensor, etc.). The information for every leg and every deployment within each leg is written down in a log file, in the form of a spreadsheet (saved as a Comma Separated Values, *.csv, file), which is stored in the raw directory.

The final hierarchy usually looks like

DISC_A/
raw/
leg_1/
pics/
G001234.JPG
G001235.JPG
G001236.JPG
...
compass/
DATALOG.txt
hobo/
123459.hobo
123459.csv
...
leg_2/
pics/
compass/
hobo/
...
leg_log.csv
deployment_log.csv

The format for the leg_log.csv file is:

 leg, gopro_start, gopro_stop, gopro_dir, gopro_offset, cc_start, ...
leg_1, 12:22:25, 17:35:01, pics, -6, 12:20:10, ...
leg_2, ...,

It has the leg directory name and information for each sensor. The column names are in the form sensorName_informationLabel. The underscore (_) in the middle is important. The usual information labels for each sensor are :

  • start and stop : the start and stop time of the sensor (not used by discr but important to record)
  • dir : the name of the directory in which the sensor data is stored. When absent, this is supposed to be the name of the sensor itself. Pictures should always be stored in a directory called pics; compass data should always be stored in a directory called compass; the rest of the names are free.
  • offset : the time offset (in seconds) between the sensor time and a reference time (usually the time of a computer). When absent, it is supposed to be 0. The offset is added to the timestamp of the data to correct it back to the reference time. So it should be negative when the sensor is early and positive when it is late. For example, if the sensor records 08:55:12 but the actual time is 08:55:10, the sensor is early and the offset is -2.

Other columns can be added but should not have an underscore in their names. Use dots (personal.comments) or capitals (personalComments) to separate words.

The format for the deployment_log.csv is:

deploy_id, leg, date_start, date_stop, time_start, time_stop
1, leg_1, 2014-05-22, 2014-05-22, 23:31:23, 23:52:10
2, leg_1, 2014-05-22, 2014-05-23, 23:54:34, 00:05:12
3, leg_1, 2014-05-23, 2014-05-23, 00:08:15, 00:29:12
...

It has

  • deploy_id : a unique deployment identifier. It can be anything but is usually an integer number(as here), which makes it easy to specify ranges of deployments.
  • leg : the corresponding leg directory name
  • date_start, date_stop : date in format YYYY-MM-DD.
  • time_start, time_stop : time in format HH:MM:SS; the combination of date and time allows deployments to cross midnight

The deployment log usually has other columns such as fish species, meteorological conditions, etc. The names of those columns are free, but try to avoid special characters (accents, parentheses, exponents, etc.)

Extract deployments

The directory described above holds the whole raw data record. To be analysed, it needs to be split into deployments. The deployments are smaller than the raw data and are usually stored in another directory of your project called deployments. Once all the deployments are extracted, the raw data (which can be quite big) can be moved and stored elsewhere.

In an R console, in your project directory:

library("discr")
disc_extract_deployments(raw="raw")

If you want to extract only a few deployments, use

disc_extract_deployments(raw="raw", ids=10:20)

for deployments 10 to 20 or

disc_extract_deployments(raw="raw", ids=c("1a", "2a", "2b", "6"))

for deployments 1a, 2a, 3b and 6, for example. (NB: This highlights why having integer deployment identifiers is easier.)

See ?disc_extract_deployments for more information.

Process deployments

In your project directory, load discr

library("discr")

Then process deployments with a command such as

disc(1:10, actions=c("calib", "track"))

to calibrate the arena dimensions and track the larva, in deployments 1 to 10.

See ?disc for a description of all actions and more examples. Default actions are "calibrate", "track", "correct", and "stats".

Check your progress with

disc_status()
# or
dstatus()
# for short

and now disc() again. Good luck!

Analyse data

Again, open R in your project directory and load discr

library("discr")

Check available data with

disc_status()

Collect statistics for all larvae in a data.frame with

disc_assemble("stats")

Alternatively, you can select a few deployments only with

disc_assemble("stats", ids=1:10)

You can also collect all tracks, or gps data, or hobo data, etc. with

disc_assemble("rotated_larvae_tracks")
disc_assemble("gps_log")
disc_assemble("hobo_log")

What disc_assemble() does is look for files with the given pattern in their name, read them all and concatenate the result.

Now you are ready to do you analyses in R. discr provides a few helpful functions to work with angles

?summary.circular
?polar
?circular_dotplot
?angles

check out the circular package for other.

Advanced usage

If storing your deployments in a subdirectory of your working directory is not appropriate (not enough space on hard drive, etc.), you can store them elsewhere and still get to them from your working directory, either by providing the path through the deploy.dir argument of each function, or, more efficiently, by setting it at the start of the session with disc_dd. See ?disc_dd for more information.

New sensors can easily be added and handled by discr; see ?disc_read for more information.

Credit

discr is written by Jean-Olivier Irisson, at Université Pierre et Marie Curie (UPMC). All code is released under the GNU General Public License v3.0.

The DISC instrument is developed by Claire Paris at the Rosenstiel School of Marine and Atmospheric Sciences (RSMAS) of the University of Miami.

Most of the image analysis functionality relies on ImageJ by Wayne Rasband.

Circular statistics are performed with the package circular for R.

About

Drifting In Situ Chamber

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Drifting In Situ Chamber User Software in R

Installation

  1. Install R from http://cran.rstudio.com/

  2. Optionally install RStudio from http://www.rstudio.com/products/rstudio/download/

  3. Install discr. discr is an R package but it is not (yet) available in the official R packages repositories. To install it, start RStudio and, in the console, type

     install.packages("devtools")
    devtools::install_github("jiho/discr")
    
  4. Load discr and check your installation with

     library("discr")
    disc_check()
    

    disc_check() will give you platform-specific pointers to install the software discr depends on. discr needs

    • A java JRE to run the image manipulation parts; from https://www.java.com/en/download/
    • The exif executable from libexif to extract timestamp from images; installation is usually done through a package manager
    • ImageMagick (the convert executable) to resize images to more manageable sizes; from http://www.imagemagick.org/ or through a package manager

Basic usage

Start a new project

In R, use

library("discr")
disc_start_project()

to create a new project template in the current directory (you can then move it to wherever you want). See ?disc_start_project for other arguments.

Data collection

Raw data collected with the DISC is stored in one directory (raw in the project template). A subdirectory is created for each deployment leg (usually one per day). Within each leg, a subdirectory is created for each sensor on the DISC (camera, compass, light sensor, etc.). The information for every leg and every deployment within each leg is written down in a log file, in the form of a spreadsheet (saved as a Comma Separated Values, *.csv, file), which is stored in the raw directory.

The final hierarchy usually looks like

DISC_A/
raw/
leg_1/
pics/
G001234.JPG
G001235.JPG
G001236.JPG
...
compass/
DATALOG.txt
hobo/
123459.hobo
123459.csv
...
leg_2/
pics/
compass/
hobo/
...
leg_log.csv
deployment_log.csv

The format for the leg_log.csv file is:

 leg, gopro_start, gopro_stop, gopro_dir, gopro_offset, cc_start, ...
leg_1, 12:22:25, 17:35:01, pics, -6, 12:20:10, ...
leg_2, ...,

It has the leg directory name and information for each sensor. The column names are in the form sensorName_informationLabel. The underscore (_) in the middle is important. The usual information labels for each sensor are :

  • start and stop : the start and stop time of the sensor (not used by discr but important to record)
  • dir : the name of the directory in which the sensor data is stored. When absent, this is supposed to be the name of the sensor itself. Pictures should always be stored in a directory called pics; compass data should always be stored in a directory called compass; the rest of the names are free.
  • offset : the time offset (in seconds) between the sensor time and a reference time (usually the time of a computer). When absent, it is supposed to be 0. The offset is added to the timestamp of the data to correct it back to the reference time. So it should be negative when the sensor is early and positive when it is late. For example, if the sensor records 08:55:12 but the actual time is 08:55:10, the sensor is early and the offset is -2.

Other columns can be added but should not have an underscore in their names. Use dots (personal.comments) or capitals (personalComments) to separate words.

The format for the deployment_log.csv is:

deploy_id, leg, date_start, date_stop, time_start, time_stop
1, leg_1, 2014-05-22, 2014-05-22, 23:31:23, 23:52:10
2, leg_1, 2014-05-22, 2014-05-23, 23:54:34, 00:05:12
3, leg_1, 2014-05-23, 2014-05-23, 00:08:15, 00:29:12
...

It has

  • deploy_id : a unique deployment identifier. It can be anything but is usually an integer number(as here), which makes it easy to specify ranges of deployments.
  • leg : the corresponding leg directory name
  • date_start, date_stop : date in format YYYY-MM-DD.
  • time_start, time_stop : time in format HH:MM:SS; the combination of date and time allows deployments to cross midnight

The deployment log usually has other columns such as fish species, meteorological conditions, etc. The names of those columns are free, but try to avoid special characters (accents, parentheses, exponents, etc.)

Extract deployments

The directory described above holds the whole raw data record. To be analysed, it needs to be split into deployments. The deployments are smaller than the raw data and are usually stored in another directory of your project called deployments. Once all the deployments are extracted, the raw data (which can be quite big) can be moved and stored elsewhere.

In an R console, in your project directory:

library("discr")
disc_extract_deployments(raw="raw")

If you want to extract only a few deployments, use

disc_extract_deployments(raw="raw", ids=10:20)

for deployments 10 to 20 or

disc_extract_deployments(raw="raw", ids=c("1a", "2a", "2b", "6"))

for deployments 1a, 2a, 3b and 6, for example. (NB: This highlights why having integer deployment identifiers is easier.)

See ?disc_extract_deployments for more information.

Process deployments

In your project directory, load discr

library("discr")

Then process deployments with a command such as

disc(1:10, actions=c("calib", "track"))

to calibrate the arena dimensions and track the larva, in deployments 1 to 10.

See ?disc for a description of all actions and more examples. Default actions are "calibrate", "track", "correct", and "stats".

Check your progress with

disc_status()
# or
dstatus()
# for short

and now disc() again. Good luck!

Analyse data

Again, open R in your project directory and load discr

library("discr")

Check available data with

disc_status()

Collect statistics for all larvae in a data.frame with

disc_assemble("stats")

Alternatively, you can select a few deployments only with

disc_assemble("stats", ids=1:10)

You can also collect all tracks, or gps data, or hobo data, etc. with

disc_assemble("rotated_larvae_tracks")
disc_assemble("gps_log")
disc_assemble("hobo_log")

What disc_assemble() does is look for files with the given pattern in their name, read them all and concatenate the result.

Now you are ready to do you analyses in R. discr provides a few helpful functions to work with angles

?summary.circular
?polar
?circular_dotplot
?angles

check out the circular package for other.

Advanced usage

If storing your deployments in a subdirectory of your working directory is not appropriate (not enough space on hard drive, etc.), you can store them elsewhere and still get to them from your working directory, either by providing the path through the deploy.dir argument of each function, or, more efficiently, by setting it at the start of the session with disc_dd. See ?disc_dd for more information.

New sensors can easily be added and handled by discr; see ?disc_read for more information.

Credit

discr is written by Jean-Olivier Irisson, at Université Pierre et Marie Curie (UPMC). All code is released under the GNU General Public License v3.0.

The DISC instrument is developed by Claire Paris at the Rosenstiel School of Marine and Atmospheric Sciences (RSMAS) of the University of Miami.

Most of the image analysis functionality relies on ImageJ by Wayne Rasband.

Circular statistics are performed with the package circular for R.

About

Drifting In Situ Chamber

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Drifting In Situ Chamber User Software in R

Installation

  1. Install R from http://cran.rstudio.com/

  2. Optionally install RStudio from http://www.rstudio.com/products/rstudio/download/

  3. Install discr. discr is an R package but it is not (yet) available in the official R packages repositories. To install it, start RStudio and, in the console, type

     install.packages("devtools")
    devtools::install_github("jiho/discr")
    
  4. Load discr and check your installation with

     library("discr")
    disc_check()
    

    disc_check() will give you platform-specific pointers to install the software discr depends on. discr needs

    • A java JRE to run the image manipulation parts; from https://www.java.com/en/download/
    • The exif executable from libexif to extract timestamp from images; installation is usually done through a package manager
    • ImageMagick (the convert executable) to resize images to more manageable sizes; from http://www.imagemagick.org/ or through a package manager

Basic usage

Start a new project

In R, use

library("discr")
disc_start_project()

to create a new project template in the current directory (you can then move it to wherever you want). See ?disc_start_project for other arguments.

Data collection

Raw data collected with the DISC is stored in one directory (raw in the project template). A subdirectory is created for each deployment leg (usually one per day). Within each leg, a subdirectory is created for each sensor on the DISC (camera, compass, light sensor, etc.). The information for every leg and every deployment within each leg is written down in a log file, in the form of a spreadsheet (saved as a Comma Separated Values, *.csv, file), which is stored in the raw directory.

The final hierarchy usually looks like

DISC_A/
raw/
leg_1/
pics/
G001234.JPG
G001235.JPG
G001236.JPG
...
compass/
DATALOG.txt
hobo/
123459.hobo
123459.csv
...
leg_2/
pics/
compass/
hobo/
...
leg_log.csv
deployment_log.csv

The format for the leg_log.csv file is:

 leg, gopro_start, gopro_stop, gopro_dir, gopro_offset, cc_start, ...
leg_1, 12:22:25, 17:35:01, pics, -6, 12:20:10, ...
leg_2, ...,

It has the leg directory name and information for each sensor. The column names are in the form sensorName_informationLabel. The underscore (_) in the middle is important. The usual information labels for each sensor are :

  • start and stop : the start and stop time of the sensor (not used by discr but important to record)
  • dir : the name of the directory in which the sensor data is stored. When absent, this is supposed to be the name of the sensor itself. Pictures should always be stored in a directory called pics; compass data should always be stored in a directory called compass; the rest of the names are free.
  • offset : the time offset (in seconds) between the sensor time and a reference time (usually the time of a computer). When absent, it is supposed to be 0. The offset is added to the timestamp of the data to correct it back to the reference time. So it should be negative when the sensor is early and positive when it is late. For example, if the sensor records 08:55:12 but the actual time is 08:55:10, the sensor is early and the offset is -2.

Other columns can be added but should not have an underscore in their names. Use dots (personal.comments) or capitals (personalComments) to separate words.

The format for the deployment_log.csv is:

deploy_id, leg, date_start, date_stop, time_start, time_stop
1, leg_1, 2014-05-22, 2014-05-22, 23:31:23, 23:52:10
2, leg_1, 2014-05-22, 2014-05-23, 23:54:34, 00:05:12
3, leg_1, 2014-05-23, 2014-05-23, 00:08:15, 00:29:12
...

It has

  • deploy_id : a unique deployment identifier. It can be anything but is usually an integer number(as here), which makes it easy to specify ranges of deployments.
  • leg : the corresponding leg directory name
  • date_start, date_stop : date in format YYYY-MM-DD.
  • time_start, time_stop : time in format HH:MM:SS; the combination of date and time allows deployments to cross midnight

The deployment log usually has other columns such as fish species, meteorological conditions, etc. The names of those columns are free, but try to avoid special characters (accents, parentheses, exponents, etc.)

Extract deployments

The directory described above holds the whole raw data record. To be analysed, it needs to be split into deployments. The deployments are smaller than the raw data and are usually stored in another directory of your project called deployments. Once all the deployments are extracted, the raw data (which can be quite big) can be moved and stored elsewhere.

In an R console, in your project directory:

library("discr")
disc_extract_deployments(raw="raw")

If you want to extract only a few deployments, use

disc_extract_deployments(raw="raw", ids=10:20)

for deployments 10 to 20 or

disc_extract_deployments(raw="raw", ids=c("1a", "2a", "2b", "6"))

for deployments 1a, 2a, 3b and 6, for example. (NB: This highlights why having integer deployment identifiers is easier.)

See ?disc_extract_deployments for more information.

Process deployments

In your project directory, load discr

library("discr")

Then process deployments with a command such as

disc(1:10, actions=c("calib", "track"))

to calibrate the arena dimensions and track the larva, in deployments 1 to 10.

See ?disc for a description of all actions and more examples. Default actions are "calibrate", "track", "correct", and "stats".

Check your progress with

disc_status()
# or
dstatus()
# for short

and now disc() again. Good luck!

Analyse data

Again, open R in your project directory and load discr

library("discr")

Check available data with

disc_status()

Collect statistics for all larvae in a data.frame with

disc_assemble("stats")

Alternatively, you can select a few deployments only with

disc_assemble("stats", ids=1:10)

You can also collect all tracks, or gps data, or hobo data, etc. with

disc_assemble("rotated_larvae_tracks")
disc_assemble("gps_log")
disc_assemble("hobo_log")

What disc_assemble() does is look for files with the given pattern in their name, read them all and concatenate the result.

Now you are ready to do you analyses in R. discr provides a few helpful functions to work with angles

?summary.circular
?polar
?circular_dotplot
?angles

check out the circular package for other.

Advanced usage

If storing your deployments in a subdirectory of your working directory is not appropriate (not enough space on hard drive, etc.), you can store them elsewhere and still get to them from your working directory, either by providing the path through the deploy.dir argument of each function, or, more efficiently, by setting it at the start of the session with disc_dd. See ?disc_dd for more information.

New sensors can easily be added and handled by discr; see ?disc_read for more information.

Credit

discr is written by Jean-Olivier Irisson, at Université Pierre et Marie Curie (UPMC). All code is released under the GNU General Public License v3.0.

The DISC instrument is developed by Claire Paris at the Rosenstiel School of Marine and Atmospheric Sciences (RSMAS) of the University of Miami.

Most of the image analysis functionality relies on ImageJ by Wayne Rasband.

Circular statistics are performed with the package circular for R.

About

Drifting In Situ Chamber

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Drifting In Situ Chamber User Software in R

Installation

  1. Install R from http://cran.rstudio.com/

  2. Optionally install RStudio from http://www.rstudio.com/products/rstudio/download/

  3. Install discr. discr is an R package but it is not (yet) available in the official R packages repositories. To install it, start RStudio and, in the console, type

     install.packages("devtools")
    devtools::install_github("jiho/discr")
    
  4. Load discr and check your installation with

     library("discr")
    disc_check()
    

    disc_check() will give you platform-specific pointers to install the software discr depends on. discr needs

    • A java JRE to run the image manipulation parts; from https://www.java.com/en/download/
    • The exif executable from libexif to extract timestamp from images; installation is usually done through a package manager
    • ImageMagick (the convert executable) to resize images to more manageable sizes; from http://www.imagemagick.org/ or through a package manager

Basic usage

Start a new project

In R, use

library("discr")
disc_start_project()

to create a new project template in the current directory (you can then move it to wherever you want). See ?disc_start_project for other arguments.

Data collection

Raw data collected with the DISC is stored in one directory (raw in the project template). A subdirectory is created for each deployment leg (usually one per day). Within each leg, a subdirectory is created for each sensor on the DISC (camera, compass, light sensor, etc.). The information for every leg and every deployment within each leg is written down in a log file, in the form of a spreadsheet (saved as a Comma Separated Values, *.csv, file), which is stored in the raw directory.

The final hierarchy usually looks like

DISC_A/
raw/
leg_1/
pics/
G001234.JPG
G001235.JPG
G001236.JPG
...
compass/
DATALOG.txt
hobo/
123459.hobo
123459.csv
...
leg_2/
pics/
compass/
hobo/
...
leg_log.csv
deployment_log.csv

The format for the leg_log.csv file is:

 leg, gopro_start, gopro_stop, gopro_dir, gopro_offset, cc_start, ...
leg_1, 12:22:25, 17:35:01, pics, -6, 12:20:10, ...
leg_2, ...,

It has the leg directory name and information for each sensor. The column names are in the form sensorName_informationLabel. The underscore (_) in the middle is important. The usual information labels for each sensor are :

  • start and stop : the start and stop time of the sensor (not used by discr but important to record)
  • dir : the name of the directory in which the sensor data is stored. When absent, this is supposed to be the name of the sensor itself. Pictures should always be stored in a directory called pics; compass data should always be stored in a directory called compass; the rest of the names are free.
  • offset : the time offset (in seconds) between the sensor time and a reference time (usually the time of a computer). When absent, it is supposed to be 0. The offset is added to the timestamp of the data to correct it back to the reference time. So it should be negative when the sensor is early and positive when it is late. For example, if the sensor records 08:55:12 but the actual time is 08:55:10, the sensor is early and the offset is -2.

Other columns can be added but should not have an underscore in their names. Use dots (personal.comments) or capitals (personalComments) to separate words.

The format for the deployment_log.csv is:

deploy_id, leg, date_start, date_stop, time_start, time_stop
1, leg_1, 2014-05-22, 2014-05-22, 23:31:23, 23:52:10
2, leg_1, 2014-05-22, 2014-05-23, 23:54:34, 00:05:12
3, leg_1, 2014-05-23, 2014-05-23, 00:08:15, 00:29:12
...

It has

  • deploy_id : a unique deployment identifier. It can be anything but is usually an integer number(as here), which makes it easy to specify ranges of deployments.
  • leg : the corresponding leg directory name
  • date_start, date_stop : date in format YYYY-MM-DD.
  • time_start, time_stop : time in format HH:MM:SS; the combination of date and time allows deployments to cross midnight

The deployment log usually has other columns such as fish species, meteorological conditions, etc. The names of those columns are free, but try to avoid special characters (accents, parentheses, exponents, etc.)

Extract deployments

The directory described above holds the whole raw data record. To be analysed, it needs to be split into deployments. The deployments are smaller than the raw data and are usually stored in another directory of your project called deployments. Once all the deployments are extracted, the raw data (which can be quite big) can be moved and stored elsewhere.

In an R console, in your project directory:

library("discr")
disc_extract_deployments(raw="raw")

If you want to extract only a few deployments, use

disc_extract_deployments(raw="raw", ids=10:20)

for deployments 10 to 20 or

disc_extract_deployments(raw="raw", ids=c("1a", "2a", "2b", "6"))

for deployments 1a, 2a, 3b and 6, for example. (NB: This highlights why having integer deployment identifiers is easier.)

See ?disc_extract_deployments for more information.

Process deployments

In your project directory, load discr

library("discr")

Then process deployments with a command such as

disc(1:10, actions=c("calib", "track"))

to calibrate the arena dimensions and track the larva, in deployments 1 to 10.

See ?disc for a description of all actions and more examples. Default actions are "calibrate", "track", "correct", and "stats".

Check your progress with

disc_status()
# or
dstatus()
# for short

and now disc() again. Good luck!

Analyse data

Again, open R in your project directory and load discr

library("discr")

Check available data with

disc_status()

Collect statistics for all larvae in a data.frame with

disc_assemble("stats")

Alternatively, you can select a few deployments only with

disc_assemble("stats", ids=1:10)

You can also collect all tracks, or gps data, or hobo data, etc. with

disc_assemble("rotated_larvae_tracks")
disc_assemble("gps_log")
disc_assemble("hobo_log")

What disc_assemble() does is look for files with the given pattern in their name, read them all and concatenate the result.

Now you are ready to do you analyses in R. discr provides a few helpful functions to work with angles

?summary.circular
?polar
?circular_dotplot
?angles

check out the circular package for other.

Advanced usage

If storing your deployments in a subdirectory of your working directory is not appropriate (not enough space on hard drive, etc.), you can store them elsewhere and still get to them from your working directory, either by providing the path through the deploy.dir argument of each function, or, more efficiently, by setting it at the start of the session with disc_dd. See ?disc_dd for more information.

New sensors can easily be added and handled by discr; see ?disc_read for more information.

Credit

discr is written by Jean-Olivier Irisson, at Université Pierre et Marie Curie (UPMC). All code is released under the GNU General Public License v3.0.

The DISC instrument is developed by Claire Paris at the Rosenstiel School of Marine and Atmospheric Sciences (RSMAS) of the University of Miami.

Most of the image analysis functionality relies on ImageJ by Wayne Rasband.

Circular statistics are performed with the package circular for R.

About

Drifting In Situ Chamber

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages