Aov
is a tool for period analysis of irregularly sampled time series,
such as stellar and planetary transit light curves. It relies on state-of-art
statistically poweful, robust and fast algorithms implemented in
my AovPer
package, partly based on my original research and
publications. All routines come in two flavours, with/without weights.
References:
--------------------------------------------------------------------------
The methods used are based on my 3 papers, listed in the
corresponding routine headers:
aov-phase binning aov (Schwarzenberg-Czerny, A., 1989, MNRAS 241, 153);
aovmh-multi-harmonic aov (Schwarzenberg-Czerny, A., 1996, ApJ(Lett) 460L, 107);
aovtr-transit/eclipse aov (Schwarzenberg-Czerny, A. & Beaulieu, J.-Ph.,
2006, MNRAS 365, 165);
These papers and my software are also available from my web page
http://www.camk.edu.pl/~alex/
Please cite this papers accordingly in publications using the current package.
Input:
--------------------------------------------------------------------------
Observations - one ASCII file per star, 2 or 3 columns in order: time,value,error
aov.par
- file containing default values of program parameters
The file aov.par
must exist, at least with dummy content &par /
.
Aov command line: may reset parameters from aov.par
Star name is either in STAR parameter or input from file named in STRLST.
File of star observations is named DIR+STAR+EXT, where + marks concatenation.
Running ./aov STAR=SIMUL
generates sample input (see Usage).
Compilation:
---------------------------------------------------------------------------
AOV is compiled simply by:
gfortran -o aov aovconst.f90 aovsub.f90 aovprms.f90 aovobs.f90 aovspec.f90 aovper.f90 aov.f90
For debugging/testing use:
gfortran -g -Og -fimplicit-none -Wall -Wline-truncation -Wcharacter-truncation -Wsurprising -Waliasing -Wimplicit-interface -Wunu
Usage:<br>
-------------------------------------------------------------------------<br>
Running
./aovgenerates sample input parameter file
aov.parand
data file
SIMUL1.dat. Then command
./aov STAR=SIMUL1executes them in the
ordinary way as if provided by the user.<br>
Program Parameters:
---------------------------------------------------------------------<br>
Obligatory Parameters (listed either in aov.par or command line):
character(20) :: STAR=""! star name or ... <br>
character(20) :: STRLST=""! name of file of star names <br>
<br>
Optional command parameters of main interest and their default values
real(TIME) :: FR0=0. ! lower frequency
real(TIME) :: FRU=4. ! upper frequency
real(TIME) :: FRS=0. ! frequency step (0.-optimum sampling)
! warning: undersampling risk for FRS>0.
integer :: NPAR=5 ! number of model parameters
integer :: METHOD=AOVMH ! select from
! AOV,AOVTR,AOVMH,AOVW,AOVTRW,AOVMHW
! Those ending 'W' process weights.
integer :: NCOV=2 ! number of bin coverages
character*(20) :: DIR='' ! Light curve file name prefix
character*(20) :: EXT='.dat' ! Light curve file name extension
Full list is in header of mprms
module.
Input parameter NPAR sets number of phase bins NPAR phase bins or
NPAR/2 Fourier harmonics.
I was using 3<=NPAR<=9 and I do not recommend exceeding these limits
in general period surveys. For transient search use much higher values
of NPAR, so that transit width ~1/NPAR. In theory, the CPU time
is proportional to ~NPAR, but as NPAR increases the spectral
resolution also increases, so it is advisable to decrease
the frequency step by 1/NPAR (done automatically by the code),
which causes CPU time scaling like ~NPAR^2. There
are possible additional CPU savings, but these are not
worth worrying about at this stage. NPAR=5 worked well
for near sinusoidal oscillations.
FSAMPL needs to be set =>3. The FSAMPL=4 choice means 4 frequencies covering
a spectral line. This is in my opinion close to optimal as the code fits
line profile to find peak frequency. If speed is no problem one can use e.g. FSAMPL=7.
The fastest are AOV
or AOVW
, depending on ERRIN
, yet they
suffer from an artificial noise/residuals due to sharp steps between phase bins.
AMH
and AMHW
employ a smooth Fourier model hence are statistically better, yet
about 10 times slower. All four algorithms complexity scales proportional
to number of observations, frequencies and model parameters.
Methods:
------------------------------------------------------------------
The algorithms employ either bins and sub-bins or projection onto
ortogonal polynomials yielding as fast implementation as possible when
irregular sampling with large gaps make FFT impractical.
Use of orthogonal functions, either phase binning or
trigonometric polynomials results in statistically near optimal
behaviour in that cross-talk/correlation between model elements is minimal.
Because of that the algorithms remain fairly robust against outliers.
More importantly use of orthogonal functions permits
application of the classical Fisher AnoVa statistics to
evaluate frequency spectrum and reliability of any detected periods.
Depending on SPTYPE
the spectrum obeys either
Fisher-Snedecor F or beta probability distributions.
Experience:
-----------------------------------------------------------------
The original periodogram/frequency spectrum routines were used on
over 10^5 stars, as part of f95 TATRY package in OGLE and LCVSS
mass photometry surveys and in EROS c package
All Star Searcher, among others used to analyse 318 light curves
of suspected variable stars in the field M31C. For the Cepheids
and the eclipsing binaries. Tests against periods set by manual
inspection of periodograms and light curves were performed
on 25 000 light curves from ASAS South. The comparision involved the most
significant periods only. The periods always
agreed or were 2om or 3om or om/2 sub-/harmonics of the published frequency om.
For Cepheids NPAR=5 worked well. For eclipsing binaries with proximity
effects (e.g. W UMA) or for sinusoidal variables NPAR=3 was better,
however 2om ambiguities occured.
Trials demonstrated that the aov detection criterion
used in the present code works better than the Laefler-Kinman,
PDM and Stetson criteria for eclipsing or pulsating variable stars.
However, picking right NPAR for your problem requires some
trial runs before decision on the final NPAR. For some applications,
such as transit search it sis recommended to perform several runs,
e.g. for NPAR=15, 30 and 60, to scan a range of transit widths.
History:
-------------------------------------------------------------------
1989 - development of AOV phase binning routines;
1996 - AOVMH Fourier series routines added;
1999-2002 - all AOV routines expanded for use as module in TATRY code;
2003 - porting of AOV routines into C for use in EROS and DIRECT projects.
This resulted in major upgrade/factor several sppeding of the algorithm AOV by
introduction of subbins;
2004 - new transient search algorithm fitting top-hat/box function;
2018 - subsstantial revision: main changes were in array declarations and
normalization of observations. All fixed lengh arrays are replaced with the
dynamic ones. In periodogram subroutines observations are now copied into local
arrays when needed. Input observations are left intact. Small inconsistencies
were removed and AOV and AOVTR routines were combined into one AOV routine
performing both ordinary phase folding and binning or transit search.
F95 and C packages became compatible to a high degree. Auto documentation using ford
.
Phases are now calculated in a uniform way using:
dph=fr*t[i]
dph-=floor(dph)
Tests on AMD PC and gcc demonstrated that -=floor
is faster than fmod
.
2020 - improved handling of command line string parameters, introduction of
optional list of star names.
Copyrights:
The whole package is subject to copyrights by its author,
(C) A. Schwarzenberg-Czerny 1089-2020, alex@camk.edu.pl
It is free to use and copy, yet distribution of modiffications or fragments
is forbidden. It is unsuitable for application carrying risk of damages.
To acknowledge its use, pleas cite papers listed in the References section.
Type | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|
logical | :: | simul | ||||
logical | :: | list | ||||
real(kind=SP) | :: | dfm | ||||
real(kind=SP) | :: | thm | ||||
real(kind=SP) | :: | qual | ||||
integer | :: | ib | ||||
integer | :: | j | ||||
integer | :: | metcnt | ||||
real(kind=TIME), | Allocatable | :: | f(:) | |||
real(kind=TIME), | Allocatable | :: | fb(:) | |||
type(SPEC_T) | :: | spec | ||||
type(OBS_T) | :: | obs |