ocean-transport / argo-intern

Andrew's project
1 stars 1 forks source link

SUMMER 2023: Roadmap/Project Organization #10

Closed andrewfagerheim closed 1 year ago

andrewfagerheim commented 1 year ago

This issue contains meeting notes, action items, and updates starting May 2023. For similar issues from previous semesters see:

andrewfagerheim commented 1 year ago

Current List of Tasks, 15 May 2023

Admin:

Functions:

Project:

andrewfagerheim commented 1 year ago

Roadblocks 18 May 2023

andrewfagerheim commented 1 year ago

Misc. Updates 19 May 2023

Glider paper plots:

Goal is to make the same plots as the glider paper and compare the results. Does the argo data provide similar results even though the resolution is worse and it's a box of profiles, not a continuous path?

Float to distance:

I think it would be interesting to pick a float that goes through the glider region and perform the above analysis with distance on the x axis (like the glider plots) instead of N_PROF.

Packages in Gyre:

Still not sure how to install glidertools, I seem unable to install this package or update pip because I don't have the right permissions. (UPDATE 23 May: look at Ocean Transport Guide, there should be a section on this)

andrewfagerheim commented 1 year ago

23 May 2023: Meeting w @dhruvbalwada

Notes:

Project:

Next steps:

andrewfagerheim commented 1 year ago

1 June 2023: Notes

Updates:

Next steps:

andrewfagerheim commented 1 year ago

2 June 2023: Meeting w @dhruvbalwada

argo_density_space notebook:

Steinberg paper:

Many, many questions:

Next steps:

Long term:

andrewfagerheim commented 1 year ago

8 June 2023: Update

I've spent most of this week catching up on readings, both papers I had skimmed a few months ago (Steinberg, Dove, Roullet) and new ones from the past week (Serazin, Chung). I think this has been helpful to consider how studies break a big topic down into something more specific to analyze, what kinds of methods they use to do so, and how they present this whole story.

In particular, each study had (a) one broad problem it was trying to constrain, (b) at least one proxy it was using, (c) and at least one method to analyze that proxy.

I'm realizing that for our project, I find it difficult to say what the broad problem is, the proxy is some part of temperature/salinity/density/spice profiles, and the methods are some combination of filtering/spectra/etc. I think it would be helpful for my mental organization to more carefully define each of these, and the steps necessary to address each.

andrewfagerheim commented 1 year ago

9 June 2023: Meeting w @dhruvbalwada

Notes:

Next steps:

andrewfagerheim commented 1 year ago

13 June 2023: Updates

Notes:

andrewfagerheim commented 1 year ago

16 June 2023: Meeting w @dhruvbalwada

Notes:

Next steps:

andrewfagerheim commented 1 year ago

21 June 2023: Meeting w @dhruvbalwada

These notes are very stream of consciousness (and written on the bus), retype later)

Notes:

Next steps:

andrewfagerheim commented 1 year ago

28 June 2023: Meeting w @dhruvbalwada

Notes:

Next steps:

andrewfagerheim commented 1 year ago

29 June 2023: Random Updates

Notes;

Next steps:

  • [x] resolve all items listed above
  • [x] check if EKE and MKE methods have the same variance when summed over scale
  • [x] use MLD as boundary for mask
andrewfagerheim commented 1 year ago

5 July 2023

Notes:

  • I think (?) pretty much all of the tweaks/updates to individual methods have been made at this point which is exciting. It seems like I'm at a point with most of those updates where I need to show Dhruv and get his insight/feedback.
  • Next up I think you should create a new notebook that "processes" a given box with all of the methods we've worked on from start to finish. I think this will help clarify the narrative of our methods and highlight any lingering questions, mistakes, etc that need to be addressed. More specifically, pick a box and:
    • plot contours of temperature, salinity, density, and spice
    • select a few interesting spice profiles and show filtering and masking techniques
    • plot average MLD and profiles by season
    • plot average ratio quantities by depth
    • plot spectra for whole profile and masks profiles
    • plot EKE/MKE binned by both scale and depth respectively (try with whole profile and masked profiles)

