Comments (12)
They are not bit-packed. I'm wondering if the base function we need is just a bit decoder. After thinking about other data sources, I don't know if we can make a one size fits all. We might need to do an arm_qc_utils.py and put arm specific in there. I do think that a standard bit-packed decoder would work well in qc_utils though
from act.
OK let's chat at the meeting next week. I think we can use flag_values for non-bitpacked and it will work. It would just be an extension of CF and the functions could auto detect type based on attributes set if we follow CF convention. If you have an example file can you load it here?
from act.
I don't have any examples offhand. I do remember that neon had a separate csv file that had qc information in and I don't know if ameriflux had any. I think they tend to interpolate data when they know it's bad. Not sure though
from act.
I'm currently working on migrating some of the DQ QC functions over to ACT. Right now I plan to keep the number of functions to a small number as most users will only need a few. But my question to the group is what will a user typically use them to do and what sort of functions will help them the most. I've got the setting and removing of bits for tests and the display of test numbers from a bit packed number implemented.
I think the most likely use of QC from a user is to mask data. But the bigger question is how will we create the functions to get the data in the format they will use/want. Since there will be a flag_assessments attribute set to standard "Bad", "Indeterminate" we can use that for filtering as well as individual tests. Eventually we'll add DQR support as well. I see Suspect = Indeterminate so we can filter the same. We can return a mask from a function call to either set the values to NaN or return an array with requested data removed (changing the shape of the array). I see both having their place. To do any of this I'm thinking of a generic reader for getting data from the object with the reader doing the work of querying the QC data and DQRs to return an array with filtered data set to NaN. Initially I was thinking of Masked Arrays but I don't think that will work for plotting since we are reading from the object directly with xarray calls. I'm thinking the preferred method is to manipulate the object to get the data the way the user wants and then do plotting, research, ... They can make a copy of the object if they don't want to make changes to the original data.
Any thoughts?
from act.
Hi @kenkehoe
I am going to ping @rcjackson @zssherman and @scollis as well.
As for what would be useful to the end users, I think a mask or way to get back the indices of where specific bits are tripped is useful. For plotting purposes, PyART has a gate filter keyword for many of the variables, but is there a more standard way to do this based on masked data as Ken is wanting to do?
from act.
from act.
from act.
OK can you give me some more information on Gatefilters?
from act.
from act.
OK thanks for the update. This seems very similar to numpy masked array functions already available.
I like the method to do the masking but I think we should use QC variables to store the result. That way multiple masks can be applied and retrieved independently by storing the result of a test ( or mask) in a bit-packed array format. Otherwise the result will be impossible to reverse or untangle if the user decided to do something else. Also if we save the result internally as a CF QC variable it can be written to a file and used later or shared with others.
I would prefer we have a function that uses the flage_meanings or flag_assessments under a QC variable to determine what should be added to the numpy mask and returns the result. I see QC as more complicated and more user variable than the corollary gatefilter ideas.
from act.
I'm moving away from a qc_utility.py module and used a method approach instead. It should be able to handle both bit-packed and integer QC styles as long as they follow CF. If they don't we can add some additional methods to clean method to update the other institutions to our internal standard that closely follows CF.
from act.
With the recent merge of #81 into the repo I think this issue can be closed. We will continue to add more QC tests.
from act.
Related Issues (20)
- Change default behavior of datafilter
- Update ARM DQR webservice HOT 3
- setup.cfg excluding armfiles.py HOT 4
- ACT HomeyerRainbow cmap not found HOT 6
- Error while using add_dqr_to_qc: flag_values and flag_masks not set as expected HOT 9
- Make version 2.0 release prominent on landing page HOT 1
- arm_site_location_search - varying output HOT 5
- Streaking with missing data in 2D plots HOT 1
- Secondary Y-Display breaks convention with Matplotlib
- Verify that unit tests for plotting are comparing and doing what it's supposed to. HOT 6
- Add Hysplit data support HOT 1
- Add examples for working with INP/Aerosol data HOT 5
- Support for Aerial Measurements (UAS, Aircraft, TBS) HOT 7
- ACT does not support QC format from ARM's new Simple QC Feature in Data Discovery HOT 2
- add_dqr_to_qc not working properly HOT 2
- Rename CSV submodule HOT 8
- Add warning to change units when fails HOT 1
- Migrating PPI/Lidar etc Data to xradar
- ASOS Download Change HOT 1
- Bug in xsection plot map code
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from act.