Exemple #1
0
    avr_n2o = n2o.mean(dim="Time")

    # HNO3 from MLS
    datafile = xr.open_mfdataset(
        '/home/kimberlee/Masters/NO2/MLS_HNO3_monthlymeans/MLS-HNO3-*.nc')
    datafile = datafile.sel(Time=slice('20050101', '20141231'))
    hno3 = datafile.HNO3.where((datafile.Latitude > -10)
                               & (datafile.Latitude < 10))
    hno3['nLevels'] = datafile.Pressure.mean('Time')
    hno3 *= 1e9  # ppbv
    hno3 = hno3.resample('YS', dim='Time', how='mean')
    avr_hno3 = hno3.mean(dim="Time")

    # Calculate NOy = HNO3 + NOx. Need NOx on pressure levels
    nox_pres = pres.mean(dim='time')
    avr_nox_plevels, mls_levels = helper_functions.interpolate_to_mls_pressure(
        nox_pres, avr_nox)
    # "Magic numbers" 5:16 correspond to pressure levels where MLS data is good and OSIRIS data exists.
    # Approx 146 to 3 hPa.
    noy = avr_hno3[5:16].values + avr_nox_plevels

    # Plot
    sns.set(context="talk", style="white", rc={'font.family': [u'serif']})
    fig, ax = plt.subplots(figsize=(10, 8))
    l1 = ax.semilogx(avr_no2,
                     avr_no2.altitude,
                     sns.xkcd_rgb["magenta"],
                     marker='o',
                     label="NO$\mathregular{_2}$")
    l2 = ax.semilogx(avr_nox,
                     avr_nox.altitude,
                     sns.xkcd_rgb["golden"],
Exemple #2
0
import numpy as np
from NO2 import helper_functions, open_data

# Load NOx
nox, pres_nox = open_data.load_osiris_nox_monthly(start_date='20050101',
                                                  end_date='20141231',
                                                  min_lat=-10,
                                                  max_lat=10,
                                                  pressure=1)

# get values at 10 hPa
nox_10_hpa = np.zeros(len(nox.time))
for i in range(len(nox.time)):
    pressure_i = pres_nox[i, :]
    nox_i = nox[i, :]
    n, l = helper_functions.interpolate_to_mls_pressure(pressure_i, nox_i)
    # l = 10 hPa at index 7, l = 21.5 hPa at index 5
    nox_10_hpa[i] = n[7]

nox_10_hpa_dataset = xr.DataArray(nox_10_hpa, coords=[nox.time], dims=["time"])
monthlymeans = nox_10_hpa_dataset.groupby('time.month').mean('time')
anomalies_nox = nox_10_hpa_dataset.groupby('time.month') - monthlymeans

# Load O3
o3, pres_o3 = open_data.load_osiris_ozone_monthly(start_date='20050101',
                                                  end_date='20141231',
                                                  min_lat=-10,
                                                  max_lat=10,
                                                  pressure=1)

# get values at 10 hPa
Exemple #3
0
    no2 = datafile.N2O.where((datafile.Latitude > -10)
                             & (datafile.Latitude < 10))
    monthlymeans = no2.groupby('Time.month').mean('Time')
    anomalies_n2o = no2.groupby('Time.month') - monthlymeans
    anomalies_n2o['nLevels'] = datafile.Pressure.mean('Time')
    anomalies_n2o *= 1e9  # ppbv
    anomalies_n2o = anomalies_n2o[:, 5:
                                  15]  # corresponds to range of pressures returned by alt_to_pres

    # Put NOx on MLS pressure levels to match HNO3
    nox_on_pres_levels = np.zeros(
        (len(nox.time), 10))  # alt_to_pres returns 10 pressure levels
    mls_levels = []
    for i in range(len(nox.time)):
        nox_on_pres_levels[
            i, :], l = helper_functions.interpolate_to_mls_pressure(
                pres_nox[i, :], nox[i, :])
        mls_levels = l

    nox_dataset = xr.DataArray(nox_on_pres_levels,
                               coords=[nox.time, mls_levels],
                               dims=["Time", "nLevels"])
    monthlymeans = nox_dataset.groupby('Time.month').mean('Time')
    anomalies_nox = nox_dataset.groupby('Time.month') - monthlymeans

    # Interpolate missing values so regression works
    anomalies_n2o = helper_functions.linearinterp(anomalies_n2o, mls_levels)
    anomalies_nox = helper_functions.linearinterp(anomalies_nox, mls_levels)

    anomalies_n2o = anomalies_n2o[0:-3, :]

    reg_coeff = np.zeros(len(mls_levels))
Exemple #4
0
    # Load daily NOx
    nox, pres_nox = open_data.load_osiris_nox_monthly(start_date='20050101', end_date='20141231',
                                                      min_lat=-10, max_lat=10, pressure=1)

    # Load monthly mean HNO3
    datafile = xr.open_mfdataset('/home/kimberlee/Masters/NO2/MLS_HNO3_monthlymeans/MLS-HNO3-*.nc')
    datafile = datafile.sel(Time=slice('20050101', '20141231'))
    hno3 = datafile.HNO3.where((datafile.Latitude > -10) & (datafile.Latitude < 10))
    hno3['nLevels'] = datafile.Pressure.mean('Time')  # change level numbers to appropriate pressure
    hno3 *= 1e9  # ppbv

    # Put NOx on MLS pressure levels to match HNO3
    nox_on_pres_levels = np.zeros((len(nox.time), 10))  # alt_to_pres returns 10 pressure levels
    mls_levels = []
    for i in range(len(nox.time)):
        nox_on_pres_levels[i, :], l = helper_functions.interpolate_to_mls_pressure(pres_nox[i, :], nox[i, :])
        mls_levels = l

    # Calculate NOy = HNO3 + NOx
    nox_dataset = xr.DataArray(nox_on_pres_levels, coords=[nox.time, mls_levels], dims=["Time", "nLevels"])
    noy = np.zeros((len(nox_dataset.Time), 10))
    for i in range(len(nox_dataset.Time)):
        noy[i, :] = hno3.values[i, 5:15] + nox_dataset.values[i, :]

    noy_dataset = xr.DataArray(noy, coords=[nox_dataset.Time, mls_levels], dims=["Time", "nLevels"])
    monthlymeans = noy_dataset.groupby('Time.month').mean('Time')
    anomalies_noy = noy_dataset.groupby('Time.month') - monthlymeans

    # Load O3
    o3, pres_o3 = open_data.load_osiris_ozone_monthly(start_date='20050101', end_date='20141231',
                                                      min_lat=-10, max_lat=10, pressure=1)