rubisco-sfa / IOMB-Data

A collection of scripts used to format IOMB data and community portal to make contributions
1 stars 0 forks source link

Add OCIM and Gruber #4

Closed nocollier closed 1 year ago

nocollier commented 1 year ago

@weiweifu

weiweifu commented 1 year ago

Hi Nate

For Gruber, I used the standard one (vertically integrated) [image: image.png] OCIM data is from the author's website (at the bottom of the page there is a dropbox link). Models and Data Products – UCSB Ocean Circulation and biogeochemistry lab https://tdevries.eri.ucsb.edu/models-and-data-products/

To compare anthropogenic carbon is a bit complex. The natural DIC (dissicnat) is subtracted from the total DIC (dissic) to acquire the anthropogenic part. However, the dissicnat variable is not available for the CMIP5 models and some of the CMIP6 models. I used a hierarchical model (the code from R) to fill the gap in the paper. For now, I think we may compare the models with both 'dissic' and 'dissicnat' variables.

Best Weiwei

On Tue, Jun 6, 2023 at 7:43 AM nocollier @.***> wrote:

@weiweifu https://urldefense.com/v3/__https://github.com/weiweifu__;!!CzAuKJ42GuquVTTmVmPViYEvSg!KqcJzkHXUscLKSEHVGcu1Cehcptp1Y26bIa-3ACyzMTZ13LzEQ5YlyQOOP7enIPv7kjRNLr1O1AgQEP9TD2l_gAG$

— Reply to this email directly, view it on GitHub https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1578901599__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!KqcJzkHXUscLKSEHVGcu1Cehcptp1Y26bIa-3ACyzMTZ13LzEQ5YlyQOOP7enIPv7kjRNLr1O1AgQEP9TH4p7xr1$, or unsubscribe https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWLD7YXQ77R22KMCXE3XJ46ZTANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!KqcJzkHXUscLKSEHVGcu1Cehcptp1Y26bIa-3ACyzMTZ13LzEQ5YlyQOOP7enIPv7kjRNLr1O1AgQEP9TOcBWFGv$ . You are receiving this because you were mentioned.Message ID: @.***>

nocollier commented 1 year ago

Ok, let's focus on OCIM. I found the link, many thanks.

weiweifu commented 1 year ago

On Wed, Jun 7, 2023 at 8:38 AM nocollier @.***> wrote:

Ok, let's focus on OCIM. I found the link, many thanks.

Ok, no probelm.

  • I see a model version in the dimensions of the raw data. Am I just to choose one, say the first? Or did you take a mean?

I usually choose the first one to compare. The internal variability across the model versions is small as compared to other variabilities.

  • I see that your comparison is 1994-2007 and it appears to be a mean across that time period. So I will select just those years and compute a mean and then add time bounds across those years?

Yes, the Gruber data spans only the period of 1994-2007. To be consistent, I extracted the model output for the same period.

  • What did you do with depth? Is it the surface? Or is it integrated to a depth?

I integrated the DIC in the vertical: sum(dic*(layer thickness)) for the first 3000 m.

umol m-3 is the DIC concentration, multiplied by layer thickness will give the unit umol m-2.

Best Weiwei

— Reply to this email directly, view it on GitHub https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1581080297__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!KJZVJ5C-5JWI6rjQFbVZlfx1-h73lPjWAH_JVYm37s2Os90ug2uin8vMI4UpsLjxSd_3SdUxgJ5nOZj9x4On4rHw$, or unsubscribe https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWKOTVS5LITEB5YDQALXKCN6BANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!KJZVJ5C-5JWI6rjQFbVZlfx1-h73lPjWAH_JVYm37s2Os90ug2uin8vMI4UpsLjxSd_3SdUxgJ5nOZj9x-IkE-cO$ . You are receiving this because you were mentioned.Message ID: @.***>

nocollier commented 1 year ago

So, I am unable to sort out what I am doing wrong. Take a look at my code and see if you can find a mistake. I get the same pattern as your result here but the values are off by ~300. See this plot: OCIM_nate

Let's try to have a chat about it today if a simple error doesn't strike you?

weiweifu commented 1 year ago

Hi Nate

There must be some unit problems. The code looks correct to me. I think we can try the OCIM data. For the OCIM, Cant is simply calculated as DIC_2007-DIC_1994. I was wondering if the sum of (DIC*layer_depths) from OCIM gives the right values.

Best Weiwei

On Tue, Jun 13, 2023 at 8:52 AM nocollier @.***> wrote:

So, I am unable to sort out what I am doing wrong. Take a look at my code https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/blob/main/OCIM/convert.py__;!!CzAuKJ42GuquVTTmVmPViYEvSg!I3PQ8PJTUViqzn6KbIe9eHQQNggkQe1pUlWwPJpoqc6Ilip4iKd6nM9o5QRTCGqWPix1GiJyD_bbUb-WQa63JU4V$ and see if you can find a mistake. I get the same pattern as your result here https://urldefense.com/v3/__https://www.ilamb.org/CMIP5v6/IOMB_AR6/Carbon/AnthropogenicDIC1994-2007/OCIM/OCIM.html__;!!CzAuKJ42GuquVTTmVmPViYEvSg!I3PQ8PJTUViqzn6KbIe9eHQQNggkQe1pUlWwPJpoqc6Ilip4iKd6nM9o5QRTCGqWPix1GiJyD_bbUb-WQd0ib13i$ but the values are off by ~300. See this plot: [image: OCIM_nate] https://urldefense.com/v3/__https://user-images.githubusercontent.com/1331463/245532813-394e6705-a546-4623-b00f-f4ab6343ca60.png__;!!CzAuKJ42GuquVTTmVmPViYEvSg!I3PQ8PJTUViqzn6KbIe9eHQQNggkQe1pUlWwPJpoqc6Ilip4iKd6nM9o5QRTCGqWPix1GiJyD_bbUb-WQQYBRr1x$

Let's try to have a chat about it today if a simple error doesn't strike you?

— Reply to this email directly, view it on GitHub https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1589587146__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!I3PQ8PJTUViqzn6KbIe9eHQQNggkQe1pUlWwPJpoqc6Ilip4iKd6nM9o5QRTCGqWPix1GiJyD_bbUb-WQXHivsD4$, or unsubscribe https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWOM7PRGMU64PXL2J3LXLCECFANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!I3PQ8PJTUViqzn6KbIe9eHQQNggkQe1pUlWwPJpoqc6Ilip4iKd6nM9o5QRTCGqWPix1GiJyD_bbUb-WQSJ-25U-$ . You are receiving this because you were mentioned.Message ID: @.***>

