Change Log ========== Version 0.4 (Alpha) - April 29, 2015 ------------------------------------- * Tidy up code * Improve installation procedure * Work on reproducibility (through virtualenv) * Get all tests working Version MSc_Dissertation (Alpha) - August 28, 2014 -------------------------------------------------- * Implementing SGD training/matching against IBTrACS data * Look into different classifiers: SGD/QDC/cutoff etc. * Plot all figures for dissertation Version 0.3 (Alpha) - August 15, 2014 ------------------------------------- * Implementing SGD training/matching against IBTrACS data * Improve worker crash handling in pyro_cluster * Improve documentation * Run for 20 years worth of analysis on UCL computers * Fix bugs with Pyro code * Fix up tests Version 0.2 (Alpha) - July 18, 2014 ----------------------------------- * Abstract out tracking code and have first shot at implementing a Kalman filter based tracker * Implement StormtracksResultsManager that can be used for saving/loading results to disk * Improve pyro_cluster code to the point where it is usable (speedups of 10x using 15 UCL computers) * Add logging to pyro_cluster code to aid debugging * Handle lons/lats consistently - always use -180 to 180 in code * Add some functional/bug tests * PEP8 test all code in tests * Document most classes/functions (and add a coverage check in documentation) * Make names more consistent in code * Fix some bugs Version 0.1 (Alpha) - July 10, 2014 ----------------------------------- * Download and load of IBTrACS and C20 Reanalysis data * Vorticity tracking (nearest neighbour) in place * Matching of vorticity to best tracks * Plotting of output on world maps * pyro_cluster proof of concept working * Make installable through PyPI * Add structure for documentation * Proper settings file that is easy to modify and stored in ~/.stormtracks Version 0.0.X ------------- * Experimented with a range of ways of tracking tropical cyclone: * Adapting Qinling Wu's eddy detection algorithm * Used a modified voronoi segmentation scheme to partition up ocean * Then used a region shirinking technique to localise and detect eddy centres * Made sure that the Okubu-Weiss paramater was satisfied for the eddy centres * It wasn't overly suitable for tracking hurricanes: * There are typically ~1000s of eddies in the ocean, whereas there will only be ~ 100s of pressure minima * Through min pressure: * Found to be hard to track pressure minima from one timestep to the other * After talking to Kevin Hodges (Reading University) this approach was abandoned *for tracking* * However lot of the code developed (e.g. finding Radius of Outermost Closed Isobar - ROCI) may still be useful * Code is located in cyclone.py * Settled on tracking vorticity maxima * Look at Kevin Walsh's Fortran algorithm for cyclone tracking and take some ideas (and an implementation of a 4th order vorticity algorithm) * Ran algorithm against C20 data and found Katrina/Wilma in 2005 data * Get Kevin Hodges TRACK code building (but don't manage to get it running against data) * Downloaded C20 u9950/v9950, prmsl fields for vorticity/pressure * Full data sets used, i.e. that contain each ensemble member separately * This is better than the mean for tracking features (according to Chris Brierley and Kevin Hodges) * Kevin Hodges recommended using an average of wind fields * Plot a variety of different data fields to get a feel for data: * e.g. vorticity with best track overlayed * Speed up some of the analysis: * c functions for vorticity calculations * Basic analysis: * pressure min, vorticity max etc. * Look into parallelising analysis: * Settled on Pyro4 library for remote python execution * Set up a basic manager/worker system and tested on UCL computers * Experiment with Support Vector Machine (SVM) implementation in sckikit-learn * Implement a basic Kalman filter and check that it is producing reasonable data * Smoothing and upscaling of vorticity/pressure data