The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Version: 1.0.0
Date: 2026-1-29
Title: An R Interface to the California Academy of Sciences Eschmeyer's Catalog of Fishes
Depends: R (≥ 4.4.0)
Imports: curl (≥ 5.2.1), httr (≥ 1.4.7), jsonlite (≥ 1.8.9), lubridate (≥ 1.9.3), magrittr (≥ 2.0.3), qdapRegex (≥ 0.7.2), RCurl (≥ 1.95-4.11), rfishbase (≥ 5.0.0), rvest (≥ 0.3.2), stringr (≥ 1.3.1), tidyr (≥ 0.8.1), xml2 (≥ 1.2.0)
Description: Accesses the California Academy of Sciences Eschmeyer's Catalog of Fishes in R using web requests. The Catalog of fishes is the leading authority in fish taxonomy. Functions in the package allow users to search for fish taxa and valid names, retrieve taxonomic references, retrieve monthly taxonomic changes, obtain natural history collection information, and see the number of species by taxonomic group. For more information on the Catalog: Fricke, R., Eschmeyer, W. N. & R. van der Laan (eds) 2025. ESCHMEYER'S CATALOG OF FISHES https://researcharchive.calacademy.org/research/ichthyology/catalog/fishcatmain.asp.
License: GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]
RoxygenNote: 7.3.3
Suggests: knitr, rmarkdown, testthat
VignetteBuilder: knitr
Encoding: UTF-8
NeedsCompilation: no
Packaged: 2026-01-30 19:41:47 UTC; Sam
Author: Samuel R. Borstein [aut, cre], Brandon Dominy [aut], Brian O'Meara [aut]
Maintainer: Samuel R. Borstein <sam@borstein.com>
Repository: CRAN
Date/Publication: 2026-02-03 14:10:09 UTC

Access the Eschmeyer's Catalog of Fishes Classification

Description

This function is used to access the Eschmeyer's Catalog of Fishes classification of fishes

Usage

rcatfish_classification()

Details

This function displays the classification tab of Eschmeyer's Catalog of Fishes. The data are returned in a tabular framework that progresses from most to least inclusive from left to right. The function will return the class, order, suborder, family, subfamily, author, and common name of the family or subfamily.

Value

A dataframe with seven columns. From left to right (and most inclusive to least inclusive), the columns represent class, order, suborder, family, subfamily, author, and the common name of the family or subfamily.

Author(s)

Samuel R. Borstein

References

van der Laan, R., Fricke, R. & Eschmeyer, W.N. (Year Accessed). Eschmeyer's Catalog of Fishes: Classification. https://www.calacademy.org/scientists/catalog-of-fishes-classification/.

Examples

#Obtain the Eschmeyer's Catalog of Fishes Classification

myClassification <- rcatfish_classification()


Accesses the Eschmeyer's Catalog of Fishes Guide to Fish Collections

Description

Accesses the Eschmeyer's Catalog of Fishes Guide to Fish Collections

Usage

rcatfish_collections(
  query = NULL,
  abbreviation = NULL,
  country = NULL,
  phrase = FALSE,
  sleep.time = 10,
  verbose = TRUE
)

Arguments

query

Character Vector of search terms to search for. Default is NULL.

abbreviation

Character vector containing the musuem collection code(s). Default is NULL.

country

Character vector of country names to search for. Default is NULL.

phrase

Logical. Should query be passed as a quoted phrase (e.g. "Museum of Zoology"). Default is FALSE.

sleep.time

Numeric. Time in seconds to sleep between query calls to the California Academy of Sciences page. This is set by default to 10 seconds, which is in their robots.txt. Adjust at your own risk.

verbose

Logical. Should query progress be messaged to the screen? Default is TRUE.

Details

This function retrieves and parses natural history collection data from the Eschmeyer's Catalog of Fishes. Returned information includes the collection abbreviation, country, alternate abbreviations, old and new collection names, websites and databases associated with the collection, remarks, and publications associated with the collection.

It is important that search criteria match exactly how they are on the Catalog of Fishes, otherwise data will not be found (case must match, spelling, etc.). Users wishing to query more than one query mixed with either a country or abbreviation should note that all parameters must be of equal length, so if searching two queries both in U.S.A., the country should be supplied twice (see the final example in the examples below).

Value

Data frame, in which each row is a natural history collection and each column the corresponding collection information (see itemized list below).

Author(s)

Samuel R. Borstein

References

Fricke, R. & Eschmeyer, W.N. (Year Accessed). Eschmeyer's Catalog of Fishes: Guide to Fish Collections. https://researcharchive.calacademy.org/research/ichthyology/catalog/collections.asp.

Examples

#Search Museum Code For UMMZ (University of Michigan Museum of Zoology)
my.collections <- rcatfish_collections(abbreviation = "UMMZ", country = NULL, 
query = NULL, verbose = TRUE)