nocollier commented 1 year ago

I am open to a units issue, but where is the problem? As far as I know I have performed the unit translations correctly.

Maybe I have defined Cant incorrectly? I am computing a time series by subtracting the pre-industrial data from the industrial and then computing a mean of that series from 1994-1997:

int( dicind - dicpre, 1994, 2007 ) / 14 years

What you typed there at the end suggests to me that I should be defining Cant as:

int( dicind - dicind[1994], 1994, 2007 ) / 14

Remember that I am ocean ignorant :D

weiweifu commented 1 year ago

hi Nate it’s cumulative carbon, no need to be divided by 14.

best weiwei

Best Weiwei


From: nocollier @.> Sent: Tuesday, June 13, 2023 11:09:09 AM To: rubisco-sfa/IOMB-Data @.> Cc: Weiwei Fu @.>; Mention @.> Subject: Re: [rubisco-sfa/IOMB-Data] Add OCIM and Gruber (Issue #4)

I am open to a units issue, but where is the problem? As far as I know I have performed the unit translations correctly.

Maybe I have defined Cant incorrectly? I am computing a time series by subtracting the pre-industrial data from the industrial and then computing a mean of that series from 1994-1997:

int( dicind - dicpre, 1994, 2007 ) / 14 years

What you typed there at the end suggests to me that I should be defining Cant as:

int( dicind - dicind[1994], 1994, 2007 ) / 14

Remember that I am ocean ignorant :D

— Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1589799880__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!OVQ4wvudJQNPoJbOJ_YRf_cgUk322AwjkH7fwJdX4u0im2hU0pWtCMP6niwhmtF32VJwoN2v5t8qR2B1cj1lLF4Z$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWNP27CDANEZRLNCALLXLCUELANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!OVQ4wvudJQNPoJbOJ_YRf_cgUk322AwjkH7fwJdX4u0im2hU0pWtCMP6niwhmtF32VJwoN2v5t8qR2B1cmTORKQv$. You are receiving this because you were mentioned.Message ID: @.***>

nocollier commented 1 year ago

It is still wrong,

OCIM_nate

Can you please, as we discussed, send your conversion scripts or write out precisely what you did? I do not have time to keep guessing what you did and I want to get this finished.

weiweifu commented 1 year ago

Hi Nate

I found my script written years ago (pasted below). It is a little messy. I highlighted 2 two lines to compute vertical integrated carbon (unit: mol/m2). We can jump on a zoom meeting if it is still wrong. I had several meetings yesterday, but today is ok.

Best Weiwei

def plotz(ocim=None,ogru=None,dich=None,dicp=None,cmip=6,wrt=None,smth=None,r_0=None): regs=['sGLB','sATL','sIND','sPAC','sSO'] if cmip == 6:

tL={'1994s':slice(14,28),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)} else: # tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)} cols = mycols() dicinv = {}

dich = collections.OrderedDict(sorted(dich.items())) plt.close('all')

fig, ax = plt.subplots(nrows=1,ncols=3,figsize=(8,3))

fig, ax = plt.subplots(nrows=1,ncols=len(regs),figsize=(13,3.5)) fig.tight_layout()

cnt = 0 sf = 1 sl = -1 tupleA = () for k,v in dich.items(): dicinv[k] = []

if 'cm' in k:

print('now model ',k)
if v['info'][5] == 'gr':
  # dic = np.roll(v['dissic'],180,axis=-1)*1e3
  dic =

(v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

else:
  dic =

(v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

sdep = v['lev_bnds'][:,1] - v['lev_bnds'][:,0]
# find the index for 3000 m
i3000 = np.argmin(abs(v['lev']-3000))
print('level ',i3000,' at the depth of ',v['lev'][i3000])
d1 = slice(0,i3000+1) # cmip 0-3000m
# tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e3*12/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e312/1e15 tmp2d = (dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e312/1e15 tmp2d0 = (dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e3*12/1e15 print(k+' total anthro carbon is ',tmp2d-tmp2d0) dicinv[k].append(tmp2d-tmp2d0)

tmp2e =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3 tmp2e0 = (dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3 if smth is None: dif = tmp2e - tmp2e0 else: dif = smth9(tmp2e - tmp2e0,sigma_y=2,sigma_x=2) if wrt is not None: if r_0 is None: iomb_dif = dif else: print('Caution: negative values are replaced') iomb_dif = np.where(dif<0,0.0,dif) if cmip == 6: outf = '/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/'+k+'/'+'cantinv'+k+'.nc' else: outf = '/DFS-L/SCRATCH/moore/weiweif/IOMB_CMIP5/MODELS/'+k+'/'+'cantinv'+k+'.nc' tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],iomb_dif) else: iomb_dif = 0 tupleA = tupleA + (iomb_dif,)

for l,w in enumerate(regs):
  print('now in '+w+' index '+str(l))
  cols = mycols()
  if w == 'sGLB':
    tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2))
    tmp0 = (dic[0,...]).mean(axis=(1,2))
  else:
    tmp = ((dic[sl:,...].mean(axis=0))*ocim[w]).mean(axis=(1,2))
    tmp0 = (dic[0,...]*ocim[w]).mean(axis=(1,2))
    tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15 tmp2d0 = (dic[0:sf,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15 dicinv[k].append(tmp2d-tmp2d0) ax[l].plot(tmp-tmp0,-1*v['lev'],color=cols[cnt],label=k)

ax[l].set_ylim(ylim[::-1])

cnt = cnt + 1

enxy = np.ma.stack(tupleA,axis=0) if wrt is not None: outf = '/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/meanCMIP'+str(cmip)+'/'+'cant_inv_meanCMIP.nc' tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],enxy.mean(axis=0)) print('get ocim dic') dicinv['obs_OCIM'] = []

ocim starts from 1780. 1980 corresponds to 200 1994: 214: 2007:227

if cmip == 6: dic = ocim['dicind'][214:228,...] #1994-2007 else:

dic = ocim['dicind'][214:226,...] #1994-2005

dic = ocim['dicind'][214:228,...] #1994-2007

