Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.



Anonymous Tim Cera

TAPPY is a tidal analysis package. It breaks down a record of water levels into the component sine waves. It is written in Python and uses the least squares optimization and other functions in SciPy. The focus is to make the most accurate analysis possible. TAPPY only determines the constituents that are calculatable according to the length of the time series.


  • Outputs a 'International Hydrographic Organization - Tidal and Water Level Working Group' standard XML constituent file.
  • Uses the IHO standard XML constituent file to make a predicted time series. By far the most frequent request that I get.
  • Calculates the node factor at each water elevation measurement. Very important for long time-series (greater than a year).
  • Very accurate ephemeris calculations thanks to the Astrolabe library.
  • Able to read in different input data sets without changing TAPPY or the input data set. All you have to do is create a file that defines the input data set. Thanks to Pyparsing.
  • Added the capability to read compressed files and Internet data streams (actually any URL) directly into TAPPY by using filelike.
  • The time-series does not need to have equal intervals. In fact any length of missing data is allowed (though too much missing will cause a poor analysis).
  • Can adjust the Rayleigh factor that nearby constituents are compared against to determine what constituents can be differentiated.
  • TAPPY chooses the main constituents based upon the length of the time series and infers additional constituents that are known to be specifically related to the main constituents.
  • Can filter the tidal energy out of the input signal using transform (FFT), usgs (PL33), doodson, and boxcar methods. | [CompareTidalFilters]
  • Can use the tidal filters to zero the time-series before determination of tidal constituents.
  • Can pad the usgs, doodson, and boxcar filters with predicted data to minimize edge effects of the filters.
  • Convenience function to fill missing values with the time series created from the tidal constituent signals. | [FillMissing]







Python version 2.4 or later



TAPPY Project Page on Sourceforge



There are three ways to install TAPPy. I have included an example for each method, but please read through the example to make sure it does what you want.

1. Standard Python distutils install:

# If you have wget..
# Or download [[tappy-0.9.0.tar.gz](]
cp tappy-0.9.0.tar.gz myworkdir
cd myworkdir
gzip -cd tappy-0.9.0.tar.gz | tar xvf -
cd tappy-0.9.0
       # At this point you can try TAPPY out without installing.
       cd example

       ../ mayport_florida_8720220_data.txt
       # OR on Unix/Linux

       cd ..

# To install...
python build

python install  #possibly as root

2. With easy_install available from PEAK. This looks like it might be the easiest, but I have had problems with easy_install before and for several reasons don't really like it. I changed TAPPy to accommodate, but use at your own discretion.

easy_install tappy

OR you could use 'pip' if you prefer.

pip install tappy

3. If you use the Gentoo Linux Distribution you could also sign up for the science overlay and then:

 emerge tappy


There is example data for two COOPS tide stations in Florida in the 'example' sub-directory.


Orbital Parameters

The required orbital parameters are calculated from Astrolabe. Thanks to Bill McClain for putting the Astrolabe package together.


Data is read into TAPPY using tools from pyparsing by Paul McGuire and filelike by Ryan Kelly.

Astrolabe, pyparsing, and filelike are packaged with TAPPY. If installed separately, the TAPPY versions are still used by TAPPY.

TAPPY Citations

Please forward any citation of TAPPY to tim at



Any help is appreciated. If you want you could send a patch file to me, or if you would like to make a bunch of changes I can assign you developer privileges to the source code repository. Just contact me at tim at


Wiki: CompareTidalFilters
Wiki: FillMissing
Wiki: TappyDoc
Wiki: TidalAnalysisInPython