diff --git a/joss.05074/10.21105.joss.05074.crossref.xml b/joss.05074/10.21105.joss.05074.crossref.xml
new file mode 100644
index 0000000000..12107901e8
--- /dev/null
+++ b/joss.05074/10.21105.joss.05074.crossref.xml
@@ -0,0 +1,218 @@
+
+
+
+ 20230613T142003-2c19b37f0c27300c5b154473fba879e2c7488f68
+ 20230613142003
+
+ JOSS Admin
+ admin@theoj.org
+
+ The Open Journal
+
+
+
+
+ Journal of Open Source Software
+ JOSS
+ 2475-9066
+
+ 10.21105/joss
+ https://joss.theoj.org/
+
+
+
+
+ 06
+ 2023
+
+
+ 8
+
+ 86
+
+
+
+ pycoxmunk: A python package for computing sea surface
+reflectance
+
+
+
+ Simon R.
+ Proud
+ https://orcid.org/0000-0003-3880-6774
+
+
+
+ 06
+ 13
+ 2023
+
+
+ 5074
+
+
+ 10.21105/joss.05074
+
+
+ http://creativecommons.org/licenses/by/4.0/
+ http://creativecommons.org/licenses/by/4.0/
+ http://creativecommons.org/licenses/by/4.0/
+
+
+
+ Software archive
+ 10.5281/zenodo.8020079
+
+
+ GitHub review issue
+ https://github.com/openjournals/joss-reviews/issues/5074
+
+
+
+ 10.21105/joss.05074
+ https://joss.theoj.org/papers/10.21105/joss.05074
+
+
+ https://joss.theoj.org/papers/10.21105/joss.05074.pdf
+
+
+
+
+
+ A sea surface reflectance model for (A)ATSR,
+and application to aerosol retrievals
+ Sayer
+ Atmospheric Measurement
+Techniques
+ 4
+ 3
+ 10.5194/amt-3-813-2010
+ 2010
+ Sayer, A., Thomas, G., &
+Grainger, R. (2010). A sea surface reflectance model for (A)ATSR, and
+application to aerosol retrievals. Atmospheric Measurement Techniques,
+3(4), 813–838.
+https://doi.org/10.5194/amt-3-813-2010
+
+
+ Cloud retrievals from satellite data using
+optimal estimation: Evaluation and application to ATSR
+ Poulsen
+ Atmospheric Measurement
+Techniques
+ 8
+ 5
+ 10.5194/amt-5-1889-2012
+ 2012
+ Poulsen, C., Siddans, R., Thomas, G.,
+Sayer, A., Grainger, R., Campmany, E., Dean, S., Arnold, C., &
+Watts, P. (2012). Cloud retrievals from satellite data using optimal
+estimation: Evaluation and application to ATSR. Atmospheric Measurement
+Techniques, 5(8), 1889–1910.
+https://doi.org/10.5194/amt-5-1889-2012
+
+
+ ORAC: Optimal retrieval of aerosol and
+cloud
+ A. C. Povey
+ GitHub repository
+ 2022
+ A. C. Povey, S. R. P., G. McGarragh.
+(2022). ORAC: Optimal retrieval of aerosol and cloud. In GitHub
+repository. GitHub.
+https://github.com/ORAC-CC/orac
+
+
+ Statistics of the sea surface derived from
+sun glitter
+ Cox
+ J. mar. Res.
+ 13
+ 1954
+ Cox, C. (1954). Statistics of the sea
+surface derived from sun glitter. J. Mar. Res., 13,
+198–227.
+
+
+ Measurement of the roughness of the sea
+surface from photographs of the sun’s glitter
+ Cox
+ Josa
+ 11
+ 44
+ 10.1364/josa.44.000838
+ 1954
+ Cox, C., & Munk, W. (1954).
+Measurement of the roughness of the sea surface from photographs of the
+sun’s glitter. Josa, 44(11), 838–850.
+https://doi.org/10.1364/josa.44.000838
+
+
+ Pytroll: An open-source, community-driven
+python framework to process earth observation satellite
+data
+ Raspaud
+ Bulletin of the American Meteorological
+Society
+ 7
+ 99
+ 10.1175/bams-d-17-0277.1
+ 2018
+ Raspaud, M., Hoese, D., Dybbroe, A.,
+Lahtinen, P., Devasthale, A., Itkin, M., Hamann, U., Rasmussen, L. Ø.,
+Nielsen, E. S., Leppelt, T., & others. (2018). Pytroll: An
+open-source, community-driven python framework to process earth
+observation satellite data. Bulletin of the American Meteorological
+Society, 99(7), 1329–1336.
+https://doi.org/10.1175/bams-d-17-0277.1
+
+
+ Dask: Parallel computation with blocked
+algorithms and task scheduling
+ Rocklin
+ Proceedings of the 14th python in science
+conference
+ 10.25080/majora-7b98e3ed-013
+ 2015
+ Rocklin, M. (2015). Dask: Parallel
+computation with blocked algorithms and task scheduling. Proceedings of
+the 14th Python in Science Conference.
+https://doi.org/10.25080/majora-7b98e3ed-013
+
+
+ Evaluation of sun glint models using MODIS
+measurements
+ Zhang
+ Journal of Quantitative Spectroscopy and
+Radiative Transfer
+ 3
+ 111
+ 10.1016/j.jqsrt.2009.10.001
+ 2010
+ Zhang, H., & Wang, M. (2010).
+Evaluation of sun glint models using MODIS measurements. Journal of
+Quantitative Spectroscopy and Radiative Transfer, 111(3), 492–506.
+https://doi.org/10.1016/j.jqsrt.2009.10.001
+
+
+ Numba: A llvm-based python jit
+compiler
+ Lam
+ Proceedings of the second workshop on the
+LLVM compiler infrastructure in HPC
+ 2015
+ Lam, S. K., Pitrou, A., &
+Seibert, S. (2015). Numba: A llvm-based python jit compiler. Proceedings
+of the Second Workshop on the LLVM Compiler Infrastructure in HPC,
+1–6.
+
+
+
+
+
+
diff --git a/joss.05074/10.21105.joss.05074.jats b/joss.05074/10.21105.joss.05074.jats
new file mode 100644
index 0000000000..2b2490666e
--- /dev/null
+++ b/joss.05074/10.21105.joss.05074.jats
@@ -0,0 +1,410 @@
+
+
+
+
+
+
+
+Journal of Open Source Software
+JOSS
+
+2475-9066
+
+Open Journals
+
+
+
+5074
+10.21105/joss.05074
+
+pycoxmunk: A python package for computing sea surface
+reflectance
+
+
+
+https://orcid.org/0000-0003-3880-6774
+
+Proud
+Simon R.
+
+
+
+
+
+National Centre for Earth Observation, RAL Space, STFC
+Rutherford Appleton Laboratory, Harwell, OX11
+
+
+
+
+27
+10
+2022
+
+8
+86
+5074
+
+Authors of papers retain copyright and release the
+work under a Creative Commons Attribution 4.0 International License (CC
+BY 4.0)
+2022
+The article authors
+
+Authors of papers retain copyright and release the work under
+a Creative Commons Attribution 4.0 International License (CC BY
+4.0)
+
+
+
+Python
+remote sensing
+earth observation
+oceanography
+satellite
+
+
+
+
+
+ Summary
+
Knowledge of how the sea surface reflects incoming sunlight is of
+ key importance within satellite remote sensing of the Earth. For
+ example, estimating the amount of dust or pollution in the atmosphere
+ requires precise knowledge of the surface reflectance in order to be
+ accurate. This paper introduces pycoxmunk, a python
+ library that computes both the sea surface reflectance and the
+ so-called Bidirectional Reflectance Distribution Function (BRDF)
+ across the visible and near-infrared spectrum. Pycoxmunk is designed
+ to work with data from many of the most commonly used satellite
+ sensors and provides output that can be used within retrieval
+ algorithms or as a standalone product in its own right.
+
+
+ Statement of need
+
The amount of sunlight reflected by a water surface depends upon
+ factors such as the wavelength of light being examined, the wind speed
+ - which affects wave height and the presence of white
+ caps atop the waves - and the presence of pigments such as
+ chlorophyll. Satellite sensors typically look down from space towards
+ the water surface and hence have a good view of surface reflectance if
+ we assume clear sky conditions. However, the presence of clouds or
+ aerosols (smoke, dust, etc) can affect the measured top of
+ atmosphere reflectance. There exist a multitude of algorithms
+ to detect and analyse these cloud and aerosol features, and they
+ typically require accurate information on the surface reflectance in
+ order to retrieve the atmospheric properties.
+
Therefore, a tool to calculate the expected sea surface reflectance
+ for a given set of satellite measurements and weather conditions can
+ provide a valuable input into such retrieval algorithms.
+
+
+ State of the field
+
Previously, most retrieval algorithms have their own inbuilt method
+ of computing this reflectance via a wide range of approaches and
+ algorithms. A particularly well-used approach is that first described
+ by Cox and Munk
+ (Cox,
+ 1954;
+ Cox
+ & Munk, 1954), and expanded upon by subsequent research
+ (Sayer
+ et al., 2010). For example, the ORAC algorithm that can
+ retrieve both cloud and aerosol properties uses Cox-Munk at the core
+ of its surface reflectance simulation
+ (A.
+ C. Povey, 2022;
+ Poulsen
+ et al., 2012). However, both ORAC and other projects have their
+ implementations of Cox-Munk tightly bound with the rest of their
+ codebase, meaning that users cannot easily run just the sea surface
+ reflectance calculation. Many remaining tools, such as the
+ commonly-used HydroLight algorithm that requires a purchased license
+ to function, are therefore also of limited accessibility. An overview
+ of some alternative models is given in
+ (Zhang
+ & Wang, 2010), showing both the limited availability of
+ suitable reflectance models and the good performance of the Cox-Munk
+ technique.
+
The library introduced here, pycoxmunk, implements
+ the Cox-Munk method in a python library that is widely accessible
+ without relying on custom code unique to a given retrieval system such
+ as ORAC. This enables a more widely applicable version of Cox-Munk
+ than has previously been available. In writing this library, ORAC’s
+ fortran implementation of Cox-Munk was used as a reference to ensure
+ pycoxmunk produced correct output.
+
+
+ Algorithm details
+
The sea surface has an intrinsic reflectance that depends on how
+ much light is absorbed on the surface and reflected deeper within the
+ water. This primarily depends on the chlorophyll content. At present,
+ pycoxmunk assumes a fixed fraction of clorophyll and
+ hence a fixed intrinsic reflectance at a given wavelength that in calm
+ conditions, depends on the viewing geometry:
+
+
+ θs:
+ The angle between the sun and vertical such that an angle of 0°
+ specifies that the sun is directly above the target and an angle of
+ 90° specifies that the sun is at the horizon.
+
+
+ θv:
+ The angle between the satellite and vertical, defined as above.
+
+
+ ϕs:
+ The angle between the sun and North, defined such that 0° and 180°
+ specify that the sun is directly North and directly South of the
+ target respectively and likewise 90° and 270° specify the sun being
+ due East and West respectively.
+
+
+ ϕv:
+ The angle between the satellite and North, defined as above.
+
Where the sun and satellite geometry is favourably aligned, on
+ opposing sides of the target, the sea acts like a mirror, known as
+ specular reflection, and there is a large peak in sea surface
+ reflectance in the sun glint region - as shown in Fig
+ 1b. In other geometrical conditions the reflectance is significantly
+ lower.
+
In windy conditions, the assumption of specular reflection breaks
+ down due to wave activity that, for high wind speeds, generates white
+ caps atop the waves that appear very bright.
+ pycoxmunk accounts for white caps using a simple
+ relation(Sayer
+ et al., 2010):
+
+
+ ρwc=Rwc⋅2.951e−6⋅vwind3.52
+
Where
+
+ Rwc
+ is the predefined whitecap reflectance at a given wavelength and
+
+
+ vwind
+ is the wind speed.
+
+
+ Usage and integration with other libraries
+
pycoxmunk is designed to work in tandem with the
+ satpy library
+ (Raspaud
+ et al., 2018) that reads, calibrates and provides geometry
+ information for many satellite sensors across a wide range of use
+ cases. Once a user has loaded satellite data with satpy they can then
+ pass satpy’s main class, the Scene, to
+ pycoxmunk along with optional arguments to define the
+ user-required processing. pycoxmunk will then compute
+ the sea surface reflectance and store the results as additional
+ datasets within the Scene, which are directly
+ accessible to the user. A key feature of satpy, which
+ pycoxmunk builds upon, is the use of
+ dask arrays
+ (Rocklin,
+ 2015) to facilitate processing of datasets larger than the
+ user’s total system memory. Internally, all of
+ pycoxmunk’s processing is done via dask. If computing
+ the BRDF parameters, pycoxmunk will use the
+ numba library
+ (Lam
+ et al., 2015) to speed up computation of the
+ rho_0d, rho_0v and
+ rho_dd terms.
+
To use pycoxmunk, a user first needs to load their
+ satellite data via satpy, then pass this to
+ pycoxmunk’s main class, PyCoxMunk,
+ along with a list of sensor channels to be processed. Optionally, the
+ user can then supply wind information in the U and V directions,
+ preferably at 10m height above the surface. These can be passed as
+ either two floats (for constant wind across the satellite image) or as
+ arrays of equal size to the satellite data for the case of per-pixel
+ wind data. The user can also supply ‘masks’ that remove areas of no
+ interest, such as land pixels and cloud filled portions of the image.
+ Lastly, the user calls retr_coxmunk_refl to
+ compute the final reflectances, which can then be used by accessing
+ the PyCoxMunk.scn.
+
+
+ Figures
+
+
(a) An image from Japan’s Himawari-8 satellite at 04:10
+ UTC on 13th Sept 2016, Super Typhoon Meranti is visible in the
+ upper-center. (b) The corresponding Cox-Munk surface reflectance for
+ the 0.47, 0.51 and 0.64 micron channels, showing regions of sunglint
+ and wind driven white
+ caps.
+
+
+
+
+ Acknowledgements
+
I acknowledge the contributions of the ORAC development team for
+ their initial creation of the Cox-Munk code within ORAC. In particular
+ Greg McGarragh for writing numerous versions of the Fortran code and
+ Andy Sayer for the original Cox-Munk formulation. This work was funded
+ by the Natural Environment Research Council (NERC) through the
+ National Centre for Earth Observation award ref. NE/R016518/1 and by a
+ NERC Innovation fellowship, award ref. NE/R013144/1.
+
+
+
+
+
+
+
+ SayerAM
+ ThomasGE
+ GraingerRG
+
+ A sea surface reflectance model for (A)ATSR, and application to aerosol retrievals
+ Atmospheric Measurement Techniques
+ Copernicus GmbH
+ 2010
+ 3
+ 4
+ 10.5194/amt-3-813-2010
+ 813
+ 838
+
+
+
+
+
+ PoulsenCA
+ SiddansR
+ ThomasGE
+ SayerAM
+ GraingerRG
+ CampmanyE
+ DeanSM
+ ArnoldC
+ WattsPD
+
+ Cloud retrievals from satellite data using optimal estimation: Evaluation and application to ATSR
+ Atmospheric Measurement Techniques
+ Copernicus GmbH
+ 2012
+ 5
+ 8
+ 10.5194/amt-5-1889-2012
+ 1889
+ 1910
+
+
+
+
+
+ A. C. PoveyS. R. ProudG. McGarragh
+
+ ORAC: Optimal retrieval of aerosol and cloud
+ GitHub repository
+ GitHub
+ 2022
+ https://github.com/ORAC-CC/orac
+
+
+
+
+
+ CoxCharles
+
+ Statistics of the sea surface derived from sun glitter
+ J. mar. Res.
+ 1954
+ 13
+ 198
+ 227
+
+
+
+
+
+ CoxCharles
+ MunkWalter
+
+ Measurement of the roughness of the sea surface from photographs of the sun’s glitter
+ Josa
+ Optica Publishing Group
+ 1954
+ 44
+ 11
+ 10.1364/josa.44.000838
+ 838
+ 850
+
+
+
+
+
+ RaspaudMartin
+ HoeseDavid
+ DybbroeAdam
+ LahtinenPanu
+ DevasthaleAbhay
+ ItkinMikhail
+ HamannUlrich
+ RasmussenLars Ørum
+ NielsenEsben Stigård
+ LeppeltThomas
+ others
+
+ Pytroll: An open-source, community-driven python framework to process earth observation satellite data
+ Bulletin of the American Meteorological Society
+ 2018
+ 99
+ 7
+ 10.1175/bams-d-17-0277.1
+ 1329
+ 1336
+
+
+
+
+
+ RocklinMatthew
+
+ Dask: Parallel computation with blocked algorithms and task scheduling
+ Proceedings of the 14th python in science conference
+ Citeseer
+ 2015
+ 10.25080/majora-7b98e3ed-013
+
+
+
+
+
+ ZhangHao
+ WangMenghua
+
+ Evaluation of sun glint models using MODIS measurements
+ Journal of Quantitative Spectroscopy and Radiative Transfer
+ Elsevier
+ 2010
+ 111
+ 3
+ 10.1016/j.jqsrt.2009.10.001
+ 492
+ 506
+
+
+
+
+
+ LamSiu Kwan
+ PitrouAntoine
+ SeibertStanley
+
+ Numba: A llvm-based python jit compiler
+ Proceedings of the second workshop on the LLVM compiler infrastructure in HPC
+ 2015
+ 1
+ 6
+
+
+
+
+
diff --git a/joss.05074/10.21105.joss.05074.pdf b/joss.05074/10.21105.joss.05074.pdf
new file mode 100644
index 0000000000..92bd909ed9
Binary files /dev/null and b/joss.05074/10.21105.joss.05074.pdf differ
diff --git a/joss.05074/media/Fig1.jpg b/joss.05074/media/Fig1.jpg
new file mode 100644
index 0000000000..af47f8e2ee
Binary files /dev/null and b/joss.05074/media/Fig1.jpg differ