diff -Naur wfdb-10.2.0/MANIFEST wfdb-10.2.1/MANIFEST --- wfdb-10.2.0/MANIFEST Mon Oct 15 16:20:26 2001 +++ wfdb-10.2.1/MANIFEST Fri Nov 16 16:19:55 2001 @@ -1,583 +1,589 @@ -wfdb-10.2.0/ -wfdb-10.2.0/app/ -wfdb-10.2.0/app/12lead.pro -wfdb-10.2.0/app/ann2rr.c -wfdb-10.2.0/app/bxb.c -wfdb-10.2.0/app/calsig.c -wfdb-10.2.0/app/cshsetwfdb -wfdb-10.2.0/app/ecgeval.c -wfdb-10.2.0/app/epic.c -wfdb-10.2.0/app/fir.c -wfdb-10.2.0/app/ihr.c -wfdb-10.2.0/app/Makefile -wfdb-10.2.0/app/Makefile.dos -wfdb-10.2.0/app/Makefile.top -wfdb-10.2.0/app/Makefile.tpl -wfdb-10.2.0/app/mfilt.c -wfdb-10.2.0/app/mrgann.c -wfdb-10.2.0/app/mxm.c -wfdb-10.2.0/app/nst.c -wfdb-10.2.0/app/plotstm.c -wfdb-10.2.0/app/pscgen.c -wfdb-10.2.0/app/pschart.c -wfdb-10.2.0/app/pschart.pro -wfdb-10.2.0/app/psfd.c -wfdb-10.2.0/app/psfd.pro -wfdb-10.2.0/app/rdann.c -wfdb-10.2.0/app/rdsamp.c -wfdb-10.2.0/app/README -wfdb-10.2.0/app/rr2ann.c -wfdb-10.2.0/app/rxr.c -wfdb-10.2.0/app/sampfreq.c -wfdb-10.2.0/app/sample8.hea -wfdb-10.2.0/app/sample.c -wfdb-10.2.0/app/setwfdb -wfdb-10.2.0/app/setwfdb.bat -wfdb-10.2.0/app/sigamp.c -wfdb-10.2.0/app/skewedit.c -wfdb-10.2.0/app/snip.c -wfdb-10.2.0/app/sortann.c -wfdb-10.2.0/app/sqrs125.c -wfdb-10.2.0/app/sqrs.c -wfdb-10.2.0/app/sumann.c -wfdb-10.2.0/app/sumstats.c -wfdb-10.2.0/app/tach.c -wfdb-10.2.0/app/view.c -wfdb-10.2.0/app/vsetup.c -wfdb-10.2.0/app/wfdbcat.c -wfdb-10.2.0/app/wfdbcollate.c -wfdb-10.2.0/app/wfdbdesc.c -wfdb-10.2.0/app/wfdbwhich.c -wfdb-10.2.0/app/wrann.c -wfdb-10.2.0/app/wrsamp.c -wfdb-10.2.0/app/wvscript.c -wfdb-10.2.0/app/xform.c -wfdb-10.2.0/check-manifest -wfdb-10.2.0/checkpkg/ -wfdb-10.2.0/checkpkg/appcheck -wfdb-10.2.0/checkpkg/expected/ -wfdb-10.2.0/checkpkg/expected/100s.a2r -wfdb-10.2.0/checkpkg/expected/100s.mix -wfdb-10.2.0/checkpkg/expected/100s.qrs -wfdb-10.2.0/checkpkg/expected/100s.wra -wfdb-10.2.0/checkpkg/expected/100w.dat -wfdb-10.2.0/checkpkg/expected/100w.hea -wfdb-10.2.0/checkpkg/expected/100x.atr -wfdb-10.2.0/checkpkg/expected/100x.dat -wfdb-10.2.0/checkpkg/expected/100x.hea -wfdb-10.2.0/checkpkg/expected/100z.hea -wfdb-10.2.0/checkpkg/expected/ann2rr.out -wfdb-10.2.0/checkpkg/expected/bxb.out -wfdb-10.2.0/checkpkg/expected/ecgeval.out -wfdb-10.2.0/checkpkg/expected/fir.dat -wfdb-10.2.0/checkpkg/expected/fir.hea -wfdb-10.2.0/checkpkg/expected/ihr.out -wfdb-10.2.0/checkpkg/expected/lcheck.log-NETFILES -wfdb-10.2.0/checkpkg/expected/lcheck.log-no-NETFILES -wfdb-10.2.0/checkpkg/expected/mfilt.dat -wfdb-10.2.0/checkpkg/expected/mfilt.hea -wfdb-10.2.0/checkpkg/expected/pschart.ps -wfdb-10.2.0/checkpkg/expected/psfd.ps -wfdb-10.2.0/checkpkg/expected/rdann.out -wfdb-10.2.0/checkpkg/expected/rdsamp.out -wfdb-10.2.0/checkpkg/expected/rxr.out -wfdb-10.2.0/checkpkg/expected/sampfreq.out -wfdb-10.2.0/checkpkg/expected/sigamp.out -wfdb-10.2.0/checkpkg/expected/snip.atr -wfdb-10.2.0/checkpkg/expected/snip.dat -wfdb-10.2.0/checkpkg/expected/snip.hea -wfdb-10.2.0/checkpkg/expected/sumann.out -wfdb-10.2.0/checkpkg/expected/sumstats.out -wfdb-10.2.0/checkpkg/expected/tach.out -wfdb-10.2.0/checkpkg/expected/udb/ -wfdb-10.2.0/checkpkg/expected/udb/100z.hea -wfdb-10.2.0/checkpkg/expected/wfd00001.dat -wfdb-10.2.0/checkpkg/expected/wfd00001.hea -wfdb-10.2.0/checkpkg/expected/wfd00002.dat -wfdb-10.2.0/checkpkg/expected/wfd00002.hea -wfdb-10.2.0/checkpkg/expected/wfdbcat.out -wfdb-10.2.0/checkpkg/expected/wfdbdesc.out -wfdb-10.2.0/checkpkg/expected/wfdbwhich.out -wfdb-10.2.0/checkpkg/expected/wfd.hea -wfdb-10.2.0/checkpkg/expected/xform-1.out -wfdb-10.2.0/checkpkg/expected/xform-2.out -wfdb-10.2.0/checkpkg/expected/xform.all -wfdb-10.2.0/checkpkg/expected/xform.dat -wfdb-10.2.0/checkpkg/expected/xform.hea -wfdb-10.2.0/checkpkg/input/ -wfdb-10.2.0/checkpkg/input/100x.hea -wfdb-10.2.0/checkpkg/input/ecgeval -wfdb-10.2.0/checkpkg/input/sumstats -wfdb-10.2.0/checkpkg/input/xform -wfdb-10.2.0/checkpkg/lcheck.c -wfdb-10.2.0/checkpkg/libcheck -wfdb-10.2.0/checkpkg/Makefile -wfdb-10.2.0/checkpkg/Makefile.top -wfdb-10.2.0/checkpkg/Makefile.tpl -wfdb-10.2.0/conf/ -wfdb-10.2.0/conf/cygwin.def -wfdb-10.2.0/conf/exestrip -wfdb-10.2.0/conf/generic.def -wfdb-10.2.0/conf/generic-slib.def -wfdb-10.2.0/conf/hpux.def -wfdb-10.2.0/conf/hpux-slib.def -wfdb-10.2.0/configure -wfdb-10.2.0/conf/linux.def -wfdb-10.2.0/conf/linux-slib.def -wfdb-10.2.0/conf/solaris.def -wfdb-10.2.0/conf/solaris-slib.def -wfdb-10.2.0/conf/version.def -wfdb-10.2.0/convert/ -wfdb-10.2.0/convert/a2m.c -wfdb-10.2.0/convert/ad2m.c -wfdb-10.2.0/convert/edf2mit.c -wfdb-10.2.0/convert/m2a.c -wfdb-10.2.0/convert/Makefile -wfdb-10.2.0/convert/Makefile.dos -wfdb-10.2.0/convert/Makefile.top -wfdb-10.2.0/convert/Makefile.tpl -wfdb-10.2.0/convert/makeid.c -wfdb-10.2.0/convert/md2a.c -wfdb-10.2.0/convert/readid.c -wfdb-10.2.0/convert/README -wfdb-10.2.0/convert/revise.c -wfdb-10.2.0/COPYING -wfdb-10.2.0/data/ -wfdb-10.2.0/data/100s.atr -wfdb-10.2.0/data/100s.dat -wfdb-10.2.0/data/100s.hea -wfdb-10.2.0/data/16.hea -wfdb-10.2.0/data/16l.hea -wfdb-10.2.0/data/16x10.hea -wfdb-10.2.0/data/16x11.hea -wfdb-10.2.0/data/16x12.hea -wfdb-10.2.0/data/16x13.hea -wfdb-10.2.0/data/16x14.hea -wfdb-10.2.0/data/16x15.hea -wfdb-10.2.0/data/16x16.hea -wfdb-10.2.0/data/16x1.hea -wfdb-10.2.0/data/16x2.hea -wfdb-10.2.0/data/16x3.hea -wfdb-10.2.0/data/16x4.hea -wfdb-10.2.0/data/16x5.hea -wfdb-10.2.0/data/16x6.hea -wfdb-10.2.0/data/16x7.hea -wfdb-10.2.0/data/16x8.hea -wfdb-10.2.0/data/16x9.hea -wfdb-10.2.0/data/8.hea -wfdb-10.2.0/data/8l.hea -wfdb-10.2.0/data/8x10.hea -wfdb-10.2.0/data/8x11.hea -wfdb-10.2.0/data/8x12.hea -wfdb-10.2.0/data/8x13.hea -wfdb-10.2.0/data/8x14.hea -wfdb-10.2.0/data/8x15.hea -wfdb-10.2.0/data/8x16.hea -wfdb-10.2.0/data/8x1.hea -wfdb-10.2.0/data/8x2.hea -wfdb-10.2.0/data/8x3.hea -wfdb-10.2.0/data/8x4.hea -wfdb-10.2.0/data/8x5.hea -wfdb-10.2.0/data/8x6.hea -wfdb-10.2.0/data/8x7.hea -wfdb-10.2.0/data/8x8.hea -wfdb-10.2.0/data/8x9.hea -wfdb-10.2.0/data/ahalist -wfdb-10.2.0/data/ahatape.hea -wfdb-10.2.0/data/ahaxlist -wfdb-10.2.0/data/b.hea -wfdb-10.2.0/data/culist -wfdb-10.2.0/data/dblist -wfdb-10.2.0/data/esclist -wfdb-10.2.0/data/Makefile -wfdb-10.2.0/data/Makefile.dos -wfdb-10.2.0/data/Makefile.top -wfdb-10.2.0/data/Makefile.tpl -wfdb-10.2.0/data/mitlist -wfdb-10.2.0/data/mittape.hea -wfdb-10.2.0/data/mitxlist -wfdb-10.2.0/data/multi.hea -wfdb-10.2.0/data/nstlist -wfdb-10.2.0/data/null.hea -wfdb-10.2.0/data/README -wfdb-10.2.0/data/t10240.hea -wfdb-10.2.0/data/t1024.hea -wfdb-10.2.0/data/t4096.hea -wfdb-10.2.0/data/t512.hea -wfdb-10.2.0/data/wfdbcal -wfdb-10.2.0/data/wfdbpath.mac -wfdb-10.2.0/doc/ -wfdb-10.2.0/doc/a2m.1 -wfdb-10.2.0/doc/ann2rr.1 -wfdb-10.2.0/doc/annot.5 -wfdb-10.2.0/doc/appguide.int -wfdb-10.2.0/doc/bxb.1 -wfdb-10.2.0/doc/calsig.1 -wfdb-10.2.0/doc/coherence.1 -wfdb-10.2.0/doc/cover.ag -wfdb-10.2.0/doc/cover.pg -wfdb-10.2.0/doc/ctotexi.c -wfdb-10.2.0/doc/dbag.ht0 -wfdb-10.2.0/doc/dbag.tex -wfdb-10.2.0/doc/dbu.hlp -wfdb-10.2.0/doc/dbu.ht0 -wfdb-10.2.0/doc/dbu.tex -wfdb-10.2.0/doc/dir.db -wfdb-10.2.0/doc/dir.top -wfdb-10.2.0/doc/ecgeval.1 -wfdb-10.2.0/doc/epic.1 -wfdb-10.2.0/doc/eval.tex -wfdb-10.2.0/doc/fft.1 -wfdb-10.2.0/doc/fir.1 -wfdb-10.2.0/doc/fixag.sed -wfdb-10.2.0/doc/fixag.sh -wfdb-10.2.0/doc/fixpg.sed -wfdb-10.2.0/doc/fixpg.sh -wfdb-10.2.0/doc/foot.ht0 -wfdb-10.2.0/doc/header.5 -wfdb-10.2.0/doc/hrfft.1 -wfdb-10.2.0/doc/icons/ -wfdb-10.2.0/doc/icons/contents.png -wfdb-10.2.0/doc/icons/cross_ref.png -wfdb-10.2.0/doc/icons/foot.png -wfdb-10.2.0/doc/icons/next_gr.png -wfdb-10.2.0/doc/icons/next.png -wfdb-10.2.0/doc/icons/prev_gr.png -wfdb-10.2.0/doc/icons/previous.png -wfdb-10.2.0/doc/icons/up_gr.png -wfdb-10.2.0/doc/icons/up.png -wfdb-10.2.0/doc/ihr.1 -wfdb-10.2.0/doc/index.ht0 -wfdb-10.2.0/doc/install.tex -wfdb-10.2.0/doc/intro.ht0 -wfdb-10.2.0/doc/.latex2html-init -wfdb-10.2.0/doc/log10.1 -wfdb-10.2.0/doc/lomb.1 -wfdb-10.2.0/doc/Makefile -wfdb-10.2.0/doc/Makefile.top -wfdb-10.2.0/doc/Makefile.tpl -wfdb-10.2.0/doc/makeinfo.sh -wfdb-10.2.0/doc/manhtml.sh -wfdb-10.2.0/doc/maninst.sh -wfdb-10.2.0/doc/memse.1 -wfdb-10.2.0/doc/mfilt.1 -wfdb-10.2.0/doc/mrgann.1 -wfdb-10.2.0/doc/mxm.1 -wfdb-10.2.0/doc/nst.1 -wfdb-10.2.0/doc/plot2d.1 -wfdb-10.2.0/doc/plotstm.1 -wfdb-10.2.0/doc/pschart.1 -wfdb-10.2.0/doc/psfd.1 -wfdb-10.2.0/doc/rdann.1 -wfdb-10.2.0/doc/rdsamp.1 -wfdb-10.2.0/doc/README -wfdb-10.2.0/doc/rxr.1 -wfdb-10.2.0/doc/sampfreq.1 -wfdb-10.2.0/doc/sample.1 -wfdb-10.2.0/doc/setwfdb.1 -wfdb-10.2.0/doc/sigamp.1 -wfdb-10.2.0/doc/signal.5 -wfdb-10.2.0/doc/skewedit.1 -wfdb-10.2.0/doc/snip.1 -wfdb-10.2.0/doc/sortann.1 -wfdb-10.2.0/doc/sqrs.1 -wfdb-10.2.0/doc/sumann.1 -wfdb-10.2.0/doc/sumstats.1 -wfdb-10.2.0/doc/tach.1 -wfdb-10.2.0/doc/texi2html -wfdb-10.2.0/doc/texindex.c -wfdb-10.2.0/doc/tmac.dif -wfdb-10.2.0/doc/view.1 -wfdb-10.2.0/doc/wave.1 -wfdb-10.2.0/doc/wfdb.3 -wfdb-10.2.0/doc/wfdbcal.5 -wfdb-10.2.0/doc/wfdbcat.1 -wfdb-10.2.0/doc/wfdbcollate.1 -wfdb-10.2.0/doc/wfdbdesc.1 -wfdb-10.2.0/doc/wfdbwhich.1 -wfdb-10.2.0/doc/wrann.1 -wfdb-10.2.0/doc/wrsamp.1 -wfdb-10.2.0/doc/wview.1 -wfdb-10.2.0/doc/xform.1 -wfdb-10.2.0/examples/ -wfdb-10.2.0/examples/dblibver.c -wfdb-10.2.0/examples/example10.c -wfdb-10.2.0/examples/example1.c -wfdb-10.2.0/examples/example2.c -wfdb-10.2.0/examples/example3.c -wfdb-10.2.0/examples/example4.c -wfdb-10.2.0/examples/example5.c -wfdb-10.2.0/examples/example6.c -wfdb-10.2.0/examples/example7.c -wfdb-10.2.0/examples/example8.c -wfdb-10.2.0/examples/example9.c -wfdb-10.2.0/examples/exannstr.c -wfdb-10.2.0/examples/exgetvec.c -wfdb-10.2.0/examples/exputvec.c -wfdb-10.2.0/examples/Makefile -wfdb-10.2.0/examples/Makefile.dos -wfdb-10.2.0/examples/Makefile.top -wfdb-10.2.0/examples/Makefile.tpl -wfdb-10.2.0/examples/psamples.c -wfdb-10.2.0/examples/README -wfdb-10.2.0/examples/refhr.c -wfdb-10.2.0/fortran/ -wfdb-10.2.0/fortran/example.f -wfdb-10.2.0/fortran/Makefile -wfdb-10.2.0/fortran/README -wfdb-10.2.0/fortran/wfdbf.c -wfdb-10.2.0/INSTALL -wfdb-10.2.0/install.sh -wfdb-10.2.0/lib/ -wfdb-10.2.0/lib/annot.c -wfdb-10.2.0/lib/calib.c -wfdb-10.2.0/lib/COPYING.LIB -wfdb-10.2.0/lib/db.h -wfdb-10.2.0/lib/ecgcodes.h -wfdb-10.2.0/lib/ecgmap.h -wfdb-10.2.0/lib/Makefile -wfdb-10.2.0/lib/Makefile.dos -wfdb-10.2.0/lib/Makefile.top -wfdb-10.2.0/lib/Makefile.tpl -wfdb-10.2.0/lib/makelib -wfdb-10.2.0/lib/README -wfdb-10.2.0/lib/signal.c -wfdb-10.2.0/lib/twfdbdll.def -wfdb-10.2.0/lib/wfdbdll.def -wfdb-10.2.0/lib/wfdb.h -wfdb-10.2.0/lib/wfdbinit.c -wfdb-10.2.0/lib/wfdbio.c -wfdb-10.2.0/lib/wfdblib.h -wfdb-10.2.0/Makefile -wfdb-10.2.0/Makefile.top -wfdb-10.2.0/Makefile.tpl -wfdb-10.2.0/MANIFEST -wfdb-10.2.0/NEWS -wfdb-10.2.0/psd/ -wfdb-10.2.0/psd/coherence.c -wfdb-10.2.0/psd/fft.c -wfdb-10.2.0/psd/hrfft -wfdb-10.2.0/psd/hrlomb -wfdb-10.2.0/psd/hrmem -wfdb-10.2.0/psd/hrplot -wfdb-10.2.0/psd/log10.c -wfdb-10.2.0/psd/lomb.c -wfdb-10.2.0/psd/Makefile -wfdb-10.2.0/psd/Makefile.dos -wfdb-10.2.0/psd/Makefile.top -wfdb-10.2.0/psd/Makefile.tpl -wfdb-10.2.0/psd/memse.c -wfdb-10.2.0/psd/plot2d -wfdb-10.2.0/psd/plot3d -wfdb-10.2.0/psd/README -wfdb-10.2.0/README -wfdb-10.2.0/README.NETFILES -wfdb-10.2.0/uninstall.sh -wfdb-10.2.0/wave/ -wfdb-10.2.0/wave/analysis.hlp -wfdb-10.2.0/wave/analyze.c -wfdb-10.2.0/wave/annot.c -wfdb-10.2.0/wave/annpan.c -wfdb-10.2.0/wave/anntab -wfdb-10.2.0/wave/bitmaps.h -wfdb-10.2.0/wave/buttons.hlp -wfdb-10.2.0/wave/demo.txt -wfdb-10.2.0/wave-doc/ -wfdb-10.2.0/wave-doc/color/ -wfdb-10.2.0/wave-doc/color/allow-edit.ps -wfdb-10.2.0/wave-doc/color/calibrate.ps -wfdb-10.2.0/wave-doc/color/file-analyze.ps -wfdb-10.2.0/wave-doc/color/file-load.ps -wfdb-10.2.0/wave-doc/color/file-print.ps -wfdb-10.2.0/wave-doc/color/file-save.ps -wfdb-10.2.0/wave-doc/color/find-window.ps -wfdb-10.2.0/wave-doc/color/help-topics.ps -wfdb-10.2.0/wave-doc/color/level-window.ps -wfdb-10.2.0/wave-doc/color/main-control-panel.ps -wfdb-10.2.0/wave-doc/color/main-window.ps -wfdb-10.2.0/wave-doc/color/main-with-hr.ps -wfdb-10.2.0/wave-doc/color/main-with-markers.ps -wfdb-10.2.0/wave-doc/color/Makefile -wfdb-10.2.0/wave-doc/color/mimic.ps -wfdb-10.2.0/wave-doc/color/netscape-new-helper.ps -wfdb-10.2.0/wave-doc/color/print-setup-window.ps -wfdb-10.2.0/wave-doc/color/scope-window.ps -wfdb-10.2.0/wave-doc/color/search-template.ps -wfdb-10.2.0/wave-doc/color/stdev.ps -wfdb-10.2.0/wave-doc/color/titlebar.ps -wfdb-10.2.0/wave-doc/color/title-with-parens.ps -wfdb-10.2.0/wave-doc/color/type-menu.ps -wfdb-10.2.0/wave-doc/color/wave-icon.ps -wfdb-10.2.0/wave-doc/color/wave-menu.ps -wfdb-10.2.0/wave-doc/grey/ -wfdb-10.2.0/wave-doc/grey/allow-edit.ps -wfdb-10.2.0/wave-doc/grey/analysis-commands.ps -wfdb-10.2.0/wave-doc/grey/analyze-window.ps -wfdb-10.2.0/wave-doc/grey/annotation-template.ps -wfdb-10.2.0/wave-doc/grey/attach-to-signals.ps -wfdb-10.2.0/wave-doc/grey/calibrate.ps -wfdb-10.2.0/wave-doc/grey/chart1.ps -wfdb-10.2.0/wave-doc/grey/chart2.ps -wfdb-10.2.0/wave-doc/grey/file-analyze.ps -wfdb-10.2.0/wave-doc/grey/file-load.ps -wfdb-10.2.0/wave-doc/grey/file-print.ps -wfdb-10.2.0/wave-doc/grey/file-save.ps -wfdb-10.2.0/wave-doc/grey/find-window.ps -wfdb-10.2.0/wave-doc/grey/fulldisc.ps -wfdb-10.2.0/wave-doc/grey/help-intro.ps -wfdb-10.2.0/wave-doc/grey/help-topics.ps -wfdb-10.2.0/wave-doc/grey/level-window.ps -wfdb-10.2.0/wave-doc/grey/load-window.ps -wfdb-10.2.0/wave-doc/grey/log-window.ps -wfdb-10.2.0/wave-doc/grey/main-control-panel.ps -wfdb-10.2.0/wave-doc/grey/main-window.ps -wfdb-10.2.0/wave-doc/grey/main-with-hr.ps -wfdb-10.2.0/wave-doc/grey/main-with-markers.ps -wfdb-10.2.0/wave-doc/grey/Makefile -wfdb-10.2.0/wave-doc/grey/mimic.ps -wfdb-10.2.0/wave-doc/grey/netscape-new-helper.ps -wfdb-10.2.0/wave-doc/grey/noedit.ps -wfdb-10.2.0/wave-doc/grey/nomatch.ps -wfdb-10.2.0/wave-doc/grey/notice-quit.ps -wfdb-10.2.0/wave-doc/grey/print-setup-window.ps -wfdb-10.2.0/wave-doc/grey/scope-window.ps -wfdb-10.2.0/wave-doc/grey/search-template.ps -wfdb-10.2.0/wave-doc/grey/spot-help.ps -wfdb-10.2.0/wave-doc/grey/stdev.ps -wfdb-10.2.0/wave-doc/grey/system-menu.ps -wfdb-10.2.0/wave-doc/grey/titlebar.ps -wfdb-10.2.0/wave-doc/grey/title-with-parens.ps -wfdb-10.2.0/wave-doc/grey/type-menu.ps -wfdb-10.2.0/wave-doc/grey/view-window.ps -wfdb-10.2.0/wave-doc/grey/wave-icon.ps -wfdb-10.2.0/wave-doc/grey/wave-menu.ps -wfdb-10.2.0/wave-doc/guide/ -wfdb-10.2.0/wave-doc/guide/chart2.png -wfdb-10.2.0/wave-doc/guide/cover.wug -wfdb-10.2.0/wave-doc/guide/dossify-html -wfdb-10.2.0/wave-doc/guide/example.xws -wfdb-10.2.0/wave-doc/guide/fancybox.perl -wfdb-10.2.0/wave-doc/guide/fixindex -wfdb-10.2.0/wave-doc/guide/fixinfo -wfdb-10.2.0/wave-doc/guide/fixlinks -wfdb-10.2.0/wave-doc/guide/fulldisc.png -wfdb-10.2.0/wave-doc/guide/html.sty -wfdb-10.2.0/wave-doc/guide/icons/ -wfdb-10.2.0/wave-doc/guide/icons/contents.png -wfdb-10.2.0/wave-doc/guide/icons/cross_ref.png -wfdb-10.2.0/wave-doc/guide/icons/foot.png -wfdb-10.2.0/wave-doc/guide/icons/index.png -wfdb-10.2.0/wave-doc/guide/icons/next_gr.png -wfdb-10.2.0/wave-doc/guide/icons/next.png -wfdb-10.2.0/wave-doc/guide/icons/prev_gr.png -wfdb-10.2.0/wave-doc/guide/icons/previous.png -wfdb-10.2.0/wave-doc/guide/icons/up_gr.png -wfdb-10.2.0/wave-doc/guide/icons/up.png -wfdb-10.2.0/wave-doc/guide/icons/wave.png -wfdb-10.2.0/wave-doc/guide/.latex2html-init -wfdb-10.2.0/wave-doc/guide/Makefile -wfdb-10.2.0/wave-doc/guide/manhtml -wfdb-10.2.0/wave-doc/guide/saveroot -wfdb-10.2.0/wave-doc/guide/savewin -wfdb-10.2.0/wave-doc/guide/stdev.c -wfdb-10.2.0/wave-doc/guide/wave2d -wfdb-10.2.0/wave-doc/guide/wug.tex -wfdb-10.2.0/wave-doc/guide/xview.7 -wfdb-10.2.0/wave-doc/guide/xwdtops -wfdb-10.2.0/wave-doc/guide/xwdtops-grey -wfdb-10.2.0/wave-doc/Makefile -wfdb-10.2.0/wave-doc/ppm/ -wfdb-10.2.0/wave-doc/ppm/allow-edit.ppm.gz -wfdb-10.2.0/wave-doc/ppm/attach-to-signals.ppm.gz -wfdb-10.2.0/wave-doc/ppm/calibrate.ppm.gz -wfdb-10.2.0/wave-doc/ppm/file-analyze.ppm.gz -wfdb-10.2.0/wave-doc/ppm/file-load.ppm.gz -wfdb-10.2.0/wave-doc/ppm/file-print.ppm.gz -wfdb-10.2.0/wave-doc/ppm/file-save.ppm.gz -wfdb-10.2.0/wave-doc/ppm/find-window.ppm.gz -wfdb-10.2.0/wave-doc/ppm/help-topics.ppm.gz -wfdb-10.2.0/wave-doc/ppm/level-window.ppm.gz -wfdb-10.2.0/wave-doc/ppm/log-window.ppm.gz -wfdb-10.2.0/wave-doc/ppm/main-control-panel.ppm.gz -wfdb-10.2.0/wave-doc/ppm/main-window.ppm.gz -wfdb-10.2.0/wave-doc/ppm/main-with-markers.ppm.gz -wfdb-10.2.0/wave-doc/ppm/Makefile -wfdb-10.2.0/wave-doc/ppm/mimic.ppm.gz -wfdb-10.2.0/wave-doc/ppm/netscape-new-helper.ppm.gz -wfdb-10.2.0/wave-doc/ppm/print-setup-window.ppm.gz -wfdb-10.2.0/wave-doc/ppm/scope-window.ppm.gz -wfdb-10.2.0/wave-doc/ppm/search-template.ppm.gz -wfdb-10.2.0/wave-doc/ppm/stdev.ppm.gz -wfdb-10.2.0/wave-doc/ppm/titlebar.ppm.gz -wfdb-10.2.0/wave-doc/ppm/title-with-parens.ppm.gz -wfdb-10.2.0/wave-doc/ppm/type-menu.ppm.gz -wfdb-10.2.0/wave-doc/ppm/wave-icon.ppm.gz -wfdb-10.2.0/wave-doc/ppm/wave-menu.ppm.gz -wfdb-10.2.0/wave/edit.c -wfdb-10.2.0/wave/editing.hlp -wfdb-10.2.0/wave/faq.hlp -wfdb-10.2.0/wave/gcc-patches -wfdb-10.2.0/wave/grid.c -wfdb-10.2.0/wave/help.c -wfdb-10.2.0/wave/helppan.c -wfdb-10.2.0/wave/init.c -wfdb-10.2.0/wave/intro.hlp -wfdb-10.2.0/wave/log.hlp -wfdb-10.2.0/wave/logpan.c -wfdb-10.2.0/wave/mainpan.c -wfdb-10.2.0/wave/Makefile -wfdb-10.2.0/wave/Makefile.top -wfdb-10.2.0/wave/Makefile.tpl -wfdb-10.2.0/wave/makewave -wfdb-10.2.0/wave/mglass_mask.xbm -wfdb-10.2.0/wave/mglass.xbm -wfdb-10.2.0/wave/modepan.c -wfdb-10.2.0/wave/nomake -wfdb-10.2.0/wave/printing.hlp -wfdb-10.2.0/waverc/ -wfdb-10.2.0/waverc/Makefile -wfdb-10.2.0/waverc/Makefile.top -wfdb-10.2.0/waverc/Makefile.tpl -wfdb-10.2.0/waverc/urlvhead -wfdb-10.2.0/waverc/wave-remote.c -wfdb-10.2.0/waverc/wave-remote-test.c -wfdb-10.2.0/waverc/wavescript.c -wfdb-10.2.0/wave/README -wfdb-10.2.0/wave/resource.hlp -wfdb-10.2.0/wave/scope.c -wfdb-10.2.0/wave/search.c -wfdb-10.2.0/wave/sig.c -wfdb-10.2.0/wave/soelim.c -wfdb-10.2.0/wave/wave.c -wfdb-10.2.0/wave/wave.h -wfdb-10.2.0/wave/wave.hl0 -wfdb-10.2.0/wave/wave.inf -wfdb-10.2.0/wave/wave.info -wfdb-10.2.0/wave/wavemenu.def -wfdb-10.2.0/wave/wave.prf -wfdb-10.2.0/wave/Wave.res -wfdb-10.2.0/wave/wave.xbm -wfdb-10.2.0/wave/xvwave.c -wfdb-10.2.0/wave/xvwave.h -wfdb-10.2.0/wview/ -wfdb-10.2.0/wview/clean -wfdb-10.2.0/wview/ecg.ico -wfdb-10.2.0/wview/html/ -wfdb-10.2.0/wview/html/addnft1.png -wfdb-10.2.0/wview/html/addnft2.png -wfdb-10.2.0/wview/html/addnft3.png -wfdb-10.2.0/wview/html/addnft4.png -wfdb-10.2.0/wview/html/addnft5.png -wfdb-10.2.0/wview/html/addnft6.png -wfdb-10.2.0/wview/html/example.xws -wfdb-10.2.0/wview/html/wave.png -wfdb-10.2.0/wview/html/wvsetup.ht0 -wfdb-10.2.0/wview/makefile -wfdb-10.2.0/wview/wview.c -wfdb-10.2.0/wview/wview.def -wfdb-10.2.0/wview/wview.h -wfdb-10.2.0/wview/wview.hlp -wfdb-10.2.0/wview/wview.hpj -wfdb-10.2.0/wview/wview.rc -wfdb-10.2.0/wview/wview.rtf -wfdb-10.2.0/wview/wvscript.c + +app/ +app/12lead.pro +app/ann2rr.c +app/bxb.c +app/calsig.c +app/cshsetwfdb +app/ecgeval.c +app/epic.c +app/fir.c +app/ihr.c +app/Makefile +app/Makefile.dos +app/Makefile.top +app/Makefile.tpl +app/mfilt.c +app/mrgann.c +app/mxm.c +app/nst.c +app/plotstm.c +app/pscgen.c +app/pschart.c +app/pschart.pro +app/psfd.c +app/psfd.pro +app/rdann.c +app/rdsamp.c +app/README +app/rr2ann.c +app/rxr.c +app/sampfreq.c +app/sample8.hea +app/sample.c +app/setwfdb +app/setwfdb.bat +app/sigamp.c +app/skewedit.c +app/snip.c +app/sortann.c +app/sqrs125.c +app/sqrs.c +app/sumann.c +app/sumstats.c +app/tach.c +app/view.c +app/vsetup.c +app/wfdbcat.c +app/wfdbcollate.c +app/wfdbdesc.c +app/wfdbwhich.c +app/wrann.c +app/wrsamp.c +app/wvscript.c +app/xform.c +check-manifest +checkpkg/ +checkpkg/appcheck +checkpkg/expected/ +checkpkg/expected/100s.a2r +checkpkg/expected/100s.mix +checkpkg/expected/100s.qrs +checkpkg/expected/100s.wra +checkpkg/expected/100w.dat +checkpkg/expected/100w.hea +checkpkg/expected/100x.atr +checkpkg/expected/100x.dat +checkpkg/expected/100x.hea +checkpkg/expected/100z.hea +checkpkg/expected/ann2rr.out +checkpkg/expected/bxb.out +checkpkg/expected/ecgeval.out +checkpkg/expected/fir.dat +checkpkg/expected/fir.hea +checkpkg/expected/ihr.out +checkpkg/expected/lcheck.log-NETFILES +checkpkg/expected/lcheck.log-no-NETFILES +checkpkg/expected/mfilt.dat +checkpkg/expected/mfilt.hea +checkpkg/expected/pschart.ps +checkpkg/expected/psfd.ps +checkpkg/expected/rdann.out +checkpkg/expected/rdsamp.out +checkpkg/expected/rxr.out +checkpkg/expected/sampfreq.out +checkpkg/expected/sigamp.out +checkpkg/expected/snip.atr +checkpkg/expected/snip.dat +checkpkg/expected/snip.hea +checkpkg/expected/sumann.out +checkpkg/expected/sumstats.out +checkpkg/expected/tach.out +checkpkg/expected/udb/ +checkpkg/expected/udb/100z.hea +checkpkg/expected/wfd00001.dat +checkpkg/expected/wfd00001.hea +checkpkg/expected/wfd00002.dat +checkpkg/expected/wfd00002.hea +checkpkg/expected/wfdbcat.out +checkpkg/expected/wfdbdesc.out +checkpkg/expected/wfdbwhich.out +checkpkg/expected/wfd.hea +checkpkg/expected/xform-1.out +checkpkg/expected/xform-2.out +checkpkg/expected/xform.all +checkpkg/expected/xform.dat +checkpkg/expected/xform.hea +checkpkg/input/ +checkpkg/input/100x.hea +checkpkg/input/ecgeval +checkpkg/input/sumstats +checkpkg/input/xform +checkpkg/lcheck.c +checkpkg/libcheck +checkpkg/Makefile +checkpkg/Makefile.top +checkpkg/Makefile.tpl +conf/ +conf/cygwin.def +conf/exestrip +conf/generic.def +conf/generic-slib.def +conf/hpux.def +conf/hpux-slib.def +configure +conf/linux.def +conf/linux-slib.def +conf/solaris.def +conf/solaris-slib.def +conf/version.def +convert/ +convert/a2m.c +convert/ad2m.c +convert/edf2mit.c +convert/m2a.c +convert/Makefile +convert/Makefile.dos +convert/Makefile.top +convert/Makefile.tpl +convert/makeid.c +convert/md2a.c +convert/readid.c +convert/README +convert/revise.c +COPYING +data/ +data/100s.atr +data/100s.dat +data/100s.hea +data/16.hea +data/16l.hea +data/8.hea +data/8l.hea +data/ahalist +data/ahaxlist +data/culist +data/dblist +data/esclist +data/Makefile +data/Makefile.dos +data/Makefile.top +data/Makefile.tpl +data/mitlist +data/mitxlist +data/multi.hea +data/nstlist +data/null.hea +data/pipe/ +data/pipe/16x10.hea +data/pipe/16x11.hea +data/pipe/16x12.hea +data/pipe/16x13.hea +data/pipe/16x14.hea +data/pipe/16x15.hea +data/pipe/16x16.hea +data/pipe/16x1.hea +data/pipe/16x2.hea +data/pipe/16x3.hea +data/pipe/16x4.hea +data/pipe/16x5.hea +data/pipe/16x6.hea +data/pipe/16x7.hea +data/pipe/16x8.hea +data/pipe/16x9.hea +data/pipe/8x10.hea +data/pipe/8x11.hea +data/pipe/8x12.hea +data/pipe/8x13.hea +data/pipe/8x14.hea +data/pipe/8x15.hea +data/pipe/8x16.hea +data/pipe/8x1.hea +data/pipe/8x2.hea +data/pipe/8x3.hea +data/pipe/8x4.hea +data/pipe/8x5.hea +data/pipe/8x6.hea +data/pipe/8x7.hea +data/pipe/8x8.hea +data/pipe/8x9.hea +data/README +data/tape/ +data/tape/102040.hea +data/tape/1024.hea +data/tape/4096.hea +data/tape/512.hea +data/tape/6144d.hea +data/tape/ahatape.hea +data/tape/mittape.hea +data/wfdbcal +data/wfdbpath.mac +doc/ +doc/a2m.1 +doc/ann2rr.1 +doc/annot.5 +doc/appguide.int +doc/bxb.1 +doc/calsig.1 +doc/coherence.1 +doc/cover.ag +doc/cover.pg +doc/ctotexi.c +doc/dbag.ht0 +doc/dbag.tex +doc/dbu.hlp +doc/dbu.ht0 +doc/dbu.tex +doc/dfa.1 +doc/dir.db +doc/dir.top +doc/ecgeval.1 +doc/epic.1 +doc/eval.tex +doc/fft.1 +doc/fir.1 +doc/fixag.sed +doc/fixag.sh +doc/fixpg.sed +doc/fixpg.sh +doc/foot.ht0 +doc/header.5 +doc/hrfft.1 +doc/icons/ +doc/icons/contents.png +doc/icons/cross_ref.png +doc/icons/foot.png +doc/icons/next_gr.png +doc/icons/next.png +doc/icons/prev_gr.png +doc/icons/previous.png +doc/icons/up_gr.png +doc/icons/up.png +doc/ihr.1 +doc/index.ht0 +doc/install.tex +doc/intro.ht0 +doc/.latex2html-init +doc/log10.1 +doc/lomb.1 +doc/Makefile +doc/Makefile.top +doc/Makefile.tpl +doc/makeinfo.sh +doc/manhtml.sh +doc/maninst.sh +doc/memse.1 +doc/mfilt.1 +doc/mrgann.1 +doc/mxm.1 +doc/nst.1 +doc/plot2d.1 +doc/plotstm.1 +doc/plt.1 +doc/pschart.1 +doc/psfd.1 +doc/rdann.1 +doc/rdsamp.1 +doc/README +doc/rxr.1 +doc/sampfreq.1 +doc/sample.1 +doc/setwfdb.1 +doc/sigamp.1 +doc/signal.5 +doc/skewedit.1 +doc/snip.1 +doc/sortann.1 +doc/sqrs.1 +doc/sumann.1 +doc/sumstats.1 +doc/tach.1 +doc/texi2html +doc/texindex.c +doc/tmac.dif +doc/view.1 +doc/wave.1 +doc/wfdb.3 +doc/wfdbcal.5 +doc/wfdbcat.1 +doc/wfdbcollate.1 +doc/wfdbdesc.1 +doc/wfdbwhich.1 +doc/wrann.1 +doc/wrsamp.1 +doc/wview.1 +doc/xform.1 +examples/ +examples/dblibver.c +examples/example10.c +examples/example1.c +examples/example2.c +examples/example3.c +examples/example4.c +examples/example5.c +examples/example6.c +examples/example7.c +examples/example8.c +examples/example9.c +examples/exannstr.c +examples/exgetvec.c +examples/exputvec.c +examples/Makefile +examples/Makefile.dos +examples/Makefile.top +examples/Makefile.tpl +examples/psamples.c +examples/README +examples/refhr.c +fortran/ +fortran/example.f +fortran/fsamples.f +fortran/Makefile +fortran/README +fortran/wfdbf.c +INSTALL +install.sh +lib/ +lib/annot.c +lib/calib.c +lib/COPYING.LIB +lib/db.h +lib/ecgcodes.h +lib/ecgmap.h +lib/Makefile +lib/Makefile.dos +lib/Makefile.top +lib/Makefile.tpl +lib/makelib +lib/README +lib/signal.c +lib/twfdbdll.def +lib/wfdbdll.def +lib/wfdb.h +lib/wfdbinit.c +lib/wfdbio.c +lib/wfdblib.h +lib/wfdblib.h0 +Makefile +Makefile.top +Makefile.tpl +MANIFEST +NEWS +psd/ +psd/coherence.c +psd/fft.c +psd/hrfft +psd/hrlomb +psd/hrmem +psd/hrplot +psd/log10.c +psd/lomb.c +psd/Makefile +psd/Makefile.dos +psd/Makefile.top +psd/Makefile.tpl +psd/memse.c +psd/plot2d +psd/plot3d +psd/README +README +README.NETFILES +uninstall.sh +wave/ +wave/analysis.hlp +wave/analyze.c +wave/annot.c +wave/annpan.c +wave/anntab +wave/bitmaps.h +wave/buttons.hlp +wave/demo.txt +wave-doc/ +wave-doc/color/ +wave-doc/color/allow-edit.ps +wave-doc/color/calibrate.ps +wave-doc/color/file-analyze.ps +wave-doc/color/file-load.ps +wave-doc/color/file-print.ps +wave-doc/color/file-save.ps +wave-doc/color/find-window.ps +wave-doc/color/help-topics.ps +wave-doc/color/level-window.ps +wave-doc/color/main-control-panel.ps +wave-doc/color/main-window.ps +wave-doc/color/main-with-hr.ps +wave-doc/color/main-with-markers.ps +wave-doc/color/Makefile +wave-doc/color/mimic.ps +wave-doc/color/netscape-new-helper.ps +wave-doc/color/print-setup-window.ps +wave-doc/color/scope-window.ps +wave-doc/color/search-template.ps +wave-doc/color/stdev.ps +wave-doc/color/titlebar.ps +wave-doc/color/title-with-parens.ps +wave-doc/color/type-menu.ps +wave-doc/color/wave-icon.ps +wave-doc/color/wave-menu.ps +wave-doc/grey/ +wave-doc/grey/allow-edit.ps +wave-doc/grey/analysis-commands.ps +wave-doc/grey/analyze-window.ps +wave-doc/grey/annotation-template.ps +wave-doc/grey/attach-to-signals.ps +wave-doc/grey/calibrate.ps +wave-doc/grey/chart1.ps +wave-doc/grey/chart2.ps +wave-doc/grey/file-analyze.ps +wave-doc/grey/file-load.ps +wave-doc/grey/file-print.ps +wave-doc/grey/file-save.ps +wave-doc/grey/find-window.ps +wave-doc/grey/fulldisc.ps +wave-doc/grey/help-intro.ps +wave-doc/grey/help-topics.ps +wave-doc/grey/level-window.ps +wave-doc/grey/load-window.ps +wave-doc/grey/log-window.ps +wave-doc/grey/main-control-panel.ps +wave-doc/grey/main-window.ps +wave-doc/grey/main-with-hr.ps +wave-doc/grey/main-with-markers.ps +wave-doc/grey/Makefile +wave-doc/grey/mimic.ps +wave-doc/grey/netscape-new-helper.ps +wave-doc/grey/noedit.ps +wave-doc/grey/nomatch.ps +wave-doc/grey/notice-quit.ps +wave-doc/grey/print-setup-window.ps +wave-doc/grey/scope-window.ps +wave-doc/grey/search-template.ps +wave-doc/grey/spot-help.ps +wave-doc/grey/stdev.ps +wave-doc/grey/system-menu.ps +wave-doc/grey/titlebar.ps +wave-doc/grey/title-with-parens.ps +wave-doc/grey/type-menu.ps +wave-doc/grey/view-window.ps +wave-doc/grey/wave-icon.ps +wave-doc/grey/wave-menu.ps +wave-doc/guide/ +wave-doc/guide/chart2.png +wave-doc/guide/cover.wug +wave-doc/guide/dossify-html +wave-doc/guide/example.xws +wave-doc/guide/fancybox.perl +wave-doc/guide/fixindex +wave-doc/guide/fixinfo +wave-doc/guide/fixlinks +wave-doc/guide/fulldisc.png +wave-doc/guide/html.sty +wave-doc/guide/icons/ +wave-doc/guide/icons/contents.png +wave-doc/guide/icons/cross_ref.png +wave-doc/guide/icons/foot.png +wave-doc/guide/icons/index.png +wave-doc/guide/icons/next_gr.png +wave-doc/guide/icons/next.png +wave-doc/guide/icons/prev_gr.png +wave-doc/guide/icons/previous.png +wave-doc/guide/icons/up_gr.png +wave-doc/guide/icons/up.png +wave-doc/guide/icons/wave.png +wave-doc/guide/.latex2html-init +wave-doc/guide/Makefile +wave-doc/guide/manhtml +wave-doc/guide/saveroot +wave-doc/guide/savewin +wave-doc/guide/stdev.c +wave-doc/guide/wave2d +wave-doc/guide/wug.tex +wave-doc/guide/xview.7 +wave-doc/guide/xwdtops +wave-doc/guide/xwdtops-grey +wave-doc/Makefile +wave-doc/ppm/ +wave-doc/ppm/allow-edit.ppm.gz +wave-doc/ppm/attach-to-signals.ppm.gz +wave-doc/ppm/calibrate.ppm.gz +wave-doc/ppm/file-analyze.ppm.gz +wave-doc/ppm/file-load.ppm.gz +wave-doc/ppm/file-print.ppm.gz +wave-doc/ppm/file-save.ppm.gz +wave-doc/ppm/find-window.ppm.gz +wave-doc/ppm/help-topics.ppm.gz +wave-doc/ppm/level-window.ppm.gz +wave-doc/ppm/log-window.ppm.gz +wave-doc/ppm/main-control-panel.ppm.gz +wave-doc/ppm/main-window.ppm.gz +wave-doc/ppm/main-with-markers.ppm.gz +wave-doc/ppm/Makefile +wave-doc/ppm/mimic.ppm.gz +wave-doc/ppm/netscape-new-helper.ppm.gz +wave-doc/ppm/print-setup-window.ppm.gz +wave-doc/ppm/scope-window.ppm.gz +wave-doc/ppm/search-template.ppm.gz +wave-doc/ppm/stdev.ppm.gz +wave-doc/ppm/titlebar.ppm.gz +wave-doc/ppm/title-with-parens.ppm.gz +wave-doc/ppm/type-menu.ppm.gz +wave-doc/ppm/wave-icon.ppm.gz +wave-doc/ppm/wave-menu.ppm.gz +wave/edit.c +wave/editing.hlp +wave/faq.hlp +wave/grid.c +wave/help.c +wave/helppan.c +wave/init.c +wave/intro.hlp +wave/log.hlp +wave/logpan.c +wave/mainpan.c +wave/Makefile +wave/Makefile.top +wave/Makefile.tpl +wave/makewave +wave/mglass_mask.xbm +wave/mglass.xbm +wave/modepan.c +wave/nomake +wave/printing.hlp +waverc/ +waverc/Makefile +waverc/Makefile.top +waverc/Makefile.tpl +waverc/urlvhead +waverc/wave-remote.c +waverc/wave-remote-test.c +waverc/wavescript.c +wave/README +wave/resource.hlp +wave/scope.c +wave/search.c +wave/sig.c +wave/soelim.c +wave/wave.c +wave/wave.h +wave/wave.hl0 +wave/wave.inf +wave/wave.info +wave/wavemenu.def +wave/wave.prf +wave/Wave.res +wave/wave.xbm +wave/xview-patches +wave/xvwave.c +wave/xvwave.h +wview/ +wview/clean +wview/ecg.ico +wview/html/ +wview/html/addnft1.png +wview/html/addnft2.png +wview/html/addnft3.png +wview/html/addnft4.png +wview/html/addnft5.png +wview/html/addnft6.png +wview/html/example.xws +wview/html/wave.png +wview/html/wvsetup.ht0 +wview/makefile +wview/wview.c +wview/wview.def +wview/wview.h +wview/wview.hlp +wview/wview.hpj +wview/wview.rc +wview/wview.rtf +wview/wvscript.c diff -Naur wfdb-10.2.0/Makefile wfdb-10.2.1/Makefile --- wfdb-10.2.0/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/Makefile Fri Nov 16 16:18:44 2001 @@ -39,12 +39,12 @@ # create source archives, type `make tarballs'; or to make a binary archive, # type `make bin-tarball'. Making archives requires PGP, gzip, and GNU tar). # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -52,7 +52,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux @@ -274,7 +274,8 @@ # is correct. tarballs: clean cd ..; tar --create --file $(PACKAGE).tar.gz --verbose --gzip \ - '--exclude=$(PACKAGE)/*CVS' $(PACKAGE) | tee $(PACKAGE)-MANIFEST + '--exclude=$(PACKAGE)/*CVS' $(PACKAGE) | sed s+${PACKAGE}/++ | \ + tee $(PACKAGE)-MANIFEST cd ..; tar --create --file $(PACKAGE)-no-docs.tar.gz \ --verbose --gzip \ '--exclude=$(PACKAGE)/*doc' \ diff -Naur wfdb-10.2.0/Makefile.tpl wfdb-10.2.1/Makefile.tpl --- wfdb-10.2.0/Makefile.tpl Mon Oct 15 13:37:09 2001 +++ wfdb-10.2.1/Makefile.tpl Fri Nov 16 16:18:37 2001 @@ -106,7 +106,8 @@ # is correct. tarballs: clean cd ..; tar --create --file $(PACKAGE).tar.gz --verbose --gzip \ - '--exclude=$(PACKAGE)/*CVS' $(PACKAGE) | tee $(PACKAGE)-MANIFEST + '--exclude=$(PACKAGE)/*CVS' $(PACKAGE) | sed s+${PACKAGE}/++ | \ + tee $(PACKAGE)-MANIFEST cd ..; tar --create --file $(PACKAGE)-no-docs.tar.gz \ --verbose --gzip \ '--exclude=$(PACKAGE)/*doc' \ diff -Naur wfdb-10.2.0/NEWS wfdb-10.2.1/NEWS --- wfdb-10.2.0/NEWS Mon Oct 15 13:42:22 2001 +++ wfdb-10.2.1/NEWS Wed Nov 7 14:37:49 2001 @@ -1,3 +1,13 @@ +10.2.1: + Most users will no longer need to set the WFDB path explicitly, as a + result of several minor changes in the default path and in the + installer for the WFDB Software Package. + + The environment variable WFDBNOSORT was replaced by WFDBANNSORT, and + the environment variable WFDBGVMODE was introduced (see 'Annotation + Order' and 'Multi-Frequency Records', in the WFDB Programmer's Guide, + for details). + 10.2.0: The 10.2 series differs from all earlier releases in that the WFDB library no longer imposes any fixed limits on the numbers of annotators diff -Naur wfdb-10.2.0/app/Makefile wfdb-10.2.1/app/Makefile --- wfdb-10.2.0/app/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/app/Makefile Fri Nov 16 16:18:43 2001 @@ -33,12 +33,12 @@ # type `make listing'. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -46,7 +46,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux diff -Naur wfdb-10.2.0/app/bxb.c wfdb-10.2.1/app/bxb.c --- wfdb-10.2.0/app/bxb.c Wed Feb 9 22:18:02 2000 +++ wfdb-10.2.1/app/bxb.c Wed Nov 7 10:58:28 2001 @@ -1,9 +1,9 @@ /* file: bxb.c G. Moody 14 December 1987 - Last revised: 9 February 2000 + Last revised: 7 November 2001 ------------------------------------------------------------------------------- bxb: ANSI/AAMI-standard beat-by-beat annotation file comparator -Copyright (C) 2000 George B. Moody +Copyright (C) 2001 George B. Moody This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -27,8 +27,8 @@ AAMI/ANSI EC38:1998, the American National Standard for ambulatory ECGs, and in AAMI EC57:1998, the American National Standard for Testing and Reporting Performance Results of Cardiac Rhythm and ST Segment Measurement Algorithms. -These standards are available from AAMI, Suite 400, 3330 Washington Blvd., -Arlington, VA 22201 USA (http://www.aami.org/) +These standards are available from AAMI, 1110 N Glebe Road, Suite 220, +Arlington, VA 22201 USA (http://www.aami.org/). The -f, -O, -t, and -w options modify the comparison algorithm used by bxb in ways not permitted by EC38:1998 or EC57:1998. These options are provided for diff -Naur wfdb-10.2.0/app/epic.c wfdb-10.2.1/app/epic.c --- wfdb-10.2.0/app/epic.c Wed Mar 21 12:27:13 2001 +++ wfdb-10.2.1/app/epic.c Wed Nov 7 10:58:58 2001 @@ -1,9 +1,9 @@ /* file: epic.c G. Moody 3 March 1992 - Last revised: 4 May 1999 + Last revised: 7 November 2001 ------------------------------------------------------------------------------- epic: ANSI/AAMI-standard episode-by-episode annotation file comparator -Copyright (C) 1999 George B. Moody +Copyright (C) 2001 George B. Moody This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -27,10 +27,12 @@ algorithms described in ANSI/AAMI EC38:1998, the American National Standard for Ambulatory electrocardiographs and ANSI/AAMI EC57:1998, the American National Standard for Testing and reporting performance results of cardiac rhythm and -ST segment measurement algorithms (both available from AAMI, Suite 400, 3330 -Washington Blvd., Arlington, VA 22201 USA). The relevant provisions of these -standards are described in file `eval.doc'. Information about using this -program is contained in file `epic.1'. +ST segment measurement algorithms; both standards are available from AAMI, +1110 N Glebe Road, Suite 220, Arlington, VA 22201 USA (http://www.aami.org/). +The relevant provisions of these standards are described in file `eval.tex', +and information about using this program is contained in file `epic.1' (both +of these files are included in the 'doc' directory of the WFDB Software +Package). The -f and -t options modify the comparison algorithm used by epic in ways not permitted by these standards. These options are provided for the use of diff -Naur wfdb-10.2.0/app/rxr.c wfdb-10.2.1/app/rxr.c --- wfdb-10.2.0/app/rxr.c Wed Feb 9 22:17:01 2000 +++ wfdb-10.2.1/app/rxr.c Wed Nov 7 10:59:15 2001 @@ -1,9 +1,9 @@ /* file: rxr.c G. Moody 16 August 1989 - Last revised: 9 February 2000 + Last revised: 7 November 2001 ------------------------------------------------------------------------------- rxr: ANSI/AAMI-standard run-by-run annotation file comparator -Copyright (C) 2000 George B. Moody +Copyright (C) 2001 George B. Moody This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -27,7 +27,7 @@ AAMI/ANSI EC38:1998, the American National Standard for ambulatory ECGs, and in AAMI EC57:1998, the American National Standard for Testing and Reporting Performance Results of Cardiac Rhythm and ST Segment Measurement Algorithms. -These standards are available from AAMI, Suite 400, 3330 Washington Blvd., +These standards are available from AAMI, 1110 N Glebe Road, Suite 220, Arlington, VA 22201 USA (http://www.aami.org/) The -f, -t, and -w options modify the comparison algorithm used by rxr in ways diff -Naur wfdb-10.2.0/app/sumstats.c wfdb-10.2.1/app/sumstats.c --- wfdb-10.2.0/app/sumstats.c Wed Feb 9 22:06:48 2000 +++ wfdb-10.2.1/app/sumstats.c Wed Nov 7 10:59:34 2001 @@ -1,8 +1,8 @@ /* file: sumstats.c G. Moody 17 August 1989 - Last revised: 9 February 2000 + Last revised: 7 November 2001 ------------------------------------------------------------------------------- sumstats: Derive aggregate statistics from bxb, rxr, or epic line-format output -Copyright (C) 2000 George B. Moody +Copyright (C) 2001 George B. Moody This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -28,8 +28,7 @@ EC57:1998, based on the earlier AAMI ECAR:1987), and in sections 4.2.14.4.1 and 4.2.14.4.2 of the American National Standard, "Ambulatory electrocardio- graphs" (ANSI/AAMI EC38:1998). These standards are available from AAMI, -Suite 400, 3330 Washington Blvd., Arlington, VA 22201 USA -(http://www.aami.org/). +1110 N Glebe Road, Suite 220, Arlington, VA 22201 USA (http://www.aami.org/). */ #include diff -Naur wfdb-10.2.0/checkpkg/Makefile wfdb-10.2.1/checkpkg/Makefile --- wfdb-10.2.0/checkpkg/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/checkpkg/Makefile Fri Nov 16 16:18:43 2001 @@ -31,12 +31,12 @@ # directory). To print a set of source listings, type `make listing'. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -44,7 +44,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux diff -Naur wfdb-10.2.0/checkpkg/expected/lcheck.log-NETFILES wfdb-10.2.1/checkpkg/expected/lcheck.log-NETFILES --- wfdb-10.2.0/checkpkg/expected/lcheck.log-NETFILES Tue Sep 11 10:03:44 2001 +++ wfdb-10.2.1/checkpkg/expected/lcheck.log-NETFILES Wed Nov 7 16:53:27 2001 @@ -10,7 +10,7 @@ [OK]: WFDB_DEFFREQ = 250 [OK]: WFDB_DEFGAIN = 200 [OK]: WFDB_DEFRES = 12 -[OK]: Default WFDB path = . http://www.physionet.org/physiobank/database +[OK]: Default WFDB path = . /usr/database http://www.physionet.org/physiobank/database [OK]: WFDB path modified successfully [OK]: sampfreq(NULL) returned 0 [OK]: setsampfreq changed sampling frequency successfully diff -Naur wfdb-10.2.0/checkpkg/expected/lcheck.log-no-NETFILES wfdb-10.2.1/checkpkg/expected/lcheck.log-no-NETFILES --- wfdb-10.2.0/checkpkg/expected/lcheck.log-no-NETFILES Tue Sep 11 10:03:57 2001 +++ wfdb-10.2.1/checkpkg/expected/lcheck.log-no-NETFILES Wed Nov 7 16:54:02 2001 @@ -10,7 +10,7 @@ [OK]: WFDB_DEFFREQ = 250 [OK]: WFDB_DEFGAIN = 200 [OK]: WFDB_DEFRES = 12 -[OK]: Default WFDB path = . http://www.physionet.org/physiobank/database +[OK]: Default WFDB path = . /usr/database http://www.physionet.org/physiobank/database [OK]: WFDB path modified successfully [OK]: sampfreq(NULL) returned 0 [OK]: setsampfreq changed sampling frequency successfully diff -Naur wfdb-10.2.0/conf/version.def wfdb-10.2.1/conf/version.def --- wfdb-10.2.0/conf/version.def Tue Aug 14 10:07:14 2001 +++ wfdb-10.2.1/conf/version.def Wed Nov 7 22:21:35 2001 @@ -1,10 +1,10 @@ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables diff -Naur wfdb-10.2.0/configure wfdb-10.2.1/configure --- wfdb-10.2.0/configure Fri Sep 7 11:35:59 2001 +++ wfdb-10.2.1/configure Thu Oct 25 15:06:18 2001 @@ -199,6 +199,10 @@ rm conf/site.def conf/site-slib.def echo +echo "Adding $DIR/database to the default WFDB path ..." +sed "s+DBDIR+$DIR/database+" lib/wfdblib.h + +echo echo "Looking for the XView libraries ..." if [ -d /usr/openwin -o -d /usr/local/openwin -o -d /opt/openwin ] then diff -Naur wfdb-10.2.0/convert/Makefile wfdb-10.2.1/convert/Makefile --- wfdb-10.2.0/convert/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/convert/Makefile Fri Nov 16 16:18:43 2001 @@ -33,12 +33,12 @@ # type `make listing'. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -46,7 +46,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux diff -Naur wfdb-10.2.0/data/16x1.hea wfdb-10.2.1/data/16x1.hea --- wfdb-10.2.0/data/16x1.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x1.hea Wed Dec 31 19:00:00 1969 @@ -1,4 +0,0 @@ -# Use this record to read or write 1 signal via standard I/O. - -16x1 1 -- 16 diff -Naur wfdb-10.2.0/data/16x10.hea wfdb-10.2.1/data/16x10.hea --- wfdb-10.2.0/data/16x10.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x10.hea Wed Dec 31 19:00:00 1969 @@ -1,13 +0,0 @@ -# Use this record to read or write 10 signals via standard I/O. - -16x10 10 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x11.hea wfdb-10.2.1/data/16x11.hea --- wfdb-10.2.0/data/16x11.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x11.hea Wed Dec 31 19:00:00 1969 @@ -1,14 +0,0 @@ -# Use this record to read or write 11 signals via standard I/O. - -16x11 11 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x12.hea wfdb-10.2.1/data/16x12.hea --- wfdb-10.2.0/data/16x12.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x12.hea Wed Dec 31 19:00:00 1969 @@ -1,15 +0,0 @@ -# Use this record to read or write 12 signals via standard I/O. - -16x12 12 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x13.hea wfdb-10.2.1/data/16x13.hea --- wfdb-10.2.0/data/16x13.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x13.hea Wed Dec 31 19:00:00 1969 @@ -1,16 +0,0 @@ -# Use this record to read or write 13 signals via standard I/O. - -16x13 13 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x14.hea wfdb-10.2.1/data/16x14.hea --- wfdb-10.2.0/data/16x14.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x14.hea Wed Dec 31 19:00:00 1969 @@ -1,17 +0,0 @@ -# Use this record to read or write 14 signals via standard I/O. - -16x14 14 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x15.hea wfdb-10.2.1/data/16x15.hea --- wfdb-10.2.0/data/16x15.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x15.hea Wed Dec 31 19:00:00 1969 @@ -1,18 +0,0 @@ -# Use this record to read or write 15 signals via standard I/O. - -16x15 15 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x16.hea wfdb-10.2.1/data/16x16.hea --- wfdb-10.2.0/data/16x16.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x16.hea Wed Dec 31 19:00:00 1969 @@ -1,19 +0,0 @@ -# Use this record to read or write 16 signals via standard I/O. - -16x16 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x2.hea wfdb-10.2.1/data/16x2.hea --- wfdb-10.2.0/data/16x2.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x2.hea Wed Dec 31 19:00:00 1969 @@ -1,5 +0,0 @@ -# Use this record to read or write 2 signals via standard I/O. - -16x2 2 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x3.hea wfdb-10.2.1/data/16x3.hea --- wfdb-10.2.0/data/16x3.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x3.hea Wed Dec 31 19:00:00 1969 @@ -1,6 +0,0 @@ -# Use this record to read or write 3 signals via standard I/O. - -16x3 3 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x4.hea wfdb-10.2.1/data/16x4.hea --- wfdb-10.2.0/data/16x4.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x4.hea Wed Dec 31 19:00:00 1969 @@ -1,7 +0,0 @@ -# Use this record to read or write 4 signals via standard I/O. - -16x4 4 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x5.hea wfdb-10.2.1/data/16x5.hea --- wfdb-10.2.0/data/16x5.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x5.hea Wed Dec 31 19:00:00 1969 @@ -1,8 +0,0 @@ -# Use this record to read or write 5 signals via standard I/O. - -16x5 5 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x6.hea wfdb-10.2.1/data/16x6.hea --- wfdb-10.2.0/data/16x6.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x6.hea Wed Dec 31 19:00:00 1969 @@ -1,9 +0,0 @@ -# Use this record to read or write 6 signals via standard I/O. - -16x6 6 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x7.hea wfdb-10.2.1/data/16x7.hea --- wfdb-10.2.0/data/16x7.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x7.hea Wed Dec 31 19:00:00 1969 @@ -1,10 +0,0 @@ -# Use this record to read or write 7 signals via standard I/O. - -16x7 7 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x8.hea wfdb-10.2.1/data/16x8.hea --- wfdb-10.2.0/data/16x8.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x8.hea Wed Dec 31 19:00:00 1969 @@ -1,11 +0,0 @@ -# Use this record to read or write 8 signals via standard I/O. - -16x8 8 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/16x9.hea wfdb-10.2.1/data/16x9.hea --- wfdb-10.2.0/data/16x9.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/16x9.hea Wed Dec 31 19:00:00 1969 @@ -1,12 +0,0 @@ -# Use this record to read or write 9 signals via standard I/O. - -16x9 9 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 -- 16 diff -Naur wfdb-10.2.0/data/8x1.hea wfdb-10.2.1/data/8x1.hea --- wfdb-10.2.0/data/8x1.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x1.hea Wed Dec 31 19:00:00 1969 @@ -1,4 +0,0 @@ -# Use this record to read or write 1 signal via standard I/O. - -8x1 1 -- 8 diff -Naur wfdb-10.2.0/data/8x10.hea wfdb-10.2.1/data/8x10.hea --- wfdb-10.2.0/data/8x10.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x10.hea Wed Dec 31 19:00:00 1969 @@ -1,13 +0,0 @@ -# Use this record to read or write 10 signals via standard I/O. - -8x10 10 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x11.hea wfdb-10.2.1/data/8x11.hea --- wfdb-10.2.0/data/8x11.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x11.hea Wed Dec 31 19:00:00 1969 @@ -1,14 +0,0 @@ -# Use this record to read or write 11 signals via standard I/O. - -8x11 11 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x12.hea wfdb-10.2.1/data/8x12.hea --- wfdb-10.2.0/data/8x12.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x12.hea Wed Dec 31 19:00:00 1969 @@ -1,15 +0,0 @@ -# Use this record to read or write 12 signals via standard I/O. - -8x12 12 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x13.hea wfdb-10.2.1/data/8x13.hea --- wfdb-10.2.0/data/8x13.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x13.hea Wed Dec 31 19:00:00 1969 @@ -1,16 +0,0 @@ -# Use this record to read or write 13 signals via standard I/O. - -8x13 13 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x14.hea wfdb-10.2.1/data/8x14.hea --- wfdb-10.2.0/data/8x14.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x14.hea Wed Dec 31 19:00:00 1969 @@ -1,17 +0,0 @@ -# Use this record to read or write 14 signals via standard I/O. - -8x14 14 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x15.hea wfdb-10.2.1/data/8x15.hea --- wfdb-10.2.0/data/8x15.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x15.hea Wed Dec 31 19:00:00 1969 @@ -1,18 +0,0 @@ -# Use this record to read or write 15 signals via standard I/O. - -8x15 15 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x16.hea wfdb-10.2.1/data/8x16.hea --- wfdb-10.2.0/data/8x16.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x16.hea Wed Dec 31 19:00:00 1969 @@ -1,19 +0,0 @@ -# Use this record to read or write 16 signals via standard I/O. - -8x16 16 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x2.hea wfdb-10.2.1/data/8x2.hea --- wfdb-10.2.0/data/8x2.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x2.hea Wed Dec 31 19:00:00 1969 @@ -1,5 +0,0 @@ -# Use this record to read or write 2 signals via standard I/O. - -8x2 2 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x3.hea wfdb-10.2.1/data/8x3.hea --- wfdb-10.2.0/data/8x3.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x3.hea Wed Dec 31 19:00:00 1969 @@ -1,6 +0,0 @@ -# Use this record to read or write 3 signals via standard I/O. - -8x3 3 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x4.hea wfdb-10.2.1/data/8x4.hea --- wfdb-10.2.0/data/8x4.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x4.hea Wed Dec 31 19:00:00 1969 @@ -1,7 +0,0 @@ -# Use this record to read or write 4 signals via standard I/O. - -8x4 4 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x5.hea wfdb-10.2.1/data/8x5.hea --- wfdb-10.2.0/data/8x5.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x5.hea Wed Dec 31 19:00:00 1969 @@ -1,8 +0,0 @@ -# Use this record to read or write 5 signals via standard I/O. - -8x5 5 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x6.hea wfdb-10.2.1/data/8x6.hea --- wfdb-10.2.0/data/8x6.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x6.hea Wed Dec 31 19:00:00 1969 @@ -1,9 +0,0 @@ -# Use this record to read or write 6 signals via standard I/O. - -8x6 6 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x7.hea wfdb-10.2.1/data/8x7.hea --- wfdb-10.2.0/data/8x7.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x7.hea Wed Dec 31 19:00:00 1969 @@ -1,10 +0,0 @@ -# Use this record to read or write 7 signals via standard I/O. - -8x7 7 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x8.hea wfdb-10.2.1/data/8x8.hea --- wfdb-10.2.0/data/8x8.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x8.hea Wed Dec 31 19:00:00 1969 @@ -1,11 +0,0 @@ -# Use this record to read or write 8 signals via standard I/O. - -8x8 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/8x9.hea wfdb-10.2.1/data/8x9.hea --- wfdb-10.2.0/data/8x9.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/8x9.hea Wed Dec 31 19:00:00 1969 @@ -1,12 +0,0 @@ -# Use this record to read or write 9 signals via standard I/O. - -8x9 9 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 -- 8 diff -Naur wfdb-10.2.0/data/Makefile wfdb-10.2.1/data/Makefile --- wfdb-10.2.0/data/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/data/Makefile Fri Nov 16 16:18:43 2001 @@ -33,12 +33,12 @@ # listing'. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -46,7 +46,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux diff -Naur wfdb-10.2.0/data/ahatape.hea wfdb-10.2.1/data/ahatape.hea --- wfdb-10.2.0/data/ahatape.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/ahatape.hea Wed Dec 31 19:00:00 1969 @@ -1,7 +0,0 @@ -# Use this record on a UNIX system to read directly from a 9-track AHA DB -# distribution tape with 4096-byte blocks. The tape must be positioned to -# the beginning of the ECG data file before using this record. - -ahatape 2 250 -/dev/nrmt0 16 0 12 0 0 0 4096 -/dev/nrmt0 16 0 12 0 0 0 4096 diff -Naur wfdb-10.2.0/data/b.hea wfdb-10.2.1/data/b.hea --- wfdb-10.2.0/data/b.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/b.hea Wed Dec 31 19:00:00 1969 @@ -1,6 +0,0 @@ -# Use this record on a UNIX system to read directly from a 9-track tape with -# 6144-byte blocks containing 2 signals in 8-bit difference format. - -b 2 250 -/dev/rmt0 16 0 12 0 0 0 6144 -/dev/rmt0 16 0 12 0 0 0 6144 diff -Naur wfdb-10.2.0/data/mittape.hea wfdb-10.2.1/data/mittape.hea --- wfdb-10.2.0/data/mittape.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/mittape.hea Wed Dec 31 19:00:00 1969 @@ -1,7 +0,0 @@ -# Use this record on a UNIX system to read directly from a 9-track MIT-BIH DB -# distribution tape with 4096-byte blocks. The tape must be positioned to -# the beginning of the ECG data file before using this record. - -mittape 2 360 -/dev/nrmt0 16 0 11 1024 0 0 4096 -/dev/nrmt0 16 0 11 1024 0 0 4096 diff -Naur wfdb-10.2.0/data/pipe/16x1.hea wfdb-10.2.1/data/pipe/16x1.hea --- wfdb-10.2.0/data/pipe/16x1.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x1.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,4 @@ +# Use this record to read or write 1 signal via standard I/O. + +16x1 1 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x10.hea wfdb-10.2.1/data/pipe/16x10.hea --- wfdb-10.2.0/data/pipe/16x10.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x10.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,13 @@ +# Use this record to read or write 10 signals via standard I/O. + +16x10 10 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x11.hea wfdb-10.2.1/data/pipe/16x11.hea --- wfdb-10.2.0/data/pipe/16x11.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x11.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,14 @@ +# Use this record to read or write 11 signals via standard I/O. + +16x11 11 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x12.hea wfdb-10.2.1/data/pipe/16x12.hea --- wfdb-10.2.0/data/pipe/16x12.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x12.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,15 @@ +# Use this record to read or write 12 signals via standard I/O. + +16x12 12 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x13.hea wfdb-10.2.1/data/pipe/16x13.hea --- wfdb-10.2.0/data/pipe/16x13.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x13.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,16 @@ +# Use this record to read or write 13 signals via standard I/O. + +16x13 13 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x14.hea wfdb-10.2.1/data/pipe/16x14.hea --- wfdb-10.2.0/data/pipe/16x14.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x14.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,17 @@ +# Use this record to read or write 14 signals via standard I/O. + +16x14 14 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x15.hea wfdb-10.2.1/data/pipe/16x15.hea --- wfdb-10.2.0/data/pipe/16x15.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x15.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,18 @@ +# Use this record to read or write 15 signals via standard I/O. + +16x15 15 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x16.hea wfdb-10.2.1/data/pipe/16x16.hea --- wfdb-10.2.0/data/pipe/16x16.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x16.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,19 @@ +# Use this record to read or write 16 signals via standard I/O. + +16x16 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x2.hea wfdb-10.2.1/data/pipe/16x2.hea --- wfdb-10.2.0/data/pipe/16x2.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x2.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,5 @@ +# Use this record to read or write 2 signals via standard I/O. + +16x2 2 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x3.hea wfdb-10.2.1/data/pipe/16x3.hea --- wfdb-10.2.0/data/pipe/16x3.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x3.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,6 @@ +# Use this record to read or write 3 signals via standard I/O. + +16x3 3 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x4.hea wfdb-10.2.1/data/pipe/16x4.hea --- wfdb-10.2.0/data/pipe/16x4.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x4.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,7 @@ +# Use this record to read or write 4 signals via standard I/O. + +16x4 4 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x5.hea wfdb-10.2.1/data/pipe/16x5.hea --- wfdb-10.2.0/data/pipe/16x5.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x5.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,8 @@ +# Use this record to read or write 5 signals via standard I/O. + +16x5 5 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x6.hea wfdb-10.2.1/data/pipe/16x6.hea --- wfdb-10.2.0/data/pipe/16x6.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x6.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,9 @@ +# Use this record to read or write 6 signals via standard I/O. + +16x6 6 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x7.hea wfdb-10.2.1/data/pipe/16x7.hea --- wfdb-10.2.0/data/pipe/16x7.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x7.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,10 @@ +# Use this record to read or write 7 signals via standard I/O. + +16x7 7 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x8.hea wfdb-10.2.1/data/pipe/16x8.hea --- wfdb-10.2.0/data/pipe/16x8.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x8.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,11 @@ +# Use this record to read or write 8 signals via standard I/O. + +16x8 8 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/16x9.hea wfdb-10.2.1/data/pipe/16x9.hea --- wfdb-10.2.0/data/pipe/16x9.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/16x9.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,12 @@ +# Use this record to read or write 9 signals via standard I/O. + +16x9 9 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 +- 16 diff -Naur wfdb-10.2.0/data/pipe/8x1.hea wfdb-10.2.1/data/pipe/8x1.hea --- wfdb-10.2.0/data/pipe/8x1.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x1.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,4 @@ +# Use this record to read or write 1 signal via standard I/O. + +8x1 1 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x10.hea wfdb-10.2.1/data/pipe/8x10.hea --- wfdb-10.2.0/data/pipe/8x10.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x10.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,13 @@ +# Use this record to read or write 10 signals via standard I/O. + +8x10 10 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x11.hea wfdb-10.2.1/data/pipe/8x11.hea --- wfdb-10.2.0/data/pipe/8x11.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x11.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,14 @@ +# Use this record to read or write 11 signals via standard I/O. + +8x11 11 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x12.hea wfdb-10.2.1/data/pipe/8x12.hea --- wfdb-10.2.0/data/pipe/8x12.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x12.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,15 @@ +# Use this record to read or write 12 signals via standard I/O. + +8x12 12 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x13.hea wfdb-10.2.1/data/pipe/8x13.hea --- wfdb-10.2.0/data/pipe/8x13.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x13.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,16 @@ +# Use this record to read or write 13 signals via standard I/O. + +8x13 13 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x14.hea wfdb-10.2.1/data/pipe/8x14.hea --- wfdb-10.2.0/data/pipe/8x14.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x14.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,17 @@ +# Use this record to read or write 14 signals via standard I/O. + +8x14 14 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x15.hea wfdb-10.2.1/data/pipe/8x15.hea --- wfdb-10.2.0/data/pipe/8x15.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x15.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,18 @@ +# Use this record to read or write 15 signals via standard I/O. + +8x15 15 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x16.hea wfdb-10.2.1/data/pipe/8x16.hea --- wfdb-10.2.0/data/pipe/8x16.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x16.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,19 @@ +# Use this record to read or write 16 signals via standard I/O. + +8x16 16 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x2.hea wfdb-10.2.1/data/pipe/8x2.hea --- wfdb-10.2.0/data/pipe/8x2.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x2.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,5 @@ +# Use this record to read or write 2 signals via standard I/O. + +8x2 2 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x3.hea wfdb-10.2.1/data/pipe/8x3.hea --- wfdb-10.2.0/data/pipe/8x3.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x3.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,6 @@ +# Use this record to read or write 3 signals via standard I/O. + +8x3 3 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x4.hea wfdb-10.2.1/data/pipe/8x4.hea --- wfdb-10.2.0/data/pipe/8x4.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x4.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,7 @@ +# Use this record to read or write 4 signals via standard I/O. + +8x4 4 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x5.hea wfdb-10.2.1/data/pipe/8x5.hea --- wfdb-10.2.0/data/pipe/8x5.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x5.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,8 @@ +# Use this record to read or write 5 signals via standard I/O. + +8x5 5 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x6.hea wfdb-10.2.1/data/pipe/8x6.hea --- wfdb-10.2.0/data/pipe/8x6.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x6.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,9 @@ +# Use this record to read or write 6 signals via standard I/O. + +8x6 6 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x7.hea wfdb-10.2.1/data/pipe/8x7.hea --- wfdb-10.2.0/data/pipe/8x7.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x7.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,10 @@ +# Use this record to read or write 7 signals via standard I/O. + +8x7 7 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x8.hea wfdb-10.2.1/data/pipe/8x8.hea --- wfdb-10.2.0/data/pipe/8x8.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x8.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,11 @@ +# Use this record to read or write 8 signals via standard I/O. + +8x8 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/pipe/8x9.hea wfdb-10.2.1/data/pipe/8x9.hea --- wfdb-10.2.0/data/pipe/8x9.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/pipe/8x9.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,12 @@ +# Use this record to read or write 9 signals via standard I/O. + +8x9 9 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 +- 8 diff -Naur wfdb-10.2.0/data/t1024.hea wfdb-10.2.1/data/t1024.hea --- wfdb-10.2.0/data/t1024.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/t1024.hea Wed Dec 31 19:00:00 1969 @@ -1,6 +0,0 @@ -# Use this record on a UNIX system to read directly from a 9-track tape with -# 1024-byte blocks. - -t1024 2 250 -/dev/rmt0 16 0 12 0 0 0 1024 -/dev/rmt0 16 0 12 0 0 0 1024 diff -Naur wfdb-10.2.0/data/t10240.hea wfdb-10.2.1/data/t10240.hea --- wfdb-10.2.0/data/t10240.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/t10240.hea Wed Dec 31 19:00:00 1969 @@ -1,6 +0,0 @@ -# Use this record on a UNIX system to read directly from a 9-track tape with -# 10240-byte blocks. - -t10240 2 250 -/dev/rmt0 16 0 12 0 0 0 10240 -/dev/rmt0 16 0 12 0 0 0 10240 diff -Naur wfdb-10.2.0/data/t4096.hea wfdb-10.2.1/data/t4096.hea --- wfdb-10.2.0/data/t4096.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/t4096.hea Wed Dec 31 19:00:00 1969 @@ -1,6 +0,0 @@ -# Use this record on a UNIX system to read directly from a 9-track tape with -# 4096-byte blocks. - -t4096 2 250 -/dev/rmt0 16 0 12 0 0 0 4096 -/dev/rmt0 16 0 12 0 0 0 4096 diff -Naur wfdb-10.2.0/data/t512.hea wfdb-10.2.1/data/t512.hea --- wfdb-10.2.0/data/t512.hea Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/data/t512.hea Wed Dec 31 19:00:00 1969 @@ -1,6 +0,0 @@ -# Use this record on a UNIX system to read directly from a 9-track tape with -# 512-byte blocks. - -t512 2 250 -/dev/rmt0 16 0 12 0 0 0 512 -/dev/rmt0 16 0 12 0 0 0 512 diff -Naur wfdb-10.2.0/data/tape/102040.hea wfdb-10.2.1/data/tape/102040.hea --- wfdb-10.2.0/data/tape/102040.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/tape/102040.hea Wed Nov 7 11:31:14 2001 @@ -0,0 +1,6 @@ +# Use this record on a UNIX system to read directly from a 9-track tape with +# 10240-byte blocks. + +10240 2 250 +/dev/rmt0 16 0 12 0 0 0 10240 +/dev/rmt0 16 0 12 0 0 0 10240 diff -Naur wfdb-10.2.0/data/tape/1024.hea wfdb-10.2.1/data/tape/1024.hea --- wfdb-10.2.0/data/tape/1024.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/tape/1024.hea Wed Nov 7 11:31:10 2001 @@ -0,0 +1,6 @@ +# Use this record on a UNIX system to read directly from a 9-track tape with +# 1024-byte blocks. + +1024 2 250 +/dev/rmt0 16 0 12 0 0 0 1024 +/dev/rmt0 16 0 12 0 0 0 1024 diff -Naur wfdb-10.2.0/data/tape/4096.hea wfdb-10.2.1/data/tape/4096.hea --- wfdb-10.2.0/data/tape/4096.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/tape/4096.hea Wed Nov 7 11:31:00 2001 @@ -0,0 +1,6 @@ +# Use this record on a UNIX system to read directly from a 9-track tape with +# 4096-byte blocks. + +4096 2 250 +/dev/rmt0 16 0 12 0 0 0 4096 +/dev/rmt0 16 0 12 0 0 0 4096 diff -Naur wfdb-10.2.0/data/tape/512.hea wfdb-10.2.1/data/tape/512.hea --- wfdb-10.2.0/data/tape/512.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/tape/512.hea Wed Nov 7 11:30:54 2001 @@ -0,0 +1,6 @@ +# Use this record on a UNIX system to read directly from a 9-track tape with +# 512-byte blocks. + +512 2 250 +/dev/rmt0 16 0 12 0 0 0 512 +/dev/rmt0 16 0 12 0 0 0 512 diff -Naur wfdb-10.2.0/data/tape/6144d.hea wfdb-10.2.1/data/tape/6144d.hea --- wfdb-10.2.0/data/tape/6144d.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/tape/6144d.hea Wed Nov 7 11:33:29 2001 @@ -0,0 +1,6 @@ +# Use this record on a UNIX system to read directly from a 9-track tape with +# 6144-byte blocks containing 2 signals in 8-bit difference format. + +6144d 2 250 +/dev/rmt0 8 0 12 0 0 0 6144 +/dev/rmt0 8 0 12 0 0 0 6144 diff -Naur wfdb-10.2.0/data/tape/ahatape.hea wfdb-10.2.1/data/tape/ahatape.hea --- wfdb-10.2.0/data/tape/ahatape.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/tape/ahatape.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,7 @@ +# Use this record on a UNIX system to read directly from a 9-track AHA DB +# distribution tape with 4096-byte blocks. The tape must be positioned to +# the beginning of the ECG data file before using this record. + +ahatape 2 250 +/dev/nrmt0 16 0 12 0 0 0 4096 +/dev/nrmt0 16 0 12 0 0 0 4096 diff -Naur wfdb-10.2.0/data/tape/mittape.hea wfdb-10.2.1/data/tape/mittape.hea --- wfdb-10.2.0/data/tape/mittape.hea Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/data/tape/mittape.hea Thu Jun 24 11:38:28 1999 @@ -0,0 +1,7 @@ +# Use this record on a UNIX system to read directly from a 9-track MIT-BIH DB +# distribution tape with 4096-byte blocks. The tape must be positioned to +# the beginning of the ECG data file before using this record. + +mittape 2 360 +/dev/nrmt0 16 0 11 1024 0 0 4096 +/dev/nrmt0 16 0 11 1024 0 0 4096 diff -Naur wfdb-10.2.0/doc/Makefile wfdb-10.2.1/doc/Makefile --- wfdb-10.2.0/doc/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/doc/Makefile Fri Nov 16 16:18:43 2001 @@ -95,18 +95,14 @@ # the Applications Guide, type `make appguide' (but read `tmac.dif' first, # unless you are using groff). To print the Programmer's Guide, type # `make guide'. -# - Finally, if you can't or don't wish to print your own copies, nicely -# printed and bound copies are available from MIT (see `../../../ORDER.4M'). -# Sources for ghostscript, groff, gtbl, TeX, LaTeX, texi2dvi, and dvips are -# all freely available (see `../SOURCES'). # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -114,7 +110,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux @@ -274,7 +270,7 @@ # package, specify the command needed to format them from the texinfo source # files. If you have the GNU `makeinfo' utility (the preferred formatter), # uncomment the next line. -MAKEINFO = makeinfo --force +MAKEINFO = makeinfo --force --no-warn # Otherwise, you can use GNU emacs to do the job by uncommenting the next line. # MAKEINFO = ./makeinfo.sh diff -Naur wfdb-10.2.0/doc/Makefile.top wfdb-10.2.1/doc/Makefile.top --- wfdb-10.2.0/doc/Makefile.top Wed May 31 05:48:43 2000 +++ wfdb-10.2.1/doc/Makefile.top Fri Nov 16 14:22:18 2001 @@ -95,8 +95,4 @@ # the Applications Guide, type `make appguide' (but read `tmac.dif' first, # unless you are using groff). To print the Programmer's Guide, type # `make guide'. -# - Finally, if you can't or don't wish to print your own copies, nicely -# printed and bound copies are available from MIT (see `../../../ORDER.4M'). -# Sources for ghostscript, groff, gtbl, TeX, LaTeX, texi2dvi, and dvips are -# all freely available (see `../SOURCES'). # _____________________________________________________________________________ diff -Naur wfdb-10.2.0/doc/Makefile.tpl wfdb-10.2.1/doc/Makefile.tpl --- wfdb-10.2.0/doc/Makefile.tpl Mon Oct 15 14:39:48 2001 +++ wfdb-10.2.1/doc/Makefile.tpl Fri Oct 26 13:08:32 2001 @@ -44,7 +44,7 @@ # package, specify the command needed to format them from the texinfo source # files. If you have the GNU `makeinfo' utility (the preferred formatter), # uncomment the next line. -MAKEINFO = makeinfo --force +MAKEINFO = makeinfo --force --no-warn # Otherwise, you can use GNU emacs to do the job by uncommenting the next line. # MAKEINFO = ./makeinfo.sh diff -Naur wfdb-10.2.0/doc/a2m.1 wfdb-10.2.1/doc/a2m.1 --- wfdb-10.2.0/doc/a2m.1 Sun Feb 6 23:46:29 2000 +++ wfdb-10.2.1/doc/a2m.1 Fri Oct 26 14:06:04 2001 @@ -1,4 +1,4 @@ -.TH A2M 1 "6 February 2000" "WFDB software 10.0" "WFDB applications" +.TH A2M 1 "26 October 2001" "WFDB software 10.2" "WFDB applications" .SH NAME a2m, ad2m, m2a, md2a \- utilities for converting between MIT and AHA DB formats .SH SYNOPSIS @@ -26,7 +26,8 @@ type 0 input files, 5 minutes for type 1 or 3, or 2 hours and 30 minutes for type 2). .TP -\fB-t\fI type\fR Convert an input file of the specified \fItype\fR (0: +\fB-t\fI type\fR +Convert an input file of the specified \fItype\fR (0: a file produced by a DB application using \fIputann\fR and `WFDB_AHA_WRITE' mode; 1: an AHA DB `short format' tape file; 2: an AHA DB `long format' tape file; 3: an AHA DB compressed (\fI*.ano\fR) @@ -77,13 +78,12 @@ .br ad2m -i 1201.cmp -r 1201 -c .br - a2m -i 1201.ano -r 1201 -a atruth -t 3 + a2m -i 1201.ano -r 1201 -a atr -t 3 .br -These commands produce files \fI1201.dat\fR (the signal file), -\fI1201.header\fR (the header file, named \fI1201.hea\fR under MS-DOS), and -\fI1201.atruth\fR (the reference annotation file, named \fI1201.atr\fR under -MS-DOS), all in the current directory. Run \fIad2m\fR first, so that the -new header file is available for the use of \fIa2m\fR. +These commands produce files \fI1201.dat\fR (the signal file), \fI1201.hea\fR +(the header file), and \fI1201.atr\fR (the reference annotation file), all in +the current directory. Run \fIad2m\fR first, so that the new header file is +available for the use of \fIa2m\fR. .SS "AHA DB short format tape" .PP To obtain the same files given a `short format' 9-track distribution tape, @@ -92,7 +92,7 @@ .br ad2m -i 1201.tap -r 1201 .br - a2m -i 1201.ann -r 1201 -a atruth -t 1 + a2m -i 1201.ann -r 1201 -a atr -t 1 .br The names for the files copied from the tape are arbitrary, but do not use names of files to be generated by \fIad2m\fR or \fIa2m\fR (see the @@ -111,7 +111,7 @@ .br ad2m -i 1001.tap -r 1001 -t 3:0:0 .br - a2m -i 1001.ann -r 1001 -a atruth -t 2 + a2m -i 1001.ann -r 1001 -a atr -t 2 .br The \fB-t 3:0:0\fR option is necessary to prevent \fIad2m\fR from truncating the signal file after the first 35 minutes. @@ -124,7 +124,7 @@ .br ad2m -i 1001.tap -r 1201 -f 2:25:0 .br - a2m -i 1001.ann -r 1201 -a atruth -t 1 + a2m -i 1001.ann -r 1201 -a atr -t 1 .br In this case, the \fB-f\fR option instructs \fIad2m\fR to skip the first two hours and 25 minutes of the `long-format' AHA signal file, and to reformat @@ -137,11 +137,11 @@ To keep both versions (1001 and 1201) on-line, make the `long format' version first (see above), then type: .br - a2m -i 1001.ann -r 1201 -a atruth -t 1 + a2m -i 1001.ann -r 1201 -a atr -t 1 .br to make a `short format' reference annotation file. Continue (under UNIX) by: .br - cp 1001.header 1201.header + cp 1001.hea 1201.hea .br or (under MS-DOS) by: .br diff -Naur wfdb-10.2.0/doc/ann2rr.1 wfdb-10.2.1/doc/ann2rr.1 --- wfdb-10.2.0/doc/ann2rr.1 Mon Feb 19 12:41:45 2001 +++ wfdb-10.2.1/doc/ann2rr.1 Tue Oct 16 21:14:14 2001 @@ -79,7 +79,7 @@ \fB-F\fI frequency\fR Assume the specified sampling \fIfrequency\fR. This option has no effect unless it is necessary for \fBrr2ann\fR to create a header file; in this case, a sampling -frequency of 250 Hz is assumed if the \fB-F\fB option is omitted. +frequency of 250 Hz is assumed if the \fB-F\fR option is omitted. .TP \fB-h\fR Print a usage summary. diff -Naur wfdb-10.2.0/doc/appguide.int wfdb-10.2.1/doc/appguide.int --- wfdb-10.2.0/doc/appguide.int Mon Oct 15 17:51:15 2001 +++ wfdb-10.2.1/doc/appguide.int Thu Nov 15 22:38:02 2001 @@ -1,5 +1,5 @@ \" file: appguide.int G. Moody July 1989 -\" Last revised: 15 October 2001 +\" Last revised: 15 November 2001 \" Table of contents and introduction to the WFDB Applications Guide. \" \" To print this document using GNU groff, use: @@ -35,63 +35,65 @@ bxb ANSI/AAMI-standard beat-by-beat annotation comparator 6 calsig calibrate signals of a DB record 8 coherence estimate coherence and cross-spectrum of two time series 10 -ecgeval generate and run ECG analyzer evaluation script 11 -epic ANSI/AAMI-standard episode-by-episode annotation comparator 12 -fft fast Fourier transform 14 -fir general-purpose FIR filter for WFDB records 16 -hrfft, hrlomb, hrmem, hrplot calculate and plot heart rate power spectra 18 -ihr calculate instantaneous heart rate 20 -log10 calculate common logarithms of two-column data 21 -lomb estimate power spectrum using the Lomb periodogram method 22 -memse estimate power spectrum using maximum entropy (all poles) method 23 -mfilt general-purpose median filter for WFDB records 25 -mrgann merge annotation files 26 -mxm ANSI/AAMI-standard measurement-by-measurement comparator 28 -nst noise stress test for ECG analysis programs 30 -plot2d, plot3d make 2-D or 3-D plots from text files of data, using \fIgnuplot\fR 33 -plotstm produce scatter plot of ST measurement errors on a PostScript device 35 -pschart produce annotated `chart recordings' on a PostScript device 36 -psfd produce annotated `full-disclosure' plots on a PostScript device 40 -rdann read a WFDB annotation file 44 -rdsamp read WFDB signal files 46 -rxr ANSI/AAMI-standard run-by-run annotation comparator 47 -sampfreq show sampling frequency for a record 49 -sample digitize and replay analog signals (MS-DOS only) 50 -setwfdb, cshsetwfdb set WFDB environment variables 54 -sigamp measure signal amplitudes of a WFDB record 56 -skewedit edit skew fields of header file(s) 57 -snip copy an excerpt of a WFDB record 58 -sortann rearrange annotations in canonical order 59 -sqrs single-channel QRS detector 61 -sumann summarize the contents of a WFDB annotation file 63 -sumstats derive aggregate statistics from bxb, rxr, etc., line-format output 64 -tach heart rate tachometer 65 -view, vsetup WFDB browser for MS-DOS 67 -wave waveform analyzer, viewer, and editor for the X Window System 70 -wfdbcat copy WFDB records to standard output 80 -wfdbcollate collate WFDB records into a multi-segment record 81 -wfdbdesc read signal specifications 83 -wfdbwhich find a WFDB file and print its pathname 84 -wrann write a WFDB annotation file 85 -wrsamp write WFDB signal files 86 -wview WFDB browser for MS Windows 88 -xform sampling frequency, amplitude, and format conversion for WFDB records 92 +dfa detrended fluctuation analysis 11 +ecgeval generate and run ECG analyzer evaluation script 12 +epic ANSI/AAMI-standard episode-by-episode annotation comparator 13 +fft fast Fourier transform 15 +fir general-purpose FIR filter for WFDB records 17 +hrfft, hrlomb, hrmem, hrplot calculate and plot heart rate power spectra 19 +ihr calculate instantaneous heart rate 21 +log10 calculate common logarithms of two-column data 22 +lomb estimate power spectrum using the Lomb periodogram method 23 +memse estimate power spectrum using maximum entropy (all poles) method 24 +mfilt general-purpose median filter for WFDB records 26 +mrgann merge annotation files 27 +mxm ANSI/AAMI-standard measurement-by-measurement comparator 29 +nst noise stress test for ECG analysis programs 31 +plot2d, plot3d make 2-D or 3-D plots from text files of data, using \fIgnuplot\fR 34 +plotstm produce scatter plot of ST measurement errors on a PostScript device 36 +plt make 2-D plots 37 +pschart produce annotated `chart recordings' on a PostScript device 42 +psfd produce annotated `full-disclosure' plots on a PostScript device 46 +rdann read a WFDB annotation file 50 +rdsamp read WFDB signal files 52 +rxr ANSI/AAMI-standard run-by-run annotation comparator 53 +sampfreq show sampling frequency for a record 55 +sample digitize and replay analog signals (MS-DOS only) 56 +setwfdb, cshsetwfdb set WFDB environment variables 60 +sigamp measure signal amplitudes of a WFDB record 62 +skewedit edit skew fields of header file(s) 63 +snip copy an excerpt of a WFDB record 64 +sortann rearrange annotations in canonical order 65 +sqrs, sqrs125 single-channel QRS detector 67 +sumann summarize the contents of a WFDB annotation file 69 +sumstats derive aggregate statistics from bxb, rxr, etc., line-format output 70 +tach heart rate tachometer 71 +view, vsetup WFDB browser for MS-DOS 73 +wave waveform analyzer, viewer, and editor for the X Window System 76 +wfdbcat copy WFDB records to standard output 86 +wfdbcollate collate WFDB records into a multi-segment record 87 +wfdbdesc read signal specifications 89 +wfdbwhich find a WFDB file and print its pathname 90 +wrann write a WFDB annotation file 91 +wrsamp write WFDB signal files 92 +wview WFDB browser for MS Windows 94 +xform sampling frequency, amplitude, and format conversion for WFDB records 98 \fBSection 3: WFDB library\fP -wfdb Waveform Database library 94 +wfdb Waveform Database library 100 \fBSection 5: WFDB file formats\fP -annot WFDB annotation file formats 97 -header WFDB header file format 98 -signal WFDB signal file formats 105 -wfdbcal WFDB calibration file format 107 +annot WFDB annotation file formats 103 +header WFDB header file format 104 +signal WFDB signal file formats 111 +wfdbcal WFDB calibration file format 113 \fBAppendices\fP - \fIInstalling the WFDB Software Package\fP 109 - \fIEvaluating ECG Analyzers\fP 113 + \fIInstalling the WFDB Software Package\fP 115 + \fIEvaluating ECG Analyzers\fP 118 .TE .LP @@ -120,8 +122,8 @@ If you have not used any of these programs before, you should be sure that your environment is set up properly so that WFDB applications can find their input files. See setwfdb(1) in this guide for information about doing this; -a more detailed discussion may be found in the first chapter of the WFDB -Programmer's Guide, in the section about the database path. +a more detailed discussion may be found in the first chapter of the \fIWFDB +Programmer's Guide\fP, in the section about the database path. .PP Certain types of command arguments are used by many of the applications described in this guide. These include: @@ -131,19 +133,16 @@ 4-digit numbers, and European ST-T Database record names begin with lowercase `e', followed by a 4-digit number. Record names may contain letters, digits, and underscores. Case is significant in record names that contain letters, -even in environments such as MS-DOS for which case translation is normally +even in environments such as MS-Windows for which case translation is normally performed by the operating system on file names; thus `e0104' is the name of a record found in the European ST-T Database, whereas `E0104' is not. -Under MS-DOS, furthermore, only the first eight characters of a record name -are significant. A record name is \fInot\fP a file name. See the \fIWFDB -Programmer's Guide\fP for further details on record names. +A record name is \fInot\fP a file name. See the \fIWFDB Programmer's Guide\fP +for further details on record names. .IP \fIannotator\fP Where this appears, substitute an annotator name. The annotator name -`atruth' (shortened to `atr' under MS-DOS and on CD-ROMs) is used to -name the set of \fIreference annotations\fP supplied by the database -developers. Annotator names may contain letters, digits, and -underscores, as for record names. Note that, under MS-DOS, only the -first three characters of an annotator name are significant. +`atr' is used to name the set of \fIreference annotations\fP supplied by +the database developers. Annotator names may contain letters, digits, and +underscores, as for record names. .IP \fItime\fP Where this appears, substitute a string in \fIstandard time format\fP. \fITime\fP arguments generally specify elapsed times from the beginning @@ -176,11 +175,7 @@ order to make these pages accessible to \fIman\fR. .PP An HTML version of this guide is also available; point your Web browser to -\fBhttp://www.physionet.org/physiotools/dbag/\fR to read it. The HTML version -of this guide is also supplied on our CD-ROMs that include the WFDB Software -Package; begin by pointing your browser to \fBfile:///cdrom/dbag/dbag.htm\fR -(under UNIX, if the mount point for your CD-ROM is \fB/cdrom\fR), or to -\fBfile:///d|/html/dbag.htm\fR (under MS-DOS, if your CD-ROM is the D: drive). +\fBhttp://www.physionet.org/physiotools/dbag/\fR to read it. .PP The notations that appear at the bottom of each page indicate the date when that page was last revised, and (in most cases) the version of the WFDB diff -Naur wfdb-10.2.0/doc/bxb.1 wfdb-10.2.1/doc/bxb.1 --- wfdb-10.2.0/doc/bxb.1 Thu Feb 10 00:01:17 2000 +++ wfdb-10.2.1/doc/bxb.1 Wed Nov 7 10:52:25 2001 @@ -1,4 +1,4 @@ -.TH BXB 1 "9 February 2000" "MIT DB software 10.1" "WFDB applications" +.TH BXB 1 "7 November 2001" "MIT DB software 10.2,1" "WFDB applications" .SH NAME bxb \- ANSI/AAMI-standard beat-by-beat annotation comparator .SH SYNOPSIS @@ -6,16 +6,16 @@ .SH DESCRIPTION .PP Using options \fB-C\fR, \fB-L\fR, or \fB-S\fR, \fIbxb\fR implements the -beat-by-beat comparison algorithms described in AAMI/ANSI EC38:1998, the -\fIAmerican National Standard for Ambulatory ECGs\fR, and in AAMI EC57:1998, -the \fIAmerican National Standard for Testing and Reporting Performance Results -of Cardiac Rhythm and ST Segment Measurement Algorithms\fR. \fIbxb\fR is the -reference implementation of these algorithms, and must be used to obtain the -beat-by-beat performance statistics cited in EC38 and EC57 in order to be in -compliance with these standards (see EC38, section 5.2.14, and EC57, section -4.2). The \fB-C\fR, \fB-L\fR, and \fB-S\fR options also gather statistics on -RR interval errors, which were considered for inclusion in EC38, but were -eventually dropped from it. +beat-by-beat comparison algorithms described in ANSI/AAMI EC38:1998, the +\fIAmerican National Standard for Ambulatory ECGs\fR, and in ANSI/AAMI +EC57:1998, the \fIAmerican National Standard for Testing and Reporting +Performance Results of Cardiac Rhythm and ST Segment Measurement Algorithms\fR. +\fIbxb\fR is the reference implementation of these algorithms, and must be used +to obtain the beat-by-beat performance statistics cited in EC38 and EC57 in +order to be in compliance with these standards (see EC38, section 5.2.14, and +EC57, section 4.2). The \fB-C\fR, \fB-L\fR, and \fB-S\fR options also gather +statistics on RR interval errors, which were considered for inclusion in EC38, +but were eventually dropped from it. .PP Input to this program consists of two annotation files associated with the same \fIrecord\fR. One of these is designated the \fIreference\fR annotation file, @@ -155,8 +155,8 @@ \fIAmerican National Standard ANSI/AAMI EC57:1998, Testing and Reporting Performance Results of Cardiac Rhythm and ST Segment Measurement Algorithms\fR .br -The last two publications are available from AAMI, 3330 Washington Blvd., -Suite 400, Arlington, VA 22201 USA (http://www.aami.org/). +The last two publications are available from AAMI, 1110 N Glebe Road, +Suite 220, Arlington, VA 22201 USA (http://www.aami.org/). .SH AUTHOR George B. Moody (george@mit.edu) .SH SOURCE diff -Naur wfdb-10.2.0/doc/calsig.1 wfdb-10.2.1/doc/calsig.1 --- wfdb-10.2.0/doc/calsig.1 Wed May 24 16:26:26 2000 +++ wfdb-10.2.1/doc/calsig.1 Wed Oct 31 20:30:11 2001 @@ -1,4 +1,4 @@ -.TH CALSIG 1 "24 May 2000" "MIT DB software 10.1.4" "WFDB applications" +.TH CALSIG 1 "31 October 2001" "MIT DB software 10.2.1" "WFDB applications" .SH NAME calsig \- calibrate signals of a WFDB record .SH SYNOPSIS @@ -34,10 +34,10 @@ .PP \fIOptions\fR include: .TP -\fB-c\fI file\fR Obtain calibration pulse specifications from the -specified \fIfile\fR (see \fIwfdbcal\fR(5); default: obtain this -information from the file specified by the environment variable -\fBWFDBCAL\fR, or interactively). +\fB-c\fI file\fR +Obtain calibration pulse specifications from the specified \fIfile\fR (see +\fIwfdbcal\fR(5); default: obtain this information from the file specified by +the environment variable \fBWFDBCAL\fR, or interactively). .TP \fB-f\fI time\fR Begin at the specified \fItime\fR in \fIrecord\fR (default: the beginning of diff -Naur wfdb-10.2.0/doc/cover.ag wfdb-10.2.1/doc/cover.ag --- wfdb-10.2.0/doc/cover.ag Sat Mar 11 21:22:05 2000 +++ wfdb-10.2.1/doc/cover.ag Wed Nov 7 11:58:01 2001 @@ -45,7 +45,7 @@ -MARCH 2000 +NOVEMBER 2001 .bp diff -Naur wfdb-10.2.0/doc/cover.pg wfdb-10.2.1/doc/cover.pg --- wfdb-10.2.0/doc/cover.pg Sun Jan 30 04:13:17 2000 +++ wfdb-10.2.1/doc/cover.pg Wed Nov 7 11:58:22 2001 @@ -45,7 +45,7 @@ -JANUARY 2000 +NOVEMBER 2001 .bp diff -Naur wfdb-10.2.0/doc/dbag.ht0 wfdb-10.2.1/doc/dbag.ht0 --- wfdb-10.2.0/doc/dbag.ht0 Tue Dec 12 13:19:50 2000 +++ wfdb-10.2.1/doc/dbag.ht0 Wed Nov 7 12:02:19 2001 @@ -11,14 +11,15 @@ Up: Catalog of documents

WFDB Applications Guide

Tenth Edition
-11 March 2000
+(Revised for release 10.2.1)
+7 November 2001



George B. Moody
Harvard-MIT Division of Health Sciences and Technology

-Copyright ©1980-2000 George B. Moody +Copyright ©1980-2001 George B. Moody

The most recent versions of the programs described in this guide may be freely downloaded from PhysioNet. For @@ -32,11 +33,7 @@

A PostScript version of this guide is available. The latest version can be downloaded from -PhysioNet. Printed -copies of this guide are available for $10 each -(including shipping by surface mail) by writing to the address above. -Please make checks payable to ``Beth Israel Hospital Biomedical -Engineering Division.'' +PhysioNet.

Permission is granted to make and distribute verbatim copies of this guide provided that the copyright notice and this permission notice are diff -Naur wfdb-10.2.0/doc/dbag.tex wfdb-10.2.1/doc/dbag.tex --- wfdb-10.2.0/doc/dbag.tex Sun Jan 30 04:13:17 2000 +++ wfdb-10.2.1/doc/dbag.tex Wed Nov 7 11:59:20 2001 @@ -17,7 +17,7 @@ @center Harvard-MIT Division of Health Sciences and Technology @page @vskip 0pt plus 1filll -Copyright @copyright{} 1992 -- 2000 George B. Moody +Copyright @copyright{} 1992 -- 2001 George B. Moody @sp 2 The most recent versions of the software described in this guide may be freely downloaded from @code{http://www.physionet.org/}. For further @@ -33,10 +33,7 @@ An HTML version of this guide is available; point your web browser to @code{http://www.physionet.org/physiotools/dbag/} to view it. -Additional printed copies of this guide are available for US$10 each -(including shipping by surface mail) by writing to the address above. -Please make checks payable to ``Beth Israel Hospital Biomedical -Engineering Division.'' + @sp 2 diff -Naur wfdb-10.2.0/doc/dbu.ht0 wfdb-10.2.1/doc/dbu.ht0 --- wfdb-10.2.0/doc/dbu.ht0 Sun Jan 30 04:13:17 2000 +++ wfdb-10.2.1/doc/dbu.ht0 Wed Nov 7 12:04:04 2001 @@ -11,15 +11,15 @@ Up: Catalog of documents

WFDB Programmer's Guide

Tenth Edition
-(Revised and with corrections for WFDB library version 10.1.0)
-11 January 2000
+(Revised and with corrections for WFDB library version 10.2.1)
+7 November 2001



George B. Moody
Harvard-MIT Division of Health Sciences and Technology

-Copyright ©1980-2000 George B. Moody. +Copyright ©1980-2001 George B. Moody.

The most recent versions of the software described in this guide are freely downloadable from PhysioNet. For diff -Naur wfdb-10.2.0/doc/dbu.tex wfdb-10.2.1/doc/dbu.tex --- wfdb-10.2.0/doc/dbu.tex Mon Oct 15 17:35:41 2001 +++ wfdb-10.2.1/doc/dbu.tex Fri Nov 16 00:38:16 2001 @@ -9,7 +9,7 @@ @sp 5 @center @titlefont{WFDB Programmer's Guide} @sp 4 -@center Tenth Edition (revised and with additions for WFDB library version 10.2.0) +@center Tenth Edition (revised and with additions for WFDB library version 10.2.1) @center @today @sp 5 @center George B. Moody @@ -33,10 +33,6 @@ An HTML version of this guide is available; point your web browser to @code{http://@-www.@-physio@-net.@-org/@-physio@-tools/@-dbpg/} to view it. -Additional printed copies of this guide are available for US$10 each -(including shipping by surface mail) by writing to the address above. -Please make checks payable to ``Beth Israel Hospital Biomedical -Engineering Division.'' @sp 2 Permission is granted to make and distribute verbatim copies of this @@ -64,8 +60,8 @@ @ifinfo This guide documents the Waveform Database interface library (the WFDB library). This file contains the text of the Tenth Edition of -the @cite{WFDB Programmer's Guide} (January, 2000), with -additional material for release 10.2.0 of the WFDB library. +the @cite{WFDB Programmer's Guide} (November,2001), with +revisions for release 10.2.1 of the WFDB library. @end ifinfo @menu @@ -109,23 +105,23 @@ @cindex MIT DB @cindex AHA DB -This guide documents the Waveform Database interface library (the @dfn{WFDB -library}), a package of C-callable functions that provide clean and -uniform access to digitized, annotated signals stored in a variety of -formats. These functions were designed for use with the MIT-BIH -Arrhythmia Database (@dfn{MIT DB}) and the AHA Database for the -Evaluation of Ventricular Arrhythmia Detectors (@dfn{AHA DB}). In -February 1990, the predefined annotation set was expanded to accommodate -the needs of the European ST-T Database (@dfn{ESC DB}). The WFDB library -is sufficiently general, however, to be useful for dealing with any -similar collection of digitized signals, which may or may not be -annotated. The WFDB library has evolved to support the development of -several databases that include signals such as blood pressure, -respiration, oxygen saturation, EEG, as well as ECGs. Among these -multi-parameter databases are the MIT-BIH Polysomnographic Database, the -MGH/Marquette Foundation Waveform Database, and the not yet completed -MIMIC Database. Thus the WFDB library is considerably more than an -@emph{ECG} database interface. +This guide documents the Waveform Database interface library (the +@dfn{WFDB library}), a package of C-callable functions that provide +clean and uniform access to digitized, annotated signals stored in a +variety of formats. These functions were originally designed for use +with databases of electrocardiograms, including the MIT-BIH Arrhythmia +Database (@dfn{MIT DB}) and the AHA Database for the Evaluation of +Ventricular Arrhythmia Detectors (@dfn{AHA DB}). In February 1990, the +predefined annotation set was expanded to accommodate the needs of the +European ST-T Database (@dfn{ESC DB}). The WFDB library is sufficiently +general, however, to be useful for dealing with any similar collection +of digitized signals, which may or may not be annotated. The WFDB +library has evolved to support the development of numerous other +databases that include signals such as blood pressure, respiration, +oxygen saturation, EEG, as well as ECGs. Among these multi-parameter +databases are the MIT-BIH Polysomnographic Database, the MGH/Marquette +Foundation Waveform Database, and the MIMIC Database. Thus the WFDB +library is considerably more than an @emph{ECG} database interface. This guide describes how to write C-language programs that use databases of ECGs and other signals. A standard set of such programs is included @@ -161,7 +157,7 @@ @cindex tape The databases for which the WFDB library was designed consist of a small -number of ECG @dfn{records}, each of which is quite large (typically a +number of @dfn{records}, each of which is quite large (typically a megabyte or more). Database records usually originate as multi-channel analog tape recordings that have been digitized and stored as disk files. For this historical reason, they are often referred to as @@ -173,8 +169,7 @@ therefore qualitatively different from those for which conventional database management software is written. -@cindex MS-DOS file names -@cindex UNIX file names +@cindex file names Records are identified by @dfn{record names}, which are three-digit numbers for MIT DB records, four-digit numbers for AHA DB records, and four-digit numbers prefixed by @samp{e} for ESC DB records. You may @@ -186,15 +181,11 @@ @samp{E0104} is not. A record is comprised of several files, which contain signals, annotations, and specifications of signal attributes; each file belonging to a given record normally includes the record name -as part of its name. (On writable UNIX and Macintosh file systems, the -record name is usually the last part of the file name; the opposite -convention is used on CD-ROM and MS-DOS file systems, because of their -restrictions on the length of file name suffixes.) A record is an -extensible collection of files, which need not all be located in the -same directory, or even on the same physical device. Thus it is -possible, for example, to create on a magnetic disk a file of your own -annotations for a record distributed on a CD-ROM, and to treat your file -as part of the record. +as the first part of its name. A record is an extensible collection of +files, which need not all be located in the same directory, or even on +the same physical device. Thus it is possible, for example, to create +on a magnetic disk a file of your own annotations for a record +distributed on a CD-ROM, and to treat your file as part of the record. @node Concepts 2, Concepts 3, Concepts 1, Overview @unnumberedsec Signals, Samples, and Time @@ -221,7 +212,7 @@ analog-to-digital converter units, or @dfn{adu}. The @dfn{gain} defined for each signal specifies how many adus correspond to one @dfn{physical unit} (usually one millivolt, the nominal amplitude of a normal QRS -complex on a body-surface lead roughly parallel to the mean cardiac +complex on a body-surface ECG lead roughly parallel to the mean cardiac electrical axis). All signals in a given record are usually sampled at the same frequency, but not necessarily at the same gain (@pxref{Multi-Frequency Records}, for exceptions to @@ -247,7 +238,7 @@ @unnumberedsec Annotations @cindex annotation @cindex annotator -@cindex @code{atruth} +@cindex @code{atr} @cindex beat label @cindex label (beat) @cindex QRS label @@ -264,18 +255,17 @@ sample number of the sample with which the annotation is associated. Annotations may be associated with a single signal, if desired. Like samples in signals, annotations are kept in time and signal order in -annotation files (but @pxref{Annotation Order} for exceptions to this -rule). No more than one annotation in a given annotation -file may be associated with any given sample of any given signal. There -may be many annotation files associated with the same record, however; -they are distinguished by @dfn{annotator names}. The annotator name -@file{atruth} (under MS-DOS, @file{atr}) is reserved to identify -@dfn{reference annotation files} supplied by the developers of the -databases to document correct beat labels. You may use other annotator -names (which may contain letters, digits and underscores, as for record -names) to identify annotation files that you create. You may wish to -adopt the convention that the annotator name is the name of the file's -creator (a program or a person). +annotation files (but @pxref{Annotation Order}, for exceptions to this +rule). No more than one annotation in a given annotation file may be +associated with any given sample of any given signal. There may be many +annotation files associated with the same record, however; they are +distinguished by @dfn{annotator names}. The annotator name @file{atr} +is reserved to identify @dfn{reference annotation files} supplied by the +developers of the databases to document correct beat labels. You may +use other annotator names (which may contain letters, digits and +underscores, as for record names) to identify annotation files that you +create. You may wish to adopt the convention that the annotator name is +the name of the file's creator (a program or a person). Annotations are visible to the WFDB library user as C structures, the fields of which specify time, beat type, and several user-definable @@ -342,9 +332,12 @@ include page numbers for the second edition. Newcomers to C should have a copy for ready reference while reading this guide.) It may also be helpful to have a copy of a database directory, such as the @cite{MIT-BIH Arrhythmia Database -Directory}. The @cite{WFDB Applications Guide} will be useful as a reference -for existing WFDB library-based applications (available from PhysioNet, -@code{http://@-www.@-physio@-net.@-org/}). +Directory} +(@code{http://@-www.@-physionet.@-org/@-physio@-bank/@-data@-base/@-mitdb/@-mitdbdir/}). +The @cite{WFDB Applications Guide} +(@code{http://@-www.@-physionet.@-org/@-physio@-tools/@-dbag/}) will be useful +as a reference for existing WFDB library-based applications (available from +PhysioNet, @code{http://@-www.@-physio@-net.@-org/}). You should have access to a computer that has the WFDB library and at least one or two database records on-line, or access to the World Wide Web, @@ -356,21 +349,22 @@ favorite editor, and you should know how to compile it and how to run the resulting executable program. -Resist all temptation to plunge into the esoteric details of file formats. -(Those who find such details irresistible will find them in Section 5 of the -@cite{WFDB Applications Guide}; note, however, that support for new file -formats is added to the WFDB library from time to time, so that the information -you find there may be incomplete.) The WFDB library provides an efficient -means of reading and writing files in many formats; it is not a trivial task to -duplicate it, and time spent doing so is time that could be spent doing -something useful, enjoyable, or possibly both. If you really think you need to -understand the file formats in order to translate them into whatever the -ECGWhizz Model 666 needs, consider instead writing a format translator using -the WFDB library to read the files; then you will at least have a program that -requires only recompilation with a new version of the WFDB library when file -formats change. @emph{In extremis}, use @file{rdann} and @file{rdsamp} --- -MS-DOS executables of which are available from PhysioNet and included on all -CD-ROM databases of ECGs --- to translate files into text format. +Resist all temptation to plunge into the esoteric details of file +formats. (Those who find such details irresistible will find them in +Section 5 of the @cite{WFDB Applications Guide}; note, however, that +support for new file formats is added to the WFDB library from time to +time, so that the information you find there may be incomplete.) The +WFDB library provides an efficient means of reading and writing files in +many formats; it is not a trivial task to duplicate it, and time spent +doing so is time that could be spent doing something useful, enjoyable, +or possibly both. If you really think you need to understand the file +formats in order to translate them into whatever the ECGWhizz Model 666 +needs, consider instead writing a format translator using the WFDB +library to read the files; then you will at least have a program that +requires only recompilation with a new version of the WFDB library when +file formats change. @emph{In extremis}, use @file{rdann} and +@file{rdsamp} --- available from PhysioNet in source and ready-to run +formats --- to translate files into text format. Chapter 1 of this guide begins with a simple example program that reads a few samples from a database record. This example should help you @@ -397,19 +391,19 @@ descriptions of the application programs that are distributed with the WFDB library as part of the WFDB software package. -@cindex MS-DOS file names @cindex operating systems (supported) -The WFDB library has been written with portability in mind. It runs on a -wide variety of machines and operating systems, including UNIX (BSD 4.x, -System V, SunOS, Solaris, HP-UX, OSF/1, Version 7, XENIX, VENIX, ULTRIX, -Linux, AIX, AUX, SCO, Coherent, and more), MS-DOS, MS-Windows, VMS, and -the Macintosh OS. This guide was written for UNIX users (with notes for -MS-DOS users where differences exist), but others should find only minor -differences. - Another appendix discusses porting the WFDB library to new machines or operating systems, and includes notes on adding support for new file formats, annotation codes, and other enhancements (@pxref{Extensions}). +The WFDB library has been written with portability in mind. It runs on +a wide variety of machines and operating systems, including Unix (BSD +4.x, System V, SunOS, Solaris, HP-UX, OSF/1, Version 7, XENIX, VENIX, +ULTRIX, GNU/Linux, OpenBSD, IRIX, AIX, AUX, Darwin, MacOS/X, SCO, +Coherent, and more), MS-DOS, MS-Windows, VMS, and the Macintosh OS. +This guide was written for Unix users (with notes for MS-Windows and +MS-DOS users where differences exist), but others should find only minor +differences. + At the end of the guide is a list of sources for databases and other materials that may be useful to readers (@pxref{Sources}). @@ -429,7 +423,7 @@ WFDB library was known as the DB library, and this guide was the @cite{ECG Database Programmer's Guide}. The name of the library was changed because of confusion caused by the recent proliferation of another library with -the same name (a reimplementation of the Berkeley UNIX DBM library). +the same name (a reimplementation of the Berkeley Unix DBM library). The names of this guide, and of the @cite{WFDB Applications Guide} (formerly the @cite{ECG Database Applications Guide}), have been changed in view of the increasingly broad range of applications in which the library is being @@ -472,21 +466,28 @@ You can format and print copies of this guide using TeX if you have it (see @file{makefile} in the @file{doc} directory of the library distribution for instructions on doing so). You may obtain a preformatted version suitable for -output on any PostScript device from @code{http://www.physionet.org}, or you -can obtain nicely printed copies for $10 each from the author (address above; -please make checks payable to ``Beth Israel Hospital Biomedical Engineering -Division''). +output on any PostScript device from @code{http://www.physionet.org/}. @end ifinfo @node Recent changes, Usage, Overview, Top @comment node-name, next, previous, up @unnumberedsec Recent changes -This section contains a brief summary of changes to the WFDB library and to -this guide since the first printing of the ninth edition of this guide in July, -1995. See @file{NEWS}, in the top-level directory of the WFDB Software -Package distribution, for details on these changes, and for information on any -more recent changes that may not be described here. +This section contains a brief summary of changes to the WFDB library and +to this guide since the first printing of the tenth edition of this +guide in June, 1999. See @file{NEWS}, in the top-level directory of the +WFDB Software Package distribution, for information on any more recent +changes that may not be described here. + +@unnumberedsubsec Changes in version 10.2.1 + +Most users will no longer need to set the WFDB path explicitly, as a result +of several minor changes in the default path and in the installer for the +WFDB Software Package. + +The environment variable @code{WFDBNOSORT} was replaced by @code{WFDBANNSORT}, +and the environment variable @code{WFDBGVMODE} was introduced +(@pxref{Annotation Order}, and @pxref{Multi-Frequency Records}, for details). @unnumberedsubsec Changes in version 10.2.0 @@ -497,7 +498,7 @@ @file{}) specified limits on these parameters that could be modified only by recompiling the WFDB library. These symbols are still defined for compatibility with older applications that use them (typically to determine -the size of statically allocated arrays). +the size of static arrays). Since version 10.1.1, record names may include path information (see the notes for version 10.1.1 below), but if such names are used to generate names of WFDB @@ -507,7 +508,7 @@ attempt to create the directory (including, if necessary, any non-existent parent directories). This feature simplifies the use of record names that include directory information, as is common when reading data from a CD-ROM or -a web server such as PhysioNet. For example, using the default WFDB path +a web server such as PhysioNet. For example, using the WFDB path (@file{. http://@-www.@-physio@-net.@-org/@-physio@-bank/@-data@-base}), if the current directory, @file{.}, does not contain a subdirectory named @file{mitdb}, the command: @@ -586,17 +587,19 @@ @unnumberedsubsec Changes in version 10.0.1 @cindex NETFILES -Beginning with version 10.0.1, the WFDB library supports reading not only local -files, but also remote files made available by web (HTTP) or FTP servers. To -make use of this feature, link your application with both the WFDB library and -the @file{libwww} library (freely available for all versions of UNIX, and for -most recent versions of MS Windows, from @file{http://www.w3.org/Library}). -(In some cases, notably under Linux, @code{libwww} is linked together with the -dynamically-loaded version of the WFDB library, so that you do not need to link -@code{libwww} explicitly.) All access to remote files is read-only. If you do -not wish to allow access to remote files, or if @code{libwww} is not available -for your OS, simply do not define the symbol NETFILES when compiling the WFDB -library. For further details, see @file{wfdbio.c} in the WFDB library sources. +Beginning with version 10.0.1, the WFDB library supports reading not +only local files, but also remote files made available by web (HTTP) or +FTP servers. To make use of this feature, link your application with +both the WFDB library and the @file{libwww} library (freely available +for all versions of Unix, and for most recent versions of MS Windows, +from @file{http://www.w3.org/Library}). (In some cases, notably under +GNU/Linux, @code{libwww} is linked together with the dynamically-loaded +version of the WFDB library, so that you do not need to link +@code{libwww} explicitly.) All access to remote files is read-only. If +you do not wish to allow access to remote files, or if @code{libwww} is +not available for your OS, simply do not define the symbol NETFILES when +compiling the WFDB library. For further details, see @file{wfdbio.c} in +the WFDB library sources. The WFDB environment variable may now contain whitespace (space, tab, or newline characters) as path component separators under any OS. Multiple @@ -604,7 +607,7 @@ separator. Use a @samp{.} to specify the current directory as a path component when using whitespace as a path component separator. A semicolon (@samp{;}) is also acceptable as a path component separator under any OS. A colon (@samp{:}) -is still acceptable as a path component separator under UNIX (Linux, etc.), +is still acceptable as a path component separator under Unix (Linux, etc.), provided only that the colon is not immediately followed by @samp{//}. If the WFDB path includes components of the forms @@ -629,154 +632,23 @@ definitions, library source file names, and names of environment variables (e.g., the DB environment variable is now the WFDB environment variable). -Version 10.0.0 is functionally identical with version 9.7.4, except for the -name changes. It should be possible to recompile existing applications -written for DB library version 9.x without modification, and to link them -with WFDB library version 10.0.0. This is possible because two sets of -@code{#include} files are provided with the WFDB library. The first set, -accessible via @code{#include }, works with applications written -as described in this guide. The alternate set, accessible via -@code{#include }, is compatible with DB 9.x applications as -described in previous editions of this guide. - -@unnumberedsubsec Changes in version 9.7.4 - -Annotations written out-of-order were not being sorted within @code{oannclose} -(which instead printed a message explaining how to sort them using -@samp{sortann}). This has now been fixed for all environments in which -@samp{sortann} can be run as another process by @samp{oannclose} (these -include all currently supported library configurations other than as a -Windows DLL). Once again, thanks to Bob Farrell for reporting this bug -and pointing out the (one-character!) fix. - -This problem affected only user-written applications that write annotations -out-of-order. If @samp{sortann} was run manually as instructed, output -annotation files would be identical to those produced using version 9.7.4. - -The functions @samp{iannclose} and @samp{oannclose} were incorrectly -documented in previous versions of this guide, which indicated that they -did not accept inputs. In fact, each of these functions requires a -single argument that specifies the annotator to which the call applies -(@pxref{iannclose and oannclose, , @code{iannclose} and @code{oannclose}}). - -@unnumberedsubsec Changes in version 9.7.3 - -If an annotation has been read, and @code{iannclose} has been used to close the -input annotation file, and @code{annopen} has subsequently opened a new -annotation file for input using the @samp{+xxx} syntax for the record -number, and the new input file is empty, then @code{getann} formerly -returned a ``phantom'' annotation at the same location as the last -annotation in the previous input file. This caused @samp{wfdbcollate} to -insert extra annotations in its output files in some cases; there are -no other known applications that triggered this bug, which has now been fixed. - -@unnumberedsubsec Changes in version 9.7.2 - -Correct results are now obtained when using @code{strtim("i")}, even -when the input record is a multi-segment, multi-frequency record with -skew correction required and frames do not necessarily begin on byte -boundaries. The correct samples are now returned by @code{getvec} or -@code{getframe} following multiple skips (calls to @code{isigsettime} or -@code{isgsettime}) in such records. Thanks once again to Bob Farrell -for reporting the problem and for his test cases that helped in finding -and correcting its causes. - -@unnumberedsubsec Changes in version 9.7.1 - -Minor changes for Win32 compatibility (thanks again to Bob Farrell). - -@unnumberedsubsec Changes in version 9.7 - -Support for compiling the WFDB library as a 32-bit MS Windows DLL has been -added (thanks to Bob Farrell). Define the symbols @code{_WIN32} and -@code{_WINDLL} when building the DLL, and define the symbol @code{_WIN32} -when compiling an application that uses the DLL. - -The string @samp{%r} is replaced by the record name wherever it appears in the -WFDB path (@pxref{WFDB path}. The string @samp{%@var{N}r}, where @var{N} is -a non-zero digit, is replaced by the first @var{N} characters of the -record name. When followed by any other character, @samp{%} is an -`escape'; thus, for example, to insert a literal @samp{%} in the WFDB -path, use @samp{%%}. - -It is now possible to write annotations out-of-order using @code{putann} -(@pxref{Annotation Order}). - -@unnumberedsubsec Changes in version 9.6.2 - -Version 5.0 and later versions of Apple's ISO 9660 CD-ROM driver for the -Macintosh handle version number suffixes more sensibly than do earlier -versions. When compiling the WFDB library on the Macintosh, the new driver -behavior is assumed by default; if you are still using a pre-5.0 version -of this driver, define the symbol FIXISOCD when compiling the WFDB library. - -@unnumberedsubsec Changes in version 9.6.1 - -A new annotation type (@code{LINK}) has been defined -(@pxref{Annotation Codes}). - -@unnumberedsubsec Changes in version 9.6 - -A new function was added to the WFDB library (@pxref{getspf}). - -A number of changes in the implementation of existing WFDB library functions now -make use of high-resolution mode (@pxref{Multi-Frequency Records}) almost -completely transparent to WFDB applications. The recommended practice is to call -@code{setgvmode(WFDB_HIGHRES)} @emph{before} calling @code{annopen}, -@code{wfdbinit}, @code{getvec}, @code{sampfreq}, @code{strtim}, or @code{timstr}. -By doing so, all @code{WFDB_Time} data visible to the application are in units of -the high-resolution sampling intervals(@pxref{setgvmode}). - -Note that the resolution of annotation times in annotation files created while -in high-resolution mode remains that of the low-resolution sampling intervals. -This may change in a future version of the WFDB library. - -@unnumberedsubsec Changes in version 9.5 - -The number of signals that may be read simultaneously, @code{WFDB_MAXSIG}, -was increased from 16 to 32. [This limit has been eliminated entirely as of -version 10.2.0.] - -@unnumberedsubsec Changes in version 9.4.2 - -Support for use of the WFDB library with Fortran programs was added -(@pxref{other languages}). - -@unnumberedsubsec Changes in version 9.4.1 - -In release 9.4.0 only, WFDB library function @code{setheader} did not properly -interpret the skew setting made by @code{wfdbsetskew} in the case of an -oversampled signal in a multi-frequency record. This has been corrected. - -@unnumberedsubsec Changes in version 9.4 - -Four new functions were added to the WFDB library to simplify management of -records with signal files containing prologs or intersignal skews. - -@pxref{wfdbgetskew} - -@pxref{wfdbsetskew} - -@pxref{wfdbgetstart} - -@pxref{wfdbsetstart} - -Also, @pxref{Glossary}, for definitions of @dfn{prolog} and @dfn{skew}. - -@code{newheader} and @code{setheader} now write header files containing skew -and byte offset fields if you have previously set non-zero values for these -parameters using @code{wfdbsetskew} or @code{wfdbsetstart}. - -If @code{wfdberror} is invoked before any errors have occurred, the character -string it returns now contains the WFDB library version number. Versions earlier -than 9.4 returned an empty string in this case. +Version 10.0.0 of the WFDB library is functionally identical with the +final release (version 9.7.4) of the DB library, except for the name +changes. It should be possible to recompile existing applications +written for DB library version 9.x without modification, and to link +them with WFDB library version 10.0.0. This is possible because two +sets of @code{#include} files are provided with the WFDB library. The +first set, accessible via @code{#include }, works with +applications written as described in this guide. The alternate set, +accessible via @code{#include }, is compatible with DB 9.x +applications as described in previous editions of this guide. @node Usage, Functions, Recent changes, Top @chapter Using the WFDB Library This chapter gives a brief overview of the steps needed to compile, load, and run a program that uses the WFDB library. It assumes that you -are able to log onto a UNIX-based computer on which the WFDB Software +are able to log onto a Unix-based computer on which the WFDB Software Package has been installed (@pxref{Installation, , Installing the WFDB Software Package}), and that you know how to create a source file using a text editor such @@ -788,14 +660,15 @@ * print samples:: A trivial example program. * compiling:: Compiling a C program with the WFDB library. * other languages:: Using the WFDB library with C++ or Fortran. -* WFDB path:: The database path (environment variable WFDB). +* WFDB path:: WFDB library environment variables. * running example:: Running the example program. * name restrictions:: Names to avoid when writing your programs. +* WFDB path syntax:: Customizing the WFDB path. * exercises 1:: A few questions. @end menu @node print samples, compiling, Usage, Usage -@section A Trivial Example Program +@section A Trivial Example Program in C Suppose we wish to print the first ten samples of record @file{100s}. (Record @file{100s} is the first minute of MIT-BIH Arrhythmia Database @@ -850,24 +723,37 @@ @cindex compiling @cindex loader options -To compile the example program on a UNIX system, we can say: +To compile the example program on a Unix system, we can say: @example cc -o psamples psamples.c -lwfdb @end example @noindent -to produce an executable program called @code{psamples}. You may use any -other compiler options you choose, but the @samp{-lwfdb} option must -appear in the @code{cc} command line following any and all source -(@file{*.c}) and object (@file{*.o}) file names, in order to instruct -the loader to search the WFDB library for any functions that the program -needs (in this case, @code{isigopen} and @code{getvec}). Some programs -will need additional libraries, and the corresponding @samp{-l} options -can usually be given before or after the @samp{-lwfdb} option. +to produce an executable program called @code{psamples}. (Your C +compiler may be named @file{gcc}, @file{acc}, @file{CC}, or something +else, rather than @file{cc}, but under any version of Unix, it will +almost certainly work as shown above.) You may use any other compiler +options you choose, but the @samp{-lwfdb} option must appear in the +@code{cc} command line following any and all source (@file{*.c}) and +object (@file{*.o}) file names, in order to instruct the loader to +search the WFDB library for any functions that the program needs (in +this case, @code{isigopen} and @code{getvec}). Some programs will need +additional libraries, and the corresponding @samp{-l} options can +usually be given before or after the @samp{-lwfdb} option. + +Under MS-Windows, it will be easiest to use @file{gcc}, the GNU C/C++ +compiler, which is included in the freely available Cygwin software +development system (@code{http://@-source@-.redhat@-.com/@-cygwin/}), +and also in the freely available MinGW package +(@code{http://@-www@-.mingw@-.org/}). An MS-DOS version of @file{gcc} +is available in the free djgpp package +(@code{http://@-www@-.delorie@-.com/@-djgpp/}). These are used within a +Cygwin terminal emulator window or an MS-DOS box in exactly the same way +as described above for Unix C compilers. -Each MS-DOS C or C++ compiler has its own idiosyncratic syntax, so no general -rule can be given for MS-DOS. With Microsoft C/C++, use: +Each proprietary C or C++ compiler has its own idiosyncratic syntax, so no +general rule can be given for these. With Microsoft C/C++, use: @example cl psamples.c -link wfdb @@ -892,207 +778,137 @@ @cindex C++ bindings If you prefer to write your applications in C++, you may do so, but note -that the WFDB library is written in C. (Most C++ compilers can be run in -ANSI/ISO C compatibility mode in order to compile the WFDB library +that the WFDB library is written in C. (Most C++ compilers can be run +in ANSI/ISO C compatibility mode in order to compile the WFDB library itself.) Each C++ source file that uses WFDB library functions must -include @file{}, in order to instruct your compiler to use C -conventions for argument passing and to use unmangled names for the WFDB -library functions. In order for this to work, your C++ compiler should -predefine @samp{__cplusplus} or @samp{c_plusplus}; if it predefines -neither of these symbols, modify @file{} so that the symbols -@samp{wfdb_CPP} and @samp{wfdb_PROTO} are defined at the top of the file. -Compile and link your program using whatever standard methods are -supported by your compiler for linking C++ programs with C libraries. -See your compiler manual for further information. +include @file{}, in order to instruct your compiler to use +C conventions for argument passing and to use unmangled names for the +WFDB library functions. In order for this to work, your C++ compiler +should predefine @samp{__cplusplus} or @samp{c_plusplus}; if it +predefines neither of these symbols, modify @file{} so that +the symbols @samp{wfdb_CPP} and @samp{wfdb_PROTO} are defined at the top +of the file, or define @samp{__cplusplus} in each of your source files +before including @file{}. Compile and link your program +using whatever standard methods are supported by your compiler for +linking C++ programs with C libraries. See your compiler manual for +further information. @cindex Fortran bindings @cindex wrappers for Fortran A set of wrapper functions is also available for those who wish to use the WFDB library together with applications written in Fortran. These -functions provide a thin `wrapper' around the WFDB library functions, by +functions, defined in @file{wfdbf.c}, provide a thin `wrapper' around the WFDB library functions, by accepting Fortran-compatible arguments (there are no structures, and all -arguments are passed by reference rather than by value). You will still -need a C or C++ compiler to compile the WFDB library and the wrapper -functions themselves. The Fortran wrapper functions are not discussed -in this guide; for further information, refer to @file{fortran/readme.doc} -in the WFDB Software Package (included in version 9.4 and later versions). +arguments are passed by reference rather than by value). For example, +here is the Fortran equivalent of the example program in the previous +section: + +@page +@example + integer i, v(2), g + + i = isigopen("100s", 2) + do i = 1, 10 + g = getvec(v) + write (6,3) v(1), v(2) + 3 format("v(1) = ", i4, " v(2) = ", i4) + end do + end +@end example + +@noindent +To compile this program using @code{g77} (the GNU Fortran compiler), save it as +@file{fsamples.f}, copy @file{wfdbf.c} from the @file{fortran} directory of the +WFDB Software Package sources or from +@code{http://@-www.@-physio@-net.@-org/@-physio@-tools/@-wfdb/@-fortran/@-wfdbf.c}, +then type: + +@example +g77 -o fsamples -fwritable-strings fsamples.f wfdbf.c -lwfdb +@end example + +@noindent +The Fortran wrapper functions are not discussed in this guide; for further +information, refer to @file{fortran/README} in the WFDB Software Package. @cindex Matlab bindings @cindex Octave bindings -@cindex wrappers for Matlab or Octave +@cindex Scilab bindings +@cindex wrappers for Matlab, Octave, or Scilab It should be possible to write a similar set of wrapper functions for use with -Matlab or Octave (a freely available open-source language that is compatible -with Matlab, available from @code{http://www.che.wisc.edu/octave/}). At this -time, such wrappers are not available, but a reimplementation of a useful -subset of the WFDB library in native m-code (contributed by Jose Garcia Moros -and Salvador Olmos) is available from -@code{http://www.physionet.org/physiotools/matlab/}. +Matlab, Octave (a freely available open-source language that is compatible with +Matlab, available from @code{http://www.che.wisc.edu/octave/}), or Scilab (an +open-source scientific software package for numerical computations, with a +language similar to that of Matlab, available from +@code{http://www-rocq.@-inria.@-fr/@-scilab/}). At this time, such wrappers +are not available, but a reimplementation of a useful subset of the WFDB +library in native m-code (contributed by Jose Garcia Moros and Salvador Olmos) +is available from +@code{http://www.@-physio@-net.@-org/@-physio@-tools/@-matlab/}. Jesus Olivan +Palacios has written a tutorial (available at +@code{http://www.@-neurotraces.@-com/@-scilab/@-sciteam/}) on using the WFDB +Software Package with Scilab. @node WFDB path, running example, other languages, Usage @comment node-name, next, previous, up -@section The Database Path +@section The Database Path and Other Environment Variables @cindex database path (setting) @cindex path (database) @cindex directories for WFDB files @cindex WFDB files (finding) @cindex finding WFDB files @cindex @code{WFDB} (environment variable) +@cindex @code{WFDBCAL} (environment variable) +@cindex @code{WFDBGVMODE} (environment variable) +@cindex @code{WFDBANNSORT} (environment variable) -When WFDB applications @emph{read} database files, they must be able to -find them in various locations that may vary from system to system. -The WFDB library refers to a character string that consists of an ordered -list of locations to be searched @emph{for input files}. This string -is called the @dfn{database path}, or the @dfn{WFDB path}. Under UNIX and -VMS, the WFDB path is a colon-separated list of prefixes, in the format -used for the Bourne shell's @code{PATH} variable. Under MS-DOS and on -the Macintosh, the WFDB path is in the format used for the MS-DOS -@code{PATH} variable, with semicolons used to separate prefixes (colons -retain their customary meanings, as drive letter suffixes under MS-DOS, -or as directory separators on the Macintosh). When a WFDB file must be -opened for input, the WFDB library attempts to locate it by attaching each -of the components of the WFDB path (one at a time) as a prefix to the file -name. If two or more matching files exist in different locations in -the WFDB path, the WFDB library opens only the file that resides in the -first of these locations named in the WFDB path. Any other matching -files are effectively invisible to WFDB applications unless the WFDB path is -rearranged. - -@cindex NETFILES -Alternatively, components of the WFDB path may be separated by -whitespace (under any operating system), and the WFDB path may contain -@code{http://} and @code{ftp://} URL prefixes (other schema, such as -@code{file://} and @code{https://}, may also be supported if they are -supported by your version of @code{libwww}). If @code{NETFILES} -support is not compiled into the WFDB library, any WFDB path components -containing @file{://} are ignored. (These -features were first introduced in WFDB library version 10.1.0.) - -When WFDB applications @emph{write} database files, these files are -generally written to the current directory. (As an example, an -application that analyzes one or more signals in a record may record its -findings in an annotation file in the current directory.) - -Note particularly that the current directory is @emph{not} necessarily -part of the WFDB path. In order to be sure that your WFDB applications can -read any WFDB files that you have previously written in the current -directory, be sure that your WFDB path includes an empty (null) component, -which corresponds to the current directory. In most cases, this null -component should be the first in the WFDB path. Thus, if you write into -the current directory a modified version of an existing WFDB file, any -later actions that would read this file will read your modified version -rather than the original. - -@cindex database path (default) +WFDB applications make use of several @dfn{environment variables}, which are +named @code{WFDB}, @code{WFDBCAL}, @code{WFDBGVMODE}, and @code{WFDBANNSORT}. +If these variables have not been otherwise defined by the user, their values +are those given by @code{DEFWFDB}, @code{DEFWFDBCAL}, @code{DEFWFDBGVMODE}, +and @code{DEFWFDBANNSORT} (defined in @file{wfdblib.h} at the +time the WFDB library was compiled). Unless you have a non-standard +setup, you may not need to set these variables, but it will be helpful +to read this section to understand how they influence the behavior of +WFDB applications. -A default WFDB path may be specified at the time the WFDB library is -compiled, by defining a value for the symbol @code{DEFWFDBP} in -@file{wfdblib.h}. On most systems, the environment variable @code{WFDB}, if -set, specifies the value of the WFDB path, and overrides the default value -if any. On the Macintosh, for which the concept of environment +When WFDB applications @emph{read} database files, they must be able to +find them in various locations that may vary from system to system. The +WFDB library refers to a character string that consists of an ordered +list of locations to be searched @emph{for input files}. This string is +called the @dfn{database path}, or the @dfn{WFDB path}. + +On most systems, the environment variable @code{WFDB}, if set, specifies +the value of the WFDB path, and overrides the default value. If you +need to use a non-default WFDB path, you must set the @code{WFDB} +environment variable appropriately before running any WFDB applications, +so that the WFDB path can be examined by the running program. The WFDB +software package includes easily customizable shell scripts (batch +files) that illustrate how to do this for popular shells and command +interpreters; see @emph{setwfdb}(1), in the @cite{WFDB Applications +Guide}. (On the Macintosh, for which the concept of environment variables is foreign, the WFDB path may be set only by using -@code{DEFWFDBP}. - -@cindex indirect WFDB path -@cindex file containing WFDB path -@cindex database path file (indirect) - -If the WFDB library finds that the value assigned to the WFDB path is of the -form @samp{@@@var{file}}, it replaces that value with the contents of -the specified @var{file}. (This feature was first introduced in WFDB -library version 8.0.) Indirect WFDB path files may be nested up to ten -levels (this arbitrary limit is imposed to avoid infinite recursion if -the contents of the indirect file are incorrect). This method of -indirect assignment is useful on the Macintosh, where recompilation of -the WFDB library would otherwise be necessary in order to change the WFDB -path. It may also be useful under MS-DOS to reduce the need for -environment space, or if the length of the command needed to set the -@code{WFDB} environment variable would otherwise approach or exceed the -128-byte limit for MS-DOS commands. - -If a WFDB header file (@pxref{Database Files}) specifies that a signal -file is to be found in a directory that is not already in the WFDB path, -that directory is appended to the end of the WFDB path; in this case, if -the WFDB path is not set, it is created with an initial null component -followed by the directory that contains the signal file. (This feature -was first introduced in WFDB library version 6.2.) - -The string @samp{%r} is replaced by the current record name wherever it appears -in the WFDB path; @samp{%@var{N}r} is replaced by the first @var{N} -digits of the record name, if @var{N} is a non-zero digit. For example, -if (under UNIX) the WFDB path is @samp{:/cdrom/mimicdb/%3r:/cdrom/mitdb}, -a request to read a file associated with record 055n will cause the WFDB -library to look first in the current directory (since the WFDB path begins -with an empty component), then in @samp{/cdrom/mimicdb/055}, and then in -@samp{/cdrom/mitdb}. If @samp{%} is followed by any character other than -@samp{r} or a non-zero digit followed by @samp{r}), that character is used -as is in the WFDB path; thus a literal @samp{%} can be included in the WFDB -path by `escaping' it as @samp{%%}. (Substitutions of @samp{%}-strings -in the WFDB path were first introduced in WFDB library version 9.7.) - -Before the example program can be run successfully, @code{WFDB} must be -set appropriately and placed in the environment where it can be examined -by the running program. If you use the Bourne shell (@code{sh}), the -GNU Bourne Again shell (@code{bash}), or the Korn shell (@code{ksh}), do -so by typing - -@example -. setwfdb -@end example - -@noindent -@cindex @code{.profile} -@cindex @code{setwfdb} -(or by placing this command in your @file{.profile}, which will cause -@code{WFDB} to be set automatically whenever you log in). If you use the -C-shell (@code{csh}) or a variant of it (such as @code{ecsh} or @code{tcsh}), -type - -@example -source /usr/local/bin/cshsetwfdb -@end example - -@noindent -@cindex @code{.cshrc} -@cindex @code{cshsetwfdb} -(or put this command in your @file{.cshrc}). These shell scripts should -be available on any system on which the WFDB library itself is available, -although they may not be in @file{/usr/local/bin} as shown above. If -you cannot find the script you need, consult an expert (such as the -person who installed the WFDB library on your system). Note that the -default value for @code{WFDB} obtained in this way begins with the current -directory, and includes all standard directories in which database -records are kept. Thus, if you create your own database records or -files, you may keep them in your own directory without special -arrangements. - -Under MS-DOS, you may set @code{WFDB} using the batch file -@file{setwfdb.bat} (created during installation of the WFDB Software -Package), or you may include the contents of that file in your -@file{autoexec.bat} file, which will cause @code{WFDB} to be set automatically -whenever your system is rebooted. Since environment space under -MS-DOS is an operating system resource and is often in very short -supply, you may need to allocate additional environment space within -your @file{config.sys} file, with a line of the form - -@example -shell=c:\command.com /p /e:512 -@end example - -@noindent -See your MS-DOS manual for further information. +@code{DEFWFDB}.) For further information, @pxref{WFDB path syntax}. @cindex calibration file @cindex @code{WFDBCAL} (environment variable) -These shell scripts usually set the @code{WFDBCAL} environment variable, -which is important if you make use of records that contain signals other -than ECGs. @code{WFDBCAL} names a @dfn{calibration file} located in one -of the directories named by @code{WFDB}. (Beginning with WFDB library -version 8.3, the symbol @code{DEFWFDBC} may be defined in @file{wfdblib.h} -to specify the name of a default calibration file, to be used by the WFDB -library if @code{WFDBCAL} has not been set.) Each signal type may be -represented by an entry in the calibration file. Entries specify the -characteristics of any calibration pulses that may be present, and -customary scales for plotting the signals. +The shell scripts that set @code{WFDB} also set the @code{WFDBCAL} +environment variable, which is important if you make use of records that +contain signals other than ECGs. @code{WFDBCAL} names a +@dfn{calibration file} located in one of the directories named by +@code{WFDB}. (The symbol @code{DEFWFDBCAL} is usually defined in +@file{wfdblib.h} to specify the name of a default calibration file, to +be used by the WFDB library if @code{WFDBCAL} has not been set.) Each +signal type may be represented by an entry in the calibration file. +Entries specify the characteristics of any calibration pulses that may +be present, and customary scales for plotting the signals. + +@cindex annotation (canonical order) +@cindex canonical order of annotations +The other environment variables are less frequently used than @code{WFDB} +and @code{WFDBCAL}, and in most cases, the compiled-in defaults will be +appropriate (@pxref{Annotation Order}, and @pxref{Multi-Frequency Records}, +for details). @node running example, name restrictions, WFDB path, Usage @section Running the Example Program @@ -1124,7 +940,7 @@ The left column contains samples from signal 0, and the right column contains those from signal 1. -@node name restrictions, exercises 1, running example, Usage +@node name restrictions, WFDB path syntax, running example, Usage @section A Note on Identifiers @cindex function name restrictions @cindex external identifiers (restrictions) @@ -1147,7 +963,115 @@ and data types defined within @file{}. Use these identifiers as needed in your programs, but avoid redefining them. -@node exercises 1, , name restrictions, Usage +@node WFDB path syntax, exercises 1, name restrictions, Usage +@section More About the WFDB Path + +When a WFDB file must be opened for input, the WFDB library attempts to +locate it by attaching each of the components of the WFDB path (one at a +time) as a prefix to the file name. If two or more matching files exist +in different locations in the WFDB path, the WFDB library opens only the +file that resides in the first of these locations. Any other matching +files are effectively invisible to WFDB applications unless the WFDB +path is rearranged. + +@cindex database path (default) + +The default WFDB path is specified at the time the WFDB library is +compiled, by defining a value for the symbol @code{DEFWFDB} in +@file{wfdblib.h}. Current versions of the WFDB library are compiled +with a three-component default WFDB path; the first component is empty +(i.e., it refers to the current directory), the second component names +the @dfn{system-wide database directory} (which contains the sample WFDB +files supplied with the WFDB software package), and the third component +is @code{http://www.physionet.org/physiobank/database} (referring to the +PhysioBank data archives). Note that this default may be changed at the +time the WFDB library is compiled. Normally, however, this means that +any record available from PhysioBank is readable by any WFDB application +provided that PhysioBank is accessible from the user's computer and that +the database name is included in the record name (for example, +@file{slpdb/slp60} or @file{nsrdb/16265}). + +Under Unix and VMS, the WFDB path can be given as a colon-separated list +of prefixes, in the format used for the Bourne shell's @code{PATH} +variable. Under MS-Windows, MS-DOS, and MacOS, the WFDB path can be +given in the format used for the MS-DOS @code{PATH} variable, with +semicolons used to separate prefixes (colons retain their customary +meanings, as drive letter suffixes under MS-DOS, or as directory +separators on the Macintosh). Alternatively, components of the WFDB +path may be separated by whitespace (under any operating system); this +also implies that embedded spaces are not permitted within path +components. @strong{For this reason, avoid using directories with names +such as @file{My Documents}, or their subdirectories, to store WFDB files.} + +When WFDB applications @emph{write} database files, these files are +generally written to the current directory. (As an example, an +application that analyzes one or more signals in a record may record its +findings in an annotation file in the current directory.) If the record +name (as provided by the application to the WFDB library) contains path +information, however, output files are written to the corresponding +subdirectory of the current directory. (For example, if a WFDB +application writes an annotation file for record @code{edb/e0103}, the +file will be written in the @code{edb} subdirectory of the current +directory. The @code{edb} subdirectory will be created by the WFDB +library if does not exist already. This feature was introduced in WFDB +library version 10.2.0.) + +Note particularly that the current directory is @emph{not} necessarily +part of the WFDB path. If you modify your WFDB path, you must +explicitly include an empty (null) component, which corresponds to the +current directory, in order to be sure that your WFDB applications can +read any WFDB files that you have previously written. In most cases, +this null component should be the first in the WFDB path. Thus, if you +write into the current directory a modified version of an existing WFDB +file, any later actions that would read this file will read your +modified version rather than the original. + +@cindex NETFILES +The WFDB path may contain @code{http://} and @code{ftp://} URL prefixes +(other schema, such as @code{file://} and @code{https://}, may also be +supported if they are supported by your version of @code{libwww}). If +NETFILES support is not compiled into the WFDB library, any WFDB +path components containing @file{://} are ignored. (These features were +first introduced in WFDB library version 10.1.0.) + +@cindex indirect WFDB path +@cindex file containing WFDB path +@cindex database path file (indirect) + +If the WFDB library finds that the value assigned to the WFDB path is of the +form @samp{@@@var{file}}, it replaces that value with the contents of +the specified @var{file}. (This feature was first introduced in WFDB +library version 8.0.) Indirect WFDB path files may be nested up to ten +levels (this arbitrary limit is imposed to avoid infinite recursion if +the contents of the indirect file are incorrect). This method of +indirect assignment is useful on the Macintosh, where recompilation of +the WFDB library would otherwise be necessary in order to change the WFDB +path. It may also be useful under MS-DOS to reduce the need for +environment space, or if the length of the command needed to set the +@code{WFDB} environment variable would otherwise approach or exceed the +128-byte limit for MS-DOS commands. + +If a WFDB header file (@pxref{Database Files}) specifies that a signal +file is to be found in a directory that is not already in the WFDB path, +that directory is appended to the end of the WFDB path; in this case, if +the WFDB path is not set, it is created with an initial null component +followed by the directory that contains the signal file. (This feature +was first introduced in WFDB library version 6.2.) + +The string @samp{%r} is replaced by the current record name wherever it appears +in the WFDB path; @samp{%@var{N}r} is replaced by the first @var{N} +digits of the record name, if @var{N} is a non-zero digit. For example, +if (under Unix) the WFDB path is @samp{:/cdrom/mimicdb/%3r:/cdrom/mitdb}, +a request to read a file associated with record 055n will cause the WFDB +library to look first in the current directory (since the WFDB path begins +with an empty component), then in @samp{/cdrom/mimicdb/055}, and then in +@samp{/cdrom/mitdb}. If @samp{%} is followed by any character other than +@samp{r} or a non-zero digit followed by @samp{r}, that character is used +as is in the WFDB path; thus a literal @samp{%} can be included in the WFDB +path by `escaping' it as @samp{%%}. (Substitutions of @samp{%}-strings +in the WFDB path were first introduced in WFDB library version 9.7.) + +@node exercises 1, , WFDB path syntax, Usage @section Exercises These exercises should require only a few minutes. If you work through @@ -1155,14 +1079,45 @@ the most common errors in using the WFDB library. @enumerate + +@item +Compile the example program in this chapter and run it. If the WFDB +Software Package has not already been installed on your system, +download and install the most recent version from PhysioNet first +(@pxref{Installation, , Installing the WFDB Software Package}). + @item Find out where database records are kept on your system. What records -are available? +are available locally? + +@item +Modify the example program so that you can specify the record to be +opened, either as a command-line argument or by having the program prompt +you to type a record name. If you are unfamiliar with command-line +argument processing, @pxref{Example 2}. @item -Run the example program in this chapter @emph{without} setting the WFDB -path. Try doing so from your home directory, and from the directory -where record @file{100s} is kept. Can you explain the results? +Use the modified version of the example to read samples from records +@file{mitdb/200}, @file{edb/e0103}, @file{slpdb/slp04}, and +@file{mimicdb/237/237}. The last two of these records have 4 and 6 signals +respectively, so you will need to make a few additional changes to the program +in order to read these records successfully. + +@item +Once again using the modified version of the example, what happens if +you omit the path information from one of the records in the previous +exercise (for example, if you try to open @file{e0103} instead of +@file{edb/e0103}? Figure out how to set the WFDB path so that the +program will work properly in this case. (Hint: use the application +@file{wfdbwhich}, included with the WFDB Software Package, to find the +header file for record @file{edb/e0103}; this information will help +you to determine how to set the WFDB path.) + +@item +If you use MS-DOS or MS-Windows, explore and explain what happens in +the previous exercise if you type the record name using upper-case +letters, or if you type a @samp{\} (backslash) instead of @samp{/} +(forward slash). (Hint: record names are @emph{not} filenames!) @item What happens when you compile the example program as shown, but with the @@ -1251,16 +1206,16 @@ the gruesome details of how the data are actually stored. You should know, however, that there are files that contain digitized signals, other files that contain annotations, and still others (called -@file{header} files) that describe attributes of the signals such as +@dfn{header} files) that describe attributes of the signals such as sampling frequency. The database path lists directories in which database files are found; the WFDB library functions can find them given only the record (and annotator) names, provided that @code{WFDB} has been properly set (@pxref{WFDB path}). WFDB library functions responsible for -opening signal files find them by reading the @file{header} file (which +opening signal files find them by reading the header file (which contains their names) first. The first part of this chapter describes functions that extract -information from @file{header} files in order to gain access to signal +information from header files in order to gain access to signal and annotation files. The following two sections describe functions that deal with signal and annotation files. Many readers will not need to go any further; the remaining sections deal with special-purpose @@ -1356,7 +1311,7 @@ @code{putann(0, &annot)} will write an annotation for annotator @file{b}. Input annotation files will be found if they are located in any of the directories specified by @code{WFDB} (@pxref{WFDB path}); output annotators -are created in the current directory (but note that, under UNIX at +are created in the current directory (but note that, under Unix at least, it is possible to specify annotator names such as @file{/here} or @file{zzz/there} or even @file{../somewhere/else}; @pxref{Annotation Files}, for details of how file names are constructed from annotator and @@ -1386,10 +1341,9 @@ @item @t{ 0} Failure: no input signals available @item @t{-1} -Failure: unable to read @file{header} file (probably incorrect record -name) +Failure: unable to read header file (probably incorrect record name) @item @t{-2} -Failure: incorrect @file{header} file format +Failure: incorrect header file format @end table @c @end group @@ -1400,7 +1354,7 @@ @var{record} after discarding the @samp{+}. Otherwise, @code{isigopen} closes any previously opened input signal files, and takes all of @var{record} as the record name. If the record name is @samp{-}, -@code{isigopen} reads the standard input rather than a @file{header} +@code{isigopen} reads the standard input rather than a @file{hea} file. @var{Siarray} is a pointer to an array of @code{WFDB_Siginfo} structures @iftex @@ -1429,7 +1383,7 @@ allocate storage for the @code{WFDB_Siginfo} structures; @code{isigopen} will fill them in with information about the signals. @dfn{Signal numbers} are assigned in the order in which signals are specified in the -@file{header} file for the record; on return from @code{isigopen}, +@file{hea} file for the record; on return from @code{isigopen}, information for signal @var{i} will be found in @var{siarray[i]}. For example, we can read the @code{gain} attributes of each signal in record @file{100s} like this: @@ -1467,7 +1421,7 @@ number of signals determined from the first call (@code{nsig}). An error message is produced if @code{isigopen} is unable to open -@emph{any} of the signals listed in the @file{header} file. It is not +@emph{any} of the signals listed in the header file. It is not considered an error if only some of the signals can be opened, however. A signal will not be opened if its signal file is unreadable, if an input buffer cannot be allocated for it, or if opening all of the @@ -1494,11 +1448,11 @@ @ifinfo -@var{nsig} @end ifinfo -members of @var{siarray}, based on information from the @file{header} file +members of @var{siarray}, based on information from the header file for @var{record}, but @emph{no signals are actually opened}. The value -returned in this case is the number of signals named in the @file{header} file. +returned in this case is the number of signals named in the @file{hea} file. Note, however, that there is no guarantee that all (or indeed any) of the -signals named in the @file{header} file are available to be opened. +signals named in the @file{hea} file are available to be opened. The features described in this paragraph were first introduced in version 4.4 of the WFDB library. @@ -1519,9 +1473,9 @@ Success: the returned value is the number of output signals; this number should match @var{nsig} @item @t{-1} -Failure: unable to read @file{header} file +Failure: unable to read header file @item @t{-2} -Failure: incorrect @file{header} file format +Failure: incorrect header file format @item @t{-3} Failure: unable to open output signal(s) @end table @@ -1530,8 +1484,8 @@ @noindent This function opens output signal files. Use it only if signals are to be @emph{written} using @code{putvec}. The signal specifications, -including the file names, are read from the @file{header} file for a -specified record. Unmodified MIT or AHA database @file{header} files +including the file names, are read from the header file for a +specified record. Unmodified MIT or AHA database @file{hea} files cannot be used, since @code{osigopen} would attempt to overwrite the (write-protected) signal files named within. If @var{record} begins with @samp{+}, previously opened output signal files are left open, and @@ -1539,7 +1493,7 @@ discarding the @samp{+}. Otherwise, @code{osigopen} closes any previously opened output signal files, and takes all of @var{record} as the record name. If the record name is @samp{-}, @code{osigopen} reads -the standard input rather than a @file{header} file. @var{siarray} is a +the standard input rather than a @file{hea} file. @var{siarray} is a pointer to an uninitialized array of @code{WFDB_Siginfo} structures; @var{siarray} must contain at least @var{nsig} members. The caller must allocate storage for the @code{WFDB_Siginfo} structures. On return, @@ -1547,7 +1501,7 @@ the signal specifications. No more than @var{nsig} (additional) output signals will be opened by -@code{osigopen}, even if the @file{header} contains specifications for +@code{osigopen}, even if the header file contains specifications for more than @var{nsig} signals. For example, this code fragment @example @@ -1598,7 +1552,7 @@ @noindent This function opens output signals as does @code{osigopen}, but the signal specifications, including the signal file names, are supplied by -the caller to @code{osigfopen}, rather than read from a @file{header} +the caller to @code{osigfopen}, rather than read from a header file as in @code{osigopen}. Any previously open output signals are closed by @code{osigfopen}. @var{siarray} is a pointer to an array of @code{WFDB_Siginfo} structures @@ -1645,10 +1599,10 @@ (not an error for programs that don't need them; no error message is printed if @var{nsig} is 0) @item @t{-1} -Failure: unable to read @file{header} file (probably incorrect record +Failure: unable to read header file (probably incorrect record name) @item @t{-2} -Failure: incorrect @file{header} file format +Failure: incorrect header file format @item @t{-3} Failure: unable to open input annotation file @item @t{-4} @@ -1732,7 +1686,7 @@ @noindent This function reads a sample from each input signal. The caller should -allocate storage for an array of WFDB_Samples (integers) and pass a +allocate storage for an array of @code{WFDB_Sample}s (integers) and pass a pointer to this array to @code{getvec}. (The length of the array must be no less than the number of input signals, as obtained from @code{isigopen} or @code{wfdbinit}.) On return, @var{vector[i]} @@ -1801,20 +1755,19 @@ @c @end group @noindent -This function reads a vector of samples, including at least one sample -from each open input signal. If all signals are sampled at the same -frequency, only one sample is read from each signal. Otherwise, signals -sampled at multiples of the frame frequency are represented by two or -more consecutive elements of the returned @var{vector}. For example, -if the frame frequency is 125 Hz, signal 0 is sampled at 500 Hz, and the -remaining 3 signals are sampled at 125 Hz each, then the returned -@var{vector} has 7 valid components: the first 4 are samples of signal -0, and the remaining 3 are samples of signals 1, 2, and 3. The caller -should allocate storage for an array of WFDB_Samples (integers) and pass a -pointer to this array to @code{getframe}. The length of @var{vector} -must be determined by summing the values of the @code{spf} (samples per -frame) fields in the @code{WFDB_Siginfo} structures associated with the -input signals +This function reads a vector of samples, including at least one sample from +each open input signal. If all signals are sampled at the same frequency, only +one sample is read from each signal. Otherwise, signals sampled at multiples +of the frame frequency are represented by two or more consecutive elements of +the returned @var{vector}. For example, if the frame frequency is 125 Hz, +signal 0 is sampled at 500 Hz, and the remaining 3 signals are sampled at 125 +Hz each, then the returned @var{vector} has 7 valid components: the first 4 are +samples of signal 0, and the remaining 3 are samples of signals 1, 2, and 3. +The caller should allocate storage for an array of @code{WFDB_Sample}s +(integers) and pass a pointer to this array to @code{getframe}. The length of +@var{vector} must be determined by summing the values of the @code{spf} +(samples per frame) fields in the @code{WFDB_Siginfo} structures associated +with the input signals @iftex (@pxref{isigopen, , @code{isigopen}}). @end iftex @@ -1847,13 +1800,12 @@ @c @end group @noindent -This function writes a sample to each input signal. The caller should -fill an array of WFDB_Samples with the samples and pass a pointer to this -array to @code{putvec}. (The length of the array must be no less than -the number of output signals, as given to @code{osigfopen} or -@code{osigopen}.) On entry, @var{vector[i]} contains the next sample -from signal @var{i}. For example, this modified version of the previous -example +This function writes a sample to each input signal. The caller should fill an +array of @code{WFDB_Sample}s with the samples and pass a pointer to this array +to @code{putvec}. (The length of the array must be no less than the number of +output signals, as given to @code{osigfopen} or @code{osigopen}.) On entry, +@var{vector[i]} contains the next sample from signal @var{i}. For example, +this modified version of the previous example @iftex (@pxref{getvec, , @code{getvec}}) @end iftex @@ -1896,13 +1848,10 @@ @ifinfo (@pxref{wfdbquit}). @end ifinfo -This example uses record @file{8l} (@pxref{Piped and Local Records}) for -the output signal specifications; the output signal files will be named -@file{data0} and @file{data1} in the current directory. The array of -@code{WFDB_Siginfo} structures is declared @code{static}, a practice that is -recommended for all arrays and data structures of any substantial size, -to avoid run-time stack overflow. Several of the example programs in -chapter 6 illustrate the use of @code{putvec}; for example, +This example uses record @file{8l} (@pxref{Piped and Local Records}) for the +output signal specifications; the output signal files will be named +@file{data0} and @file{data1} in the current directory. Several of the example +programs in chapter 6 illustrate the use of @code{putvec}; for example, @pxref{Example 6}. @cindex annotation I/O @@ -1942,7 +1891,7 @@ pointed to by @var{annot}. The caller must allocate storage for the annotation structure. Input annotators are numbered 0, 1, 2, etc. This short program uses @code{getann} to read the contents of the reference -(@file{atruth}) annotation file for record @file{100s}: +(@file{atr}) annotation file for record @file{100s}: @example #include @@ -1952,7 +1901,7 @@ WFDB_Anninfo a; WFDB_Annotation annot; - a.name = "atruth"; a.stat = WFDB_READ; + a.name = "atr"; a.stat = WFDB_READ; if (annopen("100s", &a, 1) < 0) exit(1); while (getann(0, &annot) == 0) @@ -2172,7 +2121,7 @@ occasionally cause incorrect results. To avoid this problem when using that version of the library, make at least one call to @code{getann} before using @code{iannsettime}. The bug was corrected in version 4.0 -of the WFDB library. +of the library. @page @node conversion, calibration, non-sequential, Functions @@ -2310,7 +2259,7 @@ @example int setannstr(int @var{code}, char *@var{string}) -int setanndesc(int@var{code}, char *@var{string}) +int setanndesc(int @var{code}, char *@var{string}) int setecgstr(int @var{code}, char *@var{string}) @end example @noindent @@ -2377,7 +2326,7 @@ strings and times in units of sample intervals. Normally they should be invoked after @code{isigopen}, @code{wfdbinit}, or @code{sampfreq}, any of which will determine the duration of a sample interval and the base time -from a @file{header} file, or after defining these quantities using +from a header file, or after defining these quantities using @code{setsampfreq} and @code{setbasetime}. If this is not done, or if these time-conversion functions are used after @code{wfdbquit}, they will perform conversions in units of seconds (i.e., the sample interval is @@ -2412,7 +2361,7 @@ @code{mstimstr}, with leading zero digits and colons suppressed. If @var{t} is zero or negative, it is taken to represent negated elapsed time from the beginning of the record, and it is converted to a time of -day using the base time for the record as indicated by the @file{header} +day using the base time for the record as indicated by the @file{hea} file or the caller @iftex (@pxref{setbasetime, , @code{setbasetime}}); @@ -2489,7 +2438,7 @@ If the argument is bracketed (as in the second, third, and fourth examples), it is taken as a time of day, and @code{strtim} uses the base time defined -by the @file{header} file or by the caller +by the header file or by the caller @iftex (@pxref{setbasetime, , @code{setbasetime}}); @end iftex @@ -2539,7 +2488,7 @@ @cindex conversion between Julian date and string @example -char *datstr(DB_Dwfdbe @var{date}) +char *datstr(WFDB_Date @var{date}) @end example @noindent @strong{Return:} @@ -2581,6 +2530,8 @@ French and American national holidays is @code{strdat("14/7/1789")} -- @code{strdat("4/7/1776")}. +@sp 2 + @node aduphys and physadu, , datstr and strdat, conversion The next four functions convert between analog-to-digital converter @@ -2594,8 +2545,8 @@ @var{s}, irrespective of the @code{baseline} values specified in the header file). Normally, these functions should be invoked after @code{isigopen} or @code{wfdbinit}, either of which will determine the -gain from the @file{header} file. If this is not done, or if the -@file{header} file indicates that the gain is uncalibrated, or if the +gain from the @file{hea} file. If this is not done, or if the +header file indicates that the gain is uncalibrated, or if the specified input signal is not currently open, a gain of @code{WFDB_DEFGAIN} (defined in @file{}) ADC units per millivolt, and a baseline of zero, are assumed. If the physical units @@ -2728,6 +2679,7 @@ @findex calopen (6.0) @cindex calibration file (reading) @cindex reading calibration files +@cindex @code{WFDBCAL} (environment variable) @example int calopen(char *@var{file}) @@ -2876,10 +2828,10 @@ @section Miscellaneous WFDB Functions @menu -* newheader:: Creating a @file{header} file for a new WFDB +* newheader:: Creating a @file{hea} file for a new WFDB record. -* setheader:: Creating or changing a @file{header} file. -* setmsheader:: Creating a @file{header} for a multi-segment +* setheader:: Creating or changing a @file{hea} file. +* setmsheader:: Creating a @file{hea} for a multi-segment record. * wfdbquit:: Closing WFDB files. * iannclose and oannclose:: Closing annotation files. @@ -2898,8 +2850,8 @@ * wfdbfile:: Obtaining the pathname of a WFDB file. * wfdbflush:: Flushing buffered output annotations and samples. -* getinfo:: Reading info strings from a @file{header} file. -* putinfo:: Writing info strings into a @file{header} file. +* getinfo:: Reading info strings from a @file{hea} file. +* putinfo:: Writing info strings into a @file{hea} file. * setibsize:: Setting the default input buffer size. * setobsize:: Setting the default output buffer size. * wfdbgetskew:: Reading intersignal skew. @@ -2913,8 +2865,8 @@ @node newheader, setheader, miscellaneous functions, miscellaneous functions @unnumberedsubsec newheader @findex newheader -@cindex @code{header} files (creating) -@cindex creating @file{header} files +@cindex header files (creating) +@cindex creating header files @example int newheader(char *@var{record}) @@ -2925,18 +2877,20 @@ @item @t{ 0} Success @item @t{-1} -Failure: unable to create @file{header} file +Failure: unable to create header file @end table @c @end group @cindex record names (restrictions) @noindent -This function creates a @file{header} file (in the current directory). +This function creates a @file{hea} file (in the current directory, unless +@var{record} includes path information). Use @code{newheader} just after you have finished writing the signal files, but before calling @code{wfdbquit}. If @var{record} begins with @samp{+}, the @samp{+} is discarded and the remainder of @var{record} is -taken as the record name. Otherwise, all of @var{record} is taken to be -the record name. If the record name is @samp{-}, the @file{header} file +taken as the record name. Otherwise, all of @var{record} (excluding any +path information) is taken to be +the record name. If the record name is @samp{-}, the header file is written to the standard output. Record names may include letters in lower or upper case, digits, and underscores (@samp{_}); they may not include any other characters. If @var{record} does not conform to these @@ -2958,10 +2912,10 @@ @node setheader, setmsheader, newheader, miscellaneous functions @unnumberedsubsec setheader @findex setheader (5.0) -@cindex @code{header} files (creating) -@cindex @code{header} files (modifying) -@cindex creating @file{header} files -@cindex modifying @file{header} files +@cindex header files (creating) +@cindex header files (modifying) +@cindex creating header files +@cindex modifying header files @example int setheader(char *@var{record}, WFDB_Siginfo *@var{siarray}, unsigned int @var{nsig}) @@ -2972,20 +2926,20 @@ @item @t{ 0} Success @item @t{-1} -Failure: unable to create @file{header} file +Failure: unable to create header file @end table @c @end group @noindent -This function creates or recreates a @file{header} file (in the current +This function creates or recreates a header file (in the current directory) for the specified @var{record}, based on the contents of the first @var{nsig} members of @var{siarray}. The preferred way to create a header file for a new record is using @code{newheader}, which records signal checksum and length variables maintained by @code{putvec}. The -intended use of @code{setheader} is for editing @file{header} files, +intended use of @code{setheader} is for editing header files, e.g., to change recorded signal gains from a calibration program, or to add -signal descriptions. In the following code fragment, the @file{header} -file for record @file{old} is used to create a @file{header} file for +signal descriptions or ``info'' strings. In the following code fragment, the +header file for record @file{old} is used to create a header file for record @file{new}: @example @@ -3004,10 +2958,10 @@ @end example @noindent -The @file{header} file for record @file{new} will contain the same signal +The header file for record @file{new} will contain the same signal information as that for record @file{old}, except that the @code{gain} for signal 0 will have been changed as shown. Any ``info'' strings in -the @file{header} file for record @file{old} must be copied explicitly; +the @file{hea} file for record @file{old} must be copied explicitly; @iftex @pxref{getinfo, , @code{getinfo}}, and @pxref{putinfo, , @code{putinfo}}. @end iftex @@ -3021,9 +2975,9 @@ @node setmsheader, wfdbquit, setheader, miscellaneous functions @unnumberedsubsec setmsheader @findex setmsheader (9.1) -@cindex @code{header} files (creating) +@cindex header files (creating) @cindex multi-segment records (creating) -@cindex creating @file{header} files +@cindex creating header files @example int setmsheader(char *@var{record}, char *@var{snarray}[], unsigned int @var{nsegments}) @@ -3039,7 +2993,7 @@ Failure: segment name too long, or insufficient memory @item @t{-3} Failure: attempt to nest multi-segment records, or unreadable segment -@file{header} +header @item @t{-4} Failure: segment length unspecified, or numbers of signals or sampling frequencies don't match between segments @@ -3047,22 +3001,20 @@ @c @end group @noindent -This function creates a @file{header} file (in the current directory) -for a multi-segment @var{record} (@pxref{Multi-Segment Records}. -@var{snarray} contains the names of the segments, each of which must be -an existing (single-segment) record; @var{nsegments} specifies the -number of segments in @var{snarray}. Once a @file{header} has been -created by @code{setmsheader}, any WFDB application can read the -concatenated signal files of the constituent segment simply by opening -the multi-segment record (using @code{isigopen} or @code{wfdbinit}). Note -that the signal files themselves are not modified in any way, nor are -they copied; rather, the other WFDB library functions that read signals -(@code{getvec}, @code{getframe}, @code{isigsettime}, and -@code{isgsettime}) automatically switch among the signal files of the -segments as required. For an example of the use of @code{setmsheader}, -see @file{app/wfdbcollate.c} (@file{app/wfdbcoll.c} under MS-DOS) in the WFDB -Software Package. (This function was first introduced in WFDB library -version 9.1.) +This function creates a header file (in the current directory) for a +multi-segment @var{record} (@pxref{Multi-Segment Records}. @var{snarray} +contains the names of the segments, each of which must be an existing +(single-segment) record; @var{nsegments} specifies the number of segments in +@var{snarray}. Once a header has been created by @code{setmsheader}, any WFDB +application can read the concatenated signal files of the constituent segment +simply by opening the multi-segment record (using @code{isigopen} or +@code{wfdbinit}). Note that the signal files themselves are not modified in +any way, nor are they copied; rather, the other WFDB library functions that +read signals (@code{getvec}, @code{getframe}, @code{isigsettime}, and +@code{isgsettime}) automatically switch among the signal files of the segments +as required. For an example of the use of @code{setmsheader}, see +@file{app/wfdbcollate.c} in the WFDB Software Package. (This function was +first introduced in WFDB library version 9.1.) @c @group @node wfdbquit, iannclose and oannclose, setmsheader, miscellaneous functions @@ -3071,6 +3023,8 @@ @cindex closing WFDB files @cindex flushing WFDB I/O @cindex I/O (completing) +@cindex annotation (canonical order) +@cindex canonical order of annotations @example void wfdbquit(void) @@ -3125,6 +3079,8 @@ @unnumberedsubsec iannclose @findex iannclose (9.1) @cindex closing annotation files +@cindex annotation (canonical order) +@cindex canonical order of annotations @example void iannclose(WFDB_Annotator @var{an}) @@ -3228,9 +3184,9 @@ @item @t{(WFDB_Frequency)>0.} Success: the returned value is the sampling frequency in Hz @item @t{(WFDB_Frequency)-1.} -Failure: unable to read @file{header} file +Failure: unable to read header file @item @t{(WFDB_Frequency)-2.} -Failure: incorrect @file{header} file format +Failure: incorrect header file format @end table @c @end group @@ -3286,7 +3242,7 @@ @ifinfo (@pxref{timstr and strtim}). @end ifinfo -Use @code{setsampfreq} before creating a new @file{header} file +Use @code{setsampfreq} before creating a new @file{hea} file @iftex (@pxref{newheader, , @code{newheader}}). @end iftex @@ -3324,7 +3280,7 @@ the date should be separated from the time by a space or tab character. If @var{string} is empty or @code{NULL}, the current date and time are read from the system clock. Use @code{setbasetime} after defining the sampling -frequency and before creating a @file{header} file +frequency and before creating a header file @iftex (@pxref{newheader, , @code{newheader}}). @end iftex @@ -3354,13 +3310,13 @@ @code{WFDB_LOWRES}, @code{getvec} decimates any signals sampled at multiples of the frame rate, so that one sample is returned per signal per frame (i.e., the oversampled signals are resampled by simple averaging of the samples for each -signal within each frame). If @var{mode} is @code{WFDB_HIGHRES}, each sample of -any oversampled signal is returned by successive invocations of @code{getvec}, -and each sample of any signal sampled at a lower frequency is returned by two -or more successive invocations of @code{getvec} (i.e., the less frequently -sampled signals are resampled using zero-order interpolation). @code{getvec} -operates in @code{WFDB_LOWRES} mode by default. @code{WFDB_LOWRES} and -@code{WFDB_HIGHRES} are defined in @file{}. +signal within each frame). If @var{mode} is @code{WFDB_HIGHRES}, each sample +of any oversampled signal is returned by successive invocations of +@code{getvec}, and each sample of any signal sampled at a lower frequency is +returned by two or more successive invocations of @code{getvec} (i.e., the less +frequently sampled signals are resampled using zero-order interpolation). +@code{getvec} operates in @code{WFDB_LOWRES} mode by default. +@code{WFDB_LOWRES} and @code{WFDB_HIGHRES} are defined in @file{}. In WFDB library version 9.6 and later versions, @code{setgvmode} also affects how annotations are read and written. If @code{setgvmode(WFDB_HIGHRES)} is @@ -3399,6 +3355,8 @@ frame (hence @code{sampfreq(NULL)/getspf()} is the number of frames per second). +@sp 2 + @c @group @node counter conversion, setwfdb, getspf, miscellaneous functions @cindex base counter value @@ -3441,7 +3399,7 @@ @noindent This function returns the currently-defined counter frequency. The -counter frequency is set by the functions that read @file{header} +counter frequency is set by the functions that read header files, or by @code{setcfreq}. If the counter frequency has not been defined explicitly, @code{getcfreq} returns the sampling frequency. @@ -3455,7 +3413,7 @@ @noindent This function sets the counter frequency. Use @code{setcfreq} -before creating a @file{header} file +before creating a @file{hea} file @iftex (@pxref{newheader, , @code{newheader}}). @end iftex @@ -3463,7 +3421,7 @@ (@pxref{newheader}). @end ifinfo The effect of @code{setcfreq} is nullified by later invoking any of the -functions that read @file{header} files. If @var{freq} is zero or +functions that read header files. If @var{freq} is zero or negative, the counter frequency is treated as equivalent to the sampling frequency. @@ -3483,7 +3441,7 @@ @noindent This function returns the base counter value, which is set by the -functions that read @file{header} files, or by @code{setbasecount}. +functions that read header files, or by @code{setbasecount}. If the base counter value has not been set explicitly, @code{getbasecount} returns zero. @@ -3497,7 +3455,7 @@ @noindent This function sets the base counter value. Use @code{setbasecount} -before creating a @file{header} file +before creating a header file @iftex (@pxref{newheader, , @code{newheader}}). @end iftex @@ -3505,7 +3463,7 @@ (@pxref{newheader}). @end ifinfo The effect of @code{setbasecount} is nullified by later invoking any of the -functions that read @file{header} files. +functions that read @file{hea} files. @c @group @node setwfdb, getwfdb, counter conversion, miscellaneous functions @@ -3526,13 +3484,13 @@ null-terminated string that specifies the desired database path (but see the next paragraph for an exception). The string contains a list of locations where input files may be found. These locations may be -absolute directory names (such as @samp{/usr/local/database} under UNIX, +absolute directory names (such as @samp{/usr/local/database} under Unix, or @samp{d:/database} under MS-DOS), relative directory names (e.g., @code{../mydata}), or URL prefixes (e.g., @samp{http://www.physio@-net.org/physio@-bank/database}). If NETFILES support is unavailable, any URL prefixes in the string are ignored. The special form @samp{.} refers to the current directory. Entries in the -list may be separated by whitespace or by semicolons; under UNIX, colons +list may be separated by whitespace or by semicolons; under Unix, colons may also be used as separators. An empty component, indicated by an initial or terminal separator, or by two consecutive separators, will be understood to specify the current directory (which may also be indicated @@ -3633,14 +3591,14 @@ @noindent This function attempts to locate an existing WFDB file by searching the database path (@pxref{WFDB path}). Normally, the file is specified by its -@var{type} (e.g., @file{header}, or an annotator name such as @file{atruth}) +@var{type} (e.g., @file{hea}, or an annotator name such as @file{atr}) and by the @var{record} to which it belongs. A file that does not include a record name as part of its name can be found by @code{wfdbfile} if the name is passed in the @var{type} variable and @var{record} is @code{NULL}. The string returned by @code{wfdbfile} includes the appropriate component of the database path; since the database path may include empty or non-absolute components, the string is not necessarily an absolute pathname. If the WFDB library has been -compiled with @code{NETFILES} support, and the WFDB path includes one or more +compiled with NETFILES support, and the WFDB path includes one or more URL prefixes, the string returned may be a URL rather than a pathname. If the file cannot be found, @code{wfdbfile} returns @code{NULL}. (This function was first introduced in WFDB library version 4.3.) @@ -3665,8 +3623,8 @@ @node getinfo, putinfo, wfdbflush, miscellaneous functions @unnumberedsubsec getinfo @findex getinfo (4.0) -@cindex @code{header} info (reading) -@cindex info (in @code{header} files) +@cindex header info (reading) +@cindex info (in header files) @example char *getinfo(char *@var{record}) @@ -3680,9 +3638,9 @@ @c @end group @noindent -This function reads an ``info'' string from the @file{header} file for +This function reads an ``info'' string from the @file{hea} file for the specified @var{record}. Info strings are null-terminated and do not -contain newline characters. The @file{header} files of some records may +contain newline characters. The @file{hea} files of some records may contain no info strings; others may contain more than one info string. To read additional info strings after the first, use @code{getinfo(NULL)}. For example, the following code fragment may be used to read and print @@ -3705,8 +3663,8 @@ @node putinfo, setibsize, getinfo, miscellaneous functions @unnumberedsubsec putinfo @findex putinfo (4.0) -@cindex @code{header} info (writing) -@cindex info (in @code{header} files) +@cindex header info (writing) +@cindex info (in header files) @example int putinfo(char *@var{s}) @@ -3717,17 +3675,17 @@ @item @t{ 0} Success @item @t{-1} -Failure: @code{header} not initialized +Failure: header not initialized @end table @c @end group @noindent This function writes @var{s} as an ``info'' string into the -@file{header} file that was created by the most recent invocation of +@file{hea} file that was created by the most recent invocation of @code{newheader}. The string argument, @var{s}, must be null-terminated and should not contain newline characters. No more than 254 characters may be written in a single invocation of @code{putinfo}. Two or more -info strings may be written to the same @code{header} by successive +info strings may be written to the same header by successive invocations of @code{putinfo}. Note that @code{newheader} or @code{setheader} must be used before @code{putinfo}. (This function was first introduced in WFDB library version 4.0.) @@ -3763,7 +3721,7 @@ default input buffers will be @var{size} bytes; if @var{size} is zero, the system default buffer size (@code{BUFSIZ}) is used. Note that the default buffer size has no effect on reading signals for which -an explicit buffer size is given in the @file{header} file, i.e., +an explicit buffer size is given in the header file, i.e., those for which the @code{bsize} field of the @code{WFDB_Siginfo} structure @iftex (@pxref{WFDB_Siginfo structures, , Signal Information Structures}) @@ -3805,7 +3763,7 @@ positive, the default output buffers will be @var{size} bytes; if @var{size} is zero, the system default buffer size (@code{BUFSIZ}) is used. Note that the default buffer size has no effect on writing -signals for which an explicit buffer size is given in the @file{header} +signals for which an explicit buffer size is given in the @file{hea} file read by @code{osigopen}, or in the @code{bsize} field of the @code{WFDB_Siginfo} structure @iftex @@ -3836,13 +3794,13 @@ @c @end group @noindent -This function returns the @dfn{skew} (as recorded in the @file{header} +This function returns the @dfn{skew} (as recorded in the @file{hea} file, but in frame intervals rather than in sample intervals) of the specified input signal, or 0 if @var{s} is not a valid input signal number. Since sample vectors returned by @code{getvec} or @code{getframe} are already corrected for skew, @code{wfdbgetskew} is useful primarily for programs that need to rewrite existing -@file{header} files, where it is necessary to preserve the previously +@file{hea} files, where it is necessary to preserve the previously recorded skews. The following code fragment demonstrates how this can be done: @@ -3870,7 +3828,7 @@ Note that this function does not @emph{determine} the skew between signals; the problem of doing so is not possible to solve in the general case. @code{wfdbgetskew} merely reports what has previously been -determined by other means and recorded in the @file{header} file for the input +determined by other means and recorded in the header file for the input record. (This function was first introduced in WFDB library version 9.4.) @c @group @@ -3891,7 +3849,7 @@ example of the use of @code{wfdbsetskew}, @pxref{wfdbgetskew}. Note that @code{wfdbsetskew} has no effect on the skew correction performed by @code{getframe} (or @code{getvec}), which is determined solely by the -skews that were recorded in the @file{header} file at the time the input +skews that were recorded in the header file at the time the input signals were opened. (This function was first introduced in WFDB library version 9.4.) @@ -3918,15 +3876,15 @@ @noindent This function returns the number of bytes in the @dfn{prolog} of the signal file that contains the specified input signal, as recorded in the -@file{header} file. Note that @code{wfdbgetstart} does not +header file. Note that @code{wfdbgetstart} does not @emph{determine} the length of the prolog by inspection of the signal file; it merely reports what has been determined by other means and -recorded in the @file{header} file. Since the prolog is not readable +recorded in the @file{hea} file. Since the prolog is not readable using the WFDB library, and since functions such as @code{isigopen} and @code{isigsettime} take the prolog into account when calculating byte offsets for @code{getframe} and @code{getvec}, @code{wfdbgetstart} is useful primarily for programs that need to rewrite existing -@file{header} files, where it is necessary to preserve the previously +@file{hea} files, where it is necessary to preserve the previously recorded byte offsets. For an example of how this can be done, @pxref{wfdbgetskew}. (This function was first introduced in WFDB library version 9.4.) @@ -3951,7 +3909,7 @@ For an example of the use of @code{wfdbsetstart}, @pxref{wfdbgetskew}. Note that @code{wfdbsetstart} has no effect on the calculations of byte offsets within signal files as performed by @code{isigsettime}, which are -determined solely by the contents of the @file{header} file at the time +determined solely by the contents of the @file{hea} file at the time the signals were opened. (This function was first introduced in WFDB library version 9.4.) @@ -4132,7 +4090,7 @@ @item int bsize @cindex block size -the block size, in bytes. For signal files that reside on UNIX character +the block size, in bytes. For signal files that reside on Unix character device special files (or their equivalents), the @code{bsize} field indicates how many bytes must be read or written at a time (@pxref{Special Files}). For ordinary disk files, @code{bsize} is zero. @@ -4184,7 +4142,7 @@ @cindex signal file checksum a 16-bit checksum of all samples. This field is not usually accessed by application programs; @code{newheader} records checksums calculated by -@code{putvec} when it creates a new @file{header} file, and +@code{putvec} when it creates a new @file{hea} file, and @code{getvec} compares checksums that it calculates against @code{cksum} at the end of the record, provided that the entire record was read through without skipping samples. @@ -4270,7 +4228,6 @@ @cindex MIT-format annotation file @cindex standard annotation file @cindex format (annotation file) -@cindex MS-DOS file names @cindex information structure (annotator) @cindex structure (annotator information) @@ -4283,22 +4240,18 @@ @table @code @item char *name @cindex annotator name -the annotator name. The name @file{atruth} is reserved for a @dfn{reference +the annotator name. The name @file{atr} is reserved for a @dfn{reference annotation file} supplied by the creator of the database record to document its contents as accurately and thoroughly as possible. You may use other annotator names to identify annotation files that you create; unless there are compelling reasons not to do so, follow the convention that the annotator name is the name of the file's creator (a program or a person). To avoid confusion, do not use -@samp{dat}, @samp{data@var{n}}, @samp{d@var{n}}, @samp{hea}, or @samp{header} +@samp{dat}, @samp{data@var{n}}, @samp{d@var{n}}, or @samp{hea} (all of which are commonly used as parts of WFDB file names) as annotator names. The special name @samp{-} refers to the standard input or output. Other annotator names may contain upper- or lower-case letters, digits, and underscores. Annotation files are normally created in the current directory and found in any of the directories in the database path (@pxref{WFDB path}). -Under MS-DOS, note that the only the first three characters of the annotator -name are used to construct the MS-DOS file name, so be careful to keep -annotator names distinct from each other and from commonly used MS-DOS file -name ``extensions''. @item int stat @cindex WFDB_AHA_READ @@ -4353,7 +4306,7 @@ @cindex time of annotation @cindex reference point (on QRS) time of the annotation, in samples from the beginning of the record. -The times of beat annotations in the @file{atruth} files for the MIT DB +The times of beat annotations in the @file{atr} files for the MIT DB generally coincide with the R-wave peak in signal 0; for the AHA DB, they generally coincide with the PQ-junction. @@ -4379,7 +4332,7 @@ @ifinfo -128 @end ifinfo -and 127. In MIT DB @file{atruth} files, the +and 127. In MIT DB @file{atr} files, the @code{subtyp} field is used with noise and artifact annotations to indicate which signals are affected (@pxref{Annotation Codes}). The @code{chan} field is intended to indicate the signal to which the @@ -4398,7 +4351,7 @@ @cindex @code{aux} string (annotation) a free text string. The first byte is interpreted as an @code{unsigned char} that specifies the number of bytes that follow (up to 255). In -MIT DB @file{atruth} files, the @code{aux} field is used with rhythm +MIT DB @file{atr} files, the @code{aux} field is used with rhythm change annotations to specify the new rhythm, and with comment annotations to store the text of the comment @iftex @@ -4420,7 +4373,6 @@ @xref{Example 3}, for a short program that examines the contents of a @code{WFDB_Annotation}. - @node Annotation Codes, Database Files, Data Types, Top @chapter Annotation Codes @@ -4503,7 +4455,7 @@ @cindex @code{subtyp} (in @code{NOISE} annotation) @cindex noisy signals (annotating) @item -In MIT and ESC DB @file{atruth} files, each non-zero bit in the @code{subtyp} +In MIT and ESC DB @file{atr} files, each non-zero bit in the @code{subtyp} field indicates that the corresponding signal contains noise (the least significant bit corresponds to signal 0). @@ -4639,22 +4591,17 @@ @code{WFDB} (@pxref{WFDB path}). Recall that a WFDB record is not a file; rather, it is an extensible -@emph{collection} of database files (@pxref{Concepts 1, , Records}). -Thus, for example, record 100 of the MIT-BIH Arrhythmia Database -consists of the files named @file{100.hea}, @file{100.dat}, and -@file{100.atr} in the @file{mitdb} directory of the MIT-BIH Arrhythmia -Database CD-ROM (or in PhysioBank, within +@emph{collection} of database files (@pxref{Concepts 1, , Records}). Thus, for +example, record 100 of the MIT-BIH Arrhythmia Database consists of the files +named @file{100.hea}, @file{100.dat}, and @file{100.atr} in the @file{mitdb} +directory of the MIT-BIH Arrhythmia Database CD-ROM (or in PhysioBank, within @code{http://@-www.@-physio@-net.@-org/@-physio@-bank/@-data@-base/@-mitdb/}), -together with any additional files in other directories -that you may have associated with record 100 (such as your own -annotation file). All files associated with a given record include the -record name in their file names, either as the first part of the name -(the default on writable UNIX and Macintosh file systems) or as the -suffix or extension (on CD-ROM and MS-DOS file systems). Applications -that use the WFDB library under UNIX or the Macintosh OS can locate files -named using either of these conventions. No explicit action (other than -choosing the file name, and locating the file in the WFDB path) is needed -in order to associate a new file with an existing WFDB record. +together with any additional files in other directories that you may have +associated with record 100 (such as your own annotation file). All files +associated with a given record include the record name as the first part of the +file name. No explicit action (other than choosing the file name, and locating +the file in the WFDB path) is needed in order to associate a new file with an +existing WFDB record. To find the location of a database file easily, you can use @file{wfdbwhich}, an application included with the WFDB Software Package. Type @@ -4691,22 +4638,19 @@ @node Header Files, Signal Files, Database Files, Database Files @unnumberedsubsec Header Files -@cindex @code{header} file +@cindex @code{hea} file -@dfn{Header files} have names of the form @file{@var{record}.header} on -writable UNIX and Macintosh file systems, where @var{record} is the -record name. (MIT DB records are named 100--124 and 200--234 with some -numbers missing. AHA DB records are named 1001--1010, 2001--2010, -3001--3010, 4001--4010, 5001--5010, 6001--6010, 7001--7010, and -8001--8010. ESC DB records are named e0103--e1304, with many numbers -missing.) On CD-ROM and MS-DOS file systems, because of restrictions on -the length of extensions, header files have names of the form -@file{@var{record}.hea}. Header files are text files, with lines +@dfn{Header files} have names of the form @file{@var{record}.hea}, where +@var{record} is the record name. (MIT DB records are named 100--124 and +200--234 with some numbers missing. AHA DB records are named +1001--1010, 2001--2010, 3001--3010, 4001--4010, 5001--5010, 6001--6010, +7001--7010, and 8001--8010. ESC DB records are named e0103--e1304, with +many numbers missing.) Header files are text files, with lines terminated by ASCII carriage-return/line-feed pairs, created by @code{newheader}, @code{setheader}, or @code{setmsheader}, from which @code{isigopen}, @code{osigopen}, and @code{wfdbinit} read the names of the signal files and their attributes as given in the array of -@code{WFDB_Siginfo} objects; @code{sampfreq} also reads a @file{header} +@code{WFDB_Siginfo} objects; @code{sampfreq} also reads a header file to determine the sampling frequency used for a record. @node Signal Files, Annotation Files, Header Files, Database Files @@ -4730,12 +4674,10 @@ @cindex annotation file @dfn{Annotation files} have names of the form -@file{@var{record}.@var{annotator}} (on CD-ROM and MS-DOS file systems, -@var{annotator} is restricted to three characters). Those named -@file{@var{record}.atruth} (@file{@var{record}.atr}) are reference -annotation files (assumed to be correct). Annotation files are binary, -and contain records of variable length that average slightly over 16 -bits per annotation. +@file{@var{record}.@var{annotator}}. Those named +@file{@var{record}.atr} are reference annotation files (assumed to be +correct). Annotation files are binary, and contain records of variable +length that average slightly over 16 bits per annotation. @node Calibration Files, AHA Format Files, Annotation Files, Database Files @unnumberedsubsec Calibration Files @@ -4776,12 +4718,12 @@ loss of information, and doing so reduces the storage requirement by a factor of eight. -Yet another format has been used more recently for distribution of AHA -DB files on floppy diskettes. This format is compatible with neither -the original AHA format nor with any of the formats supported directly -by the WFDB library. Programs @file{a2m} and @file{ad2m}, supplied with -the WFDB Software Package, can convert files in this format (as well as -those in the original AHA format) to the standard formats. +Yet another format has been used more recently for distribution of AHA DB files +on floppy diskettes and CD-ROMs. This format is compatible with neither the +original AHA format nor with any of the formats supported directly by the WFDB +library. Programs @file{a2m} and @file{ad2m}, supplied with the WFDB Software +Package, can convert files in this format (as well as those in the original AHA +format) to the standard formats. @node Standard I/O, Multiplexed Signal Files, AHA Format Files, Database Files @section Using Standard I/O for Database Files @@ -4789,9 +4731,9 @@ @cindex pipes (as WFDB files) If @samp{-} is supplied as a record name to any of the functions that -read or write @file{header} files, the @file{header} file is taken to be +read or write header files, the @file{hea} file is taken to be the standard input or output, as appropriate. If the name of a signal -file is specified in the @file{header} file (or in the array of +file is specified in the @file{hea} file (or in the array of @code{WFDB_Siginfo} objects passed to @code{osigfopen}) as @samp{-}, the standard input (output) is used by @code{getvec} (@code{putvec}). If the name of an annotator is given in the array of @code{WFDB_Anninfo} objects @@ -4824,12 +4766,12 @@ (but @pxref{Multi-Frequency Records}). Multiplexed signal files can be useful if the storage device is -sequential-access only (e.g., 9-track tape), if the storage device -has lengthy seek times (e.g., optical disk), if many signals must -be recorded and UNIX's per-process limit on open files would otherwise -be exceeded, or if very high speed is required while the file is -being created (because of sampling constraints). CD-ROM signal files -are multiplexed unless the record contains only one signal. +sequential-access only (e.g., 9-track tape), if the storage device has lengthy +seek times (e.g., optical disk), if many signals must be recorded and Unix's +per-process limit on open files would otherwise be exceeded, or if very high +speed is required while the file is being created (because of sampling +constraints). CD-ROM signal files, and those available from PhysioNet, are +multiplexed unless the record contains only one signal. @node Multi-Frequency Records, Multi-Segment Records, Multiplexed Signal Files, Database Files @section Multi-Frequency Records @@ -4885,7 +4827,15 @@ converts times in sample numbers into times in frame numbers before writing annotations into annotation files. This permits applications that are not ``multi-frequency aware'' to read multi-frequency records with the highest -possible resolution, with only a one-line change in the source. +possible resolution. + +@cindex @code{WFDBGVMODE} (environment variable) +The operating mode used by @code{getvec}, if not specified by an explicit call +to @code{setgvmode}, is determined by the value of the environment variable +@code{WFDBGVMODE} if it is set, and otherwise by the value of +@code{DEFWFDBGVMODE} in @file{wfdblib.h} at the time the library was compiled.. +In either case, a value of 0 selects low-resolution mode, and any other value +selects high-resolution mode. @node Multi-Segment Records, Multiple Record Access, Multi-Frequency Records, Database Files @section Multi-Segment Records @@ -4964,14 +4914,14 @@ @cindex reading 9-track tape @cindex signal file (on tape) @cindex special files (as signal files) -@cindex UNIX character devices (as signal files) +@cindex Unix character devices (as signal files) @cindex writing 9-track tape The @code{fname} component of a @code{WFDB_Siginfo} object can be any -string acceptable as a file name to your operating system. Under UNIX, +string acceptable as a file name to your operating system. Under Unix, for example, signals can be read from (or written to) `special' files such as @file{/dev/rmt0} (the raw tape drive). If I/O must be performed -in fixed-size blocks (such as for UNIX character devices), the +in fixed-size blocks (such as for Unix character devices), the @code{bsize} component of the @code{WFDB_Siginfo} object must contain the appropriate block size in bytes. In such cases, the WFDB library must obtain (using @code{malloc} (see @cite{K&R}, page 167) an amount of @@ -4979,10 +4929,10 @@ opened. For large programs running on 16-bit machines, this can cause problems if signal files with large block sizes are read. (In such cases, @code{isigopen} or @code{osigopen} will not open the signal file -if there is not enough memory to allocate a buffer.) Under UNIX, if +if there is not enough memory to allocate a buffer.) Under Unix, if this problem occurs, use the ``piped records'' (@pxref{Piped and Local Records}) instead. The usual method is to read or write the signal file -using a utility such as UNIX's @code{dd} and to pipe the data to or from +using a utility such as Unix's @code{dd} and to pipe the data to or from the application program. Although this approach is flexible, there are a few drawbacks: @@ -5002,19 +4952,20 @@ method of operation. @end enumerate -Several special-purpose @file{header} files allow application programs -to read data directly from 9-track tape. The names of most of these -records (@file{512}, @file{1024}, @file{4096}, @file{10240}) specify the -block size in bytes. These use 16-bit format, 250 Hz samples, 12 bit -ADC with zero ADC offset, two signals multiplexed into one, and data to -be read from @file{/dev/rmt0}. Record @file{b} uses 8-bit difference -format, 6144 bytes/block, and is otherwise similar to the others. -Records @file{ahatape} and @file{mittape} can be used to read or write -an AHA-format signal file on a 9-track tape that has been positioned to -the beginning of the correct file; the signal file for these is -@file{/dev/nrmt0} (the non-rewinding raw tape drive). If the tape -density is encoded into the tape drive name on your system, additional -@file{header} files may be needed. +Several special-purpose header files allow application programs to read data +directly from 9-track tape. When the WFDB Software Package is installed, these +files are copied into the @file{tape} subdirectory of the system-wide database +directory. The record names associated with most of these header files +(@file{tape/512}, @file{tape/1024}, @file{tape/4096}, @file{tape/10240}) +specify the block size in bytes. These use 16-bit format, 250 Hz samples, 12 +bit ADC with zero ADC offset, two signals multiplexed into one, and data to be +read from @file{/dev/rmt0}. Record @file{tape/6144d} uses 8-bit difference +format, 6144 bytes/block, and is otherwise similar to the others. Records +@file{tape/ahatape} and @file{tape/mittape} can be used to read or write an +AHA-format signal file on a 9-track tape that has been positioned to the +beginning of the correct file; the signal file for these is @file{/dev/nrmt0} +(the non-rewinding raw tape drive). If the tape density is encoded into the +tape drive name on your system, additional header files may be needed. @node Piped and Local Records, NETFILES, Special Files, Database Files @section Piped and Local Records @@ -5023,26 +4974,25 @@ @cindex signal file (piped) @cindex standard I/O (as WFDB files) -@dfn{Piped record} @file{header} files allow application programs to -read signals from the standard input, or write them to the standard -output. Record @file{8} specifies 8-bit format, a 10-bit ADC, zero ADC -offset, and two signals sampled at 250 Hz, both of which are to be -acquired from the standard input, or written to the standard output. -Record @file{16} specifies 16-bit format and a 12-bit ADC, and is -otherwise identical to record @file{8}. ADCs from several manufacturers -can produce output in the format specified by record @file{16}; thus -such output can be piped directly into an application program using -record @file{16}. Signal files in AHA format also match these -specifications. Piped records for reading or writing other numbers of -signals also exist; they are named @file{8x@var{n}} and -@file{16x@var{n}}, where @var{n} is the number of signals (@var{n} = 1, -2, @dots{}, 16; piped record header files can be created with larger -numbers of signals (use the existing files as a model). +@dfn{Piped record} header files allow application programs to read signals from +the standard input, or write them to the standard output. Record @file{8} +specifies 8-bit format, a 10-bit ADC, zero ADC offset, and two signals sampled +at 250 Hz, both of which are to be acquired from the standard input, or written +to the standard output. Record @file{16} specifies 16-bit format and a 12-bit +ADC, and is otherwise identical to record @file{8}. ADCs from several +manufacturers can produce output in the format specified by record @file{16}; +thus such output can be piped directly into an application program using record +@file{16}. Signal files in AHA format also match these specifications. Piped +records for reading or writing other numbers of signals are provided in the +@file{pipe} subdirectory of the system-wide database directory; they are named +@file{pipe/8x@var{n}} and @file{pipe/16x@var{n}}, where @var{n} is the number +of signals (@var{n} = 1, 2, @dots{}, 16; piped record header files can be +created with larger numbers of signals (use the existing files as a model). @cindex local record @cindex signal file (local) Application programs may also read or write signal files in the current -directory using @dfn{local record} @file{header} files. Record +directory using @dfn{local record} header files. Record @file{16l} (``one-six-ell'') specifies up to sixteen format 16 files, and record @file{8l} (``eight-ell'') specifies up to sixteen format 8 files, named @file{data0}, @file{data1}, @@ -5062,26 +5012,27 @@ @cindex http @cindex ftp -If the symbol @code{NETFILES} is defined at the time the WFDB library is -compiled, then input files located on remote web (HTTP) and FTP servers -can be read directly. This capability is implemented using the World -Wide Web Consortium's @code{libwww} library (which is available on many -of the platforms supported by the WFDB library). @code{NETFILES} -support, if available, is transparent to WFDB applications. To make use -of this feature, simply link to the @code{NETFILES}-enabled WFDB library -(the necessary @code{libwww} functions will be loaded automatically), -and incorporate one or more URL prefixes in the WFDB path. +If the symbol @code{WFDB_NETFILES} is defined at the time the WFDB library is +compiled, then input files located on remote web (HTTP) and FTP servers can be +read directly. This capability is implemented using the World Wide Web +Consortium's @code{libwww} library (which is available on many of the platforms +supported by the WFDB library). NETFILES support, if available, is transparent +to WFDB applications. To make use of this feature, simply link to the +NETFILES-enabled WFDB library (the necessary @code{libwww} functions will be +loaded automatically), and incorporate one or more URL prefixes in the WFDB +path. @cindex PhysioBank In current versions of the WFDB library, the default WFDB path (defined in the WFDB library source file @code{wfdblib.h}, and used as the WFDB path if the -WFDB environment variable is undefined) is -@samp{. http://www.physio@-net.org/physio@-bank/data@-base}. The URL prefix -(the second component, after the @samp{.} that specifies the current directory) -points to PhysioBank, an on-line archive for a wide variety of standard -databases of physiologic signals. The databases are kept in subdirectories of -@code{http://www.physio@-net.org/physio@-bank/data@-base}. For example, the -MIT-BIH Polysomnographic Database is kept in +WFDB environment variable is undefined) is @samp{. /usr/database +http://www.physio@-net.org/physio@-bank/data@-base}. (The second component,, +after the @samp{.} that specifies the current directory,may vary, depending on +your platform and the choices made during installation.) The URL prefix (the +third component) points to PhysioBank, an on-line archive for a wide variety of +standard databases of physiologic signals. The databases are kept in +subdirectories of @code{http://www.physio@-net.org/physio@-bank/data@-base}. +For example, the MIT-BIH Polysomnographic Database is kept in @code{http://www.physio@-net.org/physio@-bank/data@-base/slpdb}, so it is possible to read record @code{slp37} of that database directly from PhysioBank by passing @code{slpdb/slp37} as the @var{record} argument to @code{wfdbinit} @@ -5089,20 +5040,20 @@ Current implementations of @code{libwww} permit input from @code{http://} URLs in much the same way that local files are read, provided that the remote web -server supports HTTP 1.1 range requests (most do); this means that it is not -necessary to download an entire file in order to examine part of it, and you -may notice little or no speed difference between local file and network file -input for many applications. If the remote server does not support range -requests, however, or if input is from an @code{ftp://} URL, the current -implementation downloads the entire file to memory, so you may notice a -significant startup delay if the file is long and your network connection is -slow, or if the file does not fit into physical memory. - -Currently, @code{NETFILES} support is limited to input files; as -always, any output files created by the WFDB library are written into -the current directory. +server supports HTTP 1.1 range requests (most, including PhysioNet's, do). +This means that it is not necessary to download an entire file in order to +examine part of it, and you may notice little or no speed difference between +local file and network file input for many applications. If the remote server +does not support range requests, however, or if input is from an @code{ftp://} +URL, the current implementation downloads the entire file to memory, so you may +notice a significant startup delay if the file is long and your network +connection is slow, or if the file does not fit into physical memory. + +Currently, NETFILES support is limited to input files; as always, any output +files created by the WFDB library are written into the current directory, +unless the record name contains local path information. -@code{NETFILES} support was introduced in WFDB library version 10.0.1. +NETFILES support was introduced in WFDB library version 10.0.1. @node Annotation Order, , NETFILES, Database Files @section Annotation Order @@ -5123,6 +5074,8 @@ @cindex location (of annotation) @cindex annotation location @cindex virtual array of annotations +@cindex annotation (canonical order) +@cindex canonical order of annotations The combination of the @code{time} and @code{chan} fields of an annotation defines a unique @dfn{location} in a virtual array of annotations which an annotation file represents. No two annotations may @@ -5162,15 +5115,16 @@ of @code{putann}. @cindex unsorted annotation files +@cindex @code{WFDBANNSORT} (environment variable) In unusual circumstances, an unsorted annotation file may be useful (for example, as an aid for debugging the application that produced it; @file{rdann} can be used to list all of the annotations in such a file, in the order in which they were written). In some environments, the use of the ANSI C @code{system} function may be a security problem, and you may wish to avoid automatic sorting of annotations for this reason. Set the environment variable -@code{WFDBNOSORT} (to any value) at run time, or define the symbol -@code{WFDBNOSORT} when compiling the WFDB library, if you wish to suppress -automatic annotation sorting by @code{wfdbquit} and @code{oannclose}. +@code{WFDBANNSORT} to 0 at run time, or define the symbol @code{DEFWFDBANNSORT} +as 0 when compiling the WFDB library, if you wish to suppress automatic +annotation sorting by @code{wfdbquit} and @code{oannclose}. @node Examples, Exercises, Database Files, Top @chapter Programming Examples @@ -5179,7 +5133,7 @@ The programs in this chapter are useful as models for a variety of applications that use the WFDB library. The line numbers are for reference only; they are not part of the programs. Any of these -examples can be compiled (under UNIX) using a command of the form +examples can be compiled (under Unix) using a command of the form @example cc @var{file.c} -lwfdb @end example @@ -5313,7 +5267,7 @@ @node Example 2, Example 3, Example 1, Examples @unnumberedsec Example 2: An Annotation Translator -This program translates the @file{atruth} annotations for the record +This program translates the @file{atr} annotations for the record named in its argument into an AHA-format annotation file with the annotator name @file{aha}. @@ -5332,8 +5286,8 @@ @i{12} fprintf(stderr, "usage: %s record\n", argv[0]); @i{13} exit(1); @i{14} @} -@i{15} an[0].name = "atruth"; an[0].stat = WFDB_READ; -@i{16} an[1].name = "aha"; an[1].stat = WFDB_AHA_WRITE; +@i{15} an[0].name = "atr"; an[0].stat = WFDB_READ; +@i{16} an[1].name = "aha"; an[1].stat = WFDB_AHA_WRITE; @i{17} if (annopen(argv[1], an, 2) < 0) exit(2); @i{18} while (getann(0, &annot) == 0 && putann(0, &annot) == 0) @i{19} ; @@ -5351,12 +5305,12 @@ @item Lines 11--14: This is the standard idiom for producing those cryptic error messages -for which UNIX programs are notorious; @code{argv[0]} is the name by +for which Unix programs are notorious; @code{argv[0]} is the name by which the program was invoked. @item Lines 15--16: These lines set up the annotator information. Input annotator 0 is the -@file{atruth} annotation file, and output annotator 0 will be written +@file{atr} annotation file, and output annotator 0 will be written in AHA format. @item Line 17: @@ -5372,7 +5326,7 @@ @item Line 21: Since we have carefully defined non-zero exit codes for the various errors that this program might encounter, we also define this -successful exit here. If this program is run as part of a UNIX shell +successful exit here. If this program is run as part of a Unix shell script, the exit codes are accessible to the shell, which can determine what to do next as a result. If this line were omitted (as in example 1), the exit code would be undefined. @@ -5423,7 +5377,7 @@ @item Line 20: This line gives the annotation time as a time of day. If the base time -is omitted in the @file{header} file, or if we used +is omitted in the header file, or if we used @code{timstr(annot.time)} instead, we would obtain the elapsed time from the beginning of the record. @@ -5696,12 +5650,12 @@ for the next iteration. @item Line 32: -This step is optional. It creates a @file{header} file for a new record +This step is optional. It creates a header file for a new record to be called @file{dif}, which we can then open with another program if we want to read the signals that this program has written. Since the @var{record} argument for @code{osigopen} was @file{8l}, we can also read these files using record @file{8l}; one reason for making a new -@file{header} file here is that the @file{header} file for @file{8l} may +@file{hea} file here is that the @file{hea} file for @file{8l} may not necessarily indicate the proper sampling frequency for these signals. @@ -5730,7 +5684,7 @@ which would apply a five-point moving average (rectangular window) filter to 20 seconds of record @file{100}, beginning 5 minutes into the record. The output of the program is readable as record @file{out}, for which a -@file{header} file is created in the current directory. +header file is created in the current directory. @example @i{1} #include @@ -5879,7 +5833,7 @@ we run out of input samples. @item Line 77: -The program creates a @file{header} file for record @file{out}, using +The program creates a header file for record @file{out}, using the signal specifications from record @file{16l} and the sampling frequency from the input record. @end table @@ -5891,7 +5845,7 @@ This program creates a new record from scratch. It asks the user for information about the signals to be sampled, then records them, and -finally creates a @file{header} file for the new record. Details of +finally creates a @file{hea} file for the new record. Details of data acquisition are hardware-dependent and are not shown here. @example @@ -6017,7 +5971,7 @@ @item Lines 14--17: This code uses @code{newheader} to determine if a legal record name was entered (since we don't want to digitize the signals and then find out -that we can't create the @file{header} file). The @file{header} file +that we can't create the header file). The header file created in line 17 will be overwritten in line 111. @item Lines 57--62: @@ -6064,16 +6018,16 @@ DMA channels or interrupts. @item Line 111: -All of the information needed to generate the @file{header} file has been +All of the information needed to generate the header file has been stored in WFDB library internal data structures by @code{osigfopen} and @code{putvec}; we call @code{newheader} here (before @code{wfdbquit}) to -create the new @file{header} file. +create the new @file{hea} file. @item Line 112: It is still necessary to use @code{wfdbquit} to close the signal file(s), even after calling @code{newheader}. (In fact, it would be possible, though not likely to be useful, to record more samples and to generate -another @file{header} file before calling @code{wfdbquit}.) +another header file before calling @code{wfdbquit}.) @end table @node Example 9, Example 10, Example 8, Examples @@ -6193,7 +6147,7 @@ @item Lines 42--49: This code similarly determines when the averaging should stop. Unless no stop time was specified on the command line and the signal length is -not defined in the @file{header} file for the record, @code{stoptime} +not defined in the @file{hea} file for the record, @code{stoptime} will have a positive value in line 49, which makes a tiny adjustment so that if a beat annotation occurs within 50 milliseconds of the end of the averaging period, the beat will not be included in the average. @@ -6413,11 +6367,11 @@ it. Remember to set and export the environment variable @code{WFDB} (@pxref{WFDB path}). It is a good idea to include this step in your @file{.profile}, @file{.cshrc}, or @file{autoexec.bat}. As input, try -record @file{100s}, input annotator @file{atruth}, and output annotator +record @file{100s}, input annotator @file{atr}, and output annotator @file{normal}. The program should finish in five seconds or less. The annotations will have been written into a file called @file{100s.nor} in the current directory. Now type -``@code{rdann -r 100s -a atruth}'' and observe the output +``@code{rdann -r 100s -a atr}'' and observe the output for a few seconds, then try ``@code{rdann -r 100s -a nor}'' and notice the difference. @@ -6504,7 +6458,7 @@ @i{6} WFDB_Anninfo ai; @i{7} int t; @i{8} - @i{9} ai.name = "atruth"; + @i{9} ai.name = "atr"; @i{10} ai.stat = WFDB_READ; @i{11} if (annopen(100, ai, 1)) @{ @i{12} while (getann(1, annot)) @{ @@ -6577,13 +6531,13 @@ @code{http://www.physio@-net.org/physio@-bank/data@-base/mitdb/}.) Read the documentation on the annotation comparator, @file{bxb}, and figure out how to use it to compare the annotation file produced by your program against the -reference annotator @file{atruth}. How does your detector compare to Example +reference annotator @file{atr}. How does your detector compare to Example 10? @item If the previous exercise was too easy, modify your detector so that the -annotations it generates match those in the @file{atruth} file. Copying -the @file{atruth} file is not permitted. You may find this rather +annotations it generates match those in the @file{atr} file. Copying +the @file{atr} file is not permitted. You may find this rather difficult. Good luck! @end enumerate @@ -6650,12 +6604,12 @@ @item Annotator name @cindex annotator name (defined) -A name associated with an annotation file. On writable UNIX and +A name associated with an annotation file. On writable Unix and Macintosh file systems, the annotation file name is constructed from the annotator name by appending a @samp{.} and the record name. On CD-ROMs and MS-DOS file systems, the annotator name is restricted to three characters, and the annotation file name is constructed from the record -name by appending a @samp{.} and the annotator name. UNIX and Macintosh +name by appending a @samp{.} and the annotator name. Unix and Macintosh versions of the WFDB library can locate and read annotation files named using either convention. @@ -6669,19 +6623,17 @@ In this guide, a program that uses the WFDB library to do something. -@item @file{atruth} -@cindex @code{atruth} (defined) -The annotator name for the reference annotation files. On CD-ROMs and -MS-DOS file systems, @file{atruth} is truncated within the names of the -reference annotation files to @file{atr}; @code{annopen} accepts either -@file{atruth} or @file{atr} as the annotator name for these files. +@item @file{atr} +@cindex @code{atr} (defined) +The annotator name for the reference annotation files (originally, +@file{atruth}, i.e., the "truth" annotations). @item Base counter value @cindex base counter value (defined) @cindex counter (base) The counter value (q.v.) that corresponds to sample 0. The base counter value is read by @code{getbasecount}, and set by @code{setbasecount} -(or by any of the functions that read @file{header} files). If not +(or by any of the functions that read header files). If not defined explicitly, the base counter value is taken to be 0. @item Base time @@ -6719,8 +6671,7 @@ @cindex CD-ROM (defined) A read-only medium used for distribution of the MIT-BIH and ESC databases, among others. CD-ROMs are physically identical in appearance -to audio compact disks. CD-ROM readers are available for most -microcomputers and for many larger systems. +to audio compact disks. @item Closing [a record] The process of completing I/O associated with a record. @@ -6734,7 +6685,7 @@ treated as equivalent to the sampling frequency (q.v.) by the WFDB library. The counter frequency is read by @code{getcfreq}, and set by @code{setcfreq} (or by any of the functions that read -@file{header} files). +header files). @item Counter value @cindex counter value (defined) @@ -6747,14 +6698,16 @@ counter values. @item Database files -Those files (annotation files, @file{header} files, signal files, and +Those files (annotation files, header files, signal files, and calibration files) that are accessed via the WFDB library. @item Database path @cindex database path (defined) -The names of the directories in which @file{header}, annotation, and -calibration files are kept. The environment variable @code{WFDB} must be -set by the user and exported accordingly. +The names of the directories in which header, annotation, and calibration files +are kept. (Signal files may be located in these directories or elsewhere; +header files specify their locations.) To modify the database path, the +environment variable @code{WFDB} must be set by the user and exported +accordingly. @item DC-coupled signal @cindex DC-coupled signal (defined) @@ -6796,14 +6749,17 @@ signal prior to digitization. Gain may vary between signals in a record. -@item @file{header} file -@cindex @code{header} file (defined) +@item @file{hea} +@cindex @code{hea} (defined) +The suffix (extension) that designates a header file (originally +@file{header}). + +@item header file +@cindex header file (defined) A file accessible via the WFDB library that describes the signal files -associated with a given database record. A @file{header} file has a name of -the form `@var{record}@code{.header}', where @var{record} is the record name -(q.v.). On CD-ROMs and MS-DOS file systems, @file{header} files have names of -the form `@code{@var{record}.hea}'. The WFDB library can locate and read -@file{header} files named using either convention. +associated with a given database record. A header file has a name of +the form `@var{record}@code{.hea}', where @var{record} is the record name +(q.v.). @item High-resolution mode @cindex high-resolution mode (defined) @@ -6815,7 +6771,7 @@ @item Info string @cindex info string (defined) -Free text within a @file{header} file. Info strings can be read using +Free text within a header file. Info strings can be read using @code{getinfo} and written using @code{putinfo}. @item Local record @@ -6824,6 +6780,24 @@ typically used for user-created signals. Records @file{8l} and @file{16l} are local records. +@item Location [of an annotation] +@cindex location (of annotations) +@cindex annotation location (defined) +Every annotation has both @code{time} and @code{chan} attributes that +define its location within a virtual array of annotations. See +@dfn{Canonical order of annotations}. + +@item Canonical order of annotations +@cindex annotation (canonical order) +@cindex canonical order of annotations +Normally, annotations are arranged in time order within an annotation file. +Annotations that have identical @code{time} attributes are arranged in +@code{chan} order. Annotations that have identical @dfn{locations} (i.e., +identical @code{time} and @code{chan} attributes) should not normally occur in +a single annotation file; if this does happen, the last annotation at any given +location is treated as a replacement of any previous annotations at that +location. + @item Low-resolution mode @cindex low-resolution mode (defined) The default mode for reading a multi-frequency record using @@ -6840,7 +6814,7 @@ @item MIT format @cindex MIT format (defined) The standard format for storage of WFDB records on CD-ROMs, used on the -MIT, ESC, and MGH DB CD-ROMs, among others. +MIT, ESC, and MGH DB CD-ROMs, among others, and on PhysioNet. @item Modification label @cindex modification label (defined) @@ -6874,7 +6848,7 @@ (single-segment) records. Multi-segment records do not have their own signal files (the signal files of their constituent segments are read when it is necessary to read signals of multi-segment records), but they -have their own @file{header} files (created using @code{setmsheader}), +have their own header files (created using @code{setmsheader}), and may have their own annotation files as well (annotation files for the constituent segments of a multi-segment record are @emph{not} concatenated automatically when the record is read). The WFDB Software @@ -6893,7 +6867,7 @@ WFDB files made available by an FTP or HTTP (web) server; readable by applications linked with a NETFILES-enabled WFDB library. A NETFILES-enabled WFDB library can be created by compiling the WFDB -library sources with the symbol @code{NETFILES} defined (to anything; +library sources with the symbol @code{WFDB_NETFILES} defined (to anything; its value is not important, only that it is defined) and then linking them with the @code{libwww} library available from the World Wide Web Consortium (@code{http://www.w3.org/Library/}). @@ -6928,14 +6902,24 @@ normally zero physical units. For example, physical zero for a pressure signal with units of mmHg is 0 mmHg. +@item PhysioNet +@cindex PhysioNet +The home of the WFDB library, and a source for recorded physiologic signals and +software for use with them. All materials on PhysioNet are freely available. +The main PhysioNet server is @code{http://www.@-physio@-net.@-org/}, located at +MIT in Cambridge, Massachusetts; PhysioNet mirror sites are located around the +world (see @@code{http://www.@-physio@-net.@-org/@-mirrors/} for a list). + @item Piped record @cindex piped record (defined) A database record for which a signal file is designated as @file{-}, signifying that it is to be read from the standard input or written to the standard output. Records @file{8} and @file{16} are piped -records. +records, as are those defined within the @file{pipe} subdirectory of +the system-wide database directory (q.v.) @item Prolog +@cindex prolog (defined) @cindex byte offset @cindex cruft (in signal files) @cindex prolog (in signal files) @@ -6946,17 +6930,17 @@ prologs. To read such a signal file using the WFDB library, provided that the sample data are in a supported format, it is sufficient to record the length of the prolog (in bytes) in the appropriate locations in a -@file{header} file that names the signal file. If you need to create -such a @file{header} file, refer to the description of the byte offset -field in @cite{header(5)} (the specification of the @file{header} file +header file that names the signal file. If you need to create +such a header file, refer to the description of the byte offset +field in @cite{header(5)} (the specification of the header file format in the @cite{WFDB Applications Guide}, or @pxref{wfdbsetstart}. @item Record @cindex record (defined) An extensible set of files that may include signal files, annotation -files, and a @file{header} file, all of which are associated with the -same original signals. Only the @file{header} file is mandatory. +files, and a header file, all of which are associated with the +same original signals. Only the header file is mandatory. Although records are sometimes called tapes for historical reasons, records are now more commonly maintained on CD-ROMs or magnetic disks than on tape. @@ -6977,7 +6961,7 @@ @cindex reference annotation file (defined) An annotation file supplied by the creator of a record to document its contents as accurately and thoroughly as possible. The annotator name -@file{atruth} is reserved for reference annotation files. +@file{atr} is reserved for reference annotation files. @item Sample @cindex sample (defined) @@ -7039,7 +7023,7 @@ order beginning with 0. @item Skew -@cindex skew +@cindex skew (defined) @cindex intersignal skew The time difference between samples having the same sample number but belonging to different signals. Ideally the skew is zero (or less than @@ -7048,10 +7032,10 @@ small differences in the azimuth of the recording and playback heads may result in measurable skew among signals. If the skew can be measured (for example, by reference to features of two signals with a known time -difference), it can be recorded in the @file{header} file for a record; +difference), it can be recorded in the header file for a record; once this has been done, @code{getvec} and @code{getframe} correct for skew automatically. If you need to correct for skew, see -@cite{skewedit(1)} and @cite{header(1)} (in the @cite{WFDB +@cite{skewedit(1)} and @cite{header(5)} (in the @cite{WFDB Applications Guide}), or @pxref{wfdbsetskew}. Prospectively, if you anticipate that skew may be a problem, it is a good idea to apply an easily identifiable synchronization pulse to all your inputs @@ -7068,6 +7052,20 @@ (@pxref{timstr and strtim}). @end ifinfo +@item System-wide database directory +@cindex system-wide database directory (defined) +@cindex WFDB path +@cindex database path +The directory that contains local copies of the default WFDB calibration file, +WFDB sample record @code{100s}, and local, piped, and tape header files. +This directory is created when the WFDB Software Package is installed, and +by default it is included in the WFDB path (as the second component, following +the user's current directory). It is called the ``system-wide'' database +directory because it is shared by all users of the system on which it resides. +Under Unix, the system-wide database directory is usually @file{/usr/database} +or @file{/usr/local/database}; under MS-DOS or MS-Windows, it is usually +@file{c:\database}. + @item Tape @cindex tape (defined) A database record. @@ -7081,81 +7079,61 @@ @item WFDB library A set of functions (subroutines), able to read and write database files, callable by C and C++ programs, and described in this guide. + +@item WFDB path +The database path (q.v.). @end table @node Installation, WFDB Applications, Glossary, Top @appendix Installing the WFDB Software Package +This appendix briefly describes how to install the WFDB Software Package +on a new system. The package includes C-language sources for the WFDB +library and for a variety of applications (@pxref{WFDB Applications}), +@TeX{} source for this manual, @code{troff} source for Unix @code{man} +pages for the package, and a one-minute sample record (@samp{100s}). + @menu * Distribution:: How to obtain the latest version of the WFDB Software Package. -* UNIX installation:: Installing the WFDB Software Package on UNIX, +* Unix installation:: Installing the WFDB Software Package on Unix, GNU/Linux, and similar systems. -* MS-DOS installation:: Installing the WFDB Software Package on MS-DOS PCs. +* MS-Windows installation:: Installing the WFDB Software Package on + MS-Windows PCs. * Other installation:: Installing the WFDB Software Package on other systems. @end menu -@node Distribution, UNIX installation, Installation, Installation +@node Distribution, Unix installation, Installation, Installation @unnumberedsec How to obtain the WFDB Software Package -This appendix briefly describes how to install the WFDB Software Package -on a new system. The package includes C-language sources for the WFDB -library and for a variety of applications (@pxref{WFDB Applications}), -@TeX{} source for this manual, @code{troff} source for UNIX @code{man} -pages for the package, and a one-minute sample record (@samp{100s}). -Except for UNIX-specific and MS-DOS-specific visualization programs and -an MS-DOS-specific digitization/replay program, all of the software is -portable between UNIX and MS-DOS, and is usable under VMS and on the -Macintosh with only minor modifications. - The latest version of the WFDB Software Package can always be downloaded in source form from PhysioNet and its mirrors (see @code{http://www.physio@-net.org/physio@-tools/wfdb.shtml}); binaries for -popular operating systems and development snapshots are also usually available -for downloading there. For information on obtaining the latest version of the -WFDB Software Package on CD-ROM, @pxref{Sources}. - -The WFDB Software Package is recommended to all who are able to use it, since -it is freely available in source form and is actively maintained. The -predecessor of the WFDB Software Package (the DB Software Package) was included -in source form in the second and third editions of the MIT-BIH Arrhythmia -Database CD-ROM, and parts of it have been included on several other CD-ROMs -that contain databases of ECGs and other signals, including the first edition -of the MIT-BIH Arrhythmia Database CD-ROM, both editions of the European ST-T -Database CD-ROM and the MIT-BIH Polysomnographic Database CD-ROM, and on the -MGH/Marquette Foundation Waveform Database CD-ROMs (@pxref{Sources}). If you -have one of these CD-ROMs and you cannot upgrade to the WFDB Software Package, -see the files @file{readme.doc} (in the root directory of the CD-ROM) and -@file{lib.doc} (in the @file{lib} directory), or @file{README.TXT} (in the -@file{software} directory). +popular operating systems and development snapshots, as well as quick-start +guides including installation notes for popular operating systems, are also +usually available there. -@node UNIX installation, MS-DOS installation, Distribution, Installation -@unnumberedsec UNIX, GNU/Linux, and similar operating systems +@node Unix installation, MS-Windows installation, Distribution, Installation +@unnumberedsec Unix, GNU/Linux, and similar operating systems Before beginning the installation of the WFDB Software Package, obtain and install the @code{libwww} package from @code{http://www.w3.org/Library/} or -from @code{http://www.physionet.org/physiotools/libwww/}. This package is -provided with most current versions of GNU/Linux. (If you have a program +from @code{http://@-www.physio@-net.org/physio@-tools/libwww/}. This package +is provided with most current versions of GNU/Linux. (If you have a program called @code{libwww-config}, then @code{libwww} is installed already.) You may omit this step if you do not wish to have NETFILES support. -Also obtain and install the @code{XView} software from -@code{http://www.physio@-net.org/physio@-tools/xview/}. Sources are available, -as are binaries for several versions of GNU/Linux. If you are using SunOS or -Solaris, XView binaries are available in the Open Look Software Development -package and may be installed already. (If you have a program called -@code{textedit}, then @code{XView} is installed already.) If you are able to -use an existing set of binaries, these are recommended, since the sources may -take a @emph{long} time to compile. Be sure that the directory containing -@code{textedit}, usually @code{/usr/openwin/bin}, is in your @code{PATH}. You -may omit this step if you do not wish to use @emph{WAVE}. - -Select an existing directory in a writable file system for the WFDB Software -Package installation; @file{/usr/local/src} is a good choice in most cases. -Make sure that at least 6 megabytes are available; most of this space can be -recovered after the installation is complete. [Obviously, this was written -in ancient times -- the early 1990s -- when 6 Mb was still enough space for -most computer users to notice!] +Also download and install the @code{XView} software from +@code{http://www.physio@-net.org/physio@-tools/xview/} if you wish to use +@emph{WAVE}. Sources are available, as are binaries for several versions of +GNU/Linux. If you are using SunOS or Solaris, XView binaries are available in +the Open Look Software Development package and may be installed already. (If +you have a program called @code{textedit}, then @code{XView} is installed +already.) If you are able to use an existing set of binaries, these are +recommended, since the sources may take a @emph{long} time to compile. Be sure +that the directory containing @code{textedit}, usually @code{/usr/openwin/bin}, +is in your @code{PATH}. You may omit this step if you do not wish to use +@emph{WAVE}. If you have downloaded the software from PhysioNet or another source, you will have a @code{gzip}-compressed @code{tar} archive. Unpack it using @@ -7171,48 +7149,96 @@ This will create a directory with a name of the form @code{wfdb-}@var{m.n.r}, where @var{m.n.r} is the version number of the included WFDB library (e.g., -@code{10.2.0}). Enter this directory. +@code{10.2.1}). Enter this directory. -If you are installing the software from a CD-ROM, copy the contents of the -@file{src/wfdb} directory to your writable file system and then enter that -directory. One way to do this is to change to the @file{src} directory on the -CD-ROM and then to type: +You should now be ready to configure, compile, and install the software, using +the commands: @example -tar cfv - wfdb | ( cd /usr/local/src; tar xfv - ) -cd wfdb +./configure +make install @end example -In either case, you should now be ready to configure, compile, and install -the software, using the commands: +The @code{./configure} command asks where you wish to install the package. +If you accept the default (@code{/usr}), you will need root permissions when +runnning @code{make install}. If you choose another location, follow the +instructions given by @code{configure} for setting your @code{PATH} and +@code{LD\_LIBRARY\_PATH} environment variables. + +Depending on the speed of your system and of your C compiler, @samp{make} will +generally require between 1 and 10 minutes. + +@node MS-Windows installation, Other installation, Unix installation, Installation +@unnumberedsec MS-Windows + +If you have not already done so, install the Cygwin development environment +(freely available from @code{http://sources.redhat.com/cygwin/}). This +includes @code{gcc} (the GNU C/C++ compiler) as well as a comprehensive +assortment of other Unix utilities ported to MS-Windows. Accept the defaults +suggested by the installer. + +@emph{Important:} Although you may be able to compile the WFDB software package +using a proprietary compiler, this is \emph{not supported}. The +@code{Makefile.dos} files in several of the subdirectories of the package's +source tree can be used with the @code{make} utilities provided with most +commercial C compilers, although you will need to customize them for your +compiler. Your feedback is appreciated. + +Before beginning the installation of the WFDB Software Package, obtain and +install the @code{libwww} package from @code{http://www.w3.org/Library/} or +from @code{http://@-www.physio@-net.org/physio@-tools/libwww/}. You may +omit this step if you do not wish to have NETFILES support. + +Download +@code{http://www.physio@-net.org/physio@-tools/binaries/win@-dows/bin/which.exe} +and put it into a directory in your PATH. (This utility is needed by +@code{configure} in a later step. The sources for @code{which.exe} are +available within @code{http://www.physio@-net.org/physio@-tools/util@-ities/}.) + +Open a Cygwin terminal window (the Cygwin installer will have added this to +your MS-Windows start menu). Perform the remaining steps by typing the +commands given below into the terminal window. + +Check that @code{which} and @code{gcc} are accessible by typing the command: @example -./configure -make install +which gcc @end example -The @code{make} command requires root permissions, and installs the package -in subdirectories of @code{/usr}. If you do not have root permissions, -you may install the package in any writable directory by adding an -appropriate option to the @code{make} command above: +The output of this command should be: @example -make install WFDBROOT=@var{/path/to/another/directory} +/usr/bin/gcc @end example -Note that in this case you will need to add @var{WFDBROOT}@code{/bin} -to your @code{PATH}, and @var{WFDBROOT}@code{/lib} to your -@code{LD_LIBRARY_PATH}. +If you don't see this output, repeat the steps above as necessary to correct +the problem before continuing. -Depending on the speed of your system and of your C compiler, @samp{make} will -generally require between 1 and 10 minutes. +Unpack the @code{gzip}-compressed @code{tar} archive you downloaded earlier, +using the @code{tar} command included with the Cygwin package: + +@example +tar xfvz wfdb.tar.gz +@end example -@node MS-DOS installation, Other installation, UNIX installation, Installation -@unnumberedsec MS-DOS and MS-Windows +If your browser decompressed the file during the download, use this command +instead: + +@example +tar xfv wfdb.tar +@end example -Install your C compiler if you have not already done so, and make sure that -your hard disk has at least 6 megabytes of free space remaining. (Most of -this space can be reclaimed after the installation is complete.) +This will create a directory with a name of the form @code{wfdb-}@emph{m.n.r}, +where @emph{m.n.r} is the version number of the included WFDB library (e.g., +@code{10.2.1}). Enter this directory. + +You should now be ready to configure, compile, and install the software, using +the commands: + +@example +./configure +make install +@end example If you have Microsoft or Turbo C or C++, and a Microstar Laboratories DAP 1200- or 2400-series analog interface board, you can instruct the @file{install} @@ -7221,45 +7247,32 @@ successfully, you must first have installed the Microstar @file{#include} files and DAP interface library on your system. Specifically, files @file{c_lib.c}, @file{clock.h}, and @file{ioutil.h} must be installed in your @file{include} -directory, and file @file{cdapl.lib} must be installed in a directory in which -libraries are found by your linker. (If you are using Microsoft C, copy -@file{cdapl5.lib} from the Microstar distribution diskettes into your library -directory, and rename it @file{cdapl.lib}.) - -If you have downloaded the @code{gzip}-compressed @code{tar} archive of WFDB -sources, rename it if necessary (your browser may have changed its name to -@code{wfdb_tar.gz}; its name must be @code{wfdb.tar.gz} in order to be -unpacked successfully). Either GNU/Cygnus @code{gzip} and @code{tar}, other -versions of these utilities, or WinZip can be used to unpack the source -archive. +directory, and the version of the file @file{cdapl.lib} that is compatible with +your compiler must be installed in a directory in which libraries are found by +your linker. Read and customize @code{lib/Makefile.dos} and {\tt +app/Makefile.dos} as appropriate for your compiler, and use your compiler's +@code{make} utility to generate @code{wfdb.lib} and then @code{sample.exe}. -If you are installing the software from a CD-ROM, copy the contents of the -@code{wfdb} directory to a writable directory on your hard drive. -Enter the directory containing the sources and run @code{install} to compile -and install the WFDB Software Package. - -@node Other installation, , MS-DOS installation, Installation +@node Other installation, , MS-Windows installation, Installation @unnumberedsec Other systems -If you are installing the software from a CD-ROM, copy the contents of -the @file{wfdb} directory to your hard disk. Note that the text files -are in UNIX format (i.e., lines are terminated by ASCII line-feed -characters only). If your system expects text files in MS-DOS format -(with both a carriage return and a line-feed at the end of each line; -VMS is one such system), use @file{u2d.exe} (available from PhysioNet or -on the CD-ROM) to reformat the text files under MS-DOS. If your system -is a Macintosh (which expects that lines are terminated by carriage -returns only), you will have to reformat the text files yourself, which -may be done under MS-DOS on a PC using @file{u2m.exe}, or on a Macintosh -using third-party software. Additional notes for Macintosh users may be -found in file @file{MAC} (within the @file{wfdb} directory). +Copy the contents of @code{http://www.@-physio.@-net/physio@-tools/wfdb/} to +your hard disk. Note that the text files are in Unix format (i.e., lines are +terminated by ASCII line-feed characters only). If your system expects text +files in MS-DOS format (with both a carriage return and a line-feed at the end +of each line; VMS is one such system), use @file{u2d.exe} (available from +PhysioNet) to reformat the text files under MS-DOS. If your +system is a Macintosh (which expects that lines are terminated by carriage +returns only), you will have to reformat the text files yourself, which may be +done under MS-DOS on a PC using @file{u2m.exe}, or on a Macintosh using +third-party software. The WFDB Software Package is written in highly portable C, and (with the -exception of a few MS-DOS or UNIX-specific display or data-acquisition +exception of a few MS-DOS or Unix-specific display or data-acquisition programs) should be easy to compile with any K&R or ANSI C compiler. -The UNIX and MS-DOS @file{make} description files (@file{makefile.unx} -and @file{makefile.dos} in @file{wfdb} and in each of its subdirectories) +The Unix and MS-DOS @file{make} description files (@file{Makefile} +and @file{Makefile.dos} in @file{wfdb} and in each of its subdirectories) should get you started. @node WFDB Applications, Extensions, Installation, Top @@ -7269,7 +7282,7 @@ included with the WFDB Software Package. Except where noted otherwise, these applications are usable on all systems for which the WFDB library is available. For details on using these programs, refer to the @cite{WFDB -Applications Guide}. (On UNIX systems, the contents of the +Applications Guide}. (On Unix systems, the contents of the @cite{Applications Guide} may also be available as on-line @code{man} pages.) @@ -7505,8 +7518,9 @@ option. The output of @file{rdsamp}, or any similar text, can be converted into a WFDB record using @file{wrsamp}. -To copy an excerpt of a longer record, use @file{snip}, which creates new -@file{header} and signal files for @var{new-record} in the current directory. +To copy an excerpt of a longer record, use @file{snip}, which creates +new +header and signal files for @var{new-record} in the current directory. The beginning and end of the excerpt are specified using @samp{-f} and @samp{-t} options as for @file{rdsamp}. Annotator names may follow a @samp{-a} option; in this case excerpts from the specified annotation files are copied as @@ -7514,7 +7528,7 @@ @file{xform} is a more general version of @file{snip}; its main uses are for reformatting, rescaling, and sampling rate conversion. You may create a -@file{header} file specifying the desired format, sampling frequency, ADC zero +@file{hea} file specifying the desired format, sampling frequency, ADC zero levels, signal gains, etc., and supply it to @file{xform} using the @samp{-o} option; if you do not do so, @file{xform} obtains the required information interactively. @file{xform} accepts all of the options used by @file{snip}, @@ -7550,7 +7564,7 @@ gains and offsets if your signals include standard calibration pulses or identifiable signal levels. @file{calsig} incorporates two independent algorithms for measuring calibration pulses; it rewrites -@file{header} files based on its measurements. +header files based on its measurements. @node Graphics, , Signal processing, WFDB Applications @unnumberedsec Graphical Applications @@ -7568,7 +7582,7 @@ @file{wave} is an X Window System client application for viewing and editing WFDB records. (@file{wave} is not included in the WFDB software package, but is available separately; @pxref{Sources}.) @file{wave} can be -run on UNIX systems, and can be accessed remotely using networked PCs or +run on Unix systems, and can be accessed remotely using networked PCs or other systems for which X11 servers are available. Run @file{wave} without any arguments to obtain instructions for printing its on-line manual. @@ -7620,7 +7634,7 @@ system's @file{include} directory after installing the modified WFDB library. -The cleanest mechanism for adding additional fields to @file{header} files is +The cleanest mechanism for adding additional fields to @file{hea} files is to include them in `info' strings @iftex (@pxref{getinfo, , @code{getinfo}}), @@ -7628,7 +7642,7 @@ @ifinfo (@pxref{getinfo}), @end ifinfo -rather than by modifying the code that reads and writes @file{header} +rather than by modifying the code that reads and writes @file{hea} files (in @file{signal.c}). A common problem is the need to import signal files generated by other @@ -7658,22 +7672,22 @@ encoding. If you wish to implement variable-length encoding, it may be easiest to implement an indexed-search method for @code{isgsettime} in such cases.) If the ADC resolution exceeds the number of bits in a C -@code{int} on your system, change the @code{typedef} for @samp{Sample} +@code{int} on your system, change the @code{typedef} for @samp{WFDB_Sample} in @file{} as necessary; be aware that this change is likely to require additional changes to application programs (use @file{lint} or an ANSI C compiler to check your code). -Although the WFDB library generally assumes that signal files are ``pure'', -it is possible to read imported signal files that contain prologs -(data that precede the first sample). To do so, you must construct a -@file{header} file in which the @code{format} fields encode the length -of the prolog in bytes. For example, a signal file with a 512-byte -prolog followed by format 16 samples would be specified using @samp{16+512} -in the @code{format} field or fields (if the file contains more than one -signal, the @code{format} fields for all signals in the file must be -identical). Note that this facility is provided only for signal file -import; the WFDB library is not equipped to create signal files with -embedded prologs. +Although the WFDB library generally assumes that signal files are ``pure'', it +is possible to read imported signal files that contain prologs (data that +precede the first sample). To do so, you must construct a header file in which +the @code{format} fields encode the length of the prolog in bytes (you can do +this manually, or use @code{wfdbsetstart}, @pxref{wfdbsetstart}, for this +purpose). For example, a signal file with a 512-byte prolog followed by format +16 samples would be specified using @samp{16+512} in the @code{format} field or +fields (if the file contains more than one signal, the @code{format} fields for +all signals in the file must be identical). Note that this facility is +provided only for signal file import; the WFDB library is not equipped to +create signal files with embedded prologs. In a similar fashion, though with substantially more effort in most cases, you may define a new format for annotation files. Add additional @@ -7740,14 +7754,15 @@ contained within @file{wfdbio.c}; it is unlikely that any other code will require changes for a port. -If you encounter errors while compiling @file{signal.c}, you may wish to -try using the functions provided in that file as alternatives to the -standard macros @code{r16} and @code{w16}; the fully-expanded versions -of these macros are quite complex and are known to cause difficulty for -at least one C compiler. (Define the symbol @samp{BROKEN_CC} while compiling -@file{signal.c} in order to obtain the function versions of @code{r16} -and @code{w16}.) While compiling @file{signal.c}, it may be necessary -to disable code optimization for some C compilers. +If you encounter errors while compiling @file{signal.c}, you may wish to try +using the functions provided in that file as alternatives to the standard +macros @code{r16} and @code{w16}; the fully-expanded versions of these macros +are quite complex and are known to cause difficulty for at least one (now +obsolete) C compiler. (Define the symbol @samp{BROKEN_CC} while compiling +@file{signal.c} in order to obtain the function versions of @code{r16} and +@code{w16}.) While compiling @file{signal.c}, it may be necessary to disable +code optimization for some C compilers; no current compilers are known to +have such limitations, however. @node Sources, Answers, Extensions, Top @appendix Sources @@ -7853,7 +7868,7 @@ @itemx @ @ @ Results of Cardiac Rhythm and ST Segment Measurement Algorithms @display Association for the Advancement of Medical Instrumentation -3330 Washington Boulevard, Suite 400 +1110 N Glebe Road, Suite 220 Arlington, VA 22201 USA WWW: @code{http://www.aami.org/} @@ -7892,7 +7907,6 @@ telefax: +1 732 981 9667 @end display -@sp 1 @cindex GNU emacs @item GNU emacs @itemx gcc (the GNU portable C/C++ compiler) @@ -7922,7 +7936,7 @@ software. @sp 1 -@item @TeX{} for UNIX systems +@item @TeX{} for Unix systems This software is available by anonymous FTP from CTAN (Comprehensive TeX Archive Network) mirrors, including @code{ftp.tex.ac.uk}, @code{ftp.dante.de}, @@ -7930,11 +7944,13 @@ @TeX{}, etc. available. CTAN is indexed on the World Wide Web (one such index is @file{http://ctan.tug.org/ctan/}). -The UNIX @TeX{} distribution is also distributed on CD-ROM and in other tape +The Unix @TeX{} distribution is also distributed on CD-ROM and in other tape formats by the Free Software Foundation (address above) and others. It is also included with most GNU/Linux distributions (see below). -Several commercial implementations of @TeX{} for MS-DOS are widely available. +Several commercial implementations of @TeX{} for MS-DOS, MS-Windows, and MacOS +are widely available; visit the web site of the @TeX{} Users Group (below) for +pointers. @sp 1 @item General information on @TeX{} @@ -7969,12 +7985,14 @@ ftp.x.org and other archive sites. X11R6 sources are also available on CD-ROM from the Free Software Foundation (address above). +Sources for XView are also available from PhysioNet. + @sp 1 @cindex GNU/Linux @cindex Linux @item GNU/Linux -GNU/Linux is a POSIX-compliant reimplementation of the UNIX operating system, +GNU/Linux is a POSIX-compliant reimplementation of the Unix operating system, written by Linus Torvalds and a cast of thousands. It runs on Intel 386, 486, and Pentium PCs, among others. For information about GNU/Linux, visit the web site of the Linux Documentation Project: @@ -7990,8 +8008,8 @@ ftp.funet.fi @end display -There are also many low-cost (typically US$10 to US$30) distributions of -GNU/Linux on CD-ROMs widely available. Among the more popular are: +Many low-cost (typically US$10 to US$30) distributions of GNU/Linux on CD-ROMs +are widely available. Among the more popular are: @display Caldera Systems, Inc. @@ -8036,39 +8054,55 @@ @end display @sp 1 +@item Compilers and software development systems + +Any ANSI/ISO C compiler (or any K&R C compiler, if you still have one) +can be used to compile the WFDB library and applications that use it. +Under Unix and GNU/Linux, high-quality free compilers and development +tools are universally available and taken for granted. Even if you must +work in the MS-Windows or MS-DOS environment, however, there is no +reason to purchase expensive, bloated, and inferior proprietary +compilers and software development systems, since there are several +excellent, highly recommended, and completely free alternatives based +on the GNU C/C++ compiler (gcc). + +Using any of these packages does not limit you to creating free (open +source) software, although you are certainly encouraged to do so. If you +wish to develop and sell proprietary software using @code{gcc}, this is +certainly possible, with fewer and less severe restrictions than you +will encounter if using a commercial compiler. + @cindex Cygwin @item Cygwin WWW: @code{http://source.redhat.com/cygwin/} -This is a free software development platform for MS-Windows 9x/NT/2000/ME/XP, -based on GNU @code{gcc} and a large set of UNIX utilities ported by Cygnus -Software (now part of Red Hat, see above). Cygwin itself is open-source -software and is highly recommended in preference to commercial C/C++ compilers -if you must work in the MS-Windows environment. The WFDB Software Package -binaries available via PhysioNet are created using Cygwin. - -@item Borland C++ -@itemx Turbo C/C++ -@display -Inprise Corporation -100 Enterprise Way -Scotts Valley, CA 95066 USA - -WWW: @code{http://www.borland.com/} -telephone: +1 408 431 1000 -@end display - -@sp 1 -@item Microsoft C/C++ -@display -Microsoft Corporation -One Microsoft Way -Redmond, WA 98052 USA - -WWW: @code{http://www.microsoft.com/} -telephone: +1 425 882 8080 -@end display +This is a freely available software development platform for MS-Windows +9x/NT/2000/ME/XP, based on GNU @code{gcc} and a large set of Unix +utilities developed by the GNU project and ported to MS-Windows by +Cygnus Software (now part of Red Hat, see above). Cygwin itself is +open-source software and is highly recommended in preference to +commercial C/C++ compilers if you must work in the MS-Windows +environment. The WFDB Software Package binaries available via PhysioNet +are created using Cygwin. + +@cindex MinGW +@item MinGW + +WWW: @code{http://www.mingw.org/} + +This is another freely available software development platform for +MS-Windows, also based on @code{gcc} and many of the same utilities as +Cygwin. + +@cindex djgpp +@item djgpp + +WWW: @code{http://www.delorie.com/djgpp/} + +A freely available software development platform for MS-DOS, including +@code{gcc}, a free 32-bit DOS extender, and many of the same utilties +as Cygwin and MinGW. @sp 1 @item Microstar DAP analog interface boards for PCs @@ -8151,7 +8185,7 @@ one-fifth. @item 8. -On a UNIX system that supports the @samp{graph} and @samp{plot} +On a Unix system that supports the @samp{graph} and @samp{plot} commands, a simple solution is to write the sample numbers and values on the standard output in two-column ASCII format. The plotting is then performed by the pipeline: @@ -8218,7 +8252,7 @@ @ifinfo WFDB Programmer's Guide -Tenth Edition (revised and with additions for WFDB library version 10.2.0) +Tenth Edition (revised and with additions for WFDB library version 10.2.1) George B. Moody diff -Naur wfdb-10.2.0/doc/dfa.1 wfdb-10.2.1/doc/dfa.1 --- wfdb-10.2.0/doc/dfa.1 Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/doc/dfa.1 Sun Nov 11 21:28:36 2001 @@ -0,0 +1,80 @@ +.TH DFA 1 "11 November 2001" "DFA 4.2" "Time Series Analysis" +.SH NAME +dfa \- Detrended fluctuation analysis +.SH SYNOPSIS +\fBdfa\fR [ \fIoption\fR ... ] +.SH DESCRIPTION +.PP +The method of detrended fluctuation analysis (DFA) has proven useful in +revealing the extent of long-range correlations in seemingly irregular +time series. +.PP +Briefly, the time series to be analyzed is first integrated. Next, +the integrated time series is divided into boxes of equal length, +\fIn\fR. In each box of length \fIn\fR, a least squares line (or +polynomial curve of order \fIk\fR) is fit to the data (representing +the trend in that box). Next, we detrend the integrated time series +by subtracting the local trend in each box. The root-mean-square +fluctuation of this integrated and detrended time series is calculated +and denoted as \fIF(n)\fR. +.PP +This computation is repeated over all time scales (box sizes), from +\fIn = minbox\fR to \fIn = maxbox\fR, to characterize the relationship +between \fIF(n)\fR, the average fluctuation, and \fIn\fR, the box size. +Typically, \fIF(n)\fR will increase with box size \fIn\fR. A linear +relationship on a log-log plot indicates the presence of power law +(fractal) scaling. Under such conditions, the fluctuations can be +characterized by a scaling exponent, i.e., the slope of the line +relating \fIlog[F(n)]\fR to \fIlog[n]\fR. +.PP +This program performs detrended fluctuation analysis on a sequence of data +read from the standard input (which should contain a single column of numbers +in text format). The standard output contains two columns of numbers, which +are the base 10 logarithms of \fIn\fR and \fIF(n)\fR. Note that \fBdfa\fR +does \fInot\fR compute a scaling exponent; to do so, fit the output to +a line and measure its slope. +.PP +\fIOptions\fR may include: +.TP +\fB-d\fI k\fR +Detrend the data using a polynomial of degree \fIk\fR (1: linear, 2: quadratic, +etc.). Default: \fIk\fR = 1 (linear detrending). +.TP +\fB-h\fR +Print a usage summary and exit. +.TP +\fB-i\fR +Do not integrate the input series. Use this option if the input series is +already integrated (for example, if it represents times of occurrence rather +than intervals). +.TP +\fB-l\fI minbox\fR +Set the smallest box width. The default, and the minimum allowed value for +\fIminbox\fR, is \fI2k + 2\fR (where \fIk\fR is determined by the \fB-d\fR +option, see above). +.TP +\fB-s\fR +Perform a sliding window DFA (measure the fluctuations using all possible +boxes at each box size). By default, fluctuations are measured using +non-overlapping boxes only. Using the \fB-s\fR option will make the +calculation much slower. +.TP +\fB-u\fI maxbox\fR +Set the largest box width. The default, and the maximum allowed value for +\fImaxbox\fR, is one-fourth the length of the input series. +.SH SEE ALSO +.PP +The DFA method was first proposed in Peng C-K, Buldyrev SV, +Havlin S, Simons M, Stanley HE, Goldberger AL. Mosaic organization of +DNA nucleotides. \fIPhys Rev E\fR 1994;\fB49\fR:1685-1689. +.PP +A detailed description of the algorithm and its application to +physiologic signals can be found in Peng C-K, Havlin S, Stanley HE, +Goldberger AL. Quantification of scaling exponents and crossover +phenomena in nonstationary heartbeat time series. +\fIChaos\fR 1995;\fB5\fR:82-87. +.SH AUTHORS +JE Mietus (joe at physionet dot org), C-K Peng, and GB Moody, based on C-K Peng's +original Fortran implementation. +.SH SOURCE +http://www.physionet.org/physiotools/dfa/dfa.c diff -Naur wfdb-10.2.0/doc/epic.1 wfdb-10.2.1/doc/epic.1 --- wfdb-10.2.0/doc/epic.1 Mon Feb 7 10:39:45 2000 +++ wfdb-10.2.1/doc/epic.1 Wed Nov 7 10:51:23 2001 @@ -1,4 +1,4 @@ -.TH EPIC 1 "11 January 2000" "WFDB software 10.0" "WFDB applications" +.TH EPIC 1 "7 November 2001" "WFDB software 10.0" "WFDB applications" .SH NAME epic \- ANSI/AAMI-standard episode-by-episode annotation comparator .SH SYNOPSIS @@ -155,8 +155,8 @@ \fIEvaluating ECG Analyzers\fR (in the \fIWFDB Applications Guide\fR) .br \fIAmerican National Standard ANSI/AAMI EC38:1998, Ambulatory -Electrocardiographs\fR; available from AAMI, 3330 Washington Blvd., -Suite 400, Arlington, VA 22201 USA (http://www.aami.org/). +Electrocardiographs\fR; available from AAMI, 1110 N Glebe Road, +Suite 220, Arlington, VA 22201 USA (http://www.aami.org/). .SH AUTHOR George B. Moody (george@mit.edu) .SH SOURCE diff -Naur wfdb-10.2.0/doc/eval.tex wfdb-10.2.1/doc/eval.tex --- wfdb-10.2.0/doc/eval.tex Mon Oct 15 17:45:07 2001 +++ wfdb-10.2.1/doc/eval.tex Wed Nov 7 10:50:50 2001 @@ -9,7 +9,7 @@ \date{} \begin{document} -\setcounter{page}{113} +\setcounter{page}{118} \maketitle @@ -21,14 +21,15 @@ Electrocardiographs} (ANSI/AAMI EC38:1998, and its predecessor, ANSI/AAMI EC38:1994), and the {\em American National Standard for Testing and Reporting Performance Results of Cardiac Rhythm and ST -Segment Measurement Algorithms} (ANSI/AAMI EC57:1998). They include earlier -evaluation protocols developed for an AAMI Recommended Practice, -{\em Testing and Reporting Performance Results of Ventricular Arrhythmia -Detection Algorithms} (AAMI ECAR, 1987). It will be most useful -to readers who plan to use the suite of evaluation software included -in the WFDB Software Package available from MIT; this suite of software -includes the reference implementations of the evaluation protocols -specified in EC38 and EC57. +Segment Measurement Algorithms} (ANSI/AAMI EC57:1998). They include +earlier evaluation protocols developed for an AAMI Recommended +Practice, {\em Testing and Reporting Performance Results of +Ventricular Arrhythmia Detection Algorithms} (AAMI ECAR, 1987). It +will be most useful to readers who plan to use the suite of evaluation +software included in the WFDB Software Package ({\tt +http://www.\-physio\-net.\-org/\-physio\-tools\-wfdb.\-shtml}); this +suite of software includes the reference implementations of the +evaluation protocols specified in EC38 and EC57. \section{Introduction} Continuous monitoring of the electrocardiogram in both inpatients and @@ -106,13 +107,14 @@ certainty the effects of algorithm modifications on performance. \end{itemize} -At present, the following ECG databases are available:\footnote{Sources: -ECRI, 5200 Butler Pike, Plymouth Meeting, PA 19462 USA (AHA DB); MIT-BIH -Database Distribution, MIT Room E25-505A, 77 Massachusetts Avenue, Cambridge, -MA 02139 USA (MIT, NST, and CU databases). The ESC DB is available -from: CNR Institute of Clinical Physiology, Computer Laboratory, -via Trieste, 41, 56100 Pisa, Italy. Except for the AHA DB, -all are available in CD-ROM format.} +Standards EC38 and EC57 require the use of the following ECG +databases:\footnote{Sources: ECRI, 5200 Butler Pike, Plymouth Meeting, +PA 19462 USA (AHA DB); MIT-BIH Database Distribution, MIT Room +E25-505A, 77 Massachusetts Avenue, Cambridge, MA 02139 USA (MIT, NST, +and CU databases); CNR Institute of Clinical Physiology, Computer +Laboratory, via Trieste, 41, 56100 Pisa, Italy (ESC DB). Except for +the AHA DB, all are available in whole or in part from PhysioNet +({\tt http://www.\-physio\-net.\-org/}).} \begin{itemize} \item {\bf AHA DB}: The American Heart Association Database for Evaluation of Ventricular Arrhythmia Detectors (80 records, 35 minutes @@ -125,11 +127,10 @@ Database (90 records, two hours each) \item {\bf NST DB}: The Noise Stress Test Database (12 records, 30 -minutes each; supplied with the MIT DB) +minutes each) \item {\bf CU DB}: The Creighton University Sustained Ventricular -Arrhythmia Database (35 records, 8 minutes each; supplied on the -second edition of the MIT DB CD-ROM) +Arrhythmia Database (35 records, 8 minutes each) \end{itemize} Each of these databases represents a very substantial effort by many @@ -159,7 +160,7 @@ AAMI Recommended Practice.\footnote{{\it Testing and Reporting Performance Results of Ventricular Arrhythmia Detection Algorithms}. Publication AAMI ECAR (1987); succeeded by ANSI/AAMI -EC57:1998, available from AAMI, 3330 Washington Boulevard, Suite 400, +EC57:1998, available from AAMI, 1110 N Glebe Road, Suite 220, Arlington, VA 22201 USA.} Between 1990 and 1998, the ambulatory ECG subcommittee of the AAMI ECG committee developed and revised a standard for ambulatory ECG monitors, significant portions of which @@ -199,12 +200,12 @@ incorporate the necessary ``hooks'' for producing annotation files. \subsection{Software to Support Evaluations} -This paper describes a suite of programs that support evaluations -of automated ECG analyzers in accordance with the methods described in -the EC38 and EC57 standards (as well as those in the earlier ECAR Recommended -Practice). These methods are sufficiently complex that the -development of such a suite of programs is not an afternoon's work. -By making generally available reference implementations of the +This paper describes a suite of programs that support evaluations of +automated ECG analyzers in accordance with the methods described in +the EC38 and EC57 standards (as well as those in the earlier ECAR +Recommended Practice). These methods are sufficiently complex that +the development of such a suite of programs is not an afternoon's +work. By making generally available reference implementations of the evaluation algorithms, much needless duplication of effort may be avoided. By circulating them in source form to other users, we may hope to find and correct any bugs, with the eventual result that @@ -213,11 +214,8 @@ ambiguities in the English specification of the evaluation algorithms are resolved in a consistent manner for each device tested. These programs are written in C and run under MS-DOS or UNIX. They have -been made available as part of the WFDB Software Package -from MIT\footnote{Source: MIT-BIH Database Distribution -(address above).} and are included in the current edition of the -MIT-BIH Arrhythmia Database CD-ROM. In this paper, the names of these -programs are printed {\tt like this}. +been made available as part of the WFDB Software Package. In this +paper, the names of these programs are printed {\tt like this}. \section{Evaluating an ECG Analyzer} The major task facing an evaluator is that of presenting the reference signals @@ -320,7 +318,7 @@ annotations, but any beat annotations that they do produce will be translated into one of these types. The standard specifies the mapping used for the {\tt anntyp} values defined in {\tt }. (This file is -supplied with all of the existing CD-ROM databases.) Any beat annotations that +included in the WFDB Software Package.) Any beat annotations that appear in the first five minutes of a record (the ``learning period'') are ignored in the evaluation process. The remainder of the record (the ``test period'') must be fully annotated. Note in particular that the last beat of @@ -352,7 +350,7 @@ always begin with a byte that specifies the number of data bytes that follow; in this case, the five characters ({\tt ( A F I B}) of the string. The end of each episode should be marked with any other rhythm annotation (for example, -``{\tt (N}''). +\verb|"\02(N"|). \item {\em Heart rate measurements}. Each type of heart rate measurement (including any heart rate or RR interval variability measurements) made by the @@ -361,14 +359,15 @@ measurement, with ${\tt subtyp} = m$ and with the measurement in the {\tt aux} field, as an ASCII-coded decimal number. - \item {\em ST deviation measurements}. If available, these should be -provided in the {\tt aux} fields of beat annotations, as ASCII-coded decimal -numbers indicating the deviations in microvolts from reference levels -established for each signal from the first 30 seconds of each record. For -example, ``25 -104'' indicates a 25 $\mu$V elevation in signal 0 and a 104 -$\mu$V depression in signal 1. If ST measurements are omitted from any beat -annotation, the evaluation software assumes they are unchanged from their -previous values. + \item {\em ST deviation measurements}. If available, these should +be provided in the {\tt aux} fields of beat annotations, as +ASCII-coded decimal numbers indicating the deviations in microvolts +from reference levels established for each signal from the first 30 +seconds of each record. For example, ``{\tt 25 -104}'' indicates a 25 +$\mu$V elevation in signal 0 and a 104 $\mu$V depression in signal 1. +If ST measurements are omitted from any beat annotation, the +evaluation software assumes they are unchanged from their previous +values. \item {\em Ischemic ST change annotations}. These {\tt STCH} annotations should mark the beginning and end of each detected episode of ischemic ST @@ -382,6 +381,12 @@ optionally be marked with an ``{\tt AST}{\it nsm}'' annotation, where {\it n} and {\it s} are defined as above, and {\it m} is the ST deviation in microvolts, relative to a reference level established as above. + + \item {\em Comment annotations}. Annotations with {\tt anntyp = NOTE} +and any desired string data in {\tt aux} may be included anywhere in +an annotation file. {\tt NOTE} annotations are ignored by the +standard evaluation software; they may be used, for example, to +record the values of internal algorithm variables for debugging purposes. \end{itemize} Note that only beat annotations are absolutely required in test annotation files. ST deviation measurements within beat annotations, and the other @@ -649,17 +654,17 @@ \appendix \section{Using the AHA Database} -Since the AHA DB is not available in CD-ROM format, the WFDB Software -Package includes a pair of programs that convert files read from AHA -DB distribution tapes or floppy disks into files formatted in the same -way as those in the CD-ROM databases. {\tt a2m} converts AHA -annotation files, and {\tt ad2m} converts AHA signal files and also -generates header ({\tt *.hea}) files. (Run these programs without -command-line arguments to obtain instructions on their use.) Using -{\tt a2m} and {\tt ad2m}, all 80 AHA DB records can be stored in -roughly 130 Mb of disk space (assuming use of the standard 35-minute -records). These programs can also reformat old (pre-1989) MIT DB -tapes written in the AHA DB distribution format. +Since the AHA DB is not available in the standard PhysioBank format +used by all of the other databases, the WFDB Software Package includes +a pair of programs that convert files read from AHA DB distribution +tapes or floppy disks into files in PhysioBank format. {\tt a2m} +converts AHA annotation files, and {\tt ad2m} converts AHA signal +files and also generates header ({\tt *.hea}) files. (Run these +programs without command-line arguments to obtain instructions on +their use.) Using {\tt a2m} and {\tt ad2m}, all 80 AHA DB records can +be stored in roughly 130 Mb of disk space (assuming use of the +standard 35-minute records). These programs can also reformat old +(pre-1989) MIT DB tapes written in the AHA DB distribution format. It is also possible to read and write AHA tape-format files directly using the WFDB library; refer to the {\it WFDB Programmer's Guide} @@ -736,5 +741,6 @@ change these parameters, simply edit the protocol annotation file (using, for example, {\tt rdann} to convert it to text form, any text editor to make the modifications, and {\tt wrann} to convert it back -to annotation file format). +to annotation file format), then rerun {\tt nst} using the protocol +file to generate a new record. \end{document} diff -Naur wfdb-10.2.0/doc/hrfft.1 wfdb-10.2.1/doc/hrfft.1 --- wfdb-10.2.0/doc/hrfft.1 Sun Jan 30 04:13:18 2000 +++ wfdb-10.2.1/doc/hrfft.1 Fri Oct 26 14:10:08 2001 @@ -1,4 +1,4 @@ -.TH HRFFT 1 "11 January 2000" "PSD Estimation" "Signal processing" +.TH HRFFT 1 "26 October 2001" "PSD Estimation" "Signal processing" .SH NAME hrfft, hrlomb, hrmem \- calculate and plot heart rate power spectra .br @@ -40,8 +40,7 @@ \fB-p \fIplot-utility\fR Use the specified \fIplot-utility\fR to generate the output (default: the value of the environment variable \fBPLOT\fR, if set, or -\fI/usr/local/bin/plt\fR, if it exists, or \fI/usr/local/bin/plot2d\fR -otherwise). +\fIplt\fR, if it exists, or \fIplot2d\fR otherwise). .TP \fB-r \fIrecord\fR Produce a heart rate power spectrum for the specified \fIrecord\fR (default: @@ -67,7 +66,8 @@ length. .PP Note that these shell scripts can be run under MS-DOS using a suitable set -of UNIX-like utilities, such as the MKS Toolkit or the GNUish MS-DOS utilities. +of UNIX-like utilities, such as the MKS Toolkit or the GNUish MS-DOS utilities, +and under MS-Windows using the free Cygwin package. .SH SEE ALSO fft(1), ihr(1), lomb(1), memse(1), plot2d(1), tach(1) .SH AUTHOR diff -Naur wfdb-10.2.0/doc/ihr.1 wfdb-10.2.1/doc/ihr.1 --- wfdb-10.2.0/doc/ihr.1 Sun Jan 30 04:13:18 2000 +++ wfdb-10.2.1/doc/ihr.1 Tue Oct 16 22:59:35 2001 @@ -1,4 +1,4 @@ -.TH IHR 1 "11 January 2000" "WFDB software 10.1" "WFDB applications" +.TH IHR 1 "16 October 2001" "WFDB software 10.2" "WFDB applications" .SH NAME ihr \- calculate instantaneous heart rate .SH SYNOPSIS @@ -41,7 +41,7 @@ a third column is used to flag these intervals as abnormal (a zero in the third column means the interval is normal, a one means it is abnormal). .PP -Reference (`atruth') annotation files can be used as input to \fIihr\fR, +Reference (`atr') annotation files can be used as input to \fIihr\fR, but files that contain manually-inserted annotations are less suitable, since annotation placement is likely to be less consistent than in annotation files generated by programs such as \fIsqrs\fR(1). diff -Naur wfdb-10.2.0/doc/install.tex wfdb-10.2.1/doc/install.tex --- wfdb-10.2.0/doc/install.tex Thu Sep 6 15:35:27 2001 +++ wfdb-10.2.1/doc/install.tex Wed Nov 7 16:00:18 2001 @@ -9,7 +9,7 @@ \date{} \begin{document} -\setcounter{page}{109} +\setcounter{page}{115} \maketitle @@ -20,57 +20,33 @@ {\tt troff} sources for this and other manuals; and a one-minute sample record ({\tt 100s}). -These notes are included here for those who may not have ready access to the -World Wide Web. For those who do, please visit PhysioNet, where quick-start -guides including installation notes for popular operating systems are available -(see {\tt http://www.physio\-net.org/physio\-tools/wfdb.shtml} - \section*{Obtaining the WFDB Software Package} The latest version of the WFDB Software Package can always be downloaded in -source form from PhysioNet and its mirrors (see -{\tt http://www.physio\-net.org/physio\-tools/wfdb.shtml}); binaries for -popular operating systems and development snapshots are also usually available -for downloading there. For information on obtaining the latest version of the -WFDB Software Package on CD-ROM, {\tt Sources}. - -The WFDB Software Package is recommended to all who are able to use it, since -it is freely available in source form and is actively maintained. The -predecessor of the WFDB Software Package (the DB Software Package) was included -in source form in the second and third editions of the MIT-BIH Arrhythmia -Database CD-ROM, and parts of it have been included on several other CD-ROMs -that contain databases of ECGs and other signals, including the first edition -of the MIT-BIH Arrhythmia Database CD-ROM, both editions of the European ST-T -Database CD-ROM and the MIT-BIH Polysomnographic Database CD-ROM, and on the -MGH/Marquette Foundation Waveform Database CD-ROMs ({\tt Sources}). If you -have one of these CD-ROMs and you cannot upgrade to the WFDB Software Package, -see the files {\tt readme.doc} (in the root directory of the CD-ROM) and -{\tt lib.doc} (in the {\tt lib} directory), or {\tt README.TXT} (in the -{\tt software} directory). +source form from PhysioNet and its mirrors (see {\tt +http://www.physio\-net.org/physio\-tools/wfdb.shtml}); binaries for popular +operating systems and development snapshots, as well as quick-start guides +including installation notes for popular operating systems, are also usually +available there. -\subsection*{UNIX, Linux, and similar operating systems} +\subsection*{UNIX, GNU/Linux, and similar operating systems} Before beginning the installation of the WFDB Software Package, obtain and -install the {\tt libwww} package from {\tt http://www.w3.org/Library/} or -from {\tt http://\-www.physio\-net.org/physio\-tools/libwww/}. This package is -provided with most current versions of Linux. (If you have a program called -{\tt libwww-config}, then {\tt libwww} is installed already.) You may +install the {\tt libwww} package from {\tt http://www.w3.org/Library/} or from +{\tt http://\-www.physio\-net.org/physio\-tools/libwww/}. This package is +provided with most current versions of GNU/Linux. (If you have a program +called {\tt libwww-config}, then {\tt libwww} is installed already.) You may omit this step if you do not wish to have NETFILES support. Also download and install the {\tt XView} software packages from {\tt http://www.\-physio\-net.org/\-physio\-tools/xview/} if you wish to use WAVE. -Sources are available, as are binaries for several versions of Linux. If you -are using SunOS or Solaris, XView binaries are available in the Open Look +Sources are available, as are binaries for several versions of GNU/Linux. If +you are using SunOS or Solaris, XView binaries are available in the Open Look Software Development package and may be installed already. (If you have a program called {\tt textedit}, then {\tt XView} is installed already.) If you are able to use an existing set of binaries, these are recommended, since the sources may take a {\em long} time to compile. Be sure that the directory -containing {\tt textedit}, usually {\tt /usr/openwin/bin}, is in your -{\tt PATH}. You may omit this step if you do not wish to use {\em WAVE}. - -Select an existing directory in a writable file system for the WFDB Software -Package installation; {\tt /usr/local/src} is a good choice in most cases. -Make sure that at least 6 megabytes are available (most of this space can be -recovered after the installation is complete). +containing {\tt textedit}, usually {\tt /usr/openwin/bin}, is in your {\tt +PATH}. You may omit this step if you do not wish to use {\em WAVE}. If you have downloaded the software from PhysioNet or another source, you will have a {\tt gzip}-compressed {\tt tar} archive. Unpack it using @@ -81,43 +57,26 @@ tar xfv wfdb.tar \end{verbatim} -(If you have GNU {\tt tar}, as on Linux, you can combine these into a +(If you have GNU {\tt tar}, as on GNU/Linux, you can combine these into a single command: {\tt tar xfvz wfdb.tar.gz}.) This will create a directory with a name of the form {\tt wfdb-}{\em m.n.r}, where {\em m.n.r} is the version number of the included WFDB library (e.g., -{\tt 10.2.0}). Enter this directory. - -If you are installing the software from a CD-ROM, copy the contents of the -{\tt src/wfdb} directory to your writable file system and then enter that -directory. One way to do this is to change to the {\tt src} directory on the -CD-ROM and then to type: +{\tt 10.2.1}). Enter this directory. -\begin{verbatim} -tar cfv - wfdb | ( cd /usr/local/src; tar xfv - ) -cd wfdb -\end{verbatim} - -In either case, you should now be ready to configure, compile, and install -the software, using the commands: +You should now be ready to configure, compile, and install the software, using +the commands: \begin{verbatim} ./configure make install \end{verbatim} -The {\tt make} command requires root permissions, and installs the package -in subdirectories of {\tt /usr}. If you do not have root permissions, -you may install the package in any writable directory by adding an -appropriate option to the {\tt make} command above: - -\begin{verbatim} -make install WFDBROOT={\em /path/to/another/directory} -\end{verbatim} - -Note that in this case you will need to add {\em WFDBROOT}{\tt /bin} -to your {\tt PATH}, and {\em WFDBROOT}{\tt /lib} to your -{\tt LD\_LIBRARY\_PATH}. +The {\tt ./configure} command asks where you wish to install the package. +If you accept the default ({\tt /usr}), you will need root permissions when +runnning {\tt make install}. If you choose another location, follow the +instructions given by {\tt configure} for setting your {\tt PATH} and +{\tt LD\_LIBRARY\_PATH} environment variables. Depending on the speed of your system and of your C compiler, {\tt make} will generally require between 1 and 10 minutes. @@ -130,8 +89,8 @@ other Unix utilities ported to MS-Windows. Accept the defaults suggested by the installer. -{\emph Important:} Although you may be able to compile the WFDB software -package using a proprietary compiler, this is {\emph not supported}. The +\emph{Important:} Although you may be able to compile the WFDB software +package using a proprietary compiler, this is \emph{not supported}. The {\tt Makefile.dos} files in several of the subdirectories of the package's source tree can be used with the {\tt make} utilities provided with most commercial C compilers, although you will need to customize them for your @@ -164,11 +123,10 @@ /usr/bin/gcc \end{verbatim} -If you don't see this output, repeat steps 1 and 2 above as necessary to -correct the problem before continuing. +If you don't see this output, repeat the steps above as necessary to correct +the problem before continuing. -If you have downloaded the WFDB software package from PhysioNet or another -source, you will have a {\tt gzip}-compressed {\tt tar} archive. Unpack it +Unpack the {\tt gzip}-compressed {\tt tar} archive you downloaded earlier, using the {\tt tar} command included with the Cygwin package: \begin{verbatim} @@ -186,18 +144,8 @@ where {\em m.n.r} is the version number of the included WFDB library (e.g., {\tt 10.2.0}). Enter this directory. -If you are installing the software from a CD-ROM, copy the contents of the -{\tt src/wfdb} directory to your writable file system and then enter that -directory. One way to do this is to change to the {\tt src} directory on the -CD-ROM and then to type: - -\begin{verbatim} -tar cfv - wfdb | ( cd c:/usr/local/src; tar xfv - ) -cd wfdb -\end{verbatim} - -In either case, you should now be ready to configure, compile, and install -the software, using the commands: +You should now be ready to configure, compile, and install the software, using +the commands: \begin{verbatim} ./configure @@ -219,22 +167,21 @@ \subsection*{Other systems} -If you are installing the software from a CD-ROM, copy the contents of the -{\tt wfdb} directory to your hard disk. Note that the text files are in -UNIX format (i.e., lines are terminated by ASCII line-feed characters only). -If your system expects text files in MS-DOS format (with both a carriage return -and a line-feed at the end of each line; VMS is one such system), use -{\tt u2d.exe} (available from PhysioNet or on the CD-ROM) to reformat the -text files under MS-DOS. If your system is a Macintosh (which expects that -lines are terminated by carriage returns only), you will have to reformat the -text files yourself, which may be done under MS-DOS a PC using {\tt u2m.exe}, -or on a Macintosh using third-party software. Additional notes for Macintosh -users may be found in file {\tt MAC} (within the {\tt wfdb} directory). +Copy the contents of {\tt http://www.\-physio.\-net/physio\-tools/wfdb/} to +your hard disk. Note that the text files are in UNIX format (i.e., lines are +terminated by ASCII line-feed characters only). If your system expects text +files in MS-DOS format (with both a carriage return and a line-feed at the end +of each line; VMS is one such system), use {\tt u2d.exe} (available from +PhysioNet) to reformat the text files under MS-DOS. If your system is a +Macintosh (which expects that lines are terminated by carriage returns only), +you will have to reformat the text files yourself, which may be done under +MS-DOS on a PC using {\tt u2m.exe}, or on a Macintosh using third-party +software. The WFDB Software Package is written in highly portable C, and (with the exception of a few MS-DOS or UNIX-specific display or data-acquisition programs) should be easy to compile with any K\&R or ANSI C compiler. -The UNIX and MS-DOS {\tt make} description files ({\tt makefile.unx} -and {\tt makefile.dos} in {\tt wfdb} and in each of its subdirectories) +The UNIX and MS-DOS {\tt make} description files ({\tt Makefile} +and {\tt Makefile.dos} in {\tt wfdb} and in each of its subdirectories) should get you started. \end{document} diff -Naur wfdb-10.2.0/doc/intro.ht0 wfdb-10.2.1/doc/intro.ht0 --- wfdb-10.2.0/doc/intro.ht0 Thu Jun 24 11:38:29 1999 +++ wfdb-10.2.1/doc/intro.ht0 Tue Oct 16 22:53:00 2001 @@ -44,21 +44,18 @@ names begin with lowercase `e', followed by a 4-digit number. Record names may contain letters, digits, and underscores. Case is significant in record names that contain letters, even in environments -such as MS-DOS for which case translation is normally performed by the +such as MS-Windows for which case translation is normally performed by the operating system on file names; thus `e0104' is the name of a record -found in the European ST-T Database, whereas `E0104' is not. Under -MS-DOS, furthermore, only the first eight characters of a record name -are significant. A record name is not a file name. See the +found in the European ST-T Database, whereas `E0104' is not. +A record name is not a file name. See the WFDB Programmer's Guide for further details on record names.

annotator
Where this appears, substitute an annotator name. The annotator name -`atruth' (shortened to `atr' under MS-DOS and on CD-ROMs) -is used to name the set of reference annotations supplied by the -database developers. Annotator names may contain letters, digits, and -underscores, as for record names. Note that, under MS-DOS, only the first -three characters of an annotator name are significant. +`atr' is used to name the set of reference annotations +supplied by the database developers. Annotator names may contain letters, +digits, and underscores, as for record names.
time
Where this appears, substitute a string in standard time format. @@ -98,6 +95,6 @@ welcome. Please send them to:

George B. Moody (george@mit.edu)

-20 May 1999 +16 October 2001 diff -Naur wfdb-10.2.0/doc/mxm.1 wfdb-10.2.1/doc/mxm.1 --- wfdb-10.2.0/doc/mxm.1 Sun Jan 30 04:13:18 2000 +++ wfdb-10.2.1/doc/mxm.1 Wed Nov 7 10:50:22 2001 @@ -1,4 +1,4 @@ -.TH MXM 1 "11 January 2000" "WFDB software 10.0" "WFDB applications" +.TH MXM 1 "7 November 2001" "WFDB software 10.2.1" "WFDB applications" .SH NAME mxm \- ANSI/AAMI-standard measurement-by-measurement annotation comparator .SH SYNOPSIS @@ -91,8 +91,8 @@ \fIEvaluating ECG Analyzers\fR (in the \fIWFDB Applications Guide\fR) .br \fIAmerican National Standard ANSI/AAMI EC38:1998, Ambulatory -Electrocardiographs\fR; available from AAMI, 3330 Washington Blvd., -Suite 400, Arlington, VA 22201 USA (http://www.aami.org/). +Electrocardiographs\fR; available from AAMI, 1110 N Glebe Road, +Suite 220, Arlington, VA 22201 USA (http://www.aami.org/). .SH AUTHOR George B. Moody (george@mit.edu) .SH SOURCE diff -Naur wfdb-10.2.0/doc/nst.1 wfdb-10.2.1/doc/nst.1 --- wfdb-10.2.0/doc/nst.1 Sun Jan 30 04:13:18 2000 +++ wfdb-10.2.1/doc/nst.1 Tue Oct 16 22:58:47 2001 @@ -1,5 +1,5 @@ '\" t -.TH NST 1 "11 January 2000" "WFDB software 10.0" "WFDB applications" +.TH NST 1 "16 October 2001" "WFDB software 10.2" "WFDB applications" .SH NAME nst \- noise stress test for ECG analysis programs .SH SYNOPSIS @@ -14,7 +14,7 @@ .TP \fB-a\fI annotator\fR Use \fIannotator\fR as the reference annotator for the clean record. -If the \fB-a\fR option is omitted, \fIatruth\fR is used as the reference +If the \fB-a\fR option is omitted, \fIatr\fR is used as the reference annotator. Reference annotations are used to determine the signal size as part of the noise level calibration, unless the \fB-p\fR option (see below) is used. Reference annotations are also copied to the output record. diff -Naur wfdb-10.2.0/doc/plot2d.1 wfdb-10.2.1/doc/plot2d.1 --- wfdb-10.2.0/doc/plot2d.1 Sun Jan 30 04:13:18 2000 +++ wfdb-10.2.1/doc/plot2d.1 Fri Oct 26 14:16:25 2001 @@ -7,13 +7,13 @@ \fBplot3d\fR [ \fIinput-file\fR ] [ [ \fIxcol ycol\fR ] \fIzcol\fR ] [ \fIoptions ...\fR ] .SH DESCRIPTION .PP -These UNIX shell scripts can be used to produce simple 2-D and 3-D plots using -\fIgnuplot\fR(1) in batch (non-interactive) mode. \fIplot2d\fR was designed -as a portable, quick-and-dirty replacement for Paul Albrecht's elegant but -unsupported \fIplt\fR; \fIplot2d\fR accepts a few of the most commonly-used -\fIplt\fR options and produces similar plots. \fIplot3d\fR uses the same -syntax as \fIplot2d\fR, but it produces simple 3-D plots (a capability not -offered by \fIplt\fR). +These UNIX shell scripts can be used to produce simple 2-D and 3-D +plots using \fIgnuplot\fR(1) in batch (non-interactive) mode. +\fIplot2d\fR was designed as a quick-and-dirty replacement for +\fIplt\fR (http://www.physionet.org/physiotools/plt/). \fIplot2d\fR +accepts a few of the most commonly-used \fIplt\fR options and produces +similar plots. \fIplot3d\fR uses the same syntax as \fIplot2d\fR, but +it produces simple 3-D plots (a capability not offered by \fIplt\fR). .PP The \fIinput-file\fR should contain one or more space- or tab-separated columns of data per line, with each point on a line. Omit the \fIinput-file\fR @@ -83,7 +83,7 @@ choosing different columns. To plot the third column vs. the first, try: \fBplot2d powers 2 0 -t "Marshmallows" -x "Mass (kg)" -y "Height (m)"\fR .SH SEE ALSO -\fIgnuplot\fR(1) +\fIgnuplot\fR(1), \fIplt\fR(1) .SH AUTHOR George B. Moody (george@mit.edu) .SH SOURCES diff -Naur wfdb-10.2.0/doc/plotstm.1 wfdb-10.2.1/doc/plotstm.1 --- wfdb-10.2.0/doc/plotstm.1 Sun Jan 30 04:13:18 2000 +++ wfdb-10.2.1/doc/plotstm.1 Wed Nov 7 10:49:35 2001 @@ -1,4 +1,4 @@ -.TH PLOTSTM 1 "11 January 2000" "WFDB software 10.0" "WFDB applications" +.TH PLOTSTM 1 "7 November 2001" "WFDB software 10.2.1" "WFDB applications" .SH NAME plotstm \- produce scatter plot of ST measurement errors on a PostScript device .SH SYNOPSIS @@ -7,13 +7,22 @@ .PP \fIplotstm\fR reads a file of ST measurement errors produced by \fIepic\fR(1) using its \fB-S\fR, \fB-S0\fR, or \fB-S1\fR option, and generates a PostScript -page description for a scatter plot of these data, as specified by a draft -AAMI standard for ambulatory ECGs. The standard output of \fIplotstm\fR may -be printed directly on any PostScript device. +page description for a scatter plot of these data, as specified by ANSI/AAMI +EC38 and ANSI/AAMI EC57. The standard output of \fIplotstm\fR may be printed +directly on any PostScript device. .SH SEE ALSO ecgeval(1), epic(1) .br \fIEvaluating ECG Analyzers\fR +.br +\fIAmerican National Standard ANSI/AAMI EC38:1998, Ambulatory +Electrocardiographs\fR +.br +\fIAmerican National Standard ANSI/AAMI EC57:1998, Testing and Reporting +Performance Results of Cardiac Rhythm and ST Segment Measurement Algorithms\fR +.br +The last two publications are available from AAMI, 1110 N Glebe Road, +Suite 220, Arlington, VA 22201 USA (http://www.aami.org/). .SH AUTHOR George B. Moody (george@mit.edu) .SH SOURCE diff -Naur wfdb-10.2.0/doc/plt.1 wfdb-10.2.1/doc/plt.1 --- wfdb-10.2.0/doc/plt.1 Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/doc/plt.1 Fri Oct 26 14:15:18 2001 @@ -0,0 +1,396 @@ +.TH PLT 1 "17 May 2001" "Graphics" "Utilities" +.SH NAME +plt \- make 2-D plots +.SH SYNOPSIS +\fBplt\fR [ \fIdata-spec\fR ] [ \fIdata-file\fR ] [ [ \fIxcol\fR ] \fIycol\fR ] [ \fIoptions ...\fR ] [ \fB-T lw | lwcat\fR [ \fIlwcat-options\fR ] ] +.SH DESCRIPTION +.PP +This man page is intended as a supplement to the command-line help provided +by \fBplt\fR itself (using the \fB-h\fR option, see below). If you have not +previously used \fBplt\fR, please look at the \fIplt Tutorial and Cookbook\fR, +which is included in the \fBplt\fR package (see \fISOURCES\fR below). +.PP +\fBplt\fR is a non-interactive (command line-driven) plotting utility. +\fBplt\fR can produce publication-quality 2D plots in PostScript from +easily-produced text or binary data files, and can also create screen +plots under the X Window System. +.PP +All data presented to \fBplt\fR must be organized in rows and columns. +Columns are numbered beginning with zero, and each column contains +values for a variable that can be used as an abscissa (x coordinate), +ordinate (y coordinate), or (with appropriate options described below) +a grey level, color, or other plot attributes. Rows are numbered +beginning with one, and each row contains a value for each column. +Within a \fIdata-file\fR, values are always arranged in row-major +order (all elements of row 1, followed by all elements of row 2, +etc.). +.PP +Usually, data must be in text form in order for \fBplt\fR to read them. +Each non-empty, non-comment line (row) in the input should contain a +value for each column that will be plotted; if there are additional +values or other extra text at the end of a row, it will be ignored. +Columns can be separated by any number of spaces or tabs. Commas and +single or double quotation marks can also be used as column separators +with current versions of \fBplt\fR, though not with older versions. +It is not necessary to line up the values in each row. There may also +be spaces or tabs at the beginning of a line, and these will also be +ignored. +.PP +If no \fIdata-file\fR is specified, \fBplt\fR reads data from its +standard input. The command-line arguments \fIxcol\fR and \fIycol\fR +specify the column numbers for the abscissas and ordinates +respectively. If only one column number is specified, it is taken as +\fIycol\fR, and \fBplt\fR generates a series of abscissas +automatically. If the \fIdata-file\fR contains no more than two +columns, both \fIxcol\fR and \fIycol\fR may be omitted. +.PP +By default, \fBplt\fR reads all rows of the \fIdata-file\fR and scales +the x and y axes so that all data can be plotted. An optional +\fIdata-spec\fR, a string beginning with a colon (:), can be used to +select a subset of the rows in the \fIdata-file\fR. For details on +using a \fIdata-spec\fR, and for information about reading binary data +files using \fBplt\fR, see the \fIplt Tutorial and Cookbook\fR. +.PP +\fBplt\fR recognizes a large number of \fIoptions\fR for controlling +and customizing plots. To see a summary of all options, run ``\fBplt -h\fR''; +if this command is followed by one or more strings (which should not +begin with hyphens), \fBplt\fR prints one-line summaries of all +options beginning with those strings only. +.PP +\fBplt\fR can read its options from command-line arguments, from a +\fIformat file\fR (specified using the \fB-f\fR option), or from a +\fIformat string\fR (supplied on the command line, following the +\fB-F\fR option). When using format files or format strings, omit +the hyphen (-) before each option. +.SS Options +Following is a brief summary of \fBplt\fR's options. Note that many +options require arguments. \fBplt\fR chooses a suitable default for most +such arguments if the argument is supplied as `\fB-\fR'. See the +\fIplt Tutorial and Cookbook\fR for further details. +.TP +\fB-p\fR\fI plot-styles\fR +Specify style(s) for data plots. Available \fIplot-styles\fR include +`\fBc\fR', `\fBC\fR', `\fBe+\fR\fIc\fR', `\fBe-\fR\fIc\fR', `\fBe:\fR\fIc\fR', +`\fBE+\fR\fIn\fR', `\fBE-\fR\fIn\fR', `\fBE:\fR\fIn\fR', `\fBf\fR', `\fBi\fR', +`\fBl\fR', `\fBm\fR', `\fBn\fR', `\fBN\fR', `\fBo\fR', `\fBO\fR', +`\fBs\fR\fIc\fR', `\fBS\fR\fIn\fR', and `\fBt\fR'. +.TP +\fB-s\fR\fI elements\fR +Suppress \fIelements\fR of output. Elements that can be suppressed +include `\fBe\fR' (erasing the screen or beginning a new page before +plotting), `\fBa\fR' (anything associated with axes), `\fBx\fR' (anything +associated with the x axis), `\fBy\fR' (anything associated with the y +axis), `\fBg\fR' (the grid), `\fBm\fR' (x and y axis tick marks), +`\fBn\fR' (x and y tick mark numbers), `\fBt\fR' (x and y axis labels and +plot title), `\fBl\fR' (user-supplied labels), `\fBp\fR' (data plots), +and `\fBf\fR' (``figures'' -- boxes, line segments, arrows, and legends). +In addition, these \fIelements\fR modify the effects of any other elements +that follow: `\fBX\fR' (restrict effects to x axis), `\fBY\fR' (restrict +effects to y axis), and `\fBA\fR' (apply effects to both axes); and the +element `\fBC\fR' reenables all elements. +.TP +\fB-X\fR\fI xmin xmax\fR +Set the x-axis range (see also \fB-xa\fR). +.TP +\fB-Y\fR\fI ymin ymax\fR +Set the y-axis range (see also \fB-ya\fR). +.TP +\fB-t\fR\fI title\fR +Set the title for the plot (enclose \fItitle\fR in quotes if it contains +whitespace or begins with `\fB(\fR' or `\fB[\fR'). +.TP +\fB-T\fR\fI type\fR +Specify the output \fItype\fR, which may be \fBxw\fR (X11 window, the default +under Unix or Linux and not available under MS-Windows), or \fBlw\fR +(PostScript, the default under MS-Windows). +.TP +\fB-g\fR\fI grid-mode\fR +Specify the grid style, which may be \fBin\fR, \fBout\fR (default), \fBboth\fR, +\fBnone\fR, \fBsym\fR (make symmetric axes at top and right), \fBgrid\fR +(extend major ticks across the entire plot), \fBxgrid\fR, \fBygrid\fR, or +\fBsub\fR (extend all ticks across the entire plot). +.TP +\fB-h\fR [ \fI option-prefix ... \fR ] +Show help on options beginning with \fIoption-prefix\fR (which should not +begin with `\fB-\fR'). If \fIoption-prefix\fR is omitted, show help on +all options. +.PP +Within the next group of options, those with upper-case names (`\fB-A\fR', +`\fB-B\fR', ...) use \fIwindow coordinates\fR between (0,0) and (1,1); +those with lower-case names (`\fB-a\fR', `\fB-b\fR', ...) use \fIdata +coordinates\fR. +.TP +\fB-a\fR\fI x0 y0 x1 y1\fR +Draw an arrow to \fI(x0,y0)\fR from \fI(x1,y1)\fR. +.TP +\fB-A\fR\fI xw0 yw0 xw1 yw1\fR +Draw an arrow to \fI(xw0,yw0)\fR from \fI(xw1,yw1)\fR. +.TP +\fB-b\fR\fI x0 y0 x1 y1\fR +Draw a box with opposite corners at \fI(x0,y0) and \fI(x1,y1)\fR. +.TP +\fB-B\fR\fI xw0 yw0 xw1 yw1\fR +Draw a box with opposite corners at \fI(xw0,yw0) and \fI(xw1,yw1)\fR. +.TP +\fB-c\fR\fI x0 y0 x1 y1\fR +Connect points \fI(x0,y0)\fR and \fI(x1,y1)\fR. +.TP +\fB-C\fR\fI xw0 yw0 xw1 yw1\fR +Connect points \fI(xw0,yw0)\fR and \fI(xw1,yw1)\fR. +.TP +\fB-d\fR\fI x0 y0 x1 y1\fR +Draw a dark (filled) box with opposite corners at \fI(x0,y0) and \fI(x1,y1)\fR. +.TP +\fB-D\fR\fI xw0 yw0 xw1 yw1\fR +Draw a dark (filled) box with opposite corners at \fI(xw0,yw0) and +\fI(xw1,yw1)\fR. +.TP +\fB-l\fR\fI x y tbc label-string\fR +Print \fIlabel-string\fR at \fI(x,y)\fR. The \fItbc\fR argument is a +two-character text box coordinate that specifies how the label is to be +positioned relative to \fI(x,y)\fR; the default (\fBCC\fR) centers the +string at \fI(x,y)\fR. +.TP +\fB-L\fR\fI xw yw tbc label-string\fR +As for \fB-l\fR, but using window coordinates \fI(xw,yw)\fR. +.TP +\fB-w\fR\fI configuration subwindow\fR +Confine the plot to a predefined window, specified by the arguments. +\fIconfiguration\fR specifies the number of subwindows (panels), using +one of `\fBm\fR' (1), `\fBb\fR' (2), or `\fBq\fR' (4), and \fIsubwindow\fR' +specifies which panel is to be plotted (0 or 1 for `\fBm\fR'; 0, 1, or 2 +for `\fBb\fR'; or 0, 1, 2, 3, or 4 for `\fBq\fR'). In each case, subwindow +0 creates the frame of the entire plot, and the other subwindows refer to +regions where data can be plotted. Use this option with `\fB-o\fR' or +`\fB-s e\fR' to create multi-panel plots in stages without starting a new page +or erasing the window before starting each new stage. +.TP +\fB-W\fR\fI xp0 yp0 xp1 yp1\fR +Define the region of the page in which to plot. The arguments are +\fIpage coordinates\fR; the page coordinates (0,0) and (1,1) correspond to +the lower left and upper right corners of the page. +.TP +\fB-f\fR\fI format-file\fR +Read options from the specified \fIformat-file\fR. +.TP +\fB-fa\fR\fI format-file\fR +Record the current axis parameters as options in the specified +\fIformat-file\fR (for use with a later \fBplt\fR command). The +previous contents of \fIformat-file\fR, if any, will be overwritten. +.TP +\fB-F\fR\fI format-string\fR +Read options from the specified \fIformat-string\fR. +.TP +\fB-o\fR +Suppress all output except data plots. +.TP +\fB-cz\fR\fI xfrom xincr\fR +Generate abscissas, beginning with \fIxfrom\fR (default: 0) and +incrementing by \fIxincr\fR (default: 1) at each step. +.TP +\fB-ex\fR +Don't exclude points outside axis limits. +.TP +\fB-hl\fR\fI x y tbc n file\fR +Print the next \fIn\fR (default: 1000) lines of the specified \fIfile\fR as a +label, placing the reference point for the first line of the label at data +coordinates \fI(x,y)\fR. The \fItbc\fR argument is defined as for \fB-l\fR and +is applied to each line of the label. The \fIfile\fR is opened when first used +by \fB-hl\fR or \fB-vl\fR, and remains open, so that successive \fB-hl\fR or +\fB-vl\fR options referring to the same \fIfile\fR read and print successive +lines. At most \fBMAXLABELFILES\fR (defined in \fBplt.h\fR, currently 6) +\fIfile\fRs of label strings can be open at once. +.TP +\fB-vl\fR\fI x y tbc n file\fR +As for \fB-hl\fR, but print the label in a vertical orientation (rotated +90 degrees counterclockwise). +.TP +\fB-le \fR\fIlinenumber plotnumber\fR [ \fItext\fR ] +Define the specified \fIlinenumber\fR in the legend (see also \fB-lp\fR). +Line numbers in the legend begin with 0 (the top line); plot numbers also +begin with 0 (these refer to the data plots, and are used here to determine +the line style for the entry's sample plot segment). The \fItext\fR is +printed to the right of the sample plot segment. To create an entry with +more than one line of text, use additional \fB-le\fR options with different +\fIlinenumber\fRs as necessary, omitting the \fIplotnumber\fR (use `\fB-\fR') +for all but the first. If the same data are plotted more than once in a +single figure to create an overlay (for example, using symbols over line +segments), an overlaid legend entry can be created using additional \fB-le\fR +options with the same \fIlinenumber\fR and different \fIplotnumbers\fR, +omitting the \fItext\fR for all but the first. +.TP +\fB-lp \fR\fIxw0 yw0\fR [ \fIboxscale\fR [ \fIseglength\fR [ \fIopaque\fR ] ] ] +Define the window coordinates \fI(xw0, yw0)\fR of the upper left corner of +the plot legend text, and other attributes for the plot legend (key). +\fBplt\fR determines the size of the box it draws around the legend, but +the calculated width of the box is multiplied by \fIboxscale\fR. The +\fIseglength\fR option specifies the length of the sample plot segments, +as a fraction of the x-axis length (default: 0.05). If \fIopaque\fR is +`\fByes\fR' (default), the background of the legend is opaque white; +otherwise, the background is transparent (any previously drawn material +remains visible through the legend box). Unless a \fB-lp\fR option is +provided, no legend is printed. +.TP +\fB-lx \fR [ \fIbase\fR [ \fIsubticks\fR ] ] +Draw a logarithmic x-axis; \fIbase\fR is the base of the logarithms (default: +10), and \fIsubticks\fR is either `\fByes\fR' or `\fBno\fR'. If the axis +has a small number of major ticks, \fBplt\fR draws subticks by default; +use the \fIsubticks\fR argument to change \fBplt\fR's default behavior. +.TP +\fB-ly \fR [ \fIbase\fR [ \fIsubticks\fR ] ] +Draw a logarithmic y-axis. +.TP +\fB-tf \fR\fIfile\fR [ \fItbc\fR ] +Load the text string array from the specified \fIfile\fR. Each line of the +\fIfile\fR defines an element of the string array; using plot styles +\fBc\fR or \fBt\fR, these strings can be plotted in the same manner as +data points. The optional \fItbc\fR specifies how the positions of the +strings are to be modified when they are printed, in the same way as for +\fB-l\fR; by default, the strings are centered on the coordinates specified +for them. +.TP +\fB-ts "\fR\fIstring0 string1 ...\fB"\fR [ \fItbc\fR ] +Load the text string array from the quoted argument (whitespace separates +strings in the array) rather than from a file; otherwise, this option is +the same as \fB-tf\fR. +.TP +\fB-fs "\fR\fIstring0 string1 ...\fB"\fR +Load the font string array from the quoted argument. Using appropriate +plot style (\fB-p\fR) options, the strings can be used to change the font, +line style (solid, dotted, dashed, etc.), or drawing color. +.TP +\fB-x \fR\fIstring\fR +Set the x-axis title to \fIstring\fR (which must be quoted if this option +is used on the command line or if \fIstring\fR begins with `(' or `['). +.TP +\fB-xa \fR\fIxmin xmax tick fmt tskip ycross\fR +Specify the x-axis range (as \fIxmin\fR to \fIxmax\fR); the interval between +x-axis tick marks; the format, \fIfmt\fR, in which to print the numbers (e.g., +``\fB%.3f\fR'', ``\fB%.2e\fR''; any format that \fBprintf(3)\fR can use for +printing floating-point numbers is acceptable); the number of ticks per +labelled tick, \fItskip\fR; and \fIycross\fR, the point on the y-axis that the +x-axis should cross, in y-units. Any of these parameters may be supplied as +``-'', which causes \fBplt\fR to choose a reasonable value based on the input +data. +.TP +\fB-xe \fR\fIxmin-error xmax-error\fR +Use this option to specify the amount by which the x-axis range is allowed +to exceed the range of x-values in the input data, when \fBplt\fR determines +the x-axis range automatically. +.TP +\fB-xm \fR\fItick-base\fR +Make x-axis ticks be multiples of the specified \fItick-base\fR. +.TP +\fB-xo \fR\fIx-axis-offset\fR +Move the x-axis down by \fIx-axis-offset\fR (expressed as a fraction of the +y-axis length). +.TP +\fB-xr\fR +Draw the x-axis at the top of the plot +.TP +\fB-xt \fR\fIx label\fR [ \fItick-size\fR ] +Add an extra labelled tick at the specified \fIx\fR position, and label it +with the specified \fIlabel\fR (which may be any string). The optional +\fItick-size\fR argument specifies the length of the added tick, as a fraction +of the default length for labelled ticks (e.g., a value of 1.5 makes the +added tick 50\% longer than the standard size). +.TP +\fB-xts \fR\fIx\fR [ \fItick-size\fR ] +Force a labelled tick to appear on the x-axis at the specified \fIx\fR +(the positions of the other labelled x-ticks are adjusted accordingly). +\fItick-size\fR is defined as for \fB-xt\fR. +.TP +\fB-y \fR\fIstring\fR +Set the y-axis title to \fIstring\fR (see \fB-x\fR). +.TP +\fB-ya \fR\fIymin ymax tick fmt tskip xcross\fR +Set up the y-axis (see \fB-xa\fR). +.TP +\fB-ye \fR\fIymin-error ymax-error\fR +Set the allowable error in the y-axis range (see \fB-xe\fR). +.TP +\fB-ym \fR\fItick-base\fR +Make y-axis ticks be multiples of the specified \fItick-base\fR. +.TP +\fB-yo \fR\fIy-axis-offset\fR +Move the y-axis to the left by \fIy-axis-offset\fR (expressed as a fraction of +the x-axis length). +.TP +\fB-yr\fR +Draw the y-axis at the right edge of the plot. +.TP +\fB-yt \fR\fIy label\fR [ \fItick-size\fR ] +Add an extra labelled tick at the specified \fIy\fR position (see \fB-xt\fR). +.TP +\fB-yts \fR\fIy\fR [ \fItick-size\fR ] +Force a labelled tick to appear on the y-axis at the specified \fIy\fR +(see \fB-xts\fR). +.TP +\fB-dev \fR\fIpterm option\fR +Process \fIoption\fR only if the value of \fBPTERM\fR is \fIpterm\fR. +The \fB-dev\fR option may be useful in scripts that produce screen or +printed plots in different formats. +.TP +\fB-sf \fR\fIname specification\fR +Create a new font group with the specified \fIname\fR and set its +specifications (font, point size, color/grey level, line width, and line +style). See the chapter titled \fIColors, Line Styles, and Fonts\fR in +the \fIplt Tutorial and Cookbook\fR for details. +.TP +\fB-ch \fR\fIheight-factor width-factor\fR +Modify the height and width of all characters printed in the plot by +the specified factors. +.TP +\fB-size \fR\fIfscl width height left-margin bottom-margin\fR +Specify the size and position of the plot on the page. The \fIwidth\fR, +\fIheight\fR, \fIleft-margin\fR, and \fIbottom-margin\fR are specified +in \fIinches\fR (1 inch = 25.4 mm). \fIfscl\fR is a factor applied to the +point size of all printed characters, \fIindependently\fR of the scaling +applied to the rest of the plot. This option is effective for printed plots +only. +.SS Screen and printed plots +.PP +By default, \fBplt\fR makes an X11 screen plot. To make a printed plot, +use the option \fB-T lw\fR, and pipe the output of \fBplt\fR to +\fBlwcat\fR. Under Unix or Linux, \fBlwcat\fR uses the standard +\fBlpr\fR print spooler to send \fBplt\fR's output in PostScript +format to the default printer. Under MS-Windows, or using +\fBlwcat\fR's \fB-gv\fR option under Unix or Linux, the PostScript +output is displayed on-screen using GhostScript (\fBGSView\fR under +MS-Windows, or \fBgv\fR otherwise; these programs can save the output +in a file or send it to a printer). +.SH EXAMPLES +.PP +Create a text file with the following contents: +.br + 0 0 0 +.br + 1 1 1 +.br + 2 4 8 +.br + 3 9 27 +.br + 4 16 64 +.br +and call the file \fIpowers\fR. Plot the first column vs. the second by: +.br + \fBplt powers 0 1 -t "Squares of small integers" -x "Integer" -y "Square"\fR +.br +The same file can be used to generate a number of different plots, by +choosing different columns. To plot the third column vs. the first, try: + \fBplt powers 2 0 -t "Marshmallows" -x "Mass (kg)" -y "Height (m)"\fR +.PP +The \fIplt Tutorial and Cookbook\fR contains many more examples. +.SH FILES +.TP +\fB/usr/local/lib/ps/plt.pro\fR +PostScript prolog for plots printed using \fBlwcat\fR +.SH SEE ALSO +\fIplt Tutorial and Cookbook\fR (a book-length introduction to \fBplt\fR, +included in the \fBplt\fR source package) +.SH AUTHORS +\fBplt\fR was originally written by Paul Albrecht, and is currently maintained +by George B. Moody (\fBgeorge@mit.edu\fR). +.SH SOURCES +\fBhttp://www.physionet.org/physiotools/plt/\fR diff -Naur wfdb-10.2.0/doc/pschart.1 wfdb-10.2.1/doc/pschart.1 --- wfdb-10.2.0/doc/pschart.1 Sat Jun 17 17:43:08 2000 +++ wfdb-10.2.1/doc/pschart.1 Fri Oct 26 14:32:50 2001 @@ -1,4 +1,4 @@ -.TH PSCHART 1 "17 June 2000" "WFDB software 10.1.5" "WFDB applications" +.TH PSCHART 1 "26 October 2001" "WFDB software 10.2.1" "WFDB applications" .SH NAME pschart \- produce annotated `chart recordings' on a PostScript device .SH SYNOPSIS @@ -21,7 +21,7 @@ .SS Options: .TP \fB-a \fIann\fR -Print annotations from annotator \fIann\fR (default: `atruth'). To suppress +Print annotations from annotator \fIann\fR (default: `atr'). To suppress annotation printing, use `\fB-a ""\fR'. .TP \fB-A \fIann\fR @@ -254,7 +254,7 @@ .TP \fI/usr/local/lib/ps/pschart.pro\fR default PostScript prolog file. -.br +.TP \fI/usr/local/lib/ps/12lead.pro\fR alternative PostScript prolog file, suitable for printing standard 12-lead diagnostic ECGs (10 seconds, 4 traces, with the top three traces divided into @@ -262,11 +262,10 @@ the \fB-G\fR option (see the \fIGrid\fR procedure for details). .SH BUGS .PP -High quality takes time. A full page, with grids and default scales, typically -takes about 3 minutes to render on an Apple LaserWriter, or about 6 minutes -on a Linotronic 1200 dpi phototypesetter. A SPARCprinter attached to a Sparc -IPC or equivalent can render \fIpschart\fR output at nearly full speed (about -28 seconds for the first page, 8 seconds for each subsequent page). +On older PostScript printers, output may be quite slow. A full page, with +grids and default scales, typically takes about 3 minutes to render on an Apple +LaserWriter, or about 6 minutes on a Linotronic 1200 dpi phototypesetter. Most +modern printers can render \fIpschart\fR output at nearly full speed. .PP If the record you wish to plot is sampled at a very high rate relative to the printer resolution (i.e., if one sample interval would appear on the page as diff -Naur wfdb-10.2.0/doc/psfd.1 wfdb-10.2.1/doc/psfd.1 --- wfdb-10.2.0/doc/psfd.1 Sun Jan 30 04:13:18 2000 +++ wfdb-10.2.1/doc/psfd.1 Fri Oct 26 14:35:08 2001 @@ -1,4 +1,4 @@ -.TH PSFD 1 "11 January 2000" "WFDB software 10.0" "WFDB applications" +.TH PSFD 1 "26 October 2001" "WFDB software 10.2.1" "WFDB applications" .SH NAME psfd \- produce annotated `full-disclosure' plots on a PostScript device .SH SYNOPSIS @@ -22,7 +22,7 @@ \fBOptions\fR: .TP \fB-a \fIann\fR -Print annotations from annotator \fIann\fR (default: `atruth'). To suppress +Print annotations from annotator \fIann\fR (default: `atr'). To suppress annotation printing, use `\fB-a ""\fR'. .TP \fB-A \fIann\fR @@ -210,11 +210,10 @@ default PostScript prolog file. .SH BUGS .PP -High quality takes time. A full page, with grids and default scales, typically -takes about 3\-4 minutes to render on an Apple LaserWriter, or about 6\-8 -minutes on a Linotronic 1200 dpi phototypesetter. A SPARCprinter attached -to a Sparc IPC or equivalent can render \fIpsfd\fR output at nearly full speed -(about 28 seconds for the first page, 8 seconds for each subsequent page). +On older PostScript printers, output may be quite slow. A full page, with +grids and default scales, typically takes about 3 minutes to render on an Apple +LaserWriter, or about 6 minutes on a Linotronic 1200 dpi phototypesetter. Most +modern printers can render \fIpsfd\fR output at nearly full speed. .PP For a 300 dpi printer, a typical full page of output will be about 80 Kbytes. Expect this to increase approximately linearly with the printer resolution. diff -Naur wfdb-10.2.0/doc/rdann.1 wfdb-10.2.1/doc/rdann.1 --- wfdb-10.2.0/doc/rdann.1 Mon Feb 26 12:35:51 2001 +++ wfdb-10.2.1/doc/rdann.1 Tue Oct 16 22:56:53 2001 @@ -1,4 +1,4 @@ -.TH RDANN 1 "26 February 2001" "WFDB software 10.1" "WFDB applications" +.TH RDANN 1 "16 October 2001" "WFDB software 10.2" "WFDB applications" .SH NAME rdann \- read a WFDB annotation file .SH SYNOPSIS @@ -20,7 +20,7 @@ .TP \fB-e\fR Print annotation times as elapsed times from the beginning of the record -(default: \fIrdann\rR prints absolute times if the absolute time of the +(default: \fIrdann\fR prints absolute times if the absolute time of the beginning of the record is defined, and elapsed times otherwise, unless the \fB-x\fR option has been given). .TP @@ -78,10 +78,10 @@ \fIsetwfdb\fR(1)). .SS Example .br - \fBrdann -a atruth -r 200 -f 0 -t 5:0 -p V\fR + \fBrdann -a atr -r 200 -f 0 -t 5:0 -p V\fR .br This command prints on the standard output all ``V'' (PVC) annotations in -the first five minutes of the \fIatruth\fR (reference annotation) file for +the first five minutes of the \fIatr\fR (reference annotation) file for record 200. .SH CD-ROM VERSIONS The first edition of the MIT-BIH Arrhythmia Database CD-ROM, the first and diff -Naur wfdb-10.2.0/doc/rxr.1 wfdb-10.2.1/doc/rxr.1 --- wfdb-10.2.0/doc/rxr.1 Thu Feb 10 00:04:33 2000 +++ wfdb-10.2.1/doc/rxr.1 Wed Nov 7 10:48:47 2001 @@ -1,4 +1,4 @@ -.TH RXR 1 "9 February 2000" "WFDB software 10.1" "WFDB applications" +.TH RXR 1 "7 November 2001" "WFDB software 10.2.1" "WFDB applications" .SH NAME rxr \- ANSI/AAMI-standard run-by-run annotation comparator .SH SYNOPSIS @@ -6,8 +6,8 @@ .SH DESCRIPTION .PP Using options \fB-C\fR, \fB-L\fR, or \fB-S\fR, \fIrxr\fR implements the -run-by-run comparison algorithms described in AAMI/ANSI EC38:1998, the American -National Standard for Ambulatory ECGs, and in AAMI EC57:1998, the American +run-by-run comparison algorithms described in ANSI/AAMI EC38:1998, the American +National Standard for Ambulatory ECGs, and in ANSI/AAMI EC57:1998, the American National Standard for Testing and Reporting Performance Results of Cardiac Rhythm and ST Segment Measurement Algorithms. \fIrxr\fR is the reference implementation of these algorithms, and must be used to obtain the run-by-run @@ -95,8 +95,8 @@ \fITesting and Reporting Performance Results of Cardiac Rhythm and ST Segment Measurement Algorithms\fR (ANSI/AAMI EC57:1998) .br -The last two publications are available from AAMI, 3330 Washington Blvd., -Suite 400, Arlington, VA 22201 USA (http://www.aami.org/). +The last two publications are available from AAMI, 1110 N Glebe Road, +Suite 220, Arlington, VA 22201 USA (http://www.aami.org/). .SH AUTHOR George B. Moody (george@mit.edu) .SH SOURCE diff -Naur wfdb-10.2.0/doc/setwfdb.1 wfdb-10.2.1/doc/setwfdb.1 --- wfdb-10.2.0/doc/setwfdb.1 Wed May 24 16:35:35 2000 +++ wfdb-10.2.1/doc/setwfdb.1 Wed Oct 31 20:43:10 2001 @@ -1,4 +1,4 @@ -.TH SETWFDB 1 "24 May 2000" "WFDB software 10.1.4" "WFDB applications" +.TH SETWFDB 1 "31 October 2001" "WFDB software 10.2.1" "WFDB applications" .SH NAME setwfdb, cshsetwfdb \- set WFDB environment variables .SH SYNOPSIS @@ -8,26 +8,45 @@ .br call setwfdb\fR .SH DESCRIPTION +.PP +WFDB applications search for input files by looking for them in an +ordered list of locations called the WFDB path. These locations can +be given by directory names or (if the WFDB library has been installed +with NETFILES support) URLs. If the \fBWFDB\fR environment variable +is set, its value specifies the WFDB path; otherwise, applications use +the default path specified at the time the WFDB library was compiled. +The default path includes the current directory (``.''), the \fIdatabase\fR +subdirectory within the WFDB software package's root directory, and +the PhysioBank data archive (http://www.physionet.org/physiobank/database). +.PP +WFDB applications that need access to the signal calibration database +find it in a file located on the WFDB path. If the \fBWFDBCAL\fR +environment variable has been set, its value specifies the name of the +calibration file; otherwise, applications look for the default calibration +file, the name of which ("wfdbcal") is compiled into the WFDB library. +.PP +Many users will not need to change the defaults, but for those who do, the +scripts described here may be helpful. \fIImportant:\fR these programs must +be customized before using them for the first time on a new machine. Since +they are text files, use any text editor to customize them. .SS \fIsh\fR, \fIbash\fR, and \fIksh\fR shell users: -\fIsetwfdb\fR sets the shell variables \fBWFDB\fR and \fBWFDBCAL\fR to the -appropriate values to permit access to on-line ECG databases. It must be -executed using the ``.'' as shown above. A frequent user of the databases -will find it convenient to include an invocation of \fIsetwfdb\fR in -the \fI.profile\fR file. +\fIsetwfdb\fR sets the environment variables \fBWFDB\fR and +\fBWFDBCAL\fR. It must be executed using the ``.'' as shown above. +It may be convenient to include an invocation of \fIsetwfdb\fR in the +\fI.profile\fR file. .SS \fIcsh\fR and \fItcsh\fR users: -\fIcshsetwfdb\fR sets \fBWFDB\fR and \fBWFDBCAL\fR similarly for the C-shell. It -must be executed using ``source'' as shown above. It may be convenient to +\fIcshsetwfdb\fR sets \fBWFDB\fR and \fBWFDBCAL\fR similarly for the C-shell. +It must be executed using ``source'' as shown above. It may be convenient to include this command in the \fI.cshrc\fR file. .SS MS-DOS/MS-Windows users: -\fIsetwfdb.bat\fR sets \fBWFDB\fR and \fBWFDBCAL\fR similarly for MS-DOS; it also -sets \fBVIEWP\fR (see \fIview\fR(1)). It may be convenient to include this -command in the \fIautoexec.bat\fR file (under MS-DOS 3.3 and later, include -the command ``call setwfdb'' within \fIautoexec.bat\fR; under earlier -versions of MS-DOS, use ``command /c setwfdb'', or append the contents of -\fIsetwfdb.bat\fR to \fIautoexec.bat\fR). +\fIsetwfdb.bat\fR sets \fBWFDB\fR and \fBWFDBCAL\fR similarly for +MS-DOS or MS-Windows; it also sets \fBVIEWP\fR (see \fIview\fR(1)). It +may be convenient to include this command in the \fIautoexec.bat\fR +file (under MS-DOS 3.3 and later, include the command ``call setwfdb'' +within \fIautoexec.bat\fR; under earlier versions of MS-DOS, use +``command /c setwfdb'', or append the contents of \fIsetwfdb.bat\fR to +\fIautoexec.bat\fR). .PP -These programs are shell scripts that must be customized -before using them for the first time on a new machine. .SH ENVIRONMENT .TP \fBWFDB\fR @@ -57,19 +76,19 @@ environment variables. Indirect WFDB path files can be nested up to 10 levels deep. .TP -\fBWFDBCAL\fR The name of the WFDB calibration file (see -\fIwfdbcal\fR(5)). The usual rules for finding WFDB files by -searching the WFDB path apply to the WFDB calibration file, so the -value of \fBWFDBCAL\fR need not be an absolute path name. The WFDB -calibration file is used by WFDB applications that need to plot -signals at standard scales, as well as by \fIcalsig\fR(1), which -can determine the baseline and gain of signals if calibration pulses -are present and if the parameters of the calibration pulses are -described in the calibration file. If \fBWFDBCAL\fR is not set by the -user, the WFDB library uses a default WFDB calibration file -(\fIwfdbcal\fR, named in \fIwfdblib.h\fR). If the WFDB calibration -file is not readable, programs that rely on it may not choose -appropriate scales for some types of signals. +\fBWFDBCAL\fR +The name of the WFDB calibration file (see \fIwfdbcal\fR(5)). The +usual rules for finding WFDB files by searching the WFDB path apply to +the WFDB calibration file, so the value of \fBWFDBCAL\fR need not be +an absolute path name. The WFDB calibration file is used by WFDB +applications that need to plot signals at standard scales, as well as +by \fIcalsig\fR(1), which can determine the baseline and gain of +signals if calibration pulses are present and if the parameters of the +calibration pulses are described in the calibration file. If +\fBWFDBCAL\fR is not set by the user, the WFDB library uses a default +WFDB calibration file (\fIwfdbcal\fR, named in \fIwfdblib.h\fR). If +the WFDB calibration file is not readable, programs that rely on it +may not choose appropriate scales for some types of signals. .SH AUTHOR George B. Moody (george@mit.edu) .SH SOURCES diff -Naur wfdb-10.2.0/doc/sqrs.1 wfdb-10.2.1/doc/sqrs.1 --- wfdb-10.2.0/doc/sqrs.1 Sun Feb 6 23:54:05 2000 +++ wfdb-10.2.1/doc/sqrs.1 Tue Oct 16 22:56:12 2001 @@ -1,4 +1,4 @@ -.TH SQRS 1 "11 January 2000" "WFDB software 10.0" "WFDB applications" +.TH SQRS 1 "16 October 2001" "WFDB software 10.2" "WFDB applications" .SH NAME sqrs \- single-channel QRS detector .SH SYNOPSIS @@ -70,7 +70,7 @@ .br and then compare its output with the reference annotations by: .br -\fBbxb -r 100 -a atruth qrs\fR +\fBbxb -r 100 -a atr qrs\fR .SH SEE ALSO bxb(1), rdann(1), setwfdb(1), xform(1) .SH AUTHORS diff -Naur wfdb-10.2.0/doc/sumstats.1 wfdb-10.2.1/doc/sumstats.1 --- wfdb-10.2.0/doc/sumstats.1 Wed Feb 9 23:11:54 2000 +++ wfdb-10.2.1/doc/sumstats.1 Wed Nov 7 10:48:09 2001 @@ -1,4 +1,4 @@ -.TH SUMSTATS 1 "9 February 2000" "WFDB software 10.1" "WFDB applications" +.TH SUMSTATS 1 "7 November 2001" "WFDB software 10.2.1" "WFDB applications" .SH NAME sumstats \- derive aggregate statistics from bxb, rxr, etc., line-format output .SH SYNOPSIS @@ -29,8 +29,8 @@ \fITesting and Reporting Performance Results of Cardiac Rhythm and ST Segment Measurement Algorithms\fR (publication AAMI EC57:1998) .br -The last two publications are available from AAMI, 3330 Washington Blvd., -Suite 400, Arlington, VA 22201 USA (http://www.aami.org/). +The last two publications are available from AAMI, 1110 N Glebe Road, +Suite 220, Arlington, VA 22201 USA (http://www.aami.org/). .SH AUTHOR George B. Moody (george@mit.edu) .SH SOURCE diff -Naur wfdb-10.2.0/doc/tach.1 wfdb-10.2.1/doc/tach.1 --- wfdb-10.2.0/doc/tach.1 Sun Jan 30 04:13:19 2000 +++ wfdb-10.2.1/doc/tach.1 Tue Oct 16 22:55:54 2001 @@ -1,4 +1,4 @@ -.TH TACH 1 "11 January 2000" "WFDB software 10.0" "WFDB applications" +.TH TACH 1 "16 October 2001" "WFDB software 10.2" "WFDB applications" .SH NAME tach \- heart rate tachometer .SH SYNOPSIS @@ -78,7 +78,7 @@ (using \fB-Vm\fR), or hours (using \fB-Vh\fR) before each output sample value. Only one of these options can be used at a time. .PP -Reference (`atruth') annotation files can be used as input to \fItach\fR, +Reference (`atr') annotation files can be used as input to \fItach\fR, but files that contain manually-inserted annotations are less suitable, since annotation placement is likely to be less consistent than in annotation files generated by programs such as \fIsqrs\fR(1). diff -Naur wfdb-10.2.0/doc/wave.1 wfdb-10.2.1/doc/wave.1 --- wfdb-10.2.0/doc/wave.1 Wed May 24 16:34:54 2000 +++ wfdb-10.2.1/doc/wave.1 Wed Oct 31 20:47:32 2001 @@ -11,7 +11,7 @@ facilities for interactive annotation editing. The keyboard and mouse are used to control the display interactively. First-time users should read the \fIWAVE User's Guide\fR. (One way to do this is by -pointing your Web browser to \fBfile:///usr/local/help/html/wug/wug.htm\fR, +pointing your Web browser to \fBfile:///usr/help/html/wug/wug.htm\fR, or to \fBhttp://www.physionet.org/physiotools/wug/\fR for the latest version.) If the \fIGuide\fR is unavailable, print a copy of the on-line manual; run \fIwave\fR without any command-line arguments to get instructions for doing so. @@ -651,9 +651,19 @@ the background under SunOS. The Solaris 2.x and Linux versions of the XView library do not have this bug. .PP -On some 24-bit displays, an X server bug causes \fIwave\fR to start with -an empty signal window. Using any of the navigation controls, or resizing -the window, should make the signals visible. On some of these displays, +If \fIwave\fR opens with an empty signal window, this may mean that +the X server's backing store is disabled. If possible, enable backing +store and restart the X server. (Using XFree86 4.x, backing store can +be enabled by inserting the line `Option "backingstore"' in the +`Device' section(s) of the \fIXF86Config-4\fR file. If the X server is +normally started by a display manager such as \fIxdm\fR, close all windows +and restart the server with Control+Alt+Backspace. Otherwise, log out, +log in, and restart the X server manually if necessary.) +.PP +If this doesn't solve the problem, use any of \fIwave\fR's navigation +controls, or resize the signal window, to make the signals visible. On +some 24-bit displays, this problem may be the result of an X server bug, +and these methods will work around the problem. On some of these displays, text in the signal window may be invisible using overlay graphics mode; if this happens, use the \fB-S\fR option. .PP @@ -664,6 +674,16 @@ can be reviewed in any case). Using the `>' button to move by half a frame does not work properly with piped input, nor does changing the display scales, since these actions require rereading the signals. +.PP +There appears to be a subtle incompatibility between Xview-based applications +such as \fIwave\fR and at least some X servers. The symptom of this problem +is that \fIwave\fR's View panel may be blank, and many warning messages from +the notifier may appear in the controlling terminal window. This problem +appears to occur only when all of the following are true: the X server is +running on a multi-head display with Xinerama enabled, the user does not have +root privileges, a .Xdefaults file exists, and \fIwave\fR or another XView +application has run at least once before since the X server was started. + .SH SEE ALSO pschart(1), view(1), wview(1) .br diff -Naur wfdb-10.2.0/doc/wfdb.3 wfdb-10.2.1/doc/wfdb.3 --- wfdb-10.2.0/doc/wfdb.3 Sun Jan 30 04:13:19 2000 +++ wfdb-10.2.1/doc/wfdb.3 Wed Oct 31 20:48:53 2001 @@ -1,4 +1,4 @@ -.TH WFDB 3 "11 January 2000" "WFDB software 10.0" "WFDB library" +.TH WFDB 3 "31 October 2001" "WFDB software 10.2.1" "WFDB library" .SH NAME wfdb \- Waveform Database library .SH SYNOPSIS @@ -175,6 +175,7 @@ \fBwfdbdll.lib\fR stubs for linking with applications that use \fBwfdb.dll\fR .SH SEE ALSO +.TP \fIWFDB Programmer's Guide\fR (On systems that support GNU emacs, the \fIGuide\fR may be available on-line using emacs \fIinfo\fR; from within \fIemacs\fR, type control-H followed by diff -Naur wfdb-10.2.0/doc/wfdbwhich.1 wfdb-10.2.1/doc/wfdbwhich.1 --- wfdb-10.2.0/doc/wfdbwhich.1 Sun Jan 30 04:13:19 2000 +++ wfdb-10.2.1/doc/wfdbwhich.1 Tue Oct 16 22:55:33 2001 @@ -1,4 +1,4 @@ -.TH WFDBWHICH 1 "11 January 2000" "WFDB software 10.0" "WFDB applications" +.TH WFDBWHICH 1 "16 October 2001" "WFDB software 10.2" "WFDB applications" .SH NAME wfdbwhich \- find a WFDB file and print its pathname .SH SYNOPSIS @@ -8,7 +8,7 @@ .SH DESCRIPTION This program searches the WFDB path (as specified by the environment variable \fBWFDB\fR, see \fIsetwfdb\fR(1)) for a specified \fIfilename\fR, or for a -file of a specified \fIfile-type\fR (e.g., `header' or `atruth') that belongs +file of a specified \fIfile-type\fR (e.g., `hea' or `atr') that belongs to a specified \fIrecord\fR. If the file can be found, its full pathname is written to the standard output, and \fIwfdbwhich\fR exits with an exit status of zero (indicating success). If the file cannot be found, a diagnostic diff -Naur wfdb-10.2.0/examples/Makefile wfdb-10.2.1/examples/Makefile --- wfdb-10.2.0/examples/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/examples/Makefile Fri Nov 16 16:18:43 2001 @@ -34,12 +34,12 @@ # `make clean' to remove them. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -47,7 +47,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux diff -Naur wfdb-10.2.0/fortran/fsamples.f wfdb-10.2.1/fortran/fsamples.f --- wfdb-10.2.0/fortran/fsamples.f Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/fortran/fsamples.f Thu Nov 1 23:12:46 2001 @@ -0,0 +1,9 @@ + integer i, v(2), g + + i = isigopen("100s", 2) + do i = 1, 10 + g = getvec(v) + write (6,3) v(1), v(2) + 3 format("v(1) = ", i4, " v(2) = ", i4) + end do + end diff -Naur wfdb-10.2.0/lib/Makefile wfdb-10.2.1/lib/Makefile --- wfdb-10.2.0/lib/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/lib/Makefile Fri Nov 16 16:18:43 2001 @@ -33,12 +33,12 @@ # type `make slib'. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables diff -Naur wfdb-10.2.0/lib/README wfdb-10.2.1/lib/README --- wfdb-10.2.0/lib/README Thu Mar 30 16:00:34 2000 +++ wfdb-10.2.1/lib/README Thu Oct 25 15:01:33 2001 @@ -1,9 +1,9 @@ file: README G. Moody 1 July 1989 - Last revised: 30 March 2000 wfdblib 10.1.2 + Last revised: 25 October 2001 wfdblib 10.2.1 _______________________________________________________________________________ wfdb: a library for reading and writing annotated waveforms (time series data) -Copyright (C) 1999 George B. Moody +Copyright (C) 2001 George B. Moody This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free @@ -38,12 +38,10 @@ The following files will be found in this directory: COPYING.LIB the GNU Library General Public License -makelib UNIX `make' description file for compiling the WFDB library - without NETFILES support (copy to `Makefile' before use) -netmake UNIX `make' description file for compiling the WFDB library - with NETFILES support (copy to `Makefile' before use) -Makefile-dos-gcc UNIX `make' description file for compiling the WFDB library - for MS-DOS using a gcc cross-compiler under UNIX +Makefile UNIX `make' description file for compiling the WFDB library + (generated by ../configure) +Makefile.top header for Makefile +Makefile.tpl template for Makefile Makefile.dos MS-DOS `make' description file for compiling the WFDB library using Microsoft `make' or `nmake', Borland `make', etc. README this file @@ -59,7 +57,9 @@ wfdbdll.def MS Windows DLL export definitions for MS compilers wfdbinit.c WFDB library functions wfdbinit, wfdbquit, and wfdbflush wfdbio.c Low-level I/O functions for the WFDB library -wfdblib.h External definitions for WFDB library functions +wfdblib.h External definitions for WFDB library functions (generated by + ../configure) +wfdblib.h0 template for wfdblib.h What next? ---------- diff -Naur wfdb-10.2.0/lib/annot.c wfdb-10.2.1/lib/annot.c --- wfdb-10.2.0/lib/annot.c Tue Sep 11 10:53:53 2001 +++ wfdb-10.2.1/lib/annot.c Wed Nov 7 13:19:17 2001 @@ -1,5 +1,5 @@ /* file: annot.c G. Moody 13 April 1989 - Last revised: 11 September 2001 wfdblib 10.2.0 + Last revised: 7 November 2001 wfdblib 10.2.1 WFDB library functions for annotations _______________________________________________________________________________ @@ -844,14 +844,17 @@ } (void)wfdb_fclose(oa->file); if (oa->out_of_order) { - (void)sprintf(cmdbuf, "sortann -r %s -a %s", - oa->rname, oa->info.name); -#ifndef WFDBNOSORT - if (getenv("WFDBNOSORT") == NULL) { + int dosort = DEFWFDBANNSORT; + char *p = getenv("WFDBANNSORT"); + + if (p) dosort = atoi(p); + if (dosort) { if (system(NULL) != 0) { wfdb_error( "Rearranging annotations for output annotator %s ...", oa->info.name); + (void)sprintf(cmdbuf, "sortann -r %s -a %s", + oa->rname, oa->info.name); if (system(cmdbuf) == 0) { wfdb_error("done!"); oa->out_of_order = 0; @@ -863,7 +866,6 @@ } } if (oa->out_of_order) { -#endif wfdb_error("Use the command:\n %s\n", cmdbuf); wfdb_error("to rearrange annotations in the correct order.\n"); } diff -Naur wfdb-10.2.0/lib/calib.c wfdb-10.2.1/lib/calib.c --- wfdb-10.2.0/lib/calib.c Sun Jan 30 04:13:20 2000 +++ wfdb-10.2.1/lib/calib.c Wed Nov 7 13:20:27 2001 @@ -1,10 +1,10 @@ /* file: calib.c G. Moody 4 July 1991 - Last revised: 15 July 1999 wfdblib 10.0.1 + Last revised: 7 November 2001 wfdblib 10.2.1 WFDB library functions for signal calibration _______________________________________________________________________________ wfdb: a library for reading and writing annotated waveforms (time series data) -Copyright (C) 1999 George B. Moody +Copyright (C) 2001 George B. Moody This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free @@ -42,7 +42,7 @@ MS-DOS. Beginning with version 8.3, calopen() uses the default calibration file name -(DEFWFDBC, defined in wfdblib.h) if passed a NULL argument and if the WFDBCAL +(DEFWFDBCAL, defined in wfdblib.h) if passed a NULL argument and if the WFDBCAL environment variable is not set. */ @@ -75,7 +75,7 @@ /* If no calibration file is specified, return immediately. */ if (cfname == NULL && (cfname = getenv("WFDBCAL")) == NULL && - (cfname = DEFWFDBC) == NULL) + (cfname = DEFWFDBCAL) == NULL) return (0); if (*cfname == '+') /* don't empty the calibration list */ diff -Naur wfdb-10.2.0/lib/signal.c wfdb-10.2.1/lib/signal.c --- wfdb-10.2.0/lib/signal.c Sun Oct 14 18:38:40 2001 +++ wfdb-10.2.1/lib/signal.c Wed Nov 7 13:46:44 2001 @@ -1,5 +1,5 @@ /* file: signal.c G. Moody 13 April 1989 - Last revised: 14 October 2001 wfdblib 10.2.0 + Last revised: 7 November 2001 wfdblib 10.2.1 WFDB library functions for signals _______________________________________________________________________________ @@ -268,7 +268,8 @@ dsbuf does not contain valid data) */ static unsigned dsblen; /* capacity of dsbuf, in samples */ static unsigned framelen; /* total number of samples per frame */ -static int gvmode = WFDB_LOWRES;/* getvec mode (WFDB_HIGHRES or WFDB_LOWRES) */ +static int gvmode = -1; /* getvec mode (WFDB_HIGHRES or WFDB_LOWRES + once initialized) */ static int gvc; /* getvec sample-within-frame counter */ /* These variables relate to output signals. */ @@ -1552,7 +1553,6 @@ if (ispfmax < is->info.spf) ispfmax = is->info.spf; if (skewmax < is->skew) skewmax = is->skew; } - setgvmode(gvmode); /* Reset sfreq if appropriate. */ gvc = ispfmax; /* Initialize getvec's sample-within-frame counter. */ nisig += s; /* Update the count of open input signals. */ @@ -1815,7 +1815,8 @@ oversampled signal is returned by successive invocations of getvec; samples of signals sampled at lower frequencies are returned on two or more successive invocations of getvec as appropriate. Function setgvmode can be used to change -getvec's operating mode, which is WFDB_LOWRES by default. When reading +getvec's operating mode, which is determined by environment variable +WFDBGVMODE or constant DEFWFDBGVMODE by default. When reading ordinary records (with all signals sampled at the same frequency), getvec's behavior is independent of its operating mode. */ @@ -1827,6 +1828,15 @@ FVOID setgvmode(mode) int mode; { + if (mode < 0) { /* (re)set to default mode */ + char *p; + + if (p = getenv("WFDBGVMODE")) + mode = atoi(p); + else + mode = DEFWFDBGVMODE; + } + if (mode == WFDB_HIGHRES) { gvmode = WFDB_HIGHRES; sfreq = ffreq * ispfmax; diff -Naur wfdb-10.2.0/lib/wfdb.h wfdb-10.2.1/lib/wfdb.h --- wfdb-10.2.0/lib/wfdb.h Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/lib/wfdb.h Fri Nov 16 16:18:43 2001 @@ -1,5 +1,5 @@ /* file: wfdb.h G. Moody 13 June 1983 - Last revised: 14 August 2001 wfdblib 10.2.0 + Last revised: 7 November 2001 wfdblib 10.2.1 WFDB library type, constant, structure, and function interface definitions _______________________________________________________________________________ @@ -33,7 +33,7 @@ /* WFDB library version. */ #define WFDB_MAJOR 10 #define WFDB_MINOR 2 -#define WFDB_RELEASE 0 +#define WFDB_RELEASE 1 #define WFDB_NETFILES 1 /* if 1, library includes code for HTTP, FTP clients */ /* Determine what type of compiler is being used. */ diff -Naur wfdb-10.2.0/lib/wfdbio.c wfdb-10.2.1/lib/wfdbio.c --- wfdb-10.2.0/lib/wfdbio.c Fri Sep 7 15:21:45 2001 +++ wfdb-10.2.1/lib/wfdbio.c Wed Nov 7 16:50:39 2001 @@ -1,5 +1,5 @@ /* file: wfdbio.c G. Moody 18 November 1988 - Last revised: 7 September 2001 wfdblib 10.2.0 + Last revised: 7 November 2001 wfdblib 10.2.1 Low-level I/O functions for the WFDB library _______________________________________________________________________________ @@ -151,7 +151,7 @@ files to be opened for reading. Under UNIX or MS-DOS, this list is obtained from the shell (environment) variable WFDB, which may be set by the user (typically as part of the login script). A default value may be set at compile -time (DEFWFDBP in wfdblib.h); this is necessary when compiling for the +time (DEFWFDB in wfdblib.h); this is necessary when compiling for the Macintosh OS. If the value of WFDB is of the form `@FILE', wfdb_getiwfdb() reads the WFDB path from the specified FILE. */ @@ -168,13 +168,13 @@ if (wfdbpath == NULL) { #ifdef HAS_PUTENV static char *p; - if (p == NULL) p = (char *)malloc(strlen(DEFWFDBP)+6); + if (p == NULL) p = (char *)malloc(strlen(DEFWFDB)+6); if (p) { - sprintf(p, "WFDB=%s", DEFWFDBP); + sprintf(p, "WFDB=%s", DEFWFDB); putenv(p); } #endif - wfdbpath = DEFWFDBP; + wfdbpath = DEFWFDB; } } getiwfdb_count = 0; @@ -184,12 +184,30 @@ #ifdef HAS_PUTENV if (getenv("WFDBCAL") == NULL) { static char *p; - if (p == NULL) p = malloc(strlen(DEFWFDBC)+9); + if (p == NULL) p = malloc(strlen(DEFWFDBCAL)+9); if (p) { - sprintf(p, "WFDBCAL=%s", DEFWFDBC); + sprintf(p, "WFDBCAL=%s", DEFWFDBCAL); putenv(p); } } + if (getenv("WFDBANNSORT") == NULL) { + static char *p; + if (p == NULL) p = malloc(32); + if (p) { + sprintf(p, "WFDBANNSORT=%d", DEFWFDBANNSORT); + putenv(p); + } + } + if (getenv("WFDBGVMODE") == NULL) { + static char *p; + if (p == NULL) p = malloc(32); + if (p) { + sprintf(p, "WFDBGVMODE=%d", DEFWFDBGVMODE == 0 ? 0 : 1); + putenv(p); + } + } + + #endif return (wfdbpath); } diff -Naur wfdb-10.2.0/lib/wfdblib.h wfdb-10.2.1/lib/wfdblib.h --- wfdb-10.2.0/lib/wfdblib.h Fri Sep 7 15:20:27 2001 +++ wfdb-10.2.1/lib/wfdblib.h Fri Nov 16 16:18:44 2001 @@ -1,5 +1,5 @@ /* file: wfdblib.h G. Moody 13 April 1989 - Last revised: 7 September 2001 wfdblib 10.2.0 + Last revised: 7 November 2001 wfdblib 10.2.1 External definitions for WFDB library private functions _______________________________________________________________________________ @@ -34,11 +34,11 @@ #include "wfdb.h" /* Define the symbol _WINDLL if this library is to be compiled as a Microsoft -Windows DLL. Note that a DLL's private functions (such as those listed below) -*cannot* be called by Windows user programs, which can call only DLL functions -that use the Pascal calling interface (see wfdb.h). To compile this library -for use in a Microsoft Windows application, but *not* as a DLL, define the -symbol _WINDOWS instead of _WINDLL. */ + Windows DLL. Note that a DLL's private functions (such as those listed + below) *cannot* be called by Windows user programs, which can call only DLL + functions that use the Pascal calling interface (see wfdb.h). To compile + this library for use in a Microsoft Windows application, but *not* as a DLL, + define the symbol _WINDOWS instead of _WINDLL. */ /* #define _WINDLL */ #if defined(_WINDLL) && !defined(_WINDOWS) @@ -58,64 +58,90 @@ #endif #if defined(_WINDLL) -#define WFDBNOSORT +#define WFDBANNSORT 0 #endif /* Define the symbol MSDOS if this library is to be used under MS-DOS or MS -Windows. Note: MSDOS is predefined by some MS-DOS and MS Windows compilers. */ + Windows. Note: MSDOS is predefined by some MS-DOS and MS Windows compilers. +*/ /* #define MSDOS */ /* Uncomment the next line if this software is to be compiled on a Macintosh.*/ /* #define MAC */ /* Macintosh users only: If the version of "ISO 9660 File Access" in the -"System:Extensions" folder is earlier than 5.0, either update your system -software (recommended) or uncomment the next line. */ + "System:Extensions" folder is earlier than 5.0, either update your system + software (recommended) or uncomment the next line. */ /* #define FIXISOCD */ -/* DEFWFDBP is the default value of the WFDB path if the WFDB environment -variable is not set. In most cases, it is sufficient to use the string "." -for this purpose (thus restricting the search for DB files to the current -directory). If WFDB_NETFILES support is enabled, the setting below adds the -web-accessible PhysioBank databases to the default path; you may wish to -change this to use a nearby PhysioNet mirror (for a list of mirrors, see -http://www.physionet.org/mirrors/). DEFWFDBP must not be NULL, however. -The default given below for the Macintosh specifies that the WFDB path is to -be read from the file udb/dbpath.mac on the third edition of the MIT-BIH -Arrhythmia Database CD-ROM (which has a volume name of `MITADB3'); you may -prefer to use a file on a writable disk for this purpose to make -reconfiguration possible. See getwfdb() in wfdbio.c for further information. +/* DEFWFDB is the default value of the WFDB path if the WFDB environment + variable is not set. This value is edited by the configuration script + (../configure), which also edits this block of comments to match. + + In most cases, it is sufficient to use the string ". /usr/database" for + this purpose, thus restricting the search for WFDB files to the current + directory ("."), followed by /usr/database). + + If WFDB_NETFILES support is enabled, the setting below adds the + web-accessible PhysioBank databases to the default path; you may wish to + change this to use a nearby PhysioNet mirror (for a list of mirrors, see + http://www.physionet.org/mirrors/). DEFWFDB must not be NULL, however. + The default given below for the Macintosh specifies that the WFDB path is to + be read from the file udb/dbpath.mac on the third edition of the MIT-BIH + Arrhythmia Database CD-ROM (which has a volume name of `MITADB3'); you may + prefer to use a file on a writable disk for this purpose to make + reconfiguration possible. See getwfdb() in wfdbio.c for further + information. */ #ifdef MAC # ifdef FIXISOCD -# define DEFWFDBP "@MITADB3:UDB:DBPATH.MAC;1" +# define DEFWFDB "@MITADB3:UDB:DBPATH.MAC;1" # else -# define DEFWFDBP "@MITADB3:UDB:DBPATH.MAC" +# define DEFWFDB "@MITADB3:UDB:DBPATH.MAC" # define __STDC__ # endif #else # if WFDB_NETFILES -# define DEFWFDBP ". http://www.physionet.org/physiobank/database" +# define DEFWFDB ". /usr/database http://www.physionet.org/physiobank/database" # else -# define DEFWFDBP "." +# define DEFWFDB ". /usr/database" # endif #endif -/* DEFWFDBC is the name of the default WFDB calibration file, used if the -WFDBCAL environment variable is not set. This name need not include path -information if the calibration file is located in a directory included in the -WFDB path. The value given below is the name of the standard calibration file -supplied on the various CD-ROM databases. DEFWFDBC may be NULL if you prefer -not to have a default calibration file. See calopen() in calib.c for further -information. */ -#define DEFWFDBC "wfdbcal" +/* DEFWFDBCAL is the name of the default WFDB calibration file, used if the + WFDBCAL environment variable is not set. This name need not include path + information if the calibration file is located in a directory included in + the WFDB path. The value given below is the name of the standard + calibration file supplied on the various CD-ROM databases. DEFWFDBCAL may + be NULL if you prefer not to have a default calibration file. See calopen() + in calib.c for further information. */ +#define DEFWFDBCAL "wfdbcal" + +/* WFDB applications may write annotations out-of-order, but in almost all + cases, they expect that annotations they read must be in order. The + environment variable WFDBANNSORT specifies if wfdbquit() should attempt to + sort annotations in any output annotation files before closing them (it + does this if WFDBANNSORT is non-zero, or if WFDBANNSORT is not set, and + DEFWFDBANNSORT is non-zero). */ +#define DEFWFDBANNSORT 1 + +/* When reading multifrequency records, getvec() can operate in two modes: + WFDB_LOWRES (returning one sample per signal per frame), or WFDB_HIGHRES + (returning each sample of any oversampled signals, and duplicating samples + of other signals as necessary). If the operating mode is not selected by + invoking setgvmode(), the value of the environment variable WFDBGVMODE + determines the mode (0: WFDB_LOWRES, non-zero: WFDB_HIGHRES); if WFDBGVMODE + is not set, the value of DEFWFDBMODE determines the mode. */ +#define DEFWFDBGVMODE 0 /* putenv() is available in POSIX, SVID, and BSD Unices and in MS-DOS and -32-bit MS Windows, but not under 16-bit MS Windows or under MacOS. If it is -available, getwfdb() (in wfdbio.c) detects when the environment variables WFDB -or WFDBCAL are not set, and sets them according to DEFWFDBP or DEFWFDBC as -needed using putenv(). This feature is useful mainly for programs such as -WAVE, where WFDB or WFDBCAL are set interactively and it is useful to show -their default values to the user; setwfdb() and getwfdb() do not depend on it. + 32-bit MS Windows, but not under 16-bit MS Windows or under MacOS. If it is + available, getwfdb() (in wfdbio.c) detects when the environment variables + WFDB, WFDBCAL, WFDBANNSORT, and WFDBGVMODE are not set, and sets them + according to DEFWFDB, DEFWFDBCAL, DEFWFDBANNSORT, and DEFWFDBGVMODE as + needed using putenv(). This feature is useful mainly for programs such as + WAVE, where these variables are set interactively and it is useful to show + their default values to the user; setwfdb() and getwfdb() do not depend on + it. */ #if !defined(_WIN16) && !defined(MAC) #define HAS_PUTENV @@ -235,8 +261,8 @@ #endif /* The following block is needed only to declare the values returned by -malloc() (either char * or void *) and sprintf() (either int or char *). -The object code should be correct even if these declarations are not. */ + malloc() (either char * or void *) and sprintf() (either int or char *). + The object code should be correct even if these declarations are not. */ #if defined(__STDC__) || defined(_WINDOWS) # include #else @@ -254,9 +280,9 @@ # endif #endif -/* Declare the values returned by atof() and atol() (not needed for ANSI C -or Microsoft Windows C compilers, which have these declarations in stdlib.h, -included above). */ +/* Declare the values returned by atof() and atol() (not needed for ANSI C or + Microsoft Windows C compilers, which have these declarations in stdlib.h, + included above). */ #if !defined(__STDC__) && !defined(_WINDOWS) extern double atof(); extern long atol(); @@ -323,7 +349,7 @@ wfdb_oaflush(); /* Some non-ANSI C libraries (e.g., version 7, BSD 4.2) lack an implementation -of strtok(); define NOSTRTOK to compile the portable version in wfdbio.c. */ + of strtok(); define NOSTRTOK to compile the portable version in wfdbio.c. */ # ifdef NOSTRTOK extern char *strtok(); # endif diff -Naur wfdb-10.2.0/lib/wfdblib.h0 wfdb-10.2.1/lib/wfdblib.h0 --- wfdb-10.2.0/lib/wfdblib.h0 Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/lib/wfdblib.h0 Wed Nov 7 16:46:17 2001 @@ -0,0 +1,357 @@ +/* file: wfdblib.h G. Moody 13 April 1989 + Last revised: 7 November 2001 wfdblib 10.2.1 +External definitions for WFDB library private functions + +_______________________________________________________________________________ +wfdb: a library for reading and writing annotated waveforms (time series data) +Copyright (C) 2001 George B. Moody + +This library is free software; you can redistribute it and/or modify it under +the terms of the GNU Library General Public License as published by the Free +Software Foundation; either version 2 of the License, or (at your option) any +later version. + +This library is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU Library General Public License for more +details. + +You should have received a copy of the GNU Library General Public License along +with this library; if not, write to the Free Software Foundation, Inc., 59 +Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +You may contact the author by e-mail (george@mit.edu) or postal mail +(MIT Room E25-505A, Cambridge, MA 02139 USA). For updates to this software, +please visit PhysioNet (http://www.physionet.org/). +_______________________________________________________________________________ + +These definitions may be included in WFDB library source files to permit them +to share information about library private functions, which are not intended +to be invoked directly by user programs. By convention, all externally defined +symbols reserved to the library begin with the characters "wfdb_". +*/ + +#include "wfdb.h" + +/* Define the symbol _WINDLL if this library is to be compiled as a Microsoft + Windows DLL. Note that a DLL's private functions (such as those listed + below) *cannot* be called by Windows user programs, which can call only DLL + functions that use the Pascal calling interface (see wfdb.h). To compile + this library for use in a Microsoft Windows application, but *not* as a DLL, + define the symbol _WINDOWS instead of _WINDLL. */ +/* #define _WINDLL */ + +#if defined(_WINDLL) && !defined(_WINDOWS) +#define _WINDOWS +#endif + +#if defined(_WIN16) && !defined(_WINDOWS) +#define _WINDOWS +#endif + +#if defined(_WIN32) && !defined(_WINDOWS) +#define _WINDOWS +#endif + +#if defined(_WINDOWS) && !defined (_WIN16) && !defined(_WIN32) +#define _WIN16 +#endif + +#if defined(_WINDLL) +#define WFDBANNSORT 0 +#endif + +/* Define the symbol MSDOS if this library is to be used under MS-DOS or MS + Windows. Note: MSDOS is predefined by some MS-DOS and MS Windows compilers. +*/ +/* #define MSDOS */ + +/* Uncomment the next line if this software is to be compiled on a Macintosh.*/ +/* #define MAC */ +/* Macintosh users only: If the version of "ISO 9660 File Access" in the + "System:Extensions" folder is earlier than 5.0, either update your system + software (recommended) or uncomment the next line. */ +/* #define FIXISOCD */ + +/* DEFWFDB is the default value of the WFDB path if the WFDB environment + variable is not set. This value is edited by the configuration script + (../configure), which also edits this block of comments to match. + + In most cases, it is sufficient to use the string ". DBDIR" for + this purpose, thus restricting the search for WFDB files to the current + directory ("."), followed by DBDIR). + + If WFDB_NETFILES support is enabled, the setting below adds the + web-accessible PhysioBank databases to the default path; you may wish to + change this to use a nearby PhysioNet mirror (for a list of mirrors, see + http://www.physionet.org/mirrors/). DEFWFDB must not be NULL, however. + The default given below for the Macintosh specifies that the WFDB path is to + be read from the file udb/dbpath.mac on the third edition of the MIT-BIH + Arrhythmia Database CD-ROM (which has a volume name of `MITADB3'); you may + prefer to use a file on a writable disk for this purpose to make + reconfiguration possible. See getwfdb() in wfdbio.c for further + information. +*/ +#ifdef MAC +# ifdef FIXISOCD +# define DEFWFDB "@MITADB3:UDB:DBPATH.MAC;1" +# else +# define DEFWFDB "@MITADB3:UDB:DBPATH.MAC" +# define __STDC__ +# endif +#else +# if WFDB_NETFILES +# define DEFWFDB ". DBDIR http://www.physionet.org/physiobank/database" +# else +# define DEFWFDB ". DBDIR" +# endif +#endif + +/* DEFWFDBCAL is the name of the default WFDB calibration file, used if the + WFDBCAL environment variable is not set. This name need not include path + information if the calibration file is located in a directory included in + the WFDB path. The value given below is the name of the standard + calibration file supplied on the various CD-ROM databases. DEFWFDBCAL may + be NULL if you prefer not to have a default calibration file. See calopen() + in calib.c for further information. */ +#define DEFWFDBCAL "wfdbcal" + +/* WFDB applications may write annotations out-of-order, but in almost all + cases, they expect that annotations they read must be in order. The + environment variable WFDBANNSORT specifies if wfdbquit() should attempt to + sort annotations in any output annotation files before closing them (it + does this if WFDBANNSORT is non-zero, or if WFDBANNSORT is not set, and + DEFWFDBANNSORT is non-zero). */ +#define DEFWFDBANNSORT 1 + +/* When reading multifrequency records, getvec() can operate in two modes: + WFDB_LOWRES (returning one sample per signal per frame), or WFDB_HIGHRES + (returning each sample of any oversampled signals, and duplicating samples + of other signals as necessary). If the operating mode is not selected by + invoking setgvmode(), the value of the environment variable WFDBGVMODE + determines the mode (0: WFDB_LOWRES, non-zero: WFDB_HIGHRES); if WFDBGVMODE + is not set, the value of DEFWFDBMODE determines the mode. */ +#define DEFWFDBGVMODE 0 + +/* putenv() is available in POSIX, SVID, and BSD Unices and in MS-DOS and + 32-bit MS Windows, but not under 16-bit MS Windows or under MacOS. If it is + available, getwfdb() (in wfdbio.c) detects when the environment variables + WFDB, WFDBCAL, WFDBANNSORT, and WFDBGVMODE are not set, and sets them + according to DEFWFDB, DEFWFDBCAL, DEFWFDBANNSORT, and DEFWFDBGVMODE as + needed using putenv(). This feature is useful mainly for programs such as + WAVE, where these variables are set interactively and it is useful to show + their default values to the user; setwfdb() and getwfdb() do not depend on + it. +*/ +#if !defined(_WIN16) && !defined(MAC) +#define HAS_PUTENV +#endif + +#ifndef FILE +#include +/* stdin/stdout may not be defined in some environments (e.g., for MS Windows + DLLs). Defining them as NULL here allows the WFDB library to be compiled in + such environments (it does not allow use of stdin/stdout when the operating + environment does not provide them, however). */ +#ifndef stdin +#define stdin NULL +#endif +#ifndef stdout +#define stdout NULL +#endif +#endif + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +/* Structures used by internal WFDB library functions only */ +struct netfile { + char *url; + char *data; + int mode; + long base_addr; + long cont_len; + long pos; + long err; + int fd; +}; + +struct WFDB_FILE { + FILE *fp; + struct netfile *netfp; + int type; +}; + +/* Values for WFDB_FILE 'type' field */ +#define WFDB_LOCAL 0 /* a local file, read via C standard I/O */ +#define WFDB_NET 1 /* a remote file, read via libwww */ + +/* Composite data types */ +typedef struct netfile netfile; +typedef struct WFDB_FILE WFDB_FILE; + +/* To enable http and ftp access as well as standard (local file) I/O via the + WFDB library, define WFDB_NETFILES=1 and link with libwww (see 'Makefile'). + Otherwise, the WFDB library uses only the ANSI/ISO standard I/O library. */ +#if WFDB_NETFILES +#include +#include +#include + +#ifndef EROFS /* errno value: attempt to write to a read-only file system */ +#ifdef EINVAL +#define EROFS EINVAL +#else +#define EROFS 1 +#endif +#endif + +/* Constants */ +/* #define USEHTCACHE */ /* uncomment to enable caching by libwww */ + +/* http cache parameters (effective only if USEHTCACHE is defined) */ +#define CACHEDIR "/tmp" /* should be world-writable */ +#define CACHESIZE 100 /* max size of the entire http cache in MB */ +#define ENTRYSIZE 20 /* max size of a single cache entry in MB */ + +#define NF_PAGE_SIZE 32768 /* default bytes per http range request */ + +/* values for netfile 'err' field */ +#define NF_NO_ERR 0 /* no errors */ +#define NF_EOF_ERR 1 /* file pointer at EOF */ +#define NF_REAL_ERR 2 /* read request failed */ + +/* values for netfile 'mode' field */ +#define NF_CHUNK_MODE 0 /* http range requests supported */ +#define NF_FULL_MODE 1 /* http range requests not supported */ + +/* Function prototypes */ +extern void wfdb_clearerr(WFDB_FILE *fp); +extern int wfdb_fclose(WFDB_FILE *fp); +extern int wfdb_feof(WFDB_FILE *fp); +extern int wfdb_ferror(WFDB_FILE *fp); +extern int wfdb_fflush(WFDB_FILE *fp); +extern char* wfdb_fgets(char *s, int size, WFDB_FILE *fp); +extern size_t wfdb_fread(void *ptr, size_t size, size_t nmemb, WFDB_FILE *fp); +extern int wfdb_fseek(WFDB_FILE *fp, long offset, int whence); +extern long wfdb_ftell(WFDB_FILE *fp); +extern size_t wfdb_fwrite(void *ptr, size_t size, size_t nmemb, WFDB_FILE *fp); +extern int wfdb_getc(WFDB_FILE *fp); +extern int wfdb_putc(int c, WFDB_FILE *fp); +extern void wfdb_wwwquit(void); + +#else /* WFDB_NETFILES = 0 -- use standard I/O functions only */ + +#define wfdb_fclose(wp) fclose(wp->fp) +#define wfdb_feof(wp) feof(wp->fp) +#define wfdb_ferror(wp) ferror(wp->fp) +#define wfdb_fflush(wp) ((wp == NULL) ? fflush(NULL) : fflush(wp->fp)) +#define wfdb_fgets(s, n, wp) fgets(s, n, wp->fp) +#define wfdb_fread(p, s, n, wp) fread(p, s, n, wp->fp) +#define wfdb_fseek(wp, o, w) fseek(wp->fp, o, w) +#define wfdb_ftell(wp) ftell(wp->fp) +#define wfdb_fwrite(p, s, n, wp) fwrite(p, s, n, wp->fp) +#define wfdb_getc(wp) getc(wp->fp) +#define wfdb_putc(c, wp) putc(c, wp->fp) + +#endif + +/* The following block is needed only to declare the values returned by + malloc() (either char * or void *) and sprintf() (either int or char *). + The object code should be correct even if these declarations are not. */ +#if defined(__STDC__) || defined(_WINDOWS) +# include +#else +# ifndef NOMALLOC_H +# include +# else +extern char *malloc(); +# endif +# ifdef ISPRINTF +extern int sprintf(); +# else +# ifndef MSDOS +extern char *sprintf(); +# endif +# endif +#endif + +/* Declare the values returned by atof() and atol() (not needed for ANSI C or + Microsoft Windows C compilers, which have these declarations in stdlib.h, + included above). */ +#if !defined(__STDC__) && !defined(_WINDOWS) +extern double atof(); +extern long atol(); +#endif + +#ifndef BSD +# include +#else /* for Berkeley UNIX only */ +# include +# define strchr index +#endif + +#ifdef _WINDOWS +#ifndef _WIN32 /* these definitions are needed for 16-bit MS Windows only */ +#define strcat _fstrcat +#define strchr _fstrchr +#define strcmp _fstrcmp +#define strcpy _fstrcpy +#define strlen _fstrlen +#define strncmp _fstrncmp +#define strtok _fstrtok +#endif +#endif + +/* Define function prototypes for ANSI C, MS Windows C, and C++ compilers */ +#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) || defined(_WINDOWS) +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + +/* These functions are defined in wfdbio.c */ +extern WFDB_FILE *wfdb_open(char *file_type, char *record, int mode); +extern int wfdb_checkname(char *name, char *description); +extern int wfdb_g16(WFDB_FILE *fp); +extern long wfdb_g32(WFDB_FILE *fp); +extern void wfdb_p16(unsigned int x, WFDB_FILE *fp); +extern void wfdb_p32(long x, WFDB_FILE *fp); +extern int wfdb_parse_path(char *wfdb_path); +extern void wfdb_addtopath(char *pathname); +extern void wfdb_error(char *format_string, ...); +extern WFDB_FILE* wfdb_fopen(char *fname, const char *mode); +extern int wfdb_fprintf(WFDB_FILE *fp, const char *format, ...); +extern void wfdb_setirec(char *record_name); + +/* These functions are defined in signal.c */ +extern void wfdb_sigclose(void); +extern void wfdb_osflush(void); + +/* These functions are defined in annot.c */ +extern void wfdb_anclose(void); +extern void wfdb_oaflush(void); + +#if defined(__cplusplus) || defined(c_plusplus) +} +#endif + +#else /* declare only function return types for non-ANSI C compilers */ + +extern WFDB_FILE *wfdb_open(), *wfdb_fopen(); +extern int wfdb_checkname(), wfdb_g16(), wfdb_parse_path(); +extern long wfdb_g32(); +extern void wfdb_p16(), wfdb_p32(), wfdb_addtopath(), wfdb_error(), + wfdb_setirec(), wfdb_sigclose(), wfdb_anclose(), wfdb_osflush(), + wfdb_oaflush(); + +/* Some non-ANSI C libraries (e.g., version 7, BSD 4.2) lack an implementation + of strtok(); define NOSTRTOK to compile the portable version in wfdbio.c. */ +# ifdef NOSTRTOK +extern char *strtok(); +# endif + +#endif diff -Naur wfdb-10.2.0/psd/Makefile wfdb-10.2.1/psd/Makefile --- wfdb-10.2.0/psd/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/psd/Makefile Fri Nov 16 16:18:43 2001 @@ -32,12 +32,12 @@ # directory). # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -45,7 +45,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux @@ -186,7 +186,7 @@ sed s+/usr/local/bin+$(BINDIR)+g $(BINDIR)/hrmem sed s+/usr/local/bin+$(BINDIR)+g $(BINDIR)/hrplot cp plot2d plot3d $(BINDIR) - $(SETXPERMISSIONS) $(SCRIPTS) + cd $(BINDIR); $(SETXPERMISSIONS) $(SCRIPTS) uninstall: ../uninstall.sh $(BINDIR) $(XFILES) $(SCRIPTS) diff -Naur wfdb-10.2.0/psd/Makefile.tpl wfdb-10.2.1/psd/Makefile.tpl --- wfdb-10.2.0/psd/Makefile.tpl Wed Jun 7 18:29:24 2000 +++ wfdb-10.2.1/psd/Makefile.tpl Tue Oct 16 21:14:01 2001 @@ -25,7 +25,7 @@ sed s+/usr/local/bin+$(BINDIR)+g $(BINDIR)/hrmem sed s+/usr/local/bin+$(BINDIR)+g $(BINDIR)/hrplot cp plot2d plot3d $(BINDIR) - $(SETXPERMISSIONS) $(SCRIPTS) + cd $(BINDIR); $(SETXPERMISSIONS) $(SCRIPTS) uninstall: ../uninstall.sh $(BINDIR) $(XFILES) $(SCRIPTS) diff -Naur wfdb-10.2.0/psd/hrplot wfdb-10.2.1/psd/hrplot --- wfdb-10.2.0/psd/hrplot Sun Jan 30 04:13:20 2000 +++ wfdb-10.2.1/psd/hrplot Fri Nov 16 00:51:19 2001 @@ -1,5 +1,5 @@ #! /bin/sh -# file: hrlomb G. Moody 14 June 1995 +# file: hrplot G. Moody 14 June 1995 # Last revised: 5 May 1999 # # ----------------------------------------------------------------------------- diff -Naur wfdb-10.2.0/wave/Makefile wfdb-10.2.1/wave/Makefile --- wfdb-10.2.0/wave/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/wave/Makefile Fri Nov 16 16:18:43 2001 @@ -1,10 +1,10 @@ # file: Makefile G. Moody 1 May 1990 -# Last revised: 23 May 2000 WAVE 6.3 +# Last revised: 16 November 2001 WAVE 6.5 # `make' description file for WAVE # # ----------------------------------------------------------------------------- # WAVE: Waveform analyzer, viewer, and editor -# Copyright (C) 2000 George B. Moody +# Copyright (C) 2001 George B. Moody # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software @@ -45,12 +45,12 @@ # just type `make' (from within this directory). # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -58,7 +58,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux diff -Naur wfdb-10.2.0/wave/Makefile.top wfdb-10.2.1/wave/Makefile.top --- wfdb-10.2.0/wave/Makefile.top Wed May 31 05:46:27 2000 +++ wfdb-10.2.1/wave/Makefile.top Fri Nov 16 01:13:56 2001 @@ -1,10 +1,10 @@ # file: Makefile G. Moody 1 May 1990 -# Last revised: 23 May 2000 WAVE 6.3 +# Last revised: 16 November 2001 WAVE 6.5 # `make' description file for WAVE # # ----------------------------------------------------------------------------- # WAVE: Waveform analyzer, viewer, and editor -# Copyright (C) 2000 George B. Moody +# Copyright (C) 2001 George B. Moody # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software diff -Naur wfdb-10.2.0/wave/faq.hlp wfdb-10.2.1/wave/faq.hlp --- wfdb-10.2.0/wave/faq.hlp Fri Oct 12 13:23:02 2001 +++ wfdb-10.2.1/wave/faq.hlp Fri Nov 16 15:54:48 2001 @@ -1,20 +1,20 @@ This is the WAVE FAQ (frequently asked questions) list. It was last revised on -24 May 2000 (recent changes are marked with `*' below). +16 November 2001 (recent changes are marked with `*' below). Hardware questions: - * Can I use WAVE if I don't have a SparcStation? + . Can I use WAVE if I don't run Linux or another Unix? . How can I use WAVE from an X terminal, PC, Mac, etc.? . Can I run WAVE remotely using a modem? . How can I insert annotations using a two-button mouse? . How do I get spot help if I don't have a `Help' key? Problems starting WAVE: - * Why won't WAVE run? - * Why does WAVE take so long to display the first screen? + . Why won't WAVE run? + . Why does WAVE take so long to display the first screen? . Where do I find the missing fonts? Display-related questions: . I can't see the signals! . I can't see text in the signal window! - * WAVE doesn't draw/erase properly in the scope window! + . WAVE doesn't draw/erase properly in the scope window! . How can I get correct display scales? . Why are signals too big or too small? . How can I change WAVE's default scales or display colors? @@ -22,20 +22,20 @@ . Everything in the Analysis Commands window appears twice! File-related questions: . I can't find the file named `RECORD'! - * Why does WAVE tell me `Record ... is unavailable'? - * How can I view a record stored on a web site or an FTP server? + . Why does WAVE tell me `Record ... is unavailable'? + . How can I view a record stored on a web site or an FTP server? Questions about editing: - * Where are my annotations? + . Where are my annotations? . Why does WAVE tell me `You may not edit annotations ...'? - * How do I edit a record on a CD-ROM, a web site, or an FTP server? - * How can I undo an edit? + . How do I edit a record on a CD-ROM, a web site, or an FTP server? + . How can I undo an edit? . Can I define my own annotations? . How can I recover work after a crash? . Can I edit annotations with a text editor? . What are `link' annotations? . Can WAVE edit signal files? What else can WAVE do? - * How can I make a screen dump? + . How can I make a screen dump? . Can WAVE read digitized signals in (fill in the blank) format? . What is ``high-resolution'' mode? . Can WAVE open more than one record at once? @@ -45,8 +45,8 @@ . Can WAVE be used for real-time display of data being acquired? . Can WAVE scroll through a record without user intervention? . How can I use WAVE's menu variables in a script or other program? - * Is there a Motif version of WAVE? - * How can I find out about ...? + . Is there a Motif version of WAVE? + . How can I find out about ...? If your question is not on this list, and you think it should be, please send it to me (george@hstbme.mit.edu)! @@ -55,16 +55,24 @@ Hardware questions ================== -Can I use WAVE if I don't have a SparcStation? ----------------------------------------------- +Can I use WAVE if I don't run Linux or another Unix? +---------------------------------------------------- -If you have a 386, 486, or Pentium-based PC with a VGA card, mouse, at least -8 Mb of RAM and 100 Mb of available disk space, you can run WAVE under Linux, -a freely available UNIX clone for the PC. Users have reported that WAVE can -be compiled and run successfully on DEC Alpha-based workstations under Linux, -and (in principle) it should be possible to run WAVE on any other type of -CPU supported by Linux (the list currently includes MIPS, PowerPC, Sparc, ARM, -as well as x86 and Alpha CPUs). +Why would you not want to run Linux or Unix? Any version of Linux or Unix is a +much better choice for research than any version of MS-Windows. See +http://www.dyncorp-is.com/darpa/meetings/win98aug/wars.html for an independent +perspective on this issue. Linux can coexist on the same PC with MS-Windows if +necessary. + +The major obstacle to porting WAVE to other platforms is that the XView +toolkit is needed for the user interface components of WAVE. XView is free +software and can be ported to other platforms, but this task is not trivial. + +Another possibility is to reimplement WAVE's user interface with a different +toolkit. The GTKWave project is doing just that, using the Gimp toolkit +(GTK+), which runs not only under Linux and Unix, but also under MS-Windows. +Beta-quality versions of GTKWave for Linux and for MS-Windows are currently +available from PhysioNet (search for GTKWave for further information). If you have any networked computer that can run X11R4 or a later version (this includes all current UNIX workstations, PCs, Macintoshes, and a variety @@ -1003,7 +1011,7 @@ as command-line arguments to other programs. Click on `Export variables' in WAVE's analyze menu if you need to use these -variables within a shell script. (If you are not using csh or tcsh, edit +variables within a shell script. (If you are not using bash, ksh, or sh, edit the WAVE menu file first to select the alternate definition of this action.) Once the variables have been exported, they may be used in the same way as any other environment variables within your shell scripts. For example, the @@ -1035,6 +1043,12 @@ of its lookalikes, are vastly different from the XView API with which WAVE is written, and a port to a Motif-like user interface would be decidedly non-trivial. + +The GTKWave project is reimplementing the user interface of WAVE using the Gimp +toolkit (GTK+). A beta-quality release of {\sf GTKWave} is now available from +PhysioNet. This offers a stable, object-oriented, and non-proprietary +Motif-like interface under any version of Linux or Unix, and also under +MS-Windows. How can I find out about ...? diff -Naur wfdb-10.2.0/wave/gcc-patches wfdb-10.2.1/wave/gcc-patches --- wfdb-10.2.0/wave/gcc-patches Thu Jun 24 11:38:28 1999 +++ wfdb-10.2.1/wave/gcc-patches Wed Dec 31 19:00:00 1969 @@ -1,204 +0,0 @@ -The GNU C compiler (gcc), version 2.1.x and later, may be used to compile -`wave'. If you are not sure what version of gcc you have, type `gcc -v' to -find out. - -Several bugs in the standard XView include (.h) files cause problems for gcc, -however. This file contains patches that correct these bugs. Note that gcc -uses private versions of these files if available, so the originals in -/usr/openwin/include/xview (or /usr/include/xview) need not be changed. - -If you have installed gcc version 2.5.x or later, the gcc installation -procedure has already fixed these bugs in gcc's private copies of the standard -.h files, and you should not attempt to install the patches below. - -If you have an earlier version of gcc (2.1.x, 2.2.x, 2.3.x, or 2.4.x), however, -it is necessary to make the following patches to , -, , and . (The patches to - are needed for gcc 2.2.x and 2.3.x only; they are optional for -2.1.x or 2.4.x versions of gcc.) - -To apply these patches, do the following: - 1. Set the shell variable A to the name of the private xview directory: - set A /usr/local/lib/gcc-lib/.../include/xview - (replacing `...' by the correct intermediate directory names for your system). - - 2. If you have gcc 2.3.x or earlier, set shell variable B to the name of - the directory in which the original versions of these files are found: - set B /usr/openwin/include/xview - or - set B /usr/include/xview - If you have gcc 2.4.x, you must patch gcc's copies of these files; in this - case, - set B $A - - 3. Copy the files to be patched into this directory: - cp $B/defaults.h $B/notify.h $B/openmenu.h $B/sun.h . - - 4. Patch the copies, using this file as input to `patch': - patch ' markers. # -:prop:%secpropmenu% +:prop:%sec:prop-menu% This button brings up the Properties menu, with selections for obtaining information about the current signal and annotation files and about this version of WAVE. # -:prop.signals:htmlview /usr/local/help/html/wfdbag/wfdbdesc-1.htm +:prop.signals:url_view /usr/local/help/html/dbag/wfdbdesc-1.htm This selection pops up a window containing information about the signals of the current record, obtained by running `wfdbdesc'. # -:prop.annotations:htmlview /usr/local/help/html/wfdbag/sumann-1.htm +:prop.annotations:url_view /usr/local/help/html/dbag/sumann-1.htm This selection pops up a window containing a summary of the contents of the annotation buffer, obtained by running `sumann' (after @@ -637,7 +637,7 @@ half of the width of the signal window. # -:find:%secfindwindow% +:find:%sec:find-window% This button opens a window that allows you to specify what portion of the current record should be displayed next. You may set a specific start @@ -687,7 +687,7 @@ . to match a deletion made during this edit # -:find.more_options:%secsearchtemplatewindow% +:find.more_options:%sec:search-template-window% This button clears the contents of the "Search for" field and opens the Search Template window. # @@ -716,7 +716,7 @@ or marker will be counted as a match. # -:help:%sechelptopicswindow% +:help:%sec:help-topics-window% This button pops up a panel containing buttons that name several topics for which extensive on-line help is available. Choosing a topic @@ -821,7 +821,7 @@ Editing' topic from the Help window. # -:annot.type:%figannotationtemplate% +:annot.type:%fig:annotation-template% This field specifies the type of annotation to be inserted. It may be changed by selecting a new value from the pull-down menu, by typing @@ -922,7 +922,7 @@ This button closes the Level window. # -:scope_panel:%secscopewindow% +:scope_panel:%sec:scope-window% This panel contains controls for the Scope window, which displays the signal indicated by the Signal control in the @@ -983,7 +983,7 @@ an index mark (`:'), or the `>' marker. # -:scope_canvas:%secscopewindow% +:scope_canvas:%sec:scope-window% This is the scope window, which displays the signal indicated on the Analyze panel. The scales match those in the signal window (use diff -Naur wfdb-10.2.0/wave/wave.info wfdb-10.2.1/wave/wave.info --- wfdb-10.2.0/wave/wave.info Mon Jun 19 15:08:11 2000 +++ wfdb-10.2.1/wave/wave.info Fri Nov 16 16:13:40 2001 @@ -1,5 +1,5 @@ # file: wave.info G. Moody 21 August 1990 -# Last revised: 19 June 2000 WAVE 6.3 +# Last revised: 7 September 1999 WAVE 6.5 # XView spot help file for `wave' # # ----------------------------------------------------------------------------- @@ -25,13 +25,13 @@ # please visit PhysioNet (http://www.physionet.org/). # _____________________________________________________________________________ -:file:url_view /usr/local/help/html/wug/ +:file:url_view /usr/local/help/html/wug/node63.htm This button opens a pull-down menu containing selections for loading, saving, printing, analyzing, and logging database files. # -:file.load:url_view /usr/local/help/html/wug/ +:file.load:url_view /usr/local/help/html/wug/node64.htm This selection pops up a window in which you can enter a new record or annotator name, or change the name of the WFDB calibration @@ -71,7 +71,7 @@ than once. # -:file.load.calibration_file:htmlview /usr/local/help/html/wfdbag/wfdbcal-5.htm +:file.load.calibration_file:url_view /usr/local/help/html/dbag/wfdbcal-5.htm Specifies the name of the WFDB calibration file (a text file containing information on the relative scales of many types of signals). @@ -97,7 +97,7 @@ edits. # -:file.print:url_view /usr/local/help/html/wug/ +:file.print:url_view /usr/local/help/html/wug/node14.htm This selection prints the contents of the signal window on paper. The output is made from the original signal files, and therefore is of better @@ -106,7 +106,7 @@ output reflects any changes you have made. # -:file.printsetup:url_view /usr/local/help/html/wug/ +:file.printsetup:url_view /usr/local/help/html/wug/node65.htm This selection pops up a panel that shows the commands WAVE uses to print PostScript and text data from the standard input. You may change @@ -131,7 +131,7 @@ example, to specify use of a different printer). # -:file.analyze:url_view /usr/local/help/html/wug/ +:file.analyze:url_view /usr/local/help/html/wug/node66.htm This selection pops up a panel containing a set of buttons, and a terminal emulator window. The names of the buttons and their assigned actions @@ -269,13 +269,13 @@ signal from the list), and click left. # -:file.analyze.show_scope_window:url_view /usr/local/help/html/wug/ +:file.analyze.show_scope_window:url_view /usr/local/help/html/wug/node76.htm This button pops up WAVE's Scope window, which can be used to display a signal in `oscilloscope' mode. # -:file.analyze.show_command_window:url_view /usr/local/help/html/wug/ +:file.analyze.show_command_window:url_view /usr/local/help/html/wug/node15.htm This button pops up a terminal emulator window that receives commands generated by selecting most of the other buttons in this window, and @@ -283,7 +283,7 @@ You may type commands directly into the window. # -:file.analyze.edit_menu:url_view /usr/local/help/html/wug/ +:file.analyze.edit_menu:url_view /usr/local/help/html/wug/node34.htm This button allows you to edit the menu configuration file for this panel, using the text editor named in the EDITOR environment @@ -292,7 +292,7 @@ `Reread menu' to reconfigure this panel. # -:file.analyze.reread_menu:url_view /usr/local/help/html/wug/ +:file.analyze.reread_menu:url_view /usr/local/help/html/wug/node34.htm Select this button to reconfigure this panel after you have made changes to the menu configuration file (most easily done by @@ -316,7 +316,7 @@ analysis menu file. # -:file.log:url_view /usr/local/help/html/wug/ +:file.log:url_view /usr/local/help/html/wug/node67.htm This selection pops up a window that allows you to name a log file, and to record in that file the current record name and start and end time entries @@ -431,7 +431,7 @@ log entry. # -:view:url_view /usr/local/help/html/wug/ +:view:url_view /usr/local/help/html/wug/node68.htm This button pops up the View window, which allows you to choose (or merely examine) display scales, grid styles, and annotation, signal, and time @@ -561,14 +561,14 @@ and refreshes the signal window. # -:view.save_as_new_defaults:url_view /usr/local/help/html/wug/ +:view.save_as_new_defaults:url_view /usr/local/help/html/wug/node60.htm This button causes WAVE to record the current View panel settings in your .Xdefaults file (at the same time erasing any comments in that file). These settings become the new defaults for your future WAVE sessions. -:edit:url_view /usr/local/help/html/wug/ +:edit:url_view /usr/local/help/html/wug/node69.htm This button brings up the Edit menu, which allows you to specify if annotation editing is to be allowed or forbidden. By default, @@ -586,20 +586,20 @@ You may still edit `<', `:', and `>' markers. # -:prop:url_view /usr/local/help/html/wug/ +:prop:url_view /usr/local/help/html/wug/node70.htm This button brings up the Properties menu, with selections for obtaining information about the current signal and annotation files and about this version of WAVE. # -:prop.signals:htmlview /usr/local/help/html/wfdbag/wfdbdesc-1.htm +:prop.signals:url_view /usr/local/help/html/dbag/wfdbdesc-1.htm This selection pops up a window containing information about the signals of the current record, obtained by running `wfdbdesc'. # -:prop.annotations:htmlview /usr/local/help/html/wfdbag/sumann-1.htm +:prop.annotations:url_view /usr/local/help/html/dbag/sumann-1.htm This selection pops up a window containing a summary of the contents of the annotation buffer, obtained by running `sumann' (after @@ -637,7 +637,7 @@ half of the width of the signal window. # -:find:url_view /usr/local/help/html/wug/ +:find:url_view /usr/local/help/html/wug/node71.htm This button opens a window that allows you to specify what portion of the current record should be displayed next. You may set a specific start @@ -687,7 +687,7 @@ . to match a deletion made during this edit # -:find.more_options:url_view /usr/local/help/html/wug/ +:find.more_options:url_view /usr/local/help/html/wug/node74.htm This button clears the contents of the "Search for" field and opens the Search Template window. # @@ -716,7 +716,7 @@ or marker will be counted as a match. # -:help:url_view /usr/local/help/html/wug/ +:help:url_view /usr/local/help/html/wug/node72.htm This button pops up a panel containing buttons that name several topics for which extensive on-line help is available. Choosing a topic @@ -821,7 +821,7 @@ Editing' topic from the Help window. # -:annot.type:url_view /usr/local/help/html/wug/ +:annot.type:url_view /usr/local/help/html/wug/node17.htm This field specifies the type of annotation to be inserted. It may be changed by selecting a new value from the pull-down menu, by typing @@ -922,7 +922,7 @@ This button closes the Level window. # -:scope_panel:url_view /usr/local/help/html/wug/ +:scope_panel:url_view /usr/local/help/html/wug/node76.htm This panel contains controls for the Scope window, which displays the signal indicated by the Signal control in the @@ -983,7 +983,7 @@ an index mark (`:'), or the `>' marker. # -:scope_canvas:url_view /usr/local/help/html/wug/ +:scope_canvas:url_view /usr/local/help/html/wug/node76.htm This is the scope window, which displays the signal indicated on the Analyze panel. The scales match those in the signal window (use diff -Naur wfdb-10.2.0/wave/xview-patches wfdb-10.2.1/wave/xview-patches --- wfdb-10.2.0/wave/xview-patches Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.1/wave/xview-patches Fri Oct 26 12:56:19 2001 @@ -0,0 +1,243 @@ +Current versions of gcc complain about statements of the form + #else FOO +and + #endif BAR + +This syntax has historically been acceptable to most C compilers, although it +is not permitted by ANSI/ISO C; any tokens following #else or #endif on the +same line are simply ignored. Some writers have exploited this permissiveness +to make their code more easily readable, although most are careful to mark +their comments using /* ... */ (which is permitted even by finicky compilers +such as gcc). + +In the standard XView distribution, six of the *.h files normally found in +/usr/openwin/include/pixrect/ contain #else or #endif statements that provoke +warnings from gcc. Although these warnings do not prevent successful +compilation of wave, they are so numerous that more serious errors can easily +go unnoticed. + +This file contains patches that correct these bugs. To apply them, copy +this file to the parent directory of 'pixrect' (normally /usr/openwin/include), +then type + + patch -p0 pr_ops->pro_getattributes)((pr), (planes)) +-#endif !KERNEL ++#endif + +-#else !lint || KERNEL ++#else + + extern pr_rop(); + extern pr_stencil(); +@@ -186,7 +186,7 @@ + extern pr_putattributes(); + extern pr_getattributes(); + +-#endif lint ++#endif + + /* + * Several of the above operations return a common, distinguished value when +@@ -277,7 +277,7 @@ + #define pr_line(pr, x0, y0, x1, y1, brush, tex, op) \ + pro_line((pr), (x0), (y0), (x1), (y1), (brush), (tex), (op), 0) + +-#else !lint || KERNEL ++#else + + extern prs_rop(); + extern prs_stencil(); +@@ -296,7 +296,7 @@ + extern pr_close(); + extern pr_line(); + +-#endif !lint || KERNEL ++#endif + + + +@@ -329,7 +329,7 @@ + #define pr_getlut(pr, ind, cnt, red, grn, blu) \ + (*(pr)->pr_ops->pro_getcolormap)((pr), PR_FORCE_UPDATE | (ind), \ + (cnt), (red), (grn), (blu)) +-#endif !KERNEL ++#endif + + +-#endif /* !_pixrect_pixrect_h */ ++#endif +diff -Naur pixrect-/pr_line.h pixrect/pr_line.h +--- pixrect-/pr_line.h Mon Jun 5 04:39:17 2000 ++++ pixrect/pr_line.h Fri Oct 12 14:06:54 2001 +@@ -47,7 +47,7 @@ + int width; + } Pr_brush; + +-#endif pr_line_h_DEFINED ++#endif + + + +diff -Naur pixrect-/pr_planegroups.h pixrect/pr_planegroups.h +--- pixrect-/pr_planegroups.h Mon Jun 5 04:39:17 2000 ++++ pixrect/pr_planegroups.h Fri Oct 12 14:04:05 2001 +@@ -47,4 +47,4 @@ + extern void pr_set_plane_group(); + extern void pr_set_planes(); + +-#endif pr_planegroups_DEFINED ++#endif +diff -Naur pixrect-/pr_util.h pixrect/pr_util.h +--- pixrect-/pr_util.h Mon Jun 5 04:39:17 2000 ++++ pixrect/pr_util.h Fri Oct 12 14:04:36 2001 +@@ -66,11 +66,11 @@ + op; \ + }; \ + asm("dbra d6,label"); +-#else mc68000 ++#else + #define rop_slowloop(n, op) \ + { register int _loop = (n); \ + while (--_loop >= 0) { op; } } +-#endif mc68000 ++#endif + + #ifdef mc68010 + #define cases8(n, op) \ +@@ -88,9 +88,9 @@ + cases8(0, op); \ + case 0: break; \ + } } +-#else mc68010 ++#else + #define rop_fastloop rop_slowloop +-#endif mc68010 ++#endif + + /* + * Alloctype(datatype) allocates a datatype structure using calloc +@@ -133,6 +133,6 @@ + + #ifndef KERNEL + Pixrect *pr_makefromfd(); +-#endif !KERNEL ++#endif + +-#endif pr_util_DEFINED ++#endif +diff -Naur pixrect-/traprop.h pixrect/traprop.h +--- pixrect-/traprop.h Mon Jun 5 04:39:17 2000 ++++ pixrect/traprop.h Fri Oct 12 14:06:02 2001 +@@ -23,4 +23,4 @@ + int y0, y1; /* top+bottom boundaries */ + }; + +-#endif traprop_DEFINED ++#endif diff -Naur wfdb-10.2.0/wave-doc/guide/Makefile wfdb-10.2.1/wave-doc/guide/Makefile --- wfdb-10.2.0/wave-doc/guide/Makefile Fri Feb 4 16:50:31 2000 +++ wfdb-10.2.1/wave-doc/guide/Makefile Fri Nov 16 14:19:54 2001 @@ -1,27 +1,62 @@ # file: Makefile G. Moody 9 August 1992 -# Last revised: 4 February 2000 +# Last revised: 16 November 2001 # `make' description file for printing the WAVE User's Guide -# Copyright(C) Massachusetts Institute of Technology 2000. All rights reserved. - -# Type `make guide' to print the compressed PostScript source. You will need -# gzip, a PostScript printer (or GhostScript and a supported printer), and -# about 130 sheets of paper. Make sure that PRINT is set correctly for your -# system below. - -# If you have LaTeX2e, makeindex, and dvips, you can regenerate the PostScript -# from the text source and the figure files. To do this, type `make wug.psz'. -# If you have an older version of LaTeX (2.09 or earlier), you will need to -# update it to LaTeX2e in order to do this successfully. - -# If you have LaTeX2html and additional freely available software described -# in the LaTeX2html documentation, you can regenerate the HTML version of the -# WAVE User's Guide by typing `make html' (see below). - -# All of the software mentioned above is freely available; see ../SOURCES. +# ----------------------------------------------------------------------------- +# WAVE: Waveform analyzer, viewer, and editor +# Copyright (C) 2001 George B. Moody +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place - Suite 330, Boston, MA 02111-1307, USA. +# +# You may contact the author by e-mail (george@mit.edu) or postal mail +# (MIT Room E25-505A, Cambridge, MA 02139 USA). For updates to this software, +# please visit PhysioNet (http://www.physionet.org/). +# _____________________________________________________________________________ +# +# This file is used with the UNIX `make' command to install on-line +# documentation for WAVE, and also to format and print it. Before using this +# file for the first time, check that the site-specific variables below are +# appropriate for your system. + +# WAVE documentation exists in several forms: +# * The WAVE User's Guide: This guide (for which sources can be found in +# this directory) includes a comprehensive tutorial with reference material. +# Up-to-date HTML and PostScript versions of this guide can be found on +# PhysioNet. If you have LaTeX2e, makeindex, and dvips, you can regenerate +# the PostScript version of the guide from the sources.using this file, by +# typing 'make guide'. If you also have LaTeX2html and additional freely +# available software described in the LaTeX2html documentation, you can +# regenerate the HTML version of the WAVE User's Guide by typing `make html' +# (see below). +# * wave.1: This man page lists WAVE options, X11 resources, and provides a +# concise reference. It is included in the WFDB Applications Guide, and +# its source can be found in ../../doc. +# * wave.info: This file contains XView spot help for WAVE (if your window +# manager cooperates, you can point to any WAVE control and use the HELP +# key to get a brief explanation of what it does). Where additional +# information is available in the WAVE User's Guide, this file contains +# links to the relevant nodes. The source for wave.info is wave.inf, which +# is located in ../../wave. In order to regenerate wave.info from wave.inf, +# use 'make html' to generate the HTML version of the WAVE User's Guide; +# this will automatically update the links in wave.info and will install +# the updated version in ../../wave. In order to use wave.info, you must +# install it into HELPDIR/wave (defined in ../../wave/Makefile), which is +# done when you compile and install WAVE itself. # TROFF is the name of the program that prints UNIX troff files (needed to -# format the covers of the guide). Use `groff' if you have GNU groff (the +# format the cover of the guide). Use `groff' if you have GNU groff (the # preferred formatter). TROFF = groff # Use `ptroff' if you have Adobe TranScript software. @@ -70,7 +105,7 @@ $(TROFF) cover.wug | gzip >wugcover.psz # `make html': process the LaTeX source using latex2html. This has been -# tested with latex2html version 96.1. The file `.latex2html.init' in this +# tested with latex2html version 1.47. The file `.latex2html.init' in this # directory defines special settings needed to create the HTML files as # distributed with WAVE. If you are not using Netscape as your browser, you # may want to select a different HTML version or other optimizations. The @@ -113,7 +148,6 @@ mv $(HTMLDIR)/wug/*.pl . cd $(HTMLDIR)/wug; ln -s wug.htm index.html; find `pwd` -print | doschk ./fixinfo >../../wave/wave.info - cp -p ../../wave/wave.info /usr/local/help/wave/wave.info clean: rm -f wug.aux wug.dvi wug.idx wug.ilg wug.ind wug.lof wug.log wug.toc diff -Naur wfdb-10.2.0/wave-doc/guide/cover.wug wfdb-10.2.1/wave-doc/guide/cover.wug --- wfdb-10.2.0/wave-doc/guide/cover.wug Sun Jan 30 04:13:25 2000 +++ wfdb-10.2.1/wave-doc/guide/cover.wug Fri Nov 16 02:02:47 2001 @@ -45,7 +45,7 @@ -JANUARY 2000 +NOVEMBER 2001 .bp diff -Naur wfdb-10.2.0/wave-doc/guide/fixinfo wfdb-10.2.1/wave-doc/guide/fixinfo --- wfdb-10.2.0/wave-doc/guide/fixinfo Mon Jun 19 15:04:19 2000 +++ wfdb-10.2.1/wave-doc/guide/fixinfo Fri Nov 16 01:42:21 2001 @@ -8,22 +8,25 @@ ; ; ; + ; while () { @words = split(/\//); $key = @words[1]; $_ = ; - @words = split(/'/); + @words = split(/\|/); $node = @words[1]; chop($node); if ($key =~ /..*/) { $label{$key} = $node; } + ; + ; } close(LABELS); } sub fixinfo { - open(INFO, "wave.inf"); + open(INFO, "../../wave/wave.inf"); while () { if ($_ =~ /:.*:%*%/) { @words = split(/%/); diff -Naur wfdb-10.2.0/wave-doc/guide/wug.tex wfdb-10.2.1/wave-doc/guide/wug.tex --- wfdb-10.2.0/wave-doc/guide/wug.tex Fri Oct 12 13:24:58 2001 +++ wfdb-10.2.1/wave-doc/guide/wug.tex Fri Nov 16 16:10:02 2001 @@ -26,8 +26,8 @@ \title{\WAVE{} User's Guide} \author{Fifth Edition\\ -(revised and with corrections for \WAVE{} version 6.3)\\ -24 May 2000\\ +(revised and with corrections for \WAVE{} version 6.5)\\ +16 November 2001\\ \\ \\ \\ @@ -50,7 +50,7 @@ \pagestyle{empty} \vspace*{\fill} \noindent -Copyright \copyright 1992 -- 2000 George B. Moody +Copyright \copyright 1992 -- 2001 George B. Moody \vspace{1 in} \noindent @@ -81,12 +81,8 @@ \noindent An HTML version of this guide is available; point your web browser to {\tt http://www.\-physio\-net.\-org/\-physio\-tools/\-wug/} to view -it. Additional printed +it. \end{latexonly} -copies of this guide are available for US\$10 each -(including shipping by surface mail) by writing to the address above. -Please make checks payable to ``Beth Israel Hospital Biomedical -Engineering Division.'' \vspace{0.2 in} \noindent @@ -220,9 +216,9 @@ and there indicating features of \WAVE{} 6.0 that are not available in earlier versions. \end{latexonly} -\WAVE{} 6.0 is available for +\WAVE{} 6.5 is freely available from \hyperref{downloading from the Internet} -{downloading from the Internet (see section~} +{Physionet (see section~} {, page~\pageref{sec:getting-wave})} {sec:getting-wave}. @@ -2639,10 +2635,10 @@ \end{verbatim} % $ (this comment is here only to keep Emacs's LaTeX fontification happy) -The program {\tt url_view} is a shell script (normally installed at the +The program {\tt url\_view} is a shell script (normally installed at the same time as \WAVE{}, and in the same directory) that handles starting the browser if necessary and instructing it to display the specified -URL. The standard version of {\tt url_view} does so using the command: +URL. The standard version of {\tt url\_view} does so using the command: \begin{verbatim} ( netscape -remote 'openURL($URL)' || netscape $URL ) & \end{verbatim} @@ -2661,9 +2657,9 @@ starts a new Netscape browser process. To configure \WAVE{} to use a different web browser, edit the {\tt -url_view} script appropriately. (You may also do this by editing the +url\_view} script appropriately. (You may also do this by editing the action associated with {\tt }, but it's better to modify -{\tt url_view}, since \WAVE{} also uses {\tt url_view} to display some +{\tt url\_view}, since \WAVE{} also uses {\tt url\_view} to display some of its on-line help. If you decide to modify the action in the \WAVE{} menu file, be careful not to change the {\tt } tag at the beginning of the line, since \WAVE{} uses this tag to identify @@ -4606,8 +4602,9 @@ At a minimum, you will require: \begin{description} \item [\WAVE{} software] -This is available in binary form from MIT for SPARC-based systems -running Solaris 2.x or SunOS 4.1.x, and for PCs running Linux. (See +This is freely available from PhysioNet in source form, and in binary form +for PCs running Linux. (Older binaries for SPARC-based systems +running Solaris 2.x or SunOS 4.1.x are also available on PhysioNet. See \hyperref{how to obtain the current version of \WAVE{}} {section~} {, page~\pageref{sec:getting-wave} for details} @@ -4630,25 +4627,35 @@ sure that your chosen hardware is supported. Most graphics cards, including the popular accelerated cards, are fully supported by the standard XFree86 +Most PCs manufactured since 1995 will easily meet these requirements; +new PCs will exceed most of them by large factors. \index{X Window System!XFree86 server} X server, but a few high-end models are supported only in SVGA compatibility mode. Commercially available X servers for Linux -support the accelerated modes of many high-end models.) In early -1997, it was possible to assemble a suitable Linux PC for about -US\$1000 (not including the monitor). It is not unreasonable to budget +support the accelerated modes of many high-end models.) In late +2001, it was possible to assemble a suitable Linux PC for about +US\$500 (not including the monitor). It is not unreasonable to budget an equal amount for a good monitor, since \WAVE{}'s usability depends -to a significant extent on being able to see its output clearly. If -your budget permits you to spend more, buy -extra RAM rather than a faster CPU. Although Linux does not require -large amounts of RAM, it can use additional RAM very effectively, and -you are likely to find that purchasing (say) 16 or 32 Mb of additional -RAM results in a bigger performance improvement than spending the same -amount on a faster CPU. Fully configured and supported Linux PCs are -available from many vendors if you prefer not to assemble your own; -see the Linux Commercial-HOWTO for further information. +to a significant extent on being able to see its output clearly. +If your budget permits, a flat-panel (LCD) monitor is an excellent choice, +particularly if you plan to do much annotation editing, because these monitors +typically present very stable images that do not tire the eye. + +For those on a tight budget, suitable used PCs are often available for next to +nothing. If you use an older PC and can afford to upgrade components, get a +new three-button mouse or trackball first, a new monitor if the old one is +inadequate, more memory if you have less than 64 Mb, a new IDE disk drive +(around US\$100) if yours is more than 3 years old, and only then consider +other performance upgrades such as a faster CPU. Although Linux does not +require large amounts of RAM, it can use additional RAM very effectively, and +you are likely to find that purchasing (say) 16 or 32 Mb of additional RAM +results in a bigger performance improvement than spending the same amount on a +faster CPU. Fully configured and supported Linux PCs are available from many +vendors if you prefer not to assemble your own; see the Linux Commercial-HOWTO +for further information. -SPARC-based systems available from Sun and other vendors are slightly more -expensive than comparable Linux PCs. +SPARC-based systems tend to be considerably expensive than comparable +or faster Linux PCs. Used SPARCstations may be worth considering. \item [A source of digitized signals] \index{SPARCstation}\index{PC}\index{WFDB Software Package}\index{MS-DOS} @@ -5130,17 +5137,24 @@ \section{Hardware questions} -\subsection{Can I use \WAVE{} if I don't have a SPARCstation?} +\subsection{Can I use \WAVE{} if I don't run Linux or another Unix?} -If you have a 386, 486, or Pentium-based PC with a VGA card, mouse, at -least 8 Mb of RAM and 100 Mb of available disk space, you can run -\WAVE{} under Linux, -\index{Linux} -a freely available UNIX clone for the PC. Users have reported that \WAVE{} can -be compiled and run successfully on DEC Alpha-based workstations under Linux, -and (in principle) it should be possible to run \WAVE{} on any other type of -CPU supported by Linux (the list currently includes MIPS, PowerPC, Sparc, ARM, -as well as x86 and Alpha CPUs). +Why would you not want to run Linux or Unix? Any version of Linux or Unix is a +much better choice for research than any version of MS-Windows. See +\htmladdnormallink{{\tt http://\-www.dyncorp-is.com/\-darpa/\-meetings/\-win98aug/\-wars.html}}{http://www.dyncorp-is.com/darpa/meetings/win98aug/wars.html} +for an independent perspective on this issue. Linux can coexist on the same PC +with MS-Windows if necessary. + +The major obstacle to porting \WAVE{} to other platforms is that the XView +toolkit is needed for the user interface components of \WAVE{}. XView is free +software and can be ported to other platforms, but this task is not trivial. + +Another possibility is to reimplement \WAVE{}'s user interface with a different +toolkit. The {\sf GTKWave} project is doing just that, using the Gimp toolkit +(GTK+), which runs not only under Linux and Unix, but also under MS-Windows. +Beta-quality versions of {\sf GTKWave} for Linux and for MS-Windows are +currently available from PhysioNet (search for {\sf GTKWave} for further +information). If you have any networked computer that can run X11R4 or a later version (this includes all current UNIX workstations, PCs, Macintoshes, and a variety @@ -5148,7 +5162,7 @@ \WAVE{} (see above), you can run \WAVE{} remotely (see the next question). \index{PostScript} -Other WFDB applications ({\sf WVIEW} for Microsoft Windows, {\sf VIEW} for +Other WFDB applications ({\sf WVIEW} for MS-Windows, {\sf VIEW} for MS-DOS, {\sf MacView} for the Macintosh, and {\tt pschart} and {\tt psfd} for PostScript devices) offer many of the display features of \WAVE{} in other environments; none of these currently support annotation editing or control @@ -6364,19 +6378,17 @@ variables as command-line arguments to other programs. \index{menu variables} -Click on \button{Export variables} in \WAVE{}'s -{\sf Analyze} window if you need to use these variables within a shell -script. (If you are not using {\tt csh} or {\tt tcsh}, edit the \WAVE{} -menu file first to select the alternate definition of this action.) -Once the variables have been exported, they may be used in the same -way as any other environment variables within your shell scripts. For -example, the time of the left edge of the signal window is {\tt -\$LEFT}. Within a C program, read the values of these variables using -{\tt getenv}; for example, {\tt getenv("LEFT")} returns the (string) -value of the time of the left edge of the signal window. Note that -the exported values are only a snapshot of the variables at the time -you click on \button{Export variables}; the values do not track later -actions performed within \WAVE{}. +Click on \button{Export variables} in \WAVE{}'s {\sf Analyze} window if you +need to use these variables within a shell script. (If you are not using {\tt +bash}, {\tt ksh}, or {\tt sh}, edit the \WAVE{} menu file first to select the +alternate definition of this action.) Once the variables have been exported, +they may be used in the same way as any other environment variables within your +shell scripts. For example, the time of the left edge of the signal window is +{\tt \$LEFT}. Within a C program, read the values of these variables using +{\tt getenv}; for example, {\tt getenv("LEFT")} returns the (string) value of +the time of the left edge of the signal window. Note that the exported values +are only a snapshot of the variables at the time you click on \button{Export +variables}; the values do not track later actions performed within \WAVE{}. \subsection{Is there a Motif version of \WAVE{}?} @@ -6400,6 +6412,12 @@ with which \WAVE{} is written, and a port to Motif would be decidedly non-trivial. +The {\sf GTKWave} project is reimplementing the user interface of WAVE using +the Gimp toolkit (GTK+). A beta-quality release of {\sf GTKWave} is now +available from PhysioNet. This offers a stable, object-oriented, and +non-proprietary Motif-like interface under any version of Linux or Unix, and +also under MS-Windows. + \subsection{How can I find out about ...?} There are several sources of information about \WAVE{}: @@ -6415,8 +6433,7 @@ \htmladdnormallink{{\it WFDB Applications Guide}}{../dbag/dbag.htm}. If you need to develop your own applications for use with \WAVE{}, read the \htmladdnormallink{{\it WFDB Programmer's Guide}}{../dbpg/dbpg.htm}. -Printed copies of these guides may be purchased from MIT, or you may read them -on-line or print your own copies (visit +You may read these guides on-line on-line or print your own copies (visit \htmladdnormallink{PhysioNet}{http://www.physionet.org/}). \index{on-line help}\index{help}\index{Netscape} diff -Naur wfdb-10.2.0/waverc/Makefile wfdb-10.2.1/waverc/Makefile --- wfdb-10.2.0/waverc/Makefile Mon Oct 15 14:40:00 2001 +++ wfdb-10.2.1/waverc/Makefile Fri Nov 16 16:18:43 2001 @@ -25,12 +25,12 @@ # please visit PhysioNet (http://www.physionet.org/). # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 14 August 2001 +# Last revised: 7 November 2001 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 0 +RELEASE = 1 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -38,7 +38,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.0 +PACKAGE=wfdb-10.2.1 # file: linux.def G. Moody 31 May 2000 # Last revised: 5 June 2000 # 'make' definitions for compiling the WFDB Software Package under Linux