cptrackr
R package to create unique track identifiers for CellProfiler tracking output
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.7%) to scientific vocabulary
Last synced: 10 months ago
·
JSON representation
·
Repository
R package to create unique track identifiers for CellProfiler tracking output
Basic Info
- Host: GitHub
- Owner: burgerga
- License: other
- Language: R
- Default Branch: master
- Size: 397 KB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 3
- Releases: 2
Created almost 6 years ago
· Last pushed over 2 years ago
Metadata Files
Readme
Changelog
License
Citation
README.Rmd
---
output: github_document
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# CPTrackR
[](https://doi.org/10.5281/zenodo.4725472)
[](https://github.com/burgerga/CPTrackR/actions/workflows/R-CMD-check.yaml)
The goal of CPTrackR is to add unique track ids to CellProfiler tracking output.
**NB:** No support for LAP tracking with temporal gaps (yet)
## Installation
You can install the development version of CPTrackR with:
``` r
remotes::install_github("burgerga/CPTrackR")
```
## Usage
### Creating a lookup table (LUT)
```{r, echo=F, message = FALSE, warning=FALSE}
library(tidyverse)
library(future)
plan(multisession)
# Example data is generated from a dataset from Britt (shared by Muriel)
# all_data <- read_tsv(file.path("~/../../Downloads","20190925_BrittData_singleCell_1hrDelay_withoutT01.txt"))
# data = all_data |>
# filter(groupNumber <= 2) |>
# select(groupNumber,
# groupInd,
# Nuclei_TrackObjects_ParentObjectNumber_30,
# Nuclei_Number_Object_Number,
# Nuclei_Intensity_MeanIntensity_image_green,
# starts_with("Nuclei_Location_Center_"))
theme_set(theme_classic(base_size = 13))
```
Show some example uncorrected data extracted from a CellProfiler tsv:
```{r}
library(CPTrackR)
library(tidyverse)
data <- read_tsv(system.file("extdata", "cptrackr_example_data.tsv.xz", package="CPTrackR"), show_col_types = F)
data %>%
select(groupNumber,
groupInd,
Nuclei_TrackObjects_ParentObjectNumber_30,
Nuclei_Number_Object_Number,
Nuclei_Intensity_MeanIntensity_image_green)
```
We can create a lookup table (LUT) for a single group using `createLUTGroup`:
```{r}
library(CPTrackR)
lut <- createLUTGroup(data %>% filter(groupNumber == 1),
frame_var = groupInd,
obj_var = Nuclei_Number_Object_Number,
par_obj_var = Nuclei_TrackObjects_ParentObjectNumber_30)
lut %>%
arrange(Nuclei_Number_Object_Number, groupInd)
```
Three new columns are added:
* `cid`: id of the original cell (daughter cells share `cid` with parent)
* `uid`: unique id (daughter cells don't share `uid` with parent)
* `alt_uid`: character id of cells that show lineage with suffixes
For illustration here the second frame, where we can see `alt_uid`s for daughter cells:
```{r}
lut %>%
filter(groupInd == 2) %>%
arrange(Nuclei_Number_Object_Number, groupInd)
```
We can also enable a progress bar (will be visible if you run this code in R):
```{r}
library(progressr)
with_progress({
lut <- createLUTGroup(data %>% filter(groupNumber == 1),
frame_var = groupInd,
obj_var = Nuclei_Number_Object_Number,
par_obj_var = Nuclei_TrackObjects_ParentObjectNumber_30)
})
lut %>%
arrange(Nuclei_Number_Object_Number, groupInd)
```
We can create a LUT for multiple groups (=movies) using `createLut`, the `group_vars` are used to denote the different groups (can be multiple columns):
```{r}
with_progress({
lut_all <- createLUT(data,
group_vars = groupNumber,
frame_var = groupInd,
obj_var = Nuclei_Number_Object_Number,
par_obj_var = Nuclei_TrackObjects_ParentObjectNumber_30)
})
lut_all
```
Now we can join the LUT to the original data
```{r}
fixed <- data %>%
left_join(lut_all)
fixed %>%
select(groupNumber, groupInd, uid, alt_uid, Nuclei_Intensity_MeanIntensity_image_green)
```
#### Parallelisation
We can also enable parallelisation using the `future` package and specifying a `plan`, this will give a considerable speed improvement if you have many movies:
```{r, eval = F}
library(future)
plan(multisession)
with_progress({
lut_all <- createLUT(data,
group_vars = groupNumber,
frame_var = groupInd,
obj_var = Nuclei_Number_Object_Number,
par_obj_var = Nuclei_TrackObjects_ParentObjectNumber_30)
})
lut_all
```
```{r, echo = F}
lut_all
```
### Plotting
With our `uid` per cell we can now plot the tracks:
```{r}
ggplot(fixed %>% filter(groupNumber == 1),
aes(Nuclei_Location_Center_X, Nuclei_Location_Center_Y,
group = uid, color = as.factor(uid))) +
geom_path() +
guides(color = F) +
coord_fixed()
```
Owner
- Name: Gerhard Burger
- Login: burgerga
- Kind: user
- Location: Gouda
- Company: Leiden University
- Website: https://www.universiteitleiden.nl/en/staffmembers/gerhard-burger
- Repositories: 8
- Profile: https://github.com/burgerga
Assistant Professor / Open Source Enthusiast
Citation (CITATION.cff)
# -----------------------------------------------------------
# CITATION file created with {cffr} R package, v0.5.0
# See also: https://docs.ropensci.org/cffr/
# -----------------------------------------------------------
cff-version: 1.2.0
message: 'To cite package "CPTrackR" in publications use:'
type: software
license: MIT
title: 'CPTrackR: Create unique track identifiers for CellProfiler tracking output'
version: 0.2.2.9000
abstract: Create unique track identifiers for CellProfiler tracking output.
authors:
- family-names: Burger
given-names: Gerhard
email: burger.ga@gmail.com
orcid: https://orcid.org/0000-0003-1062-5576
- family-names: Heldring
given-names: Muriel
email: murielheldring@gmail.com
orcid: https://orcid.org/0000-0002-3565-7227
- family-names: Wink
given-names: Steven
email: hardervidertsie@gmail.com
orcid: https://orcid.org/0000-0003-1189-7231
contact:
- family-names: Burger
given-names: Gerhard
email: burger.ga@gmail.com
orcid: https://orcid.org/0000-0003-1062-5576
references:
- type: software
title: furrr
abstract: 'furrr: Apply Mapping Functions in Parallel using Futures'
notes: Imports
url: https://furrr.futureverse.org/
repository: https://CRAN.R-project.org/package=furrr
authors:
- family-names: Vaughan
given-names: Davis
email: davis@rstudio.com
- family-names: Dancho
given-names: Matt
email: mdancho@business-science.io
year: '2023'
- type: software
title: dplyr
abstract: 'dplyr: A Grammar of Data Manipulation'
notes: Imports
url: https://dplyr.tidyverse.org
repository: https://CRAN.R-project.org/package=dplyr
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
orcid: https://orcid.org/0000-0003-4757-117X
- family-names: François
given-names: Romain
orcid: https://orcid.org/0000-0002-2444-4226
- family-names: Henry
given-names: Lionel
- family-names: Müller
given-names: Kirill
orcid: https://orcid.org/0000-0002-1416-3412
- family-names: Vaughan
given-names: Davis
email: davis@posit.co
orcid: https://orcid.org/0000-0003-4777-038X
year: '2023'
- type: software
title: tidyr
abstract: 'tidyr: Tidy Messy Data'
notes: Imports
url: https://tidyr.tidyverse.org
repository: https://CRAN.R-project.org/package=tidyr
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
- family-names: Vaughan
given-names: Davis
email: davis@posit.co
- family-names: Girlich
given-names: Maximilian
year: '2023'
- type: software
title: stringr
abstract: 'stringr: Simple, Consistent Wrappers for Common String Operations'
notes: Imports
url: https://stringr.tidyverse.org
repository: https://CRAN.R-project.org/package=stringr
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
year: '2023'
- type: software
title: magrittr
abstract: 'magrittr: A Forward-Pipe Operator for R'
notes: Imports
url: https://magrittr.tidyverse.org
repository: https://CRAN.R-project.org/package=magrittr
authors:
- family-names: Bache
given-names: Stefan Milton
email: stefan@stefanbache.dk
- family-names: Wickham
given-names: Hadley
email: hadley@rstudio.com
year: '2023'
- type: software
title: purrr
abstract: 'purrr: Functional Programming Tools'
notes: Imports
url: https://purrr.tidyverse.org/
repository: https://CRAN.R-project.org/package=purrr
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@rstudio.com
orcid: https://orcid.org/0000-0003-4757-117X
- family-names: Henry
given-names: Lionel
email: lionel@rstudio.com
year: '2023'
- type: software
title: progressr
abstract: 'progressr: An Inclusive, Unifying API for Progress Updates'
notes: Imports
url: https://progressr.futureverse.org
repository: https://CRAN.R-project.org/package=progressr
authors:
- family-names: Bengtsson
given-names: Henrik
email: henrikb@braju.com
year: '2023'
- type: software
title: rlang
abstract: 'rlang: Functions for Base Types and Core R and ''Tidyverse'' Features'
notes: Imports
url: https://rlang.r-lib.org
repository: https://CRAN.R-project.org/package=rlang
authors:
- family-names: Henry
given-names: Lionel
email: lionel@posit.co
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
year: '2023'
- type: software
title: progress
abstract: 'progress: Terminal Progress Bars'
notes: Suggests
url: https://github.com/r-lib/progress#readme
repository: https://CRAN.R-project.org/package=progress
authors:
- family-names: Csárdi
given-names: Gábor
- family-names: FitzJohn
given-names: Rich
year: '2023'
- type: software
title: testthat
abstract: 'testthat: Unit Testing for R'
notes: Suggests
url: https://testthat.r-lib.org
repository: https://CRAN.R-project.org/package=testthat
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
year: '2023'
- type: software
title: tibble
abstract: 'tibble: Simple Data Frames'
notes: Suggests
url: https://tibble.tidyverse.org/
repository: https://CRAN.R-project.org/package=tibble
authors:
- family-names: Müller
given-names: Kirill
email: kirill@cynkra.com
orcid: https://orcid.org/0000-0002-1416-3412
- family-names: Wickham
given-names: Hadley
email: hadley@rstudio.com
year: '2023'
GitHub Events
Total
Last Year
Issues and Pull Requests
Last synced: over 1 year ago
All Time
- Total issues: 7
- Total pull requests: 0
- Average time to close issues: almost 2 years
- Average time to close pull requests: N/A
- Total issue authors: 1
- Total pull request authors: 0
- Average comments per issue: 0.57
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- burgerga (7)
Pull Request Authors
Top Labels
Issue Labels
enhancement (3)
Pull Request Labels
Dependencies
DESCRIPTION
cran
- dplyr * imports
- furrr * imports
- magrittr * imports
- progressr * imports
- purrr * imports
- rlang * imports
- stringr * imports
- tidyr * imports
- progress * suggests
- testthat * suggests
- tibble * suggests
.github/workflows/R-CMD-check.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/update-citation-cff.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite