Read phylogenetic characters from file
Parse a Nexus or TNT file, reading character states and names.
ReadCharacters(filepath, character_num = NULL, session = NULL) ReadTntCharacters(filepath, character_num = NULL, type = NULL, session = NULL) ReadAsPhyDat(filepath) ReadTntAsPhyDat(filepath) PhyDat(dataset)
filepath |
character string specifying location of file, or a connection to the file. |
character_num |
Index of character(s) to return.
|
session |
(Optional) A Shiny session with a |
type |
Character vector specifying categories of data to extract from
file. Setting |
dataset |
list of taxa and characters, in the format produced by read.nexus.data: a list of sequences each made of a single character vector, and named with the taxon name. |
Tested with matrices downloaded from MorphoBank, but should also work more widely; please report incorrectly parsed files.
Matrices must contain only continuous or only discrete characters; maximum one matrix per file. Continuous characters will be read as strings (i.e. base type 'character').
The encoding of an input file will be automatically determined by R.
Errors pertaining to an invalid multibyte string
or
string invalid at that locale
indicate that R has failed to detect
the appropriate encoding. Either
re-save the file
in a supported encoding (UTF-8
is a good choice) or
specify the file encoding (which you can find by, for example, opening in
Notepad++ and identifying
the highlighted option in the "Encoding" menu) following the example below.
ReadCharacters()
and ReadTNTCharacters()
return a matrix whose
row names correspond to
tip labels, and column names correspond to character labels, with the
attribute state.labels
listing the state labels for each character; or
a list of length one containing a character string explaining why the
function call was unsuccessful.
ReadAsPhyDat()
and ReadTntAsPhyDat()
return a
phyDat
object.
PhyDat
: A convenient wrapper for phangorn's
phyDat()
, which converts a list of morphological characters into a
phyDat
object.
If your morphological characters are in the form of a matrix, perhaps
because they have been read using read.table()
, try MatrixToPhyDat()
instead.
Martin R. Smith (martin.smith@durham.ac.uk)
Maddison DR, Swofford DL, Maddison WP (1997). “Nexus: an extensible file format for systematic information.” Systematic Biology, 46, 590–621. doi: 10.1093/sysbio/46.4.590, https://doi.org/10.1093/sysbio/46.4.590.
Convert between matrices and phyDat
objects: MatrixToPhyDat()
Write characters to TNT-format file: WriteTntCharacters()
fileName <- paste0(system.file(package = 'TreeTools'), '/extdata/input/dataset.nex') ReadCharacters(fileName) fileName <- paste0(system.file(package = 'TreeTools'), '/extdata/tests/continuous.nex') continuous <- ReadCharacters(fileName) # To convert from strings to numbers: at <- attributes(continuous) continuous <- suppressWarnings(as.numeric(continuous)) attributes(continuous) <- at continuous # Read a file with a known encoding that cannot be auto-detected by R # Specify appropriate encoding: fileEncoding <- "UTF-8" # Open connection to file con <- file(fileName, encoding = fileEncoding, open = "r") ReadCharacters(con) # Close connection after use close(con)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.