#Search For Collections in France
my.collections <- rcatfish_collections(abbreviation = NULL, country = "France", query = NULL)
#Search For Collections in The United States that are in Illinois
my.collections <- rcatfish_collections(abbreviation = NULL, country = "U.S.A.", query = "Illinois")
#Search For Collections in the United States that are in California & Alaska.
my.collections <- rcatfish_collections(abbreviation = NULL, country = rep("U.S.A.",2), 
query = c("California","Alaska"), sleep.time = 10)
#Search for Collections with Museum of Zoology in the name
my.collections <- rcatfish_collections(query = "Museum of Zoology", phrase = TRUE)


Access the Eschmeyer's Catalog of Fishes Glossary

Description

This function is used to access the Eschmeyer's Catalog of Fishes Glossary.

Usage

rcatfish_glossary()

Details

This function displays the Glossary tab of Eschmeyer's Catalog of Fishes. The glossary contains definitions for various terms that are important to the discussion of taxonomy and are mentioned throughout the database.

Value

A dataframe with three columns. Some terms have sub-terms (e.g. synonym will have definitions for junior, objective, and subjective in addition to defining synonym itself). The first column represents the name of the main term, the second column represents the name of sub-terms, and the final column provides the definition for these terms.

Author(s)

Samuel R. Borstein

References

van der Laan, R., Fricke, R. & Fong, J. (Year Accessed). Eschmeyer's Catalog of Fishes: Glossary. https://www.calacademy.org/scientists/catalog-of-fishes-glossary/.

Examples

# Obtain the Eschmeyer's Catalog of Fishes Glossary
myGlossary <- rcatfish_glossary()

Search for journals in the Catalog of Fishes

Description

Search for journals in the Catalog of Fishes

Usage

rcatfish_journals(query, phrase = FALSE, sleep.time = 10, verbose = TRUE)

Arguments

query

Character vector to search for.

phrase

Logical. Should query be passed as a quoted phrase (e.g. "Journal of Zoology"). Default is FALSE.

sleep.time

Numeric. Time in seconds to sleep between query calls to the California Academy of Sciences page. This is set by default to 10 seconds, which is in their robots.txt. Adjust at your own risk.

verbose

Logical. Should query progress be messaged to the screen? Default is TRUE.

Details

This function returns information on the journals cited in the Eschmeyer's Catalog of Fishes.

Value

Two column data frame. The first column contains the name of the query and the second column contains information on the journal.

Author(s)

Samuel R. Borstein

References

Fricke, R. & Eschmeyer, W.N. (Year Accessed). Eschmeyer’s Catalog of Fishes: Journals. https://researcharchive.calacademy.org/research/ichthyology/catalog/journals.asp

Examples

my.journals<-rcatfish_journals(query="Cichlid")
my.journals<-rcatfish_journals(query="Evolution")

Search for references in Eschmeyer's Catalog of Fishes

Description

Search for references in the Catalog of Fishes by keyword or reference number.

Usage

rcatfish_references(query, type, sleep.time = 10, verbose = TRUE)

Arguments

query

Either a character vector of keywords to search for or a numeric vector with reference numbers

type

Either "RefNo" if searching for a reference number or "keyword" if searching by keywords reference numbers.

sleep.time

Numeric. Time in seconds to sleep between query calls to the California Academy of Sciences page. This is set by default to 10 seconds, which is in their robots.txt. Adjust at your own risk.

verbose

Logical. Should query progress be messaged to the screen? Default is TRUE.

Details

This function searches Catalog of Fishes references. Users can supply either a keyword (i.e. cichlidae, revision, etc.) or a reference number to retrieve reference information.

Value

A data.frame containing columns for the query, reference number, and full citation.

Author(s)

Samuel R. Borstein, Brian C. O'Meara

References

Fricke, R. (Year Accessed). Eschmeyer's Catalog of Fishes: References. https://researcharchive.calacademy.org/research/ichthyology/catalog/fishcatmain.asp

Examples

#Perform a search of references that contain the keyword Amphilophus.
my.refs<-rcatfish_references(query = "Amphilophus", type = "keyword")
#Perform a search of references based on a Catalog of Fishes reference number
my.refs<-rcatfish_references(query = 2787, type = "RefNo")

Description

Search for genera and species in the Eschmeyer's Catalog of Fishes

Usage

rcatfish_search(
  query,
  type,
  unavailable = FALSE,
  taxon.history = FALSE,
  resolve = FALSE,
  sleep.time = 10,
  phrase = FALSE,
  verbose = TRUE,
  common.name = FALSE,
  language = "English"
)

Arguments

query

Character or Character Vector containing the name or names of the taxon to search. Note, you can not mix common and scientific names as a query.