Next steps:

  • [x] pick box and perform analysis sketched above
    • [x] make all plots described above
    • [x] go back to Ratios, do you need to take masking into effect?
    • [x] make notebook pages that walk through definitions/background to the methods
    • [x] draft brief write-up on remaining questions/observations from that process
  • [x] start thinking about what/how to plot these things globally?
andrewfagerheim commented 1 year ago

24 July 2023: Meeting w @dhruvbalwada

Notes:

  • Generally it seems like are working (with a few tweaks below). One plot seems to show seasonal variation, EKE seems to be a valid metric, the trends we would expect to see in variance/MLD/etc seem to hold true.
  • The most significant limiting factor seems to be noise; since this is a small box (5x5) there are less than 50 profiles, which is not really enough to produce smooth/consistent outcomes, especially when additionally separating by month or depth. Instead, you should pick 10x10 boxes to capture more profiles.
  • These new boxes should be in regions where we expect to find distinct?/intact? spatial signals:
    • look at the Dove paper to look at regions with high and low EKE, pick a box that largely fits within each "band"
    • look at where the Mediterranean flows into the Atlantic, pick a spot just slightly west of this region. Looking for spice variance spike a few hundred meters deep where salty basin water subducts below fresher ocean water
  • Make sure all elements of analysis use the same upper mask boundary of the MLD. You can chose this MLD as:
    • an average of all profiles within each month
    • the average within winter (don't love this because winter is subjective based on hemisphere and less significant moving equatorward)
    • maybe just deepest MLD of all profiles in a box?
    • give each box its own unique mask, but make sure the deepest mask applies to all filter scales
  • Now the goal is to have a separate notebook for each region, basically a duplicate of the master we looked at today. Then select the few plots that look the most promising, put them all in a few slides to compare the results for each region

Next steps:

  • [x] create a new notebook for the ACC high EKE box, and:
    • [x] duplicate all work from argo_box_anlysis
    • [x] update all plots with comments in argo_box_analysis
    • [x] pick the most interesting plots, consolidate in slides
  • [x] repeat these steps for the ACC low EKE box and the North Atlantic gyre box
andrewfagerheim commented 1 year ago

26 July 2023: Meeting w @dhruvbalwada

Notes:

  • EKE in Box 1 has a very interesting signal where there's a minima around 1000m and then variance increases again with depth. This signal appears in all scale bins within this box, but doesn't not appear as strong in other boxes. (It appears in the average EKE profiles of Box 2 but less prominently. And not at all in Box 3.)
    • This could be because we're picking up a mode water subducted in the SO that moved deeper as it moved north
    • To better dive into this (and compare to the Sallee analysis), add density contours to the EKE plots to see 1) does this anomaly follow a specific density value (in depth it moves up and down) and 2) does this density favorable compare to what the Sallee schematic would predict?
  • The ratios might look strange because you're calculating the ratio for each profile, then taking the mean. Instead take the mean of each profile, then calculate the ratio.
  • For the EKE seasonality plots, they look noisy because there's no averaging performed. Instead, plot the median (quantile=0.50) with shading that encompasses Q1-Q3 (quantiles 0.25 to 0.75) for each scale bin. No need to keep plotting MKE, but keep both the seasonal and annual plots for now.
  • Again, the methods seem to be picking up interesting trends (both expected and unexpected). Keep expanding the geographic boxes studied; this time include a few more ACC boxes based on the Sallee paper.
  • The issue loading boxes seems to be that some problem profiles don't have PSAL/PSAL_QC, so there's a problem concatenating the profiles. Will need to chat with Tom about a workaround for this (is it possible to set a flag? or change a keyword?) and implement by cloning the argopy repo.
  • Should include a few more boxes in the analysis for comparison. Look at the Sallee paper on mode water formation and subduction rates for ideas of locations to pick

Next steps:

  • [x] ask Tom about the .to_xarray() issue at LEAP tomorrow
  • [x] fix the ratio plots
  • [x] add density contours to EKE plots
  • [x] fix the variance seasonality plots (see notes above)
  • [x] look into sampling rate (is it really ~4m?)
  • [x] update slide deck for a more formal walkthrough
    • [x] probably pick a few more boxes to include in this?
andrewfagerheim commented 1 year ago

27 July 2023: Quick chat with @dhruvbalwada

Notes:

  • Pick boxes immediately north and south of Box 1 to see if the sharp turns in variance change depths as you get closer to/farther from regions of subduction.
  • For the sampling rate issue, 2m --> 5m is fine, but 2m --> 100m is not. Instead of making sure the mean/median is above 4m, figure out some way to mask or label the sample rate changes so it can be considered after interpolation. In other words, after interpolation has occurred, it will be difficult to determine which profiles have which sampling rate, or where the sampling rate changes. So this somehow has to be accounted for before interpolation. But I'm not really sure how all the mechanics of this will work yet.
  • More specific thoughts on how to deal with sampling rate changes: https://github.com/ocean-transport/argo-intern/issues/12#issuecomment-1655683014

Next steps:

  • [x] figure out how to fix the lack of PSAL problem when loading boxes
  • [x] figure out how to address sampling rate changes
andrewfagerheim commented 1 year ago

28 July 2023: Meeting w @dhruvbalwada

