-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How are we doing? #146
Comments
Good idea! I'm pretty busy here so don't know if I'll get chance in the near future, so it might be best for you to do it if you are happy with that. |
No problem! I want to finish the track check first (getting there finally), then this. |
Hi @BillMills, I was thinking we should put together a list of things we want to achieve before May. I thought of:
I'll need to do the first one of course and the second should be in hand. I think the fourth one would be difficult to implement but could be possible with help from the CORA team. We should probably do everything else and then see if we have time to do it. How are the CSIRO tests going? Is there anything I can do to help? |
Hi @s-good - sounds like a plan to me! Also on the topic of running the full stack, I've got a test run going on AWS as we speak, but there are a couple issues:
|
One of the ICDC tests requires a new data file which is in the docker image but the rest should run as they are. Do you have the error message? If it is going to cost that much on AWS I agree we should look into other options. I can try to run it at my work - it may take some time to get it all run but I think it should be possible. |
Also, I think if it is running very slow we should not attempt the CORA test as I think it would be very resource heavy to run. We could consider, as a one off, asking them to run the profiles through their system and return the results to us. If it turns out to be very good we could implement it at a later date. |
A few updates:
|
In 2-3 hours on AWS c3large:
Taking all those that had TPR > FNR, minus
Or instead, taking all those with FPR < 1% and in <1h:
As I think you can tell, this is me wandering through combinations fairly ad hoc - but this is looking quite strong compared to Hamburg, thanks to the CoTeDe work. More soon. |
This is fantastic! Thanks for doing this. I will also have a go at running it at work - I think if I break it up into small enough parallel chunks and save the output as I go rather than at the end it may work and it saves the money, even if it is only a small amount each time. I'll let you know how I get on. |
Now that we're mostly just crossing t's on #130, one thing that strikes me as pressing for May is making a final decision about what set of tests to use. @s-good, let me know if you have something in mind; otherwise, I will turn my attention to this next. We should set some performance goals, which will likely look something like "minimum false positives while demanding < n% false negatives;" of course we want n = 0, but that's more of an asymptotic goal. The experts will need to set n for IQuOD 1.0, but if forced to do it myself, I would say something like n<5% this year, and shoot for n<2% next (if we plan on updating things in future, which is what I understood from Hamburg). But, not sure what numbers will be compelling for the community - let me know and we'll make it work. |
#154 contains a quick application of a poll of a couple of machine learning strategies on a recent run over ~12000 quota profiles; current best is roughly:
|
While hammering on that last 10% of bad profiles not getting flagged (absolutely baroque details here), I noticed that a whole lot of profiles in quota which report 0 for the depth of every level are not considered truly 'flagged' by AutoQC's |
It sounds like we might need to be checking the depth QC flags as well as the temperature flags. Does it help to change line 81 in main.py from: To answer your previous question, it would be good to try to find the best combination for a few cases e.g. lowest FPR if TPR > 90%, 95% and 98%. It might be interesting to also find highest TPR if FPR < 5% but I think that is a much lower priority. It seems like we are pretty close to where we want to be with getting the QC checks done before running AutoQC on the different test datasets we have identified? If so I will ask about getting the test datasets extracted/converted into the WOD ASCII format. |
|
I'm a bit concerned by these profiles with depth of all 0 since they sound unusual and they are going to distort our statistics. @BecCowley, @BoyerWOD can you give any advice on profiles that @BillMills has found in QuOTA with depths of all 0? Are these real profiles in QuOTA or could this be an error in the translation to WOD format? @BoyerWOD please could you also advise on which QC flags we need to read from the WOD ASCII files in order to get the QuOTA QC decisions? We are currently reading the originators QC flags attached to the temperature values. Do we also need to use the originator QC flags attached to the depths + anything else? |
I have just looked at one of the profiles in question (88213533). It is a 1995 PALACE float (precursor to the Argo floats). The file in Quota has the depths (107 of them), so it appears to be a translation error to the WOD format. @BoyerWOD will need to investigate. Perhaps send him a list of the unique IDs will be most helpful. Also, 754413 is a CTD (a low resolution version) and a duplicate of another profile. The depths also exist in the original file. Have we considered creating a reading function for the original file format? Could be useful in the future for XBT data out of CSIRO. |
Thanks @BecCowley. I think I've worked out what is going on now. I've listed the 88213533 profile using the Fortran code supplied on the WOD website and get this: CC cruise Latitde Longitde YYYY MM DD Time Cast #levels Number of variables in this cast: 2
VarFlag: 0 0 Secondary header # 1 0. (1) Measured Variable # 1 Information Code # 5 4. (1) The first column (depth) is all zeroes. Temperature (column with variable code 1) looks OK. There is also another variable present (code 25), which is pressure. So in this case there are pressure data but no depth data in the profile. The WOD QC flag for depth is 1 (fail) for all but the first level while the originator QC flag is 1 (pass) for all depths despite being all zeroes (I assume as it is using 1 for good data, 2 for probably good, 3 for probably bad, 4 for bad rather than the WOD QC codes). @BoyerWOD, is this as intended (and if so is it possible to either add them or use the originator QC flags to indicate to look for pressure rather than depth) or should the depth data be there? @BecCowley, I was hoping to keep file format considerations separate from AutoQC to avoid complicating things + @BoyerWOD had already written file conversion scripts to convert all the test data to WOD ASCII before we started AutoQC so it seemed to make sense to use that. However, there was talk about supporting a netCDF specification at the last workshop. |
Thanks for looking into this, folks! Here's a list of profiles from my ascii-copy of quota that look like they have zero depth for all levels, per @BecCowley's request: Let me know how we'd like to proceed re: defining our 'fail' flag. It might be possible to expand wodpy to support netcdf, but it's going to be very tight given our May deadline, and given that much of the time till then will be taken up by constructing and demonstrating a final decision algorithm. |
@s-good @BillMills. However, going through the list you have provided shows that many of them are depth records and they are a mix of data types (BO, MB, CT, PF, XB, etc). So my conclusion is that I will send the list to Tim and ask him to review the problem. For profiles with pressure only data: Have you already implemented the teos-10 toolbox? If not, it will be very useful later. Re: conversions from netcdf to WOD. That is fine, let's go with what we have available. |
Thanks, @BecCowley! There appears to be a pythonic gsw under development that includes the function you mention here - assuming this works as expected out of the box, this shouldn't (famous last words) be a showstopper. Could even do a flag in wodpy that replaces literal z with z(p) automatically - comments, @s-good? |
Hi @BecCowley, I looked through a few of the profiles in the list (I couldn't find some of the profiles though so something may have gone wrong with what I was doing!) I found two types:
Did you find any multi level profiles with no pressure and all 0 depth? I'm not sure how interested we are in type 1 profiles? These are just sea surface temperature measurements and most of our QC tests will not work on these. Do you think we should filter these out? We are already importing gsw in AutoQC (I think it might be used by CoTeDe) so it would be no problem to do the conversion on the fly as suggested. However, I think it would be good to get advice from @BoyerWOD first. Actually we should probably consider doing the opposite conversion for the Argo QC tests as these are supposed to work on pressure. I said to ignore this before to reduce complexity but since it looks simple to do with gsw maybe we should add it? |
@s-good. I agree, the two profile types are as you list. I have found 5 types in the original MQuest format using the list of profile numbers (total of 10748 profiles):
I can understand the reasons types 1 to 4 have appeared. For type 1 and 3 (for temperature) the only tests likely to work are global range tests with these surface only data points. I think we should utilize the gsw toolbox where necessary to switch between pressure and depth depending on the test requirements. |
Close as stale, or are there any outstanding concerns here before we wrap up v1? |
Maybe keep this open for now to remind ourselves that these exist? |
Since Hamburg, the number of qctests implemented has more than doubled (thanks @s-good and @castelao!) - it might be interesting to run the complete stack on quota again, to see how much of an impact we've made on our 55% true positive rate since then. I'm happy to do this, but it also might be good for someone other than me to go through the procedure of deploying and running on AWS (or wherever), so more than one person is familiar with how to do it, and we can double check the instructions are complete and clear.
The text was updated successfully, but these errors were encountered: