Last updated: 2017-12-11
Code version: 397a117
library(knitr)
Load nuclei detection results directly from image analysis output /project2/gilad/fucci-seq/intensities. The results are made into a summary table.
plate: labeled by the mix of individual cell lines
image: labels assigned by the JULI imaging system. These will be converted to correspond to C1 plate labels (rows and columns).
nnuclei: number of nuclei detected in a single cell sample
fls <- list.files("/project2/gilad/fucci-seq/intensities", pattern = "rds", full.names = TRUE)
nuclei_table <- do.call(rbind, lapply(1:length(fls), function(index) {
  tmp <- readRDS(fls[[index]])
  plate <- strsplit(strsplit(fls[index], split="/")[[1]][[6]], 
                    split=".", fixed = TRUE)[[1]][[1]]
  data.frame(plate=plate, nnuclei=tmp, image=names(tmp))
}))
saveRDS(nuclei_table, "/project2/gilad/joycehsiao/fucci-seq/output/image-qc.rds")
Inspect samples
nuclei_table <- readRDS("/project2/gilad/joycehsiao/fucci-seq/output/image-qc.rds")
kable(nuclei_table[which(nuclei_table$nnuclei==0|is.na(nuclei_table$nnuclei)),])
| plate | nnuclei | image | |
|---|---|---|---|
| 00010 | 18511_18855 | NA | 00010 | 
| 00048 | 18511_18855 | NA | 00048 | 
| 000071 | 18855_19098 | NA | 00007 | 
| 000481 | 18855_19098 | NA | 00048 | 
| 000712 | 18855_19101 | NA | 00071 | 
| 000882 | 18855_19101 | NA | 00088 | 
| 000463 | 18855_19160 | NA | 00046 | 
| 000164 | 18870_18511 | 0 | 00016 | 
| 000314 | 18870_18511 | NA | 00031 | 
| 000324 | 18870_18511 | NA | 00032 | 
| 000604 | 18870_18511 | NA | 00060 | 
| 000684 | 18870_18511 | NA | 00068 | 
| 000844 | 18870_18511 | NA | 00084 | 
| 000165 | 18870_18855 | NA | 00016 | 
| 000785 | 18870_18855 | NA | 00078 | 
| 000096 | 18870_19101 | NA | 00009 | 
| 000666 | 18870_19101 | NA | 00066 | 
| 000756 | 18870_19101 | NA | 00075 | 
| 000177 | 18870_19160 | NA | 00017 | 
| 000529 | 19098_18870 | NA | 00052 | 
| 0000710 | 19098_19160 | NA | 00007 | 
| 0002010 | 19098_19160 | NA | 00020 | 
| 0002610 | 19098_19160 | NA | 00026 | 
| 0004910 | 19098_19160 | NA | 00049 | 
| 0008410 | 19098_19160 | 0 | 00084 | 
| 0004211 | 19101_18511 | NA | 00042 | 
| 0005411 | 19101_18511 | NA | 00054 | 
| 0005611 | 19101_18511 | NA | 00056 | 
| 0001613 | 19101_19160 | NA | 00016 | 
| 0002513 | 19101_19160 | NA | 00025 | 
| 0002613 | 19101_19160 | NA | 00026 | 
| 0002813 | 19101_19160 | NA | 00028 | 
| 0003313 | 19101_19160 | NA | 00033 | 
| 0003015 | 19160_18870 | 0 | 00030 | 
| 0003215 | 19160_18870 | 0 | 00032 | 
This section is for record keeping. All images for samples with no nucleus detected have been converted to PNG format and stored in /project2/gilad/fucci-seq/images-inspect-zero-nucleus.
The code below will save images in png format at /project2/gilad/fucci-seq/images-inspect-zero-nucleus.
#' @param wells vector of wells ID (use the format specified above).
#' @param plate plate ID
print_png <- function(plate, wells) {
  for (index in 1:length(wells)) {
    id <- wells[index]
    dir_images_data_pl <- paste0("/project2/gilad/fucci-seq/images_curated/",plate,"/")
    dir_output <- "/project2/gilad/fucci-seq/images-inspect-zero-nucleus/"
    bright <- readImage(paste0(dir_images_data_pl, "BRIGHT/", id, ".TIFF"))
    dapi <- readImage(paste0(dir_images_data_pl, "DAPI/", id, ".TIFF"))
    gfp <- readImage(paste0(dir_images_data_pl, "GFP/", id, ".TIFF"))
    rfp <- readImage(paste0(dir_images_data_pl, "RFP/", id, ".TIFF"))
    
    writeImage(bright, paste0(dir_output, plate,".",id,".bright.png"))
    writeImage(dapi, paste0(dir_output, plate,".",id,".dapi.png"))
    writeImage(gfp, paste0(dir_output, plate,".",id,".gfp.png"))
    writeImage(rfp, paste0(dir_output, plate,".",id,".rfp.png"))
    # combo <- combine(dapi, bright, gfp, rfp)
    # writeImage(combo, paste0(dir_output, plate,".",id,".combo.png"))
  }
}
tmp_table <- nuclei_table[which(nuclei_table$nnuclei == 0 | is.na(nuclei_table$nnuclei)),]
plates <- unique(as.character(tmp_table$plate))
for (index in 1:length(plates)) {
  plate <- plates[index]
  cases <- nuclei_table[which( (nuclei_table$nnuclei == 0 | is.na(nuclei_table$nnuclei)) & nuclei_table$plate == plate),]
  wells <- as.character(cases$image)
  print_png(plate, wells) 
}
18855_19101.00071 : 1 18855_19101.00088 : 1 18855_19160.00046 : 1 18870_18511.00016 : 1 18870_18511.00032 : 1 18870_18511.00068 : 1 18870_18511.00084 : 1 18870_18855.00016 : 1 18870_18855.00078 : 1 18870_19101.00066 : 1 18870_19101.00075 : 1 19098_18870.00052 : 1 19098_19160.00020 : 1 19098_19160.00049 : 1 19098_19160.00084 : 1 19101_18511.00042 : 1 19101_18511.00054 : 1 19101_19160.00016 : 1 19101_19160.00026 : 1 19101_19160.00033 : 1
sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Scientific Linux 7.2 (Nitrogen)
Matrix products: default
BLAS: /home/jdblischak/software/miniconda3/envs/fucci-seq/lib/R/lib/libRblas.so
LAPACK: /home/jdblischak/software/miniconda3/envs/fucci-seq/lib/R/lib/libRlapack.so
locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
other attached packages:
[1] knitr_1.16
loaded via a namespace (and not attached):
 [1] compiler_3.4.1  backports_1.0.5 magrittr_1.5    rprojroot_1.2  
 [5] tools_3.4.1     htmltools_0.3.6 yaml_2.1.14     Rcpp_0.12.13   
 [9] stringi_1.1.2   rmarkdown_1.6   highr_0.6       git2r_0.19.0   
[13] stringr_1.2.0   digest_0.6.12   evaluate_0.10.1
This R Markdown site was created with workflowr