Plots:

  • For EKE of spice plots:
    • Sort profiles by density at 1000, which will hopefully arrange in a roughly N-S pattern
    • Pick smaller boxes? particularly looking at 4 it looks very jumbled: maybe because it's going in or out of the ACC?
    • Add labels for density contours (do they change depth significantly? do the minima change depth with density?)
  • For EKE with depth and scale plots:
    • Add more panels near the surface, remove ones that are deeper down (if there doesn't seem to be a significant signal
    • Try a new plot style: make a depth dependent plot where the x axis is time, y axis is depth, and the color is EKE of density or spice. First try plotting this for every profile and every depth, but then try averaging by month and depth bin, and plotting the results as points. I wonder if it would be easier to pick out trends after averaging

Sample rate:

  • Seems like sampling rate is incredibly variable, and I've noticed rates of everything including 2m, 5m, 10m, and 100m. It seems like my current method is pretty much the worst possible option because I'm setting some kind of sampling rate barrier (median <4m) but still letting in profiles with vastly different rates.
  • One method is to remove any profile that doesn't have a good sampling rate, but this would lose lots of good data, particularly near surface data in other profiles.
  • So, instead you should calculate the distance between samples BEFORE interpolation and add this as a variable. Then once the dataset is interpolated, the sampling rate for different types of analysis can be selected after. In other words, if we want to pick the maximum sample rate as 5m, then maybe filter the whole profile and edit the mask so it removes any part of the profile that doesn't meet the 5m rate.

Problem profiles:

  • First try the simpler fixes and hope one of these might work:
    • Try downloading the newest snapshot and see if you can successfully load any of the problem boxes (ie hope the data center recognized and fixed the issue)
    • Try using the ftp gmaze said worked for him (but is this going to be very slow?)
  • Then dive into specifics of argopy/xarray
    • clone and locally install argopy repo
    • make small change to methods we think we use
    • then go into open_mfdataset() or write own loop, check to see if each file has PSAL variable, if not remove it

Next steps:

  • [x] plotting updates
    • [x] fix EKE of spice plots
    • [x] fix EKE with depth/scale plots
    • [x] try new EKE with depth/scale plot
  • [x] sample rate updates
    • [x] calculate sample rate before interpolation and add as a variable
    • [ ] update masking function to remove any region that doesn't meet the sampling rate requirement
  • [x] problem profile fix
    • [x] find latest snapshot, download, and test
    • [x] try loading box from data centers
    • [ ] make changes to argopy/xarray methods
andrewfagerheim commented 1 year ago

3 August 2023: Updates

Notes:

  • I've been working on a few things that I should jot down notes about here:
    • Plotted a "section view" using Argo data to better highlight what we're seeing with the EKE minima in the Southern Ocean and south Atlantic. It might be interesting to make more of these around the Southern Ocean to see if there are similar patterns nearby, or if this is somewhat unique.
    • Created new plots to look at EKE based on depth by binning and plotting on a colormap instead of plotting lines for individual depths.
    • In the process of working on the get_box() function on two kinds of updates: (1) add variables at this stage so you don't have to in each notebook (including month, year, MLD, etc) and (2) change the get_ds_interp() function so that it calculates the sample rate between each level in each profile and returns this in the interpolated dataset instead of picking profiles based on sample rate.
    • I have a running slide deck which so far I've been treating as a way to compare results from 3 boxes. I think instead of thinking about it as a way to show results, for now I should treat it as a way to document methods. Keep updating the deck, but don't upload multiple versions of the same plot. Document the plots themselves and what the display, not what that tells us about the region they were taken from
  • There are a few things I've been thinking about but haven't started yet:
    • When I first load the boxes, that seems like a good time to make the dataset attributes prettier. Is there a way to have a separate ("official") name that comes up when a variable is plotted? A way to store and display units? Look into this because it will make the plots look much more professional.
    • Creating a function to calculate EKE at different scales, storing each scale as its own variable in a dataset, then saving this data as a netcdf file. This would reduce the number of times I'd need to calculate EKE in each notebook, which takes up both physical space and time to compute.
    • Plotting EKE metrics in density space instead of depth space. I think this wouldn't be super difficult, you just need to check over how you create the density dataset in argo_box_loader to see if you've changed anything relevant recently.
    • Still this looming question about problem floats and loading data. Hopefully the new sync Dhruv is downloading will resolve this, but I'm not very optimistic.

Next steps:

  • [x] finish all updates to get_box() including interpolation fix
  • [ ] look into storing display names and units
  • [x] create function to make EKE dataset
  • [ ] make density space EKE plots
  • [x] resolve problem float issue
andrewfagerheim commented 1 year ago

24 August 2023: Updates

Notes:

  • It looks like before I left, I added the sampling rate fix to the interpolating function which is great
  • Today I made/finished the EKE function so now you can calculate EKEs once, store them as a netcdf, and then open this in each notebook you want to reference them in (instead of having to run time consuming cells all the time). OH also a note that before I do this, I only select the profiles that have a sampling rate of better than sample_max, which I've currently chosen as 6m.
  • I'm currently working on loading large sections around the ACC and running north as far as possible before they reach land. It's taking a long time to load the data, so I'm hoping it works. In addition to the EKE plots in depth space, I still need to make these plots in density space (which hopefully shouldn't be difficult, look at the argo_density_space notebook.
  • This is a small tweak, but Dhruv said to make the TS colorbar discrete instead of continuous
  • There are a number of admin/writing tasks to catch up on, with deadlines approaching. Please finish these before classes start!!

Next steps:

  • [x] load sections and plot EKE in depth space
  • [ ] additionally plot EKE in density space
  • [x] make T,S,SIG0 plots to accompany (discrete colorbar)
  • [x] read Cole 2012

Admin tasks:

andrewfagerheim commented 1 year ago

25 August 2023: Meeting w @dhruvbalwada

Notes:

  • The very low EKE bands (very smooth spice) are seen across many of the sections and often line up with the base of subducting fresh water. Generally, they follow sloping isopycnals down to ~1000m, but in certain sections they jump back up again across isopycnals. (Note that often this is the equatorward extent of the freshwater tongue, where it is able to penetrate farther at higher isopycnals compared to denser water.) Additionally, there are occasional "blobs" (very scientific, I know) of low EKE toward the bottom of a profile, but it's harder to comment on these because their structure is limited by the 1800m masked depth of our profiles.
  • At this point then we have pinpointed an interesting feature that isn't exactly described elsewhere in the literature, so this is a good time to start drafting a paper. There are a few more components of analysis () but it will probably be easiest to create the paper's story first and create remaining plots as needed.

Next steps (timescale this week!!):

  • [x] plot neutral density instead of potential density
  • [x] read Cole 2012 and Klocker 2023
  • [x] check section near Cole 2012 glider
  • [x] calculate salinity gradient and plot
  • [x] get JGR Overleaf template and start to sketch outline

Admin tasks(timescale this week!!):

Longer-term steps (timescale this semester):

  • create global map with depth of EKE minimum (or minima?)
  • create EKE sections in density space instead of depth
  • have paper submitted by the end of the year
andrewfagerheim commented 1 year ago

30 August 2023: Updates

Notes:

  • Dhruv left some good notes of things to check on the Argo slides:
    • Calculate spice and salinity gradient on a section that's been filtered at 100m (ie do the fields look very similar?)
    • Calculate EKE using spice and salinity as the tracer
    • Load a box around the NATRE region (looking at Ferrari 2005) and add slides, the paper shows an EKE reduction around 500-1000m
    • Create a scatter plot (or 2D histogram) of the derivative vs EKE
  • More notes from Argo slides:
    • Make a plot like Fig 3 in Ferrari 2005 (T-S plot with density contours) for the sampled profiles and filtered profiles
    • Make an idealized example of a salinity field where the first derivative goes to zero at a precise depth. Then compute the EKE to see if it is minimized at the same depth or if there is some offset.
  • I have a draft of the OS abstract and most of the CCS application filled out, Dhruv is looking over them now

Next steps:

  • [x] read Klocker 2023 and Ferrari 2005
  • [x] submit CCS application and OS abstract by the end of this week
  • [x] work through notes on Argo slides
andrewfagerheim commented 1 year ago

31 August 2023: Meeting w @dhruvbalwada

Notes on Plotting:

  • For grad vs EKE plots, make one with only the EKE scale log and another with both scales log
  • For T-S plots, make both 2d histograms (lots of bins and a logarithmic colormap) and scatterplots (where color is determined by latitude)
  • Additionally figure out how to pick a region where variance is high and plot a few sampled profiles and filtered profiles to see what kinds of signal we're capturing

Notes on Project:

  • Reread Smith & Ferrari 2009 particularly their normalization method in Appendix A and the application in Appendix B. According to their equations, the horizontal gradient of C' shouldn't be directly related to the vertical derivative of C, which is the opposite of what we see for observed tracers (temperature, salinity, and spice). Diving into their normalization methods will be important.
  • Their equations are T(x,y,z,t) however, and it might be advantageous to work in terms of isopycnal surfaces though, T(x,y,ρ,t). You should go back through and practice loading sections in density space to make sure all the analysis so far is possible when substituting 'PRES_INTERPOLATED' for 'SIG0'. Check on the function(s) you adapted from Dhruv's glider paper, df.interpolate2density_prof
  • Also note how in the grad-EKE plots, there is a really strong (even linear?) signal when the gradient is weak, meaning most of what we capture is that signal in EKE. What will be interesting is to see what may be hidden "underneath" this large signal if we use the Smith & Ferrari normalization technique.

Next steps (before going to Lamont next Friday):

  • [x] submit OS abstract and CCS grant application
  • [x] apply for LEAP tier 2 membership
  • [x] finish current updates to Argo slides (grad-EKE, T-S plots, individual profiles?)
  • [ ] read Ferrari 2005 and reread Smith 2009
  • [ ] dive back into functions about converting to density space
andrewfagerheim commented 1 year ago

I'm closing this comment and opening a new issue for the 2023-2024 academic year here: https://github.com/ocean-transport/argo-intern/issues/13