Skip to contents

This function reads a specified variable from a .mat file generated by the ifcb-analysis repository (Sosik and Olson 2007). It can be used, for example, to extract lists of classes from the file.

Usage

ifcb_get_mat_variable(
  mat_file,
  variable_name = "class2use",
  use_python = FALSE
)

Arguments

mat_file

A character string specifying the path to the .mat file containing the class information.

variable_name

A character string specifying the variable name in the .mat file that contains the class information. The default is "class2use". Other examples include "class2use_manual" from a manual file, or "class2use_auto" for a class list used for automatic assignment. You can find available variable names using the function ifcb_get_mat_names.

use_python

Logical. If TRUE, attempts to read the .mat file using a Python-based method. Default is FALSE.

Value

A character vector of class names.

Details

If use_python = TRUE, the function tries to read the .mat file using ifcb_read_mat(), which relies on SciPy. This approach may be faster than the default approach using R.matlab::readMat(), especially for large .mat files. To enable this functionality, ensure Python is properly configured with the required dependencies. You can initialize the Python environment and install necessary packages using ifcb_py_install().

If use_python = FALSE or if SciPy is not available, the function falls back to using R.matlab::readMat().

References

Sosik, H. M. and Olson, R. J. (2007), Automated taxonomic classification of phytoplankton sampled with imaging-in-flow cytometry. Limnol. Oceanogr: Methods 5, 204–216.

Examples

# Example .mat file included in the package
mat_file <- system.file("exdata/example.mat", package = "iRfcb")

# Get class names from a class2use file
classifier_name <- ifcb_get_mat_variable(mat_file, "classifierName")
print(classifier_name)
#>      [,1]                                                                       
#> [1,] "Z:\\data\\manual\\Skagerrak-Kattegat\\summary\\results_21May202421May2024"

# Get class names from a classifier file
class2useTB <- ifcb_get_mat_variable(mat_file, "class2useTB")
print(class2useTB)
#>  [1] "Cerataulina_pelagica"               "Chaetoceros_cf_convolutus"         
#>  [3] "Chaetoceros_chain"                  "Chaetoceros_danicus"               
#>  [5] "Chaetoceros_single_cell"            "Ciliates"                          
#>  [7] "Cryptomonadales"                    "Cylindrotheca_Nitzschia_longissima"
#>  [9] "Dactyliosolen_fragilissimus"        "Dino_larger_than_30unidentified"   
#> [11] "Dino_smaller_than_30unidentified"   "Ditylum_brightwellii"              
#> [13] "Enisiculifera_carinata"             "Guinardia_delicatula"              
#> [15] "Gymnodiniales_smaller_than_30"      "Heterocapsa_rotundata"             
#> [17] "Katodinium-like"                    "Leptocylindrus_danicus"            
#> [19] "Leptocylindrus_danicus_minimus"     "Mesodinium_rubrum"                 
#> [21] "Octactis_speculum"                  "Prorocentrum_micans"               
#> [23] "Prorocentrum_triestinum"            "Pseudo-nitzschia_spp"              
#> [25] "Pseudosolenia_calcar-avis"          "Rhizosolenia_setigera"             
#> [27] "Scrippsiella_group"                 "Skeletonema_marinoi"               
#> [29] "Strombidium_like"                   "Thalassionema_nitzschioides"       
#> [31] "Thalassiosira_gravida"              "Thalassiosira_nordenskioeldii"     
#> [33] "Thalassiosira_punctigera"           "Thalassiosira_spp"                 
#> [35] "Torodinium_robustum"                "Tripos_lineatus"                   
#> [37] "unclassified"