type

Character either "Genus" or "Species" to search for genera and species respectively. Note that only one of these options can be chosen.

unavailable

Logical. Should the query be run with unavailable names include? Default is FALSE.

taxon.history

Should a detailed history of taxonomic changes per taxa be returned (i.e. synonymization, raised to validity, authority, etc.). Default is FALSE.

resolve

Logical. If a match for the query isn't found, should an attempt be made to resolve the name using taxize?

sleep.time

Numeric. Time in seconds to sleep between query calls to the California Academy of Sciences page. This is set by default to 10 seconds, which is in their robots.txt. Adjust at your own risk.

phrase

Logical. Should query be passed as a quoted phrase (e.g. "Synonym of Cyprinus carpio"). Default is FALSE.

verbose

Logical. Should query progress be messaged to the screen? Default is TRUE.

common.name

Is the query a common name? Common names will be converted to scientific names for searching through rfishbase. Note, you can not mix common and scientific names as a query. This likely will only work for species searches. Default is FALSE.

language

Language to perform common name search. Default is English.

Details

This function searches for genera or species in the Catalog of Fishes and returns its valid status, synonyms, and taxonomic history as well as reference numbers for the authority of the citations. By default, the function returns basic information on a taxon, such as who described it, its current taxonomic status, type locality, gender of the name, etc. If users choose taxon.history = TRUE, a detailed list of taxonomic information regarding nomenclature acts associated with the taxa is also returned. Note that the function will take longer to run, sometimes twice as long if taxon.history = TRUE.

One problem a user may encounter using the Catalog of Fishes website is that the input taxon name must match directly to a term in the database or the database will not return any information. While this remains true using this package, users can attempt to resolve names by setting resolve = TRUE. When resolve = TRUE, rcatfish_search will use the Global Names Resolver (GNR) in an attempt to resolve the name, which will then be passed to downstream function calls. This is meant to be useful, but we recommend using this option be cautious about what the GNR returns. A message will print to the screen notifying you what name the GNR resolved to be the best match and will be used, though we strongly recommend users check the resolved name does not deviate from their expectations (i.e. a homonym or similar name for a different group is not returned).

Value

Data frames. If taxon.history = TRUE, a list of two data frames. In this case, the first data frame TaxonSummary contains information on the description and current status of the taxa in the query, references to descriptions, and information on the type locality, types, family/subfamily, distribution, and habitat for species and type species gender, status, and authorities for genera searches. The second data frame, TaxonHistory contains detailed information on the taxonomic history of a taxon, such as which authorities have viewed it as a synonym or valid since its description. An itemized list describing the contents in the columns of the data returned is described below.

Author(s)

Samuel R. Borstein, Brandon E. Dominy, Brian C. O'Meara

References

Fricke, R., Eschmeyer, W.N. & van der Laan, R. (Year Accessed). Eschmeyer's Catalog of Fishes: Genera, Species, References. https://researcharchive.calacademy.org/research/ichthyology/catalog/fishcatmain.asp

http://gnrd.globalnames.org/api http://gnrd.globalnames.org/

Examples

#Note that for Windows OS, OpenSSL must be used as a backend for curl. 
#Please see vignette on how to do this with vignette('rcatfish').

#Search for Abactochromis and return taxon history

