Generic timeseries/satellite geodesy/data processing Matlab software.
Disclaimer: much of this software is under development and may not run as expected. There are also many instances of outdated software. Please report any strange behaviour and I'll do my best to get it up and running.
Each checked-out copy of this repository is intended to be its own self-contained project. That means that is should contain all data, metadata, plots and code. It is up to the user to refrain from pushing scripts that are specific to a certain application that isn't really interesting to anyone else (and that may be the case for the scripts listed in the Applications section.)
The following directories make up the repository:
- aux : contains auxiliary data, such as C20 time series, land masks and geopotential coefficients
- packages : contains auxiliary software (currently
+yaml
) - version_patching : contains functions that were not available in old Matlab versions (in case those versions are the only possibility)
The following directories are relevant to the datastorage
class:
- data : contains data (from imported data through the whole processing chain)
- metadata : contains metadata files
- plots : contains plots produced by the various processing methods
The following classes make up the datastorage infrastructure (in addition to the data, metdata and plots directories):
datanames
: resolves the name of a data productdataproduct
: handles a data product metadata and relevant directoriesdatastorage
: main script for loading, processing and saving data products
This infrastructure is intended to make it easier to handle data processing pipelines. The idea is that it is all controlled by the metadata and by splitting the processing into steps, each one corresponding to a certain data product.
The use of this infrastructure has a somewhat steep learning curve and is prone to breaking unless everything lines up perfectly. Fortunately, it is completely de-coupled from the remaining classes. For a good example on how to use it, refer to the gswarm
class.
Each mat-file is a class but many are dummy classes, which are only used to group together a bunch of routines that have similar application. Here's an template of those dummy classes:
classdef dummy
methods(Static)
function [out11,...,outi1]=f1(in11,...,ink1)
[...]
end
[...]
function [out1j,...,outij]=fj(in1j,...,inkj)
[...]
end
end
end
This makes it possible to call each of the f1
... fj
members simply as:
dummy.fJ(in1J,...,inkJ)
The dummy classes may have class constants but do not have non-static members.
The following m-files contain dummy classes:
cb
: handles colorbarscells
: utilities relevant to cell arrayscluster
: handles staging and un-staging of datafile
: file operationsnum
: numerical algorithmspardecomp
: parameter decompositionplotting
: wrapper and default-setter for plottingstr
: string operationsstructs
: utilities relevant to structurestime
: time-related functionsurl
: utilities relevant to handling URLs
Each of the following classes handle specific physical data types, which are shown according to their class hierarchy:
attitude
: process quaternion or angular dataorbit
: process orbit datasimpledata
: contains primitive methods for data processing, models data as a numeric vector with a common value for the free variable and for the mask (valid/invalid data point).simpletimeseries
: adds time-related operationssimplefreqseries
: frequency representation of time seriessegmentedfreqseries
: segmented representation of spectra
simplegrid
: represents gridded datagravity
: handling of Spherical Harmonic coefficients
The varargs
class is different from all others in the sense that it handles variable-length arguments (TODO: add a better description).
The following classes make is possible to retrieve data from NRTDM (please ignore if you are unfamiliar with this software package):
nrtdm
nrtdm_metadata
nrtdm_product
startup
: handles correct linking of project directoriestest
: calls all tests in all classes
The following classes are examples of using the classes and scripts above.
csr
: routines to handle some of CSR's data, specifically those related to accelerometer parameters (highly outdated, possibly to be removed in the future)gswarm
: used for the processing of the Swarm gravity field models