Skip to main content

Complete data from the Barro Colorado 50-ha plot: 423617 trees, 35 years

Cite this dataset

Condit, Richard et al. (2019). Complete data from the Barro Colorado 50-ha plot: 423617 trees, 35 years [Dataset]. Dryad.


The 50-ha plot at Barro Colorado Island was initially demarcated and fully censused in 1982, and has been fully censused 7 times since, every 5 years from 1985 through 2015 (Hubbell and Foster 1983, Hubbell et al. 1990, Condit et al. 2012, Condit et al. 2017). Every measurement of every stem over 8 censuses is included in this archive. Most users will need only the 8 R Analytical Tables in the format tree, which come here zipped together into a single archive (, plus the single R Species Table. Additional tables cover all individuals stems, additional measurements at mulitple positions on some stems, and the full database in original MySQL format. This is the 2019 version of the database, frozen as of 30 May 2019, replacing the 2012 Smithsonian archive ( There are unauthorized versions of the BCI database available elsewhere. This is the only version approved by the lead investigators (Condit and Hubbell).

PIs Condit and Hubbell would like to be informed of papers resulting from the BCI plot data. Depending on our level of interest and how much a paper depends on the BCI plot, co-authorship might be requested.

Please cite this archive as

Condit R., Perez, R., Aguilar, S., Lao, S., Foster, R., Hubbell, S.P. 2019. Complete data from the Barro Colorado 50-ha plot: 423617 trees, 35 years, 2019 version.


  • Hubbell, S. P. and Foster, R. B. 1983. Diversity of canopy trees in a neotropical forest and implications for conservation. Pp. 25-41 in Tropical Rain Forest: Ecology and Management, Whitmore, T., Chadwick, A., and Sutton, A. (Eds.). The British Ecological Society.
  • Hubbell, S. P., Condit, R., and Foster, R. B. 1990. Presence and absence of density dependence in a Neotropical tree community. Philosophical Transactions of the Royal Society of London. Series B: Biological Sciences Pages 269–281. pdf
  • Condit, R., 1998. Tropical Forest Census Plots: Methods and Results from Barro Colorado Island, Panama and a Comparison with Other Plots. Springer-Verlag, Berlin. pdf Condit_1998_CensusPlotsmethodsBook.pdf.
  • Harms, K., Condit, R., Hubbell, S., and Foster, R. 2001. Habitat associations of trees and shrubs in a 50-ha Neotropical forest plot. Journal of Ecology 89:947–959. pdf
  • Condit, R., Chisholm, R. A., and Hubbell, S. P. 2012. Thirty years of forest census at Barro Colorado and the importance of immigration in maintaining diversity. PLoS ONE 7:e49826. pdf
  • Condit, R., Lao, S., Singh, A., Esufali, S., and Dolins, S. 2014. Data and database standards for permanent forest plots in a global network. Forest Ecology and Management, 316: 21-31. pdf
  • Cushman, K., Muller-Landau, H. C., Condit, R. S., and Hubbell, S. P. 2014. Improving estimates of biomass change in buttressed trees using tree taper models. Methods in Ecology and Evolution, 5:573–582. pdf
  • Condit, R., Pérez, R., Aguilar, S., Lao, S., and Hubbell, S. P. 2017. Demographic trends and climate over 35 years in the Barro Colorado 50 ha plot. Forest Ecosystems 4:1–13. pdf
  • Condit R., Perez, R., Aguilar, S., Lao, S., Foster, R., Hubbell, S.P. 2019. BCI 50-ha plot taxonomy, 2019 version. DataONE Dash, Dataset,


See Condit (1998).

Usage notes

R Analytical Tables: Tree and Stem

These are 16 tables in R format, 8 tables in the tree format, one table per census, and 8 more in the stem format. They are named bci.tree1 through bci.tree8 and bci.stem1 through bci.stem8, with the number corresponding to a census. Every tree table includes a record for every tree appearing in the 50-ha plot across all censuses, with one row per tree and one table per census. Trees not yet censused and dead trees are included, allowing the fate of every tree to be tallied in every census. The rows in every tree table are in exactly the same order, so the 8 tree tables are effectively a single giant table, with columns for every one of the 8 censuses. They are divided into separate tables for easier access. Moreover, each individual census table is self-contained, and if a user needs only one census, then only that one census table is necessary. For most purposes the most recent, bci.tree8, should serve for a single census. The 8 stem tables form a parallel set having one row for every stem ever censused.

In the tree tables, if stemID matches for a given tree in 2 censuses, then it is certain that the same stem was measured in both censuses. If the stemID differs between censuses, it often means that the first stem broke and a new stem was measured. However, in trees with 2 or more stems, it was not always possible to identify stems with certainty across censuses prior to 2010, because stem tags were not used. This means that there are cases where the stemID changes even though the stem(s) really did persist. The cleanest way to assess growth is to use only those cases where the stemID matches between censuses. It is also necessary to check the HOM (height-of-measurement) in case it changes between censuses. In the stem tables, records on matching rows are guaranteed to be the same stem, but the HOM might change.

The 8 tree tables are zipped into the single file, and the 8 stem tables into

Columns in R Analytical Tables: Tree and Stem

  • treeID: The unique tree identifier in the database. Guarantees a tree match.
  • stemID: The unique stem identifier in the database. Guarantees a stem match.
  • tag: Tag number on the tree (occasionally negative where a tag was duplicated by mistake).
  • StemTag: Tag number on the individual stem, if present.
  • sp: The species mnemonic. See the R Species Table for full Latin names.
  • quadrat: Quadrat designation, as a 2-digit row number then 2-digit column number on a 20x20 m grid.
  • gx: The x coordinate within the plot, meters from the west border of the plot, always in [0,1000).
  • gy: The y coordinate, meters from the south border, always in [0,500).
  • dbh: Diameter (mm) of one stem on the tree, the stem whose stemID is given.
  • hom: The height-of-measure, meters above the ground, where the dbh was measured.
  • ExactDate: The date on which a tree was measured.
  • date: Integer date for easy calculation of time interval between censuses (the number of days since 1 Jan 1960).
  • codes: The codes describing the measurement as recorded in the field. See Condit (1998) for a description of field codes. For analyses, status codes should be used, not field codes.
  • status: A status code for the tree or stem. See the section below, Status Codes for Analyses.
  • DFstatus: Alternate stem status, redundant relative to status.
  • nostems: The number of living stems on the date of measurement.
  • agb: Above-ground-biomass of all stems on the tree, in Mg (= metric tons), or for the individual stem. Note that agb=0 for dead trees.
  • ba: Basal area of all stems on the tree, in square meters. Note that ba=0 for dead trees.

Status Codes for Analyses

These indicate whether a tree (stem) is alive (A) or dead (D), with some further complications. Status A=alive is assigned to a tree if it has any living stem or sprout. Status D=dead is only used when an entire tree is dead. A third status is P=prior, necessary because each of the analytical tables has a record for every tree (or stem). Thus, there must be records in early censuses for trees that recruited in later censuses, and these trees have status P. In a complete life cycle, a tree begins with status P, becomes A, then D; for many trees, the cycle includes only P to A, or A to D, or just A over all 8 censues. Additional status codes are necessary because a stem can be dead while the tree is still alive, and for rare cases where trees were missed during a census or recorded as dead once then later alive.

Status Codes for Analyses (the status column in R Analytical Tables)

  • A: Alive, applied to either the tree or stem.
  • D: Dead, meaning the entire tree is dead, ie with no living stems or sprouts.
  • P: Prior, applied to a tree (or stem) in censuses prior to its appearance in the plot.
  • M: Missing, indicating that the tree was skipped by mistake during the census, so it could have been alive or dead.
  • AD: A seldom-used code, applied when a tree was noted as dead in one census but was found alive in a later census. For most purposes, this code should be interpreted the same as code A for alive.
  • AR: A similar unusual code, applied when a stem was noted as broken in one census but intact in a later census. For most purposes, this code should be interpreted the same as code A for alive.
  • G: Gone, for stems only, meaning the stem broke or otherwise disappeared, but other stems on the tree were alive and measured.
  • V: Vanished, for stems only. This is needed in the BCI plot because stem tags were not used before the 2010 census. It is often the case where a tree had 2 or more stems that were, after 5 years, impossible to match. When this was true, new stems with new stemIDs and thus new rows in the stem table were created. Earlier stems were given status=V. In most cases, V means the stems persisted but could not be tracked.

R Species Table

A single table in R format with taxonomic details on the species names used in the plot database as well as wood density. This is matched to the R Analytical Tables with the species mnemonic (column sp). The R species table includes many species not found in the 50-ha plot but known in other plots in Panama. More information and references about the plot tree species, including all taxonomic changes since 1982, is available in a separate data archive (Condit et al. 2019).

Columns in R Species Table

  • sp: The species mnemonic.
  • Latin: Full Latin name.
  • Genus: Taxonomic genus.
  • Species: Taxonomic species.
  • Family: Following (mostly) the angiosperm classification at
  • SpeciesID: The unique species identifier in the database. Guarantees a species match.
  • SubspeciesID: The unique subspecies identifier in the database. Guarantees a subspecies match.
  • Authority: Taxonomic authority.
  • IDLevel: The taxonomic level to which the species is identified, usually species, otherwise it is a recognizable morphospecies, not named to species (usually the genus is known).
  • syn: Prior names used in the BCI plot.
  • subsp: Infraspecific name (blank in most cases because no subspecies name is used).
  • wsg: Wood specific gravity (grams per cm3 dry weight).
  • wsglevel: The taxonomic level for which wsg is known, ie where this is genus it means the wsg is the average for the genus (unrelated to IDLevel).

Topography of the BCI plot

A tab-delimited ascii text table, BCIelev.tsv, with precise topography of the BCI 50-ha plot. See Harms et al. (2001) for details.

Columns in Topography of the BCI plot

  • x: The x coordinate within the plot, in meters from the west border.
  • y: The y plot coordinate, in meters from the south border.
  • elev: Elevation above sea-level in meters.

Full Measurement Table

A tab-delimited text table, FullMeasurementBCI.tsv, zipped as The table includes a measurement of every stem at every HOM (height-of-measure) taken in the 50-ha plot over 1982-2015. In this table, every measurement is a separate row, so records for the same tree are on multiple rows. The R Analytical tables include the same measurements in a more convenient format for analysis. However, there are some measurements in this full table not appearing in analytical tables. Those are cases where a tree was measured at several HOMs due to buttresses. In the R tables, only a single measurement per stem is included, designed so that as many censuses as possible are at the same HOM. Analyses of trunk taper require this table instead of R Analytical Tables (Cushman 2014).

Columns in Full Measurement Table

  • Family: Same as R Species Table.
  • Genus: Same as R Species Table.
  • SpeciesName: Same as Species in R Species Table.
  • Mnemonic: Same as sp in R Species Table.
  • Subspecies: Same as subsp in R Species Table.
  • SpeciesID: Same as R Species Table.
  • SubspeciesID: Same as R Species Table.
  • QuadratName: Same as quadrat in R Analytical Table.
  • PX: Same as gx in R Analytical Table.
  • PY: Same as gy in R Analytical Table.
  • TreeID: Same as R Analytical Table.
  • Tag: Same as R Analytical Table.
  • StemID: Same as R Analytical Table.
  • StemTag: Same as R Analytical Table.
  • PlotCensusNumber: Census number 1-8.
  • DBH: Same as column dbh in R Analytical Table.
  • HOM: Same as column hom in R Analytical Table.
  • ExactDate: Same as R Analytical Table.
  • Date: Same as R Analytical Table.
  • ListOfTSM: Same as codes in R Analytical Table.
  • HighHOM: A flag, with 1 indicating this hom is at the highest position on the stem, otherwise 0.
  • Status: Same as status in R Analytical Table.

Complete MySQL Database

This is the full MySQL database, zipped as Within the zip is a single mysql dump file that must be sourced within MySQL to restore the database. Most users will never need this, and further details are omitted here. A more thorough description of the tables can be found in Condit et al. (2014).



National Science Foundation, Award: Many

John D. and Catherine T. MacArthur Foundation

Smithsonian Tropical Research Institute



9.15125, -79.8553
SW 9.152096, -79.854984
NW 9.15701, -79.846745