Skip to main content

This package will download and extract daily data of XCO2 from the NASA Goddard Earth Sciences (GES)

Project description

CABEÇALHO

Please, cite this package as:

Laurito, H., La Scala, N., Rolim, G. S., 2023. Extracting XCO2-NASA Daily data with XCODEX: A Python package designed for data extraction and structuration. Jaboticabal, SP, BR, (...)

Welcome to XCODEX - XCO2 Daily EXtractor

Hi there! My name is Henrique.

The creation of this Python package was intended to create a simple solution for extracting daily data from XCO2 retrieved from the GES DISC platform.

I will attach the links containing the GitHub profile of the researchers who helped me in the development of this package along with graphical visualization of the data and the citation of the OCO-2 project.

I hope it's useful to you. Long live science!

Installing the package

To install the package, use the command:

pip install xcodex

Using XCODEX

There's the possibility to download the .nc4 files directly here:

# Setting historical serie

from xcodex.main import download_file

start_date = "1st of January, 2022"
end_date = "31st of January, 2022"

# Downloading .nc4 files
download_file(start_date, end_date) 

Note that ERROR 401 usually is related to unavailable data.

Once the download is completed, a downloaded_data folder will be created in your current path.
After that, let's use xco2_extract() to retrieve XCO2 data from the .nc4 files:

from glob import glob
from os.path import join
from os import getcwd

# Selecting the folder with .nc4 files

arquive_folder = glob(join(getcwd(), "downloaded_data", "*.nc4")) 

# Setting desired locations to build a time series XCO2 data

locations = dict(Mauna_loa=[19.479488, -155.602829],
                 New_York=[40.712776, -74.005974],
                 Paris=[48.856613, 2.352222])

from xcodex.main import xco2_extract

df = xco2_extract(path=arquive_folder,
                  start=start_date,
                  end=end_date,
                  missing_data=False,
                  **locations); df # Extracting XCO2
      

Note1: The location used in this example was Mauna Loa, New York and Paris. Any location can be used
as long the format "Location[lat, lon]" is respected. The values of
latitude and longitude must be in decimal degrees.

for more information, please execute the command:

help(xco2_extractor)

Finally, you will have a pandas.Dataframe as result. Now it's up to you how you'll
handle it. I recomend checking the Github profiles below for data visualization.

Data visualization

Here we can plot in a map the locations:

## set mapbox access token

import plotly.express as px
import plotly.graph_objs as go

px.set_mapbox_access_token('pk.eyJ1Ijoic2FnYXJsaW1idTAiLCJhIjoiY2t2MXhhMm5mNnE5ajJ3dDl2eDZvNTM2NiJ9.1bwmb8HPgFZWwR8kcO5rOA')

# Plotly configs

fig= px.scatter_mapbox(df,
                              lat= 'lat',
                              lon= 'lon',
                              color= 'xco2',
                              zoom= .85,
                              width=960,
                              height=540,
                              size_max=10,
                              hover_name='city',
                              color_continuous_scale=px.colors.cyclical.IceFire)

fig.update_layout(mapbox_style="dark") #"open-street-map"


layout = go.Layout(margin=go.layout.Margin(
    l=0,
    r=0,
    b=0,
    t=0))


fig.update_layout(layout,
                  autosize=False,
                  height=540,
                  width=960,
                  hovermode="closest")

# Saving the output image

#fig.write_html('xcodex_map.html')
#fig.write_image("xcodex_map.png", scale=2)

fig.show()

And finally a way to observe the XCO2 behavior during the time serie:

# Showing XCO2 behavior in time serie

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(10,5))

sns.set_theme(font_scale=1, style="white")

sns.lineplot(data=df,
             x="jd",
             y='xco2',
             hue='city',
             errorbar=('ci',0),
             palette="tab10")

plt.xlabel("")
plt.ylabel("XCO2 (ppm)")

plt.xlim(min(df.jd), max(df.jd))
plt.ylim(min(df.xco2), max(df.xco2))

sns.despine(right=False,
            top=False)

plt.legend(ncol=3)

plt.tight_layout()

#plt.savefig("xcodex_locations.png", dpi=300)

plt.show()

GitHub profiles:

https://github.com/GlaucoRolim (Co-author)
https://github.com/kyuenjpl/ARSET_XCO2
https://github.com/sagarlimbu0/OCO2-OCO3

Data source citation:

Brad Weir, Lesley Ott and OCO-2 Science Team (2022), OCO-2 GEOS Level 3 daily, 0.5x0.625 assimilated CO2 V10r, Greenbelt, MD, USA, Goddard Earth Sciences Data and Information Services Center (GES DISC), Accessed: 10/31/2022, doi: 10.5067/Y9M4NM9MPCGH

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xcodex-0.0.5.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

xcodex-0.0.5-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file xcodex-0.0.5.tar.gz.

File metadata

  • Download URL: xcodex-0.0.5.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for xcodex-0.0.5.tar.gz
Algorithm Hash digest
SHA256 27f930f22366d398ef72279de5da5184b09b8ce4baad3581b338dbf66f267b2e
MD5 901a2f0f46fa4669a2e3f52a4864d479
BLAKE2b-256 a885b3cd14a3044e2c0518be9f9c45e9afc2a8e2b9860eae84b2fb63388a4892

See more details on using hashes here.

File details

Details for the file xcodex-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: xcodex-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for xcodex-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4263790cc5642cc3eb58fb33988b78bce04bfb89a6674b5a79134e768249843b
MD5 02ecd6eb180821df0aedc7364d81d575
BLAKE2b-256 3269dc573b6e609cc15495deb145acc8e9320d118add1cf5e095d0fd55a9f9a9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page