DynamicGravitySystems / DGP

Dynamic Gravity Processor
http://dgp.readthedocs.io/en/develop/
Apache License 2.0
7 stars 4 forks source link

Design data transformation interface. #42

Closed bradyzp closed 6 years ago

bradyzp commented 6 years ago

As we approach a point where we can begin to process data, we need to figure out how to handle transformations on data series.

Prerequisites: Issue #32 'Join gravity data with trajectory data': Do we want to merge the two pandas DataFrames, perhaps after performing a synchronization on them? If we merge and perhaps enable the user to trim the ends (junk data) into a new DF ready for processing while keeping references to the original data, this might pave the way for further processing.

Issue #35 'Line Selection': Should we enable the actual splitting of lines after selection - i.e. plot each line segment on it's own, and allow filters/transformations to be applied individually? User could then presumably select the line they are interested in on the Project Tree View for plotting and manipulation.


How to apply arbitrary filters/transformations to data? Some initial thoughts/ideas:

cbertinato commented 6 years ago

Do we want to merge the two pandas DataFrames, perhaps after performing a synchronization on them?

I think this is the way to go. Sync first, then merge. The data were are dealing with, even for long flights, isn't huge, so I think we can afford to produce a separate DataFrame for the merged data as I think we had discussed a while ago.

Should we enable the actual splitting of lines after selection - i.e. plot each line segment on it's own, and allow filters/transformations to be applied individually?

If I get your meaning, that we would break out DataFrames after line selection on which the user could then operate, then I think that this is a good model. Perhaps one could operate on a line-by-line basis, or apply to all lines in a flight.

cbertinato commented 6 years ago

I would like to build this feature with the flexibility to eventually implement custom transform blocks. Toward that end, we will need to define how the user would interact with this feature. Some thoughts on that here:

Transform chains consist of callable objects that are instances of the transform class. The transform class is a container for the function to be applied.

bradyzp commented 6 years ago

Closing this as resolved in commit f9646044c528d26610cfedcaaa6100a5c7942548 Further discussion in issue #65