Skip to content

Latest commit

 

History

History
108 lines (72 loc) · 7.02 KB

README.md

File metadata and controls

108 lines (72 loc) · 7.02 KB

DOI

P50 Depth Analysis v1.0


The P50 Depth Analysis v1.0 calculates blood-oxygen binding, which is a mechanism determining hypoxia tolerance in the ocean. Blood-oxygen binding is measured as the oxygen pressure in the blood at which whole blood is 50% oxygenated, called P50. A low P50 means that respiratory pigments in the blood of an organism equilibrate to 100% oxygenation at lower oxygen pressures, and the organism is more hypoxia tolerant. Temperature alters hypoxia tolerance by shifting the P50 of organisms. The effect of temperature is measured as the heat of oxygenation (ΔH) which is the amount of heat energy released (negative ΔH) or absorbed (positive ΔH) when oxygen binds to respiratory pigments. Marine organisms swim between warmer, well-oxygenated waters near the surface of the ocean and colder, less-oxygenated waters in the deeper ocean.

This analysis assumes P50 acclimation to temperatures at 10 m depth in the mixed layer. P50 in the water column can be determined relative to P50 at 10 m depth using the Van't Hoff equation and oxygen pressure and temperature data. The P50 depth is defined as the shallowest depth in the ocean where pO2 = P50. This code calculates P50 depths for the global ocean.

Please cite the following paper if you use this code:

Mislan, K. A. S., J. P. Dunne, and J. L. Sarmiento. (2015) The fundamental niche of blood-oxygen binding in the pelagic ocean. Oikos. http://dx.doi.org/10.1111/oik.02650


Software dependencies


All the required software is open source.

NOAA Ferret v6.82:http://www.ferret.noaa.gov/Ferret/

Python v2.7.6: https://www.python.org/
Python packages: scipy 0.14.0, basemap 1.0.7, numpy 1.9.2, netCDF4 1.1.8, matplotlib 1.4.3

R v3.2.2: http://www.r-project.org/
R packages: ncdf 1.6.8, colorRamps 2.3, fields 8.2-1, caTools 1.17.1

Operating system information:

Mac OS X and Unix-like operating systems should be able to install NOAA Ferret and R without any additional dependencies.

NOAA Ferret running under Windows is not currently supported. The NOAA Ferret documentation has suggestions for running NOAA Ferret on Windows operating systems.


Folders


EnvironmentalData: This folder contains the oxygen pressure and temperature data used to calculate the P50 depth. The folder also contains oxygen concentration and salinity data which are needed to determine the depth of the 60 μmol kg-1 hypoxia threshold.

Graphs: This folder is where graphs generated by the Python code and R code are saved.

PythonCode: This folder contains the Python code that is used to generate the geographic maps of P50 depth.

RCode: This folder contains the R code that is used to test and generate plots of the results. The p50_deltaH_data.txt file has data from the literature for P50 and ΔH measurements of marine species.

Results: This folder contains the results that are generated by the shell scripts that run the NOAA Ferret software.

ShellScripts: The shell scripts automate the calculation of P50 depth for different physiological parameters using the NOAA Ferret software.

TestFiles: Contains test files to verify that the results were generated by the code are correct.


Environmental data


The data in NetCDF format was obtained from the NOAA National Centers for Environmental Information World Ocean Atlas 2009. The oxygen data were corrected for bias using methods developed by Bianchi et al. 2012, and converted from oxygen concentration to oxygen pressure using equations from Garcia and Gordon (1992).


Running the analysis code


The analysis to calculate P50 depth is run in NOAA Ferret using shell scripts in the ShellScripts folder. P50 at 10 m depth and ΔH values to be analyzed can be added or changed at the top of the P50Depth_ABC.sh, P50Depth.sh, and P50Depth_geostats.sh files. The output from the shell scripts will be put in the Results folder. The commands assume that the current directory is the P50DepthAnalysis_v1.0 folder.

Commands to run shell scripts:

sh ShellScripts/60umolkg_Depth/60umolkg_Depth.sh
sh ShellScripts/P50/P50.sh
sh ShellScripts/P50Depth_ABC/P50Depth_ABC.sh
sh ShellScripts/P50Depth_ABC_Differences/P50Depth_ABC_Differences.sh

Command to run shell script (takes some time to run):

sh ShellScripts/Geostats_P50Depth/P50Depth_geostats.sh

Command to run shell script (takes some time to run and produces 1.5 GB of results):

sh ShellScripts/P50Depth/P50Depth.sh

Verifying the results


Compare results generated using the commands above to a set of test files to make sure the results are the same. P50Depth.sh produces 1.5 GB of results so a set of test files is not included. The analysis in P50Depth.sh is the same as the P50Depth_ABC.sh - the difference is that P50Depth.sh produces results for a wider range of P50 and ΔH parameters. The commands assume that the current directory is the P50DepthAnalysis_v1.0 folder.

Commands to run comparison tests:

Rscript RCode/RunTest_60umolkg_Depth.R
Rscript RCode/RunTest_P50.R
Rscript RCode/RunTest_P50Depth_ABC.R
Rscript RCode/RunTest_P50Depth_geostats.R

Graphing the results


Plots of P50 and P50 depth are produced and saved in the Graphs folder. The commands assume that the current directory is the P50DepthAnalysis_v1.0 folder.

Commands to graph the results:

Rscript RCode/Analysis_P50Depth_point.R
Rscript RCode/Analysis_P50Depth_transect.R
python PythonCode/P50Depth_ABC_Maps.py
python PythonCode/P50Depth_ABC_Differences_Maps.py
Rscript RCode/Analysis_P50Depth_parameters.R

Acknowledgements


Code Release:
KAS was supported by the Washington Research Foundation Fund for Innovation in Data-Intensive Discovery and the Moore/Sloan Data Science Environments Project at the University of Washington.

Research:
This research was supported by the NOAA Cooperative Institute for Climate Science (NA08OAR4320752) and the Carbon Mitigation Initiative at Princeton University which is sponsored by BP.