sdep = ocim['sdep'][:,0,0] tmp2d = (dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15 tmp2d0 = (dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 = 0

tmp2d0 =

(dic[0:2:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]).sum()/1e3*12/1e15 print('OCIM total anthro carbon is ',tmp2d-tmp2d0) dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

tmp2e = (dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3 tmp2e0 = (dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3 print(tmp2e.shape) if wrt is not None: fname = 'cant_inv_OCIM.nc' if os.path.isfile(fname) is False:

tonc_inv('cant_inv_OCIM.nc',ocim['slat'][:,0],ocim['slon'][0,:],tmp2e-tmp2e0) for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2)) tmp0 = (dic[0,...]).mean(axis=(1,2)) else: tmp = ((dic[sl:,...].mean(axis=0))ocim[w]).mean(axis=(1,2)) tmp0 = (dic[0,...]ocim[w]).mean(axis=(1,2)) tmp2d = (dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15 tmp2d0 = (dic[0:sf,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 = 0

  # tmp2d0 =

(dic[0:2,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15 dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

ax[l].plot(tmp-tmp0,-1ocim['slev'][:,0,0],label='OCIM',linewidth=2,color='k') print('get gruber dic') dicinv['obs_Gruber']=[33.7,7.1,13.2,11.9] if wrt is not None: fname = 'cant_inv_Gruber.nc' if os.path.isfile(fname) is False: tonc_inv(fname,ocim['slat'][:,0],ocim['slon'][0,:],ogru['dicinv']) dic = ogru['dissic'] for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = dic.mean(axis=(1,2)) else: tmp = (dicocim[w]).mean(axis=(1,2)) ax[l].plot(tmp,-1*ogru['lev'],label='Gruber et al 2019',linewidth=2,color='k',linestyle='--') for i in range(0,len(regs)): ax[i].set_ylim([-5000,0]) ax[i].set_xlim([-1,15]) ax[i].title.set_text(regs[i][1:]) ax[3].legend(loc=0) plt.show(block=False)

return fig,dicinv,enxy

On Wed, Jun 14, 2023 at 7:46 AM nocollier @.***> wrote:

It is still wrong,

[image: OCIM_nate] https://urldefense.com/v3/__https://user-images.githubusercontent.com/1331463/245831026-99ff8b99-a69e-4155-a7b1-bc6aa8bb9d5e.png__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhilKsb5q$

Can you please, as we discussed, send your conversion scripts or write out precisely what you did? I do not have time to keep guessing what you did and I want to get this finished.

— Reply to this email directly, view it on GitHub https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591372983__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhm2rMxai$, or unsubscribe https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWJLWIXNV77GFJAC3YLXLHFEXANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhjMUnESa$ . You are receiving this because you were mentioned.Message ID: @.***>

nocollier commented 1 year ago

Many thanks, if you can email me that file instead it would be great. The paste messed up the formatting and I would rather not fix it.

Thanks, Nate

On Wed, Jun 14, 2023 at 12:20 PM Weiwei Fu @.***> wrote:

Hi Nate

I found my script written years ago (pasted below). It is a little messy. I highlighted 2 two lines to compute vertical integrated carbon (unit: mol/m2). We can jump on a zoom meeting if it is still wrong. I had several meetings yesterday, but today is ok.

Best Weiwei

def plotz(ocim=None,ogru=None,dich=None,dicp=None,cmip=6,wrt=None,smth=None,r_0=None):

regs=['sGLB','sATL','sIND','sPAC','sSO'] if cmip == 6:

tL={'1994s':slice(14,28),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

else: # tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

cols = mycols() dicinv = {}

dich = collections.OrderedDict(sorted(dich.items())) plt.close('all')

fig, ax = plt.subplots(nrows=1,ncols=3,figsize=(8,3))

fig, ax = plt.subplots(nrows=1,ncols=len(regs),figsize=(13,3.5)) fig.tight_layout()

cnt = 0 sf = 1 sl = -1 tupleA = () for k,v in dich.items(): dicinv[k] = []

if 'cm' in k:

print('now model ',k) if v['info'][5] == 'gr':

dic = np.roll(v['dissic'],180,axis=-1)*1e3

dic = (v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

else: dic = (v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

sdep = v['lev_bnds'][:,1] - v['lev_bnds'][:,0]

find the index for 3000 m

i3000 = np.argmin(abs(v['lev']-3000)) print('level ',i3000,' at the depth of ',v['lev'][i3000]) d1 = slice(0,i3000+1) # cmip 0-3000m

tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e3*12/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e3*12/1e15

tmp2d = (dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 = (dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

print(k+' total anthro carbon is ',tmp2d-tmp2d0) dicinv[k].append(tmp2d-tmp2d0)

tmp2e = (dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3 tmp2e0 = (dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3

if smth is None: dif = tmp2e - tmp2e0 else: dif = smth9(tmp2e - tmp2e0,sigma_y=2,sigma_x=2) if wrt is not None: if r_0 is None: iomb_dif = dif else: print('Caution: negative values are replaced') iomb_dif = np.where(dif<0,0.0,dif) if cmip == 6: outf = '/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/'+k+'/'+'cantinv'+k+'.nc' else: outf = '/DFS-L/SCRATCH/moore/weiweif/IOMB_CMIP5/MODELS/'+k+'/'+'cantinv'+k+'.nc'

tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],iomb_dif) else: iomb_dif = 0 tupleA = tupleA + (iomb_dif,)

for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) cols = mycols() if w == 'sGLB': tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2)) tmp0 = (dic[0,...]).mean(axis=(1,2)) else: tmp = ((dic[sl:,...].mean(axis=0))ocim[w]).mean(axis=(1,2)) tmp0 = (dic[0,...]ocim[w]).mean(axis=(1,2)) tmp2d = (dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 = (dic[0:sf,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15

dicinv[k].append(tmp2d-tmp2d0) ax[l].plot(tmp-tmp0,-1*v['lev'],color=cols[cnt],label=k)

ax[l].set_ylim(ylim[::-1])

cnt = cnt + 1

enxy = np.ma.stack(tupleA,axis=0) if wrt is not None: outf = '/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/meanCMIP'+str(cmip)+'/'+'cant_inv_meanCMIP.nc'

tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],enxy.mean(axis=0)) print('get ocim dic') dicinv['obs_OCIM'] = []

ocim starts from 1780. 1980 corresponds to 200 1994: 214: 2007:227

if cmip == 6: dic = ocim['dicind'][214:228,...] #1994-2007 else:

dic = ocim['dicind'][214:226,...] #1994-2005

dic = ocim['dicind'][214:228,...] #1994-2007 sdep = ocim['sdep'][:,0,0] tmp2d = (dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 = (dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 = 0

tmp2d0 =

(dic[0:2:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]).sum()/1e3*12/1e15

print('OCIM total anthro carbon is ',tmp2d-tmp2d0) dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

tmp2e = (dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3 tmp2e0 = (dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3

print(tmp2e.shape) if wrt is not None: fname = 'cant_inv_OCIM.nc' if os.path.isfile(fname) is False:

tonc_inv('cant_inv_OCIM.nc',ocim['slat'][:,0],ocim['slon'][0,:],tmp2e-tmp2e0)

for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2)) tmp0 = (dic[0,...]).mean(axis=(1,2)) else: tmp = ((dic[sl:,...].mean(axis=0))ocim[w]).mean(axis=(1,2)) tmp0 = (dic[0,...]ocim[w]).mean(axis=(1,2)) tmp2d = (dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 = (dic[0:sf,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 = 0

tmp2d0 =

(dic[0:2,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

ax[l].plot(tmp-tmp0,-1*ocim['slev'][:,0,0],label='OCIM',linewidth=2,color='k')

print('get gruber dic') dicinv['obs_Gruber']=[33.7,7.1,13.2,11.9] if wrt is not None: fname = 'cant_inv_Gruber.nc' if os.path.isfile(fname) is False: tonc_inv(fname,ocim['slat'][:,0],ocim['slon'][0,:],ogru['dicinv']) dic = ogru['dissic'] for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = dic.mean(axis=(1,2)) else: tmp = (dicocim[w]).mean(axis=(1,2)) ax[l].plot(tmp,-1ogru['lev'],label='Gruber et al 2019',linewidth=2,color='k',linestyle='--') for i in range(0,len(regs)): ax[i].set_ylim([-5000,0]) ax[i].set_xlim([-1,15]) ax[i].title.set_text(regs[i][1:]) ax[3].legend(loc=0) plt.show(block=False)

return fig,dicinv,enxy

On Wed, Jun 14, 2023 at 7:46 AM nocollier @.***> wrote:

It is still wrong,

[image: OCIM_nate] < https://urldefense.com/v3/__https://user-images.githubusercontent.com/1331463/245831026-99ff8b99-a69e-4155-a7b1-bc6aa8bb9d5e.png__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhilKsb5q$>

Can you please, as we discussed, send your conversion scripts or write out precisely what you did? I do not have time to keep guessing what you did and I want to get this finished.

— Reply to this email directly, view it on GitHub < https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591372983__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhm2rMxai$>,

or unsubscribe < https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWJLWIXNV77GFJAC3YLXLHFEXANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhjMUnESa$>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/rubisco-sfa/IOMB-Data/issues/4#issuecomment-1591592366, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKFCB5KTMFDIFUIBY2HFMLXLHQDTANCNFSM6AAAAAAY4QTFLU . You are receiving this because you authored the thread.Message ID: @.***>

weiweifu commented 1 year ago

I copied the script to a file.

On Wed, Jun 14, 2023 at 9:30 AM nocollier @.***> wrote:

Many thanks, if you can email me that file instead it would be great. The paste messed up the formatting and I would rather not fix it.

Thanks, Nate

On Wed, Jun 14, 2023 at 12:20 PM Weiwei Fu @.***> wrote:

Hi Nate

I found my script written years ago (pasted below). It is a little messy. I highlighted 2 two lines to compute vertical integrated carbon (unit: mol/m2). We can jump on a zoom meeting if it is still wrong. I had several meetings yesterday, but today is ok.

Best Weiwei

def

plotz(ocim=None,ogru=None,dich=None,dicp=None,cmip=6,wrt=None,smth=None,r_0=None):

regs=['sGLB','sATL','sIND','sPAC','sSO'] if cmip == 6:

tL={'1994s':slice(14,28),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

else: #

tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

cols = mycols() dicinv = {}

dich = collections.OrderedDict(sorted(dich.items())) plt.close('all')

fig, ax = plt.subplots(nrows=1,ncols=3,figsize=(8,3))

fig, ax = plt.subplots(nrows=1,ncols=len(regs),figsize=(13,3.5)) fig.tight_layout()

cnt = 0 sf = 1 sl = -1 tupleA = () for k,v in dich.items(): dicinv[k] = []

if 'cm' in k:

print('now model ',k) if v['info'][5] == 'gr':

dic = np.roll(v['dissic'],180,axis=-1)*1e3

dic =

(v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

else: dic =

(v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

sdep = v['lev_bnds'][:,1] - v['lev_bnds'][:,0]

find the index for 3000 m

i3000 = np.argmin(abs(v['lev']-3000)) print('level ',i3000,' at the depth of ',v['lev'][i3000]) d1 = slice(0,i3000+1) # cmip 0-3000m

tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e3*12/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e3*12/1e15

tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

print(k+' total anthro carbon is ',tmp2d-tmp2d0) dicinv[k].append(tmp2d-tmp2d0)

tmp2e =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3 tmp2e0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3

if smth is None: dif = tmp2e - tmp2e0 else: dif = smth9(tmp2e - tmp2e0,sigma_y=2,sigma_x=2) if wrt is not None: if r_0 is None: iomb_dif = dif else: print('Caution: negative values are replaced') iomb_dif = np.where(dif<0,0.0,dif) if cmip == 6: outf =

'/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/'+k+'/'+'cantinv'+k+'.nc' else: outf =

'/DFS-L/SCRATCH/moore/weiweif/IOMB_CMIP5/MODELS/'+k+'/'+'cantinv'+k+'.nc'

tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],iomb_dif) else: iomb_dif = 0 tupleA = tupleA + (iomb_dif,)

for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) cols = mycols() if w == 'sGLB': tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2)) tmp0 = (dic[0,...]).mean(axis=(1,2)) else: tmp = ((dic[sl:,...].mean(axis=0))ocim[w]).mean(axis=(1,2)) tmp0 = (dic[0,...]ocim[w]).mean(axis=(1,2)) tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15

dicinv[k].append(tmp2d-tmp2d0) ax[l].plot(tmp-tmp0,-1*v['lev'],color=cols[cnt],label=k)

ax[l].set_ylim(ylim[::-1])

cnt = cnt + 1

enxy = np.ma.stack(tupleA,axis=0) if wrt is not None: outf =

'/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/meanCMIP'+str(cmip)+'/'+'cant_inv_meanCMIP.nc'

tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],enxy.mean(axis=0)) print('get ocim dic') dicinv['obs_OCIM'] = []

ocim starts from 1780. 1980 corresponds to 200 1994: 214: 2007:227

if cmip == 6: dic = ocim['dicind'][214:228,...] #1994-2007 else:

dic = ocim['dicind'][214:226,...] #1994-2005

dic = ocim['dicind'][214:228,...] #1994-2007 sdep = ocim['sdep'][:,0,0] tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 = 0

tmp2d0 =

(dic[0:2:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]).sum()/1e3*12/1e15

print('OCIM total anthro carbon is ',tmp2d-tmp2d0) dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

*tmp2e =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3 tmp2e0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3*

print(tmp2e.shape) if wrt is not None: fname = 'cant_inv_OCIM.nc' if os.path.isfile(fname) is False:

tonc_inv('cant_inv_OCIM.nc',ocim['slat'][:,0],ocim['slon'][0,:],tmp2e-tmp2e0)

for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2)) tmp0 = (dic[0,...]).mean(axis=(1,2)) else: tmp = ((dic[sl:,...].mean(axis=0))ocim[w]).mean(axis=(1,2)) tmp0 = (dic[0,...]ocim[w]).mean(axis=(1,2)) tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 = 0

tmp2d0 =

(dic[0:2,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

ax[l].plot(tmp-tmp0,-1*ocim['slev'][:,0,0],label='OCIM',linewidth=2,color='k')

print('get gruber dic') dicinv['obs_Gruber']=[33.7,7.1,13.2,11.9] if wrt is not None: fname = 'cant_inv_Gruber.nc' if os.path.isfile(fname) is False: tonc_inv(fname,ocim['slat'][:,0],ocim['slon'][0,:],ogru['dicinv']) dic = ogru['dissic'] for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = dic.mean(axis=(1,2)) else: tmp = (dicocim[w]).mean(axis=(1,2)) ax[l].plot(tmp,-1ogru['lev'],label='Gruber et al 2019',linewidth=2,color='k',linestyle='--') for i in range(0,len(regs)): ax[i].set_ylim([-5000,0]) ax[i].set_xlim([-1,15]) ax[i].title.set_text(regs[i][1:]) ax[3].legend(loc=0) plt.show(block=False)

return fig,dicinv,enxy

On Wed, Jun 14, 2023 at 7:46 AM nocollier @.***> wrote:

It is still wrong,

[image: OCIM_nate] <

https://urldefense.com/v3/__https://user-images.githubusercontent.com/1331463/245831026-99ff8b99-a69e-4155-a7b1-bc6aa8bb9d5e.png__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhilKsb5q$%3E

Can you please, as we discussed, send your conversion scripts or write out precisely what you did? I do not have time to keep guessing what you did and I want to get this finished.

— Reply to this email directly, view it on GitHub <

https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591372983__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhm2rMxai$%3E,

or unsubscribe <

https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWJLWIXNV77GFJAC3YLXLHFEXANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhjMUnESa$%3E

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub < https://github.com/rubisco-sfa/IOMB-Data/issues/4#issuecomment-1591592366> https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591592366*3E__;IyU!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZXZYA_YH$,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AAKFCB5KTMFDIFUIBY2HFMLXLHQDTANCNFSM6AAAAAAY4QTFLU> https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AAKFCB5KTMFDIFUIBY2HFMLXLHQDTANCNFSM6AAAAAAY4QTFLU*3E__;JQ!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZfbm3PzD$ . You are receiving this because you authored the thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591609936__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZX5Gt9z9$, or unsubscribe https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWNAUBZX45WJ6A4VIMLXLHRKHANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZQt4PldI$ . You are receiving this because you were mentioned.Message ID: @.***>

nocollier commented 1 year ago

Yes, I see that. It has line breaks all over that I have to manually fix to look at your script. If you email me the file, then it is not broken. I should not have to fix your script when you can email the file without the line breaks. Thanks.

Nate

On Wed, Jun 14, 2023 at 12:41 PM Weiwei Fu @.***> wrote:

I copied the script to a file.

On Wed, Jun 14, 2023 at 9:30 AM nocollier @.***> wrote:

Many thanks, if you can email me that file instead it would be great. The paste messed up the formatting and I would rather not fix it.

Thanks, Nate

On Wed, Jun 14, 2023 at 12:20 PM Weiwei Fu @.***> wrote:

Hi Nate

I found my script written years ago (pasted below). It is a little messy. I highlighted 2 two lines to compute vertical integrated carbon (unit: mol/m2). We can jump on a zoom meeting if it is still wrong. I had several meetings yesterday, but today is ok.

Best Weiwei

def

plotz(ocim=None,ogru=None,dich=None,dicp=None,cmip=6,wrt=None,smth=None,r_0=None):

regs=['sGLB','sATL','sIND','sPAC','sSO'] if cmip == 6:

tL={'1994s':slice(14,28),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

else: #

tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

cols = mycols() dicinv = {}

dich = collections.OrderedDict(sorted(dich.items())) plt.close('all')

fig, ax = plt.subplots(nrows=1,ncols=3,figsize=(8,3))

fig, ax = plt.subplots(nrows=1,ncols=len(regs),figsize=(13,3.5)) fig.tight_layout()

cnt = 0 sf = 1 sl = -1 tupleA = () for k,v in dich.items(): dicinv[k] = []

if 'cm' in k:

print('now model ',k) if v['info'][5] == 'gr':

dic = np.roll(v['dissic'],180,axis=-1)*1e3

dic =

(v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

else: dic =

(v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

sdep = v['lev_bnds'][:,1] - v['lev_bnds'][:,0]

find the index for 3000 m

i3000 = np.argmin(abs(v['lev']-3000)) print('level ',i3000,' at the depth of ',v['lev'][i3000]) d1 = slice(0,i3000+1) # cmip 0-3000m

tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e3*12/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e3*12/1e15

tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

print(k+' total anthro carbon is ',tmp2d-tmp2d0) dicinv[k].append(tmp2d-tmp2d0)

tmp2e =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3

tmp2e0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3

if smth is None: dif = tmp2e - tmp2e0 else: dif = smth9(tmp2e - tmp2e0,sigma_y=2,sigma_x=2) if wrt is not None: if r_0 is None: iomb_dif = dif else: print('Caution: negative values are replaced') iomb_dif = np.where(dif<0,0.0,dif) if cmip == 6: outf =

'/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/'+k+'/'+'cantinv'+k+'.nc'

else: outf =

'/DFS-L/SCRATCH/moore/weiweif/IOMB_CMIP5/MODELS/'+k+'/'+'cantinv'+k+'.nc'

tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],iomb_dif) else: iomb_dif = 0 tupleA = tupleA + (iomb_dif,)

for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) cols = mycols() if w == 'sGLB': tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2)) tmp0 = (dic[0,...]).mean(axis=(1,2)) else: tmp = ((dic[sl:,...].mean(axis=0))ocim[w]).mean(axis=(1,2)) tmp0 = (dic[0,...]ocim[w]).mean(axis=(1,2)) tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15

dicinv[k].append(tmp2d-tmp2d0) ax[l].plot(tmp-tmp0,-1*v['lev'],color=cols[cnt],label=k)

ax[l].set_ylim(ylim[::-1])

cnt = cnt + 1

enxy = np.ma.stack(tupleA,axis=0) if wrt is not None: outf =

'/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/meanCMIP'+str(cmip)+'/'+'cant_inv_meanCMIP.nc'

tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],enxy.mean(axis=0)) print('get ocim dic') dicinv['obs_OCIM'] = []

ocim starts from 1780. 1980 corresponds to 200 1994: 214: 2007:227

if cmip == 6: dic = ocim['dicind'][214:228,...] #1994-2007 else:

dic = ocim['dicind'][214:226,...] #1994-2005

dic = ocim['dicind'][214:228,...] #1994-2007 sdep = ocim['sdep'][:,0,0] tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 = 0

tmp2d0 =

(dic[0:2:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]).sum()/1e3*12/1e15

print('OCIM total anthro carbon is ',tmp2d-tmp2d0) dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

*tmp2e =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3

tmp2e0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3*

print(tmp2e.shape) if wrt is not None: fname = 'cant_inv_OCIM.nc' if os.path.isfile(fname) is False:

tonc_inv('cant_inv_OCIM.nc',ocim['slat'][:,0],ocim['slon'][0,:],tmp2e-tmp2e0)

for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2)) tmp0 = (dic[0,...]).mean(axis=(1,2)) else: tmp = ((dic[sl:,...].mean(axis=0))ocim[w]).mean(axis=(1,2)) tmp0 = (dic[0,...]ocim[w]).mean(axis=(1,2)) tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 = 0

tmp2d0 =

(dic[0:2,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

ax[l].plot(tmp-tmp0,-1*ocim['slev'][:,0,0],label='OCIM',linewidth=2,color='k')

print('get gruber dic') dicinv['obs_Gruber']=[33.7,7.1,13.2,11.9] if wrt is not None: fname = 'cant_inv_Gruber.nc' if os.path.isfile(fname) is False: tonc_inv(fname,ocim['slat'][:,0],ocim['slon'][0,:],ogru['dicinv']) dic = ogru['dissic'] for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = dic.mean(axis=(1,2)) else: tmp = (dicocim[w]).mean(axis=(1,2)) ax[l].plot(tmp,-1ogru['lev'],label='Gruber et al 2019',linewidth=2,color='k',linestyle='--') for i in range(0,len(regs)): ax[i].set_ylim([-5000,0]) ax[i].set_xlim([-1,15]) ax[i].title.set_text(regs[i][1:]) ax[3].legend(loc=0) plt.show(block=False)

return fig,dicinv,enxy

On Wed, Jun 14, 2023 at 7:46 AM nocollier @.***> wrote:

It is still wrong,

[image: OCIM_nate] <

https://urldefense.com/v3/__https://user-images.githubusercontent.com/1331463/245831026-99ff8b99-a69e-4155-a7b1-bc6aa8bb9d5e.png__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhilKsb5q$%3E

Can you please, as we discussed, send your conversion scripts or write out precisely what you did? I do not have time to keep guessing what you did and I want to get this finished.

— Reply to this email directly, view it on GitHub <

https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591372983__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhm2rMxai$%3E,

or unsubscribe <

https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWJLWIXNV77GFJAC3YLXLHFEXANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhjMUnESa$%3E

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub <

https://github.com/rubisco-sfa/IOMB-Data/issues/4#issuecomment-1591592366>

< https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591592366*3E__;IyU!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZXZYA_YH$>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AAKFCB5KTMFDIFUIBY2HFMLXLHQDTANCNFSM6AAAAAAY4QTFLU>

< https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AAKFCB5KTMFDIFUIBY2HFMLXLHQDTANCNFSM6AAAAAAY4QTFLU*3E__;JQ!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZfbm3PzD$>

. You are receiving this because you authored the thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub < https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591609936__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZX5Gt9z9$>,

or unsubscribe < https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWNAUBZX45WJ6A4VIMLXLHRKHANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZQt4PldI$>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/rubisco-sfa/IOMB-Data/issues/4#issuecomment-1591630196, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKFCB5D3FKXXMB47ZZUOX3XLHSVBANCNFSM6AAAAAAY4QTFLU . You are receiving this because you authored the thread.Message ID: @.***>

weiweifu commented 1 year ago

Hi Nate

It is the original file. Both this file and the file I sent look ok from my end. In case you still see line breaks in this one, I copied it to github https://github.com/weiweifu/IOMB_dTdZ/blob/master/plotz230614

Best Weiwei

On Wed, Jun 14, 2023 at 10:26 AM nocollier @.***> wrote:

Yes, I see that. It has line breaks all over that I have to manually fix to look at your script. If you email me the file, then it is not broken. I should not have to fix your script when you can email the file without the line breaks. Thanks.

Nate

On Wed, Jun 14, 2023 at 12:41 PM Weiwei Fu @.***> wrote:

I copied the script to a file.

On Wed, Jun 14, 2023 at 9:30 AM nocollier @.***> wrote:

Many thanks, if you can email me that file instead it would be great. The paste messed up the formatting and I would rather not fix it.

Thanks, Nate

On Wed, Jun 14, 2023 at 12:20 PM Weiwei Fu @.***> wrote:

Hi Nate

I found my script written years ago (pasted below). It is a little messy. I highlighted 2 two lines to compute vertical integrated carbon (unit: mol/m2). We can jump on a zoom meeting if it is still wrong. I had several meetings yesterday, but today is ok.

Best Weiwei

def

plotz(ocim=None,ogru=None,dich=None,dicp=None,cmip=6,wrt=None,smth=None,r_0=None):

regs=['sGLB','sATL','sIND','sPAC','sSO'] if cmip == 6:

tL={'1994s':slice(14,28),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

else: #

tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

tL={'1994s':slice(14,26),'1980s':slice(0,10),'1990s':slice(10,20),'2000s':slice(20,30)}

cols = mycols() dicinv = {}

dich = collections.OrderedDict(sorted(dich.items())) plt.close('all')

fig, ax = plt.subplots(nrows=1,ncols=3,figsize=(8,3))

fig, ax = plt.subplots(nrows=1,ncols=len(regs),figsize=(13,3.5)) fig.tight_layout()

cnt = 0 sf = 1 sl = -1 tupleA = () for k,v in dich.items(): dicinv[k] = []

if 'cm' in k:

print('now model ',k) if v['info'][5] == 'gr':

dic = np.roll(v['dissic'],180,axis=-1)*1e3

dic =

(v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

else: dic =

(v[v['info'][0]][tL['1994s']]-dicp[k][dicp[k]['info'][0]][tL['1994s']])*1e3

to mmol/m3

sdep = v['lev_bnds'][:,1] - v['lev_bnds'][:,0]

find the index for 3000 m

i3000 = np.argmin(abs(v['lev']-3000)) print('level ',i3000,' at the depth of ',v['lev'][i3000]) d1 = slice(0,i3000+1) # cmip 0-3000m

tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e3*12/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]).sum()/1e3*12/1e15

tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

print(k+' total anthro carbon is ',tmp2d-tmp2d0) dicinv[k].append(tmp2d-tmp2d0)

tmp2e =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3

tmp2e0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3

if smth is None: dif = tmp2e - tmp2e0 else: dif = smth9(tmp2e - tmp2e0,sigma_y=2,sigma_x=2) if wrt is not None: if r_0 is None: iomb_dif = dif else: print('Caution: negative values are replaced') iomb_dif = np.where(dif<0,0.0,dif) if cmip == 6: outf =

'/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/'+k+'/'+'cantinv'+k+'.nc'

else: outf =

'/DFS-L/SCRATCH/moore/weiweif/IOMB_CMIP5/MODELS/'+k+'/'+'cantinv'+k+'.nc'

tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],iomb_dif) else: iomb_dif = 0 tupleA = tupleA + (iomb_dif,)

for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) cols = mycols() if w == 'sGLB': tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2)) tmp0 = (dic[0,...]).mean(axis=(1,2)) else: tmp = ((dic[sl:,...].mean(axis=0))ocim[w]).mean(axis=(1,2)) tmp0 = (dic[0,...]ocim[w]).mean(axis=(1,2)) tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf,...].mean(axis=0)sdep[:,None,None]v['area'][None,:,:]ocim[w]).sum()/1e312/1e15

