pkmcfarland / TSTools

Python tools for GPS position time series.
3 stars 1 forks source link

timeSeriesDev #2

Closed pkmcfarland closed 5 years ago

pkmcfarland commented 5 years ago

This is my first pull request for this project (and ever). Please provide feedback on clarity and completeness of the information provided in addition to code review.

Below is an overview of the state of the project and my thinking on it. All of the programming, version control, organization, formatting, etc. is open for discussion and modification, you guys know better than me what the "best practices" are. The math and physics stuff, I will retain veto power on :)

What is TSTools? TSTools is a library containing several modules designed to read in, perform reference frame transformations on, and provide model fits to Global Navigation Satellite Systems (GNSS) derived position time series.

Lay of the land TSTools currently has four working directories:

Docs -> This directory is for documentation for the program. Documentation can be intended for developer reference or for end user reference. These may be split out later on but for now they are stored in the same place.

Lib -> This directory is for the modules we are writing and for other 3rd party modules we may wish to bring in that are not offered through Anaconda.

Templates -> This directory is for templates. So far there is a template module file (module_temp.py) which shows our standard format for writing modules for the library, and a program template (program_temp.py) which shows our standard format for writing a program that would be called directly from the command line. Template files for input files will also go in this directory. In the timeSeriesDev branch, there is also a fitFile_temp.py which shows what an input fit file will look like. This is an input file with flags for telling the tsFit class how to perform the data fitting (what terms to include and how to do the math).

Test -> Directory for unit tests. My current thinking is that each module will have a sub-directory containing all of the unit tests for that module and there will be a script at the Test directory level options to run the unit tests for a single module or for all of the modules at once.

TSTools modules At present there are three planned modules for TSTools. A simple overview of how these classes will interact is here: https://github.com/twistmcflip/TSTools/blob/master/Docs/InfoFlow/infoFlow.pdf

timeSeries -> This module is named after and contains the primary data storage timeSeries class. A timeSeries class object will have built in functions to read in data from several standard types of GPS position time series files, perform several standard reference frame transformations on them, and write them back out to standard text formats. They will also hold some metadata for the time series. The timeSeries class objects may have plotting capability or that may be performed by an external module (TBD).

tsBreak -> this module is named after and contains the tsBreak class. A tsBreak class object will have built in functions to read in an input break file. It will store the information in a way that is convenient to be passed to a tsFit class object (see below).

tsFit -> this module is named after and contains the mathematical workhorse of the libraries tsFit. A tsFit class object will take one timeSeries and one tsBreak class object as inputs. It will have built in functions to read in a time series fit input file, and perform a model fit (as prescribed by the fit input file) on the input timeSeries and tsBreak objects it received as inputs.

tsPlot -> This module is a maybe at this point. I am hovering between having built ins in timeSeries and tsFit to do plotting or having a single plotting module that can plot both. This is TBD.

What is present in this first pull request?

So far I have started work on the following:

I know that is a TON of info. Please let me know if you have questions.