if((.Platform$OS.type == "windows") & (grepl(pattern = "\\(OpenSSL", 
  curl::curl_version()$ssl_version) == TRUE)){
cat("openSSL backend for curl is required for the Windows version of this package, but it not 
detected as being active. Please see the vignette on how to configure curl with openSSL for this
function to work. You can access the vignette with the following: vignette('rcatfish').")
}else{
my.search <- rcatfish_search(type = "Species", query = "Abactochromis", 
  taxon.history = FALSE, resolve = FALSE, sleep.time = 0)
}

#Search for the genera Astatheros and Gasteropelecidae

if((.Platform$OS.type == "windows") & (grepl(pattern = "\\(OpenSSL", 
  curl::curl_version()$ssl_version) == TRUE)){
cat("openSSL backend for curl is required for the Windows version of this package, but it not 
detected as being active. Please see the vignette on how to configure curl with openSSL for this
function to work. You can access the vignette with the following: vignette('rcatfish').")
}else{
  my.search <- rcatfish_search(type = "Genus", query = c("Astatheros","Gasteropelecidae"), 
    taxon.history = TRUE, resolve = FALSE, sleep.time = 10)
  }

#Perform a species search for two different taxa

if((.Platform$OS.type == "windows") & (grepl(pattern = "\\(OpenSSL", 
  curl::curl_version()$ssl_version) == TRUE)){
cat("openSSL backend for curl is required for the Windows version of this package, but it not 
detected as being active. Please see the vignette on how to configure curl with openSSL for this
function to work. You can access the vignette with the following: vignette('rcatfish').")
}else{
my.search<-rcatfish_search(type = "Species", query = c("Ctenopharynx",
  "Pseudocrenilabrus multicolor victoriae"), taxon.history = TRUE, resolve = FALSE, 
  sleep.time = 10)
  }



Find number of available fish names, number of valid species, and number of descriptions in the last 10 years by family or subfamily

Description

This function retrieves and parses data on the number of genera and species per family from the Eschmeyer's Catalog of Fishes. It returns a table containing the number of genera and species that are available, valid, and described in the last 10 years in its columns. Each row represents either a class, order, family, or subfamily, so some columns for higher taxonomic groups may have NA for lower taxonomic groups (e.g. if you Search for Cypriniformes, the row containing Cypriniformes will have NA for family and subfamily as it is above those taxonomic levels).

Given the function reads in the page containing the table, for speed, it is highly recommended that if a user wishes to obtain information on numerous orders, families, or subfamilies that they pass them in as a single query. To do this, see the last example.

Usage

rcatfish_species_by(query, verbose = TRUE)

Arguments

query

A character vector of taxa to search for. For users wishing to obtain the information for all fishes please query "Totals".

verbose

Logical. Should query progress be messaged to the screen? Default is TRUE.

Value

A list with each element containing a data frame for each query. List elements are named by the queried taxa. The list contains information on the number of genera and species available, valid, and described in the last 10 years. An itemized list describing the contents in the columns of the data frame(s) returned is described below. #'

Author(s)

Samuel R. Borstein

References

Fricke, R., Eschmeyer, W.N. & Fong J.D. (Year Accessed). Eschmeyer’s Catalog of Fishes: Species by family/subfamily in the Catalog of Fishes. https://researcharchive.calacademy.org/research/ichthyology/catalog/SpeciesByFamily.asp.

Examples

#Search for the number of described Cypriniformes
MySearch <- rcatfish_species_by(query = "Cypriniformes") 
#Obtain the total number of genera and species available, valid, and described in the last 10 years
CofF_totals <- rcatfish_species_by(query = "Totals")
#Search for more than one family
MySearch <- rcatfish_species_by(query = c("Cichlidae","Embiotocidae"))

Access catalog changes and additions

Description

This function is used to access the Eschmeyer's Catalog of Fishes Summary of Changes and Additions.

Usage

rcatfish_updates(
  changes = TRUE,
  author.changes = TRUE,
  spell.changes = TRUE,
  added.genera = TRUE,
  added.species = TRUE
)

Arguments

changes

Logical. Should the function return the table of changes to the catalog? Default is TRUE.

author.changes

Logical. Should the function return the table of author and year changes to the catalog? Default is TRUE.

spell.changes

Logical. Should the function return the table of spelling changes to the catalog? Default is TRUE.

added.genera

Logical. Should the function return genera added to the catalog? Default is TRUE.

added.species

Logical. Should the function return species added to the catalog? Default is TRUE.

Details

This function displays the information on the "Changes and Additions" tab of Eschmeyer's Catalog of Fishes. The catalog updates this information monthly with changes to the catalog, new genus information, and new species information. Each updates removes the last month's information, so data obtained through this function is only representative of the changes and additions made since the previous update.

Value

A named list. Names include UpdateDate, Changes, AuthorshipChanges, AddedGenera, and AddedSpecies. UpdateDate will always be returned and is a character string of the date the catalog was updated. Changes, AddedGenera, and AddedSpecies summarize changes to the catalog, changes to authorship information, genera added to the catalog, and species added to the catalog respectively. The elements returned are based on which parameters are set to TRUE. An itemized list describing the contents in the columns of the data returned is described below.

Author(s)

Brandon E. Dominy, Samuel R. Borstein

References

Fricke, R., van der Laan, R. & Fong, J.D. (Year Accessed). Eschmeyer’s Catalog of Fishes: Changes and Additions. https://researcharchive.calacademy.org/research/ichthyology/catalog/ChangeSummary.asp.

Examples

# return all available data
myList <- rcatfish_updates(changes = TRUE, added.genera = TRUE, added.species = TRUE)

Retrieve the current version Number of the Eschmeyer's Catalog of Fishes Being Used

Description

Returns the current version of Catalog of Fishes being used in the R session

Usage

rcatfish_version()

Value

Character Vector length of one with the Catalog of Fishes version

Author(s)

Samuel R. Borstein

References

Fricke, R., Eschmeyer, W.N. & van der Laan, R. (Year Accessed). Eschmeyer's Catalog of Fishes: Genera, Species, References. https://researcharchive.calacademy.org/research/ichthyology/catalog/fishcatmain.asp.

Examples

my.version <- rcatfish_version() 

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.