dicinv[k].append(tmp2d-tmp2d0) ax[l].plot(tmp-tmp0,-1*v['lev'],color=cols[cnt],label=k)

ax[l].set_ylim(ylim[::-1])

cnt = cnt + 1

enxy = np.ma.stack(tupleA,axis=0) if wrt is not None: outf =

'/DFS-L/SCRATCH/moore/weiweif/IOMB_data/MODELS/meanCMIP'+str(cmip)+'/'+'cant_inv_meanCMIP.nc'

tonc_inv(outf,ocim['slat'][:,0],ocim['slon'][0,:],enxy.mean(axis=0)) print('get ocim dic') dicinv['obs_OCIM'] = []

ocim starts from 1780. 1980 corresponds to 200 1994: 214: 2007:227

if cmip == 6: dic = ocim['dicind'][214:228,...] #1994-2007 else:

dic = ocim['dicind'][214:226,...] #1994-2005

dic = ocim['dicind'][214:228,...] #1994-2007 sdep = ocim['sdep'][:,0,0] tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim['sGLB']).sum()/1e312/1e15

tmp2d0 = 0

tmp2d0 =

(dic[0:2:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]).sum()/1e3*12/1e15

print('OCIM total anthro carbon is ',tmp2d-tmp2d0) dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

*tmp2e =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3

tmp2e0 =

(dic[0:sf:,...].mean(axis=0)sdep[:,None,None]ocim['sGLB']).sum(axis=0)/1e3*

print(tmp2e.shape) if wrt is not None: fname = 'cant_inv_OCIM.nc' if os.path.isfile(fname) is False:

tonc_inv('cant_inv_OCIM.nc',ocim['slat'][:,0],ocim['slon'][0,:],tmp2e-tmp2e0)

for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = ((dic[sl:,...].mean(axis=0))).mean(axis=(1,2)) tmp0 = (dic[0,...]).mean(axis=(1,2)) else: tmp = ((dic[sl:,...].mean(axis=0))ocim[w]).mean(axis=(1,2)) tmp0 = (dic[0,...]ocim[w]).mean(axis=(1,2)) tmp2d =

(dic[sl:,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 =

(dic[0:sf,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d =

((dic[-1,...]-dic[0,...])sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

tmp2d0 = 0

tmp2d0 =

(dic[0:2,...].mean(axis=0)sdep[:,None,None]ocim['sarea'][None,:,:]ocim[w]).sum()/1e312/1e15

dicinv['obs_OCIM'].append(tmp2d-tmp2d0)

ax[l].plot(tmp-tmp0,-1*ocim['slev'][:,0,0],label='OCIM',linewidth=2,color='k')

print('get gruber dic') dicinv['obs_Gruber']=[33.7,7.1,13.2,11.9] if wrt is not None: fname = 'cant_inv_Gruber.nc' if os.path.isfile(fname) is False: tonc_inv(fname,ocim['slat'][:,0],ocim['slon'][0,:],ogru['dicinv']) dic = ogru['dissic'] for l,w in enumerate(regs): print('now in '+w+' index '+str(l)) if w == 'sGLB': tmp = dic.mean(axis=(1,2)) else: tmp = (dicocim[w]).mean(axis=(1,2)) ax[l].plot(tmp,-1ogru['lev'],label='Gruber et al 2019',linewidth=2,color='k',linestyle='--') for i in range(0,len(regs)): ax[i].set_ylim([-5000,0]) ax[i].set_xlim([-1,15]) ax[i].title.set_text(regs[i][1:]) ax[3].legend(loc=0) plt.show(block=False)

return fig,dicinv,enxy

On Wed, Jun 14, 2023 at 7:46 AM nocollier @.***> wrote:

It is still wrong,

[image: OCIM_nate] <

https://urldefense.com/v3/__https://user-images.githubusercontent.com/1331463/245831026-99ff8b99-a69e-4155-a7b1-bc6aa8bb9d5e.png__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhilKsb5q$%3E

Can you please, as we discussed, send your conversion scripts or write out precisely what you did? I do not have time to keep guessing what you did and I want to get this finished.

— Reply to this email directly, view it on GitHub <

https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591372983__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhm2rMxai$%3E,

or unsubscribe <

https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWJLWIXNV77GFJAC3YLXLHFEXANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!JCLz6qbx7YJYSQdW-z4FcxUWcRQ_79zqqoVioQMj60djvhNln25YFEjREvnjwgTqMx2cA7XGLuFDYIykhjMUnESa$%3E

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub <

https://github.com/rubisco-sfa/IOMB-Data/issues/4#issuecomment-1591592366> https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591592366*3E__;IyU!!CzAuKJ42GuquVTTmVmPViYEvSg!N9TGtA_qnTxYni2CoxNCQjKXfRANJlAEEsdkN-woNB9UVbfUy_BxTXCSvlDdxJGRMSMFHrq4Ae67kKjU7fHnNkiD$

<

https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591592366*3E__;IyU!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZXZYA_YH$%3E,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AAKFCB5KTMFDIFUIBY2HFMLXLHQDTANCNFSM6AAAAAAY4QTFLU> https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AAKFCB5KTMFDIFUIBY2HFMLXLHQDTANCNFSM6AAAAAAY4QTFLU*3E__;JQ!!CzAuKJ42GuquVTTmVmPViYEvSg!N9TGtA_qnTxYni2CoxNCQjKXfRANJlAEEsdkN-woNB9UVbfUy_BxTXCSvlDdxJGRMSMFHrq4Ae67kKjU7cOmPQNv$

<

https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AAKFCB5KTMFDIFUIBY2HFMLXLHQDTANCNFSM6AAAAAAY4QTFLU*3E__;JQ!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZfbm3PzD$%3E

. You are receiving this because you authored the thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub <

https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591609936__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZX5Gt9z9$%3E,

or unsubscribe <

https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWNAUBZX45WJ6A4VIMLXLHRKHANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!MypS6meNIsgP0FFS4vIRZEKpmes_sQsWx--pQhPsqoIBDXD-KwtlDf1dftavxeJ_yHA-jOlMMO3LH0rlZQt4PldI$%3E

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub < https://github.com/rubisco-sfa/IOMB-Data/issues/4#issuecomment-1591630196> https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591630196*3E__;IyU!!CzAuKJ42GuquVTTmVmPViYEvSg!N9TGtA_qnTxYni2CoxNCQjKXfRANJlAEEsdkN-woNB9UVbfUy_BxTXCSvlDdxJGRMSMFHrq4Ae67kKjU7SUMVqH8$,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AAKFCB5D3FKXXMB47ZZUOX3XLHSVBANCNFSM6AAAAAAY4QTFLU> https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AAKFCB5D3FKXXMB47ZZUOX3XLHSVBANCNFSM6AAAAAAY4QTFLU*3E__;JQ!!CzAuKJ42GuquVTTmVmPViYEvSg!N9TGtA_qnTxYni2CoxNCQjKXfRANJlAEEsdkN-woNB9UVbfUy_BxTXCSvlDdxJGRMSMFHrq4Ae67kKjU7QjHoCw7$ . You are receiving this because you authored the thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1591703801__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!N9TGtA_qnTxYni2CoxNCQjKXfRANJlAEEsdkN-woNB9UVbfUy_BxTXCSvlDdxJGRMSMFHrq4Ae67kKjU7ee18O92$, or unsubscribe https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWMMBT6UROSOQD7DX5DXLHX3NANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!N9TGtA_qnTxYni2CoxNCQjKXfRANJlAEEsdkN-woNB9UVbfUy_BxTXCSvlDdxJGRMSMFHrq4Ae67kKjU7TFwEtn3$ . You are receiving this because you were mentioned.Message ID: @.***>

nocollier commented 1 year ago

Weiwei, I am unable to sort out the differences in what I produce and what you have in the IOMB_AR6 results.

DeVries3b DeVries4

weiweifu commented 1 year ago

Hi Nate

Thank you! For OCIM, the preindustrial value is not important because OCIM tracks only the anthropogenic part. From the figure showing PgC, I think the data are interpreted correctly. The figure shows the typical curve of anthropogenic carbon accumulation in the ocean. Yes, I compute the anthropogenic carbon of OCIM in the same time/space range(0-3000,1994-2007) as in the Gruber paper.

Best Weiwei

On Thu, Jun 15, 2023 at 11:10 AM nocollier @.***> wrote:

Weiwei, I am unable to sort out the differences in what I produce and what you have in the IOMB_AR6 results.

[image: DeVries3b] https://urldefense.com/v3/__https://user-images.githubusercontent.com/1331463/246199180-0a7b304a-9ea8-44ec-93a6-603291c78fd2.png__;!!CzAuKJ42GuquVTTmVmPViYEvSg!J-Jg59fpWgVD-zWEUnUWKk0aQy8gjeuVBIAHUDkiiXDR5E2EctXvcfOGCi_LBJwx5T0WRavectmxarCdsiB-I6zc$ [image: DeVries4] https://urldefense.com/v3/__https://user-images.githubusercontent.com/1331463/246199181-62a70fa1-c3ba-44ef-87a3-6ea8b7c38bab.png__;!!CzAuKJ42GuquVTTmVmPViYEvSg!J-Jg59fpWgVD-zWEUnUWKk0aQy8gjeuVBIAHUDkiiXDR5E2EctXvcfOGCi_LBJwx5T0WRavectmxarCdsjIp9u7Q$

— Reply to this email directly, view it on GitHub https://urldefense.com/v3/__https://github.com/rubisco-sfa/IOMB-Data/issues/4*issuecomment-1593520829__;Iw!!CzAuKJ42GuquVTTmVmPViYEvSg!J-Jg59fpWgVD-zWEUnUWKk0aQy8gjeuVBIAHUDkiiXDR5E2EctXvcfOGCi_LBJwx5T0WRavectmxarCdsq9puPCp$, or unsubscribe https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AB27GWPKLNA3XCLYN37U3UTXLNF23ANCNFSM6AAAAAAY4QTFLU__;!!CzAuKJ42GuquVTTmVmPViYEvSg!J-Jg59fpWgVD-zWEUnUWKk0aQy8gjeuVBIAHUDkiiXDR5E2EctXvcfOGCi_LBJwx5T0WRavectmxarCdspF6HmYE$ . You are receiving this because you were mentioned.Message ID: @.***>