diff -Naur wfdb-10.2.5/INSTALL wfdb-10.2.6/INSTALL --- wfdb-10.2.5/INSTALL Thu Sep 6 15:14:25 2001 +++ wfdb-10.2.6/INSTALL Wed Jun 19 22:07:30 2002 @@ -1,5 +1,5 @@ file: INSTALL G. Moody 30 January 2000 - Last revised: 6 September 2001 + Last revised: 19 June 2002 WFDB Software Package installation notes These notes are included here for those who may not have ready access to the @@ -18,15 +18,19 @@ support for reading input files from remote web and FTP servers. See README.NETFILES for further information about this option. -2. Install the XView library (see http://www.physionet.org/physiotools/xview/) +2. WAVE is an optional part of the WFDB Software Package. If the XView + toolkit is available for your system, installing WAVE is highly recommended. + Otherwise, go on to step 3; after completing the WFDB software package + installation, you may wish to try GTKWave (an experimental version of WAVE + that uses the GTK+ GUI, which is available for many other versions of Unix). + + Install the XView library (see http://www.physionet.org/physiotools/xview/) if you want to use WAVE, and be sure that the directory that contains the XView application 'textedit' (usually /usr/openwin/bin) is in your PATH. For information about WAVE, see the WAVE User's Guide, http://www.physionet.org/physiotools/wug/. - WAVE uses Netscape (or another web browser, if you've made the appropriate - changes in waverc/Makefile) for some of its on-line help. Copy the - contents of http://www.physionet.org/physiotools/wug/ into + Copy the contents of http://www.physionet.org/physiotools/wug/ into /usr/local/help/html/wug if you wish to read the help from local files; otherwise, edit wave/wave.info and change all occurrences of '/usr/local/help/html/' into 'http://www.physionet.org/physiotools/wug/'. @@ -56,11 +60,8 @@ Unix utilities ported to MS-Windows. Accept the defaults suggested by the installer. - IMPORTANT: Although you may be able to compile the WFDB software package - using a proprietary compiler, this is NOT SUPPORTED. The 'Makefile.dos' - files in several of the subdirectories of this one can be used with the - 'make' utilities provided with most commercial C compilers, although you - will need to customize them for your compiler. Your feedback is appreciated. + See the notes near the end of this section for information contributed by + users about using proprietary compilers. 2. Download http://www.physionet.org/physiotools/binaries/windows/bin/which.exe and put it into a directory in your PATH. (This utility is needed by @@ -91,6 +92,42 @@ 6. If for any reason you wish to uninstall the WFDB Software Package, type: make uninstall from this directory. + +............................................................................... + +Using proprietary compilers + + IMPORTANT: Although you may be able to compile the WFDB software package + using a proprietary compiler, this is NOT SUPPORTED. Cygwin 'gcc' is free, + robust, and supported -- please give it a try! + + If, despite the above, you feel that you must use a proprietary compiler, + this section contains notes contributed by other users who have done so. + The developers of the WFDB software package do not use any of these + compilers, so you are on your own if you choose to use one of them. + + Between 1985 and 1995, previous versions of this software were compiled + using Borland C/C++, Microsoft C/C++, and Turbo C/C++. These compilers + came bundled with 'make'-like utilties (Microsoft's was called 'nmake'). + If you are using one of these compilers, you may be able to use the + 'Makefile.dos' files in several of the subdirectories of this one to + perform an automated compilation of the WFDB software package, although you + will need to customize these 'Makefile.dos' files for your compiler. Your + feedback is appreciated. + +Borland C++ Builder + + Thanks to Ion Gaztaņaga for these notes. + +1. Edit lib/wfdb.h to define WFDB_NETFILES as 0 (do not compile with libwww + support). It's possible that libwww support will work, but this has not + been tested. + +2. Build a static library (wfdb.lib) from the sources in the 'lib' directory, + selecting: + C calling convention + Borland Language compliance + Others: Borland C++ Builder default settings _______________________________________________________________________________ diff -Naur wfdb-10.2.5/MANIFEST wfdb-10.2.6/MANIFEST --- wfdb-10.2.5/MANIFEST Sun Mar 10 08:59:44 2002 +++ wfdb-10.2.6/MANIFEST Mon Jun 24 22:45:44 2002 @@ -46,6 +46,7 @@ app/vsetup.c app/wfdbcat.c app/wfdbcollate.c +app/wfdb-config.c app/wfdbdesc.c app/wfdbwhich.c app/wrann.c @@ -73,6 +74,7 @@ checkpkg/expected/fir.dat checkpkg/expected/fir.hea checkpkg/expected/ihr.out +checkpkg/expected/lcheck_cal checkpkg/expected/lcheck.log-NETFILES checkpkg/expected/lcheck.log-no-NETFILES checkpkg/expected/mfilt.dat @@ -239,6 +241,7 @@ doc/wag-src/ann2rr.1 doc/wag-src/annot.5 doc/wag-src/appguide.int +doc/wag-src/blankpage.tex doc/wag-src/bxb.1 doc/wag-src/calsig.1 doc/wag-src/coherence.1 @@ -299,7 +302,9 @@ doc/wag-src/wfdbcal.5 doc/wag-src/wfdbcat.1 doc/wag-src/wfdbcollate.1 +doc/wag-src/wfdb-config.1 doc/wag-src/wfdbdesc.1 +doc/wag-src/wfdbf.3 doc/wag-src/wfdbwhich.1 doc/wag-src/wrann.1 doc/wag-src/wrsamp.1 @@ -347,6 +352,7 @@ doc/wug-src/wave/misc/ doc/wug-src/wave/misc/example.xws doc/wug-src/wave/misc/html.sty +doc/wug-src/wave/misc/pstoimg doc/wug-src/wave/misc/wave.inf doc/wug-src/wave/png/ doc/wug-src/wave/png/chart2.png @@ -364,6 +370,8 @@ doc/wug-src/wave/ppm/file-print.ppm.gz doc/wug-src/wave/ppm/file-save.ppm.gz doc/wug-src/wave/ppm/find-window.ppm.gz +doc/wug-src/wave/ppm/galeon-new-helper.ppm.gz +doc/wug-src/wave/ppm/GTKWave.ppm.gz doc/wug-src/wave/ppm/help-intro.ppm.gz doc/wug-src/wave/ppm/help-topics.ppm.gz doc/wug-src/wave/ppm/level-window.ppm.gz @@ -373,6 +381,7 @@ doc/wug-src/wave/ppm/main-window.ppm.gz doc/wug-src/wave/ppm/main-with-hr.ppm.gz doc/wug-src/wave/ppm/main-with-markers.ppm.gz +doc/wug-src/wave/ppm/mozilla-new-helper.ppm.gz doc/wug-src/wave/ppm/netscape-new-helper.ppm.gz doc/wug-src/wave/ppm/noedit.ppm.gz doc/wug-src/wave/ppm/nomatch.ppm.gz @@ -397,6 +406,7 @@ doc/wug-src/wave/scripts/dossify-html doc/wug-src/wave/scripts/fixinfo doc/wug-src/wave/scripts/fixlinks +doc/wug-src/wave/scripts/fixwug.sh doc/wug-src/wave/scripts/savewin doc/wug-src/wave/scripts/wave2d doc/wug-src/wave/scripts/wugfigures @@ -423,6 +433,7 @@ examples/Makefile.top examples/Makefile.tpl examples/psamples.c +examples/psamplex.c examples/README examples/refhr.c examples/stdev.c @@ -491,7 +502,6 @@ wave/demo.txt wave/edit.c wave/editing.hlp -wave/faq.hlp wave/grid.c wave/help.c wave/helppan.c @@ -512,7 +522,7 @@ waverc/Makefile waverc/Makefile.top waverc/Makefile.tpl -waverc/urlvhead +waverc/url_view waverc/wave-remote.c waverc/wave-remote-test.c waverc/wavescript.c diff -Naur wfdb-10.2.5/Makefile wfdb-10.2.6/Makefile --- wfdb-10.2.5/Makefile Sun Mar 10 12:42:43 2002 +++ wfdb-10.2.6/Makefile Mon Jun 24 22:43:07 2002 @@ -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: 15 January 2002 +# Last revised: 11 March 2002 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 5 +RELEASE = 6 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.5 +PACKAGE=wfdb-10.2.6 # file: linux.def G. Moody 31 May 2000 # Last revised: 17 December 2001 # 'make' definitions for compiling the WFDB Software Package under Linux @@ -174,8 +174,8 @@ lib-post-uninstall: echo "Nothing to be done for lib-post-uninstall" # _____________________________________________________________________________ -# file: Makefile.tpl G. Moody 24 May 2000 -# Last revised: 15 January 2002 +# file: Makefile.tpl G. Moody 24 May 2000 +# Last revised: 11 March 2002 # This section of the Makefile should not need to be changed. # ARCH specifies the type of CPU and the operating system (e.g., 'i686-Linux'). @@ -230,7 +230,7 @@ cd waverc; $(MAKE) clean cd wview; $(MAKE) -f clean test -d doc && ( cd doc; $(MAKE) clean ) - rm -f *~ conf/*~ conf/prompt config.cache */*.exe + rm -f *~ conf/*~ conf/prompt config.cache */*.exe $(PACKAGE)-*.spec # 'make config.cache': check configuration config.cache: @@ -299,6 +299,12 @@ # binaries and other installed files bin-tarball: test-install cd $(HOME)/wfdb-test; tar cfvz ../$(PACKAGE)-$(ARCH).tar.gz . + +# 'make doc-tarball': make a gzipped tar archive of formatted documents +# (requires many freely-available utilities that are not part of this +# package; see doc/Makefile.top for details) +doc-tarball: + cd doc; $(MAKE) tarball # 'make rpms': make source and binary RPMs RPMROOT=/usr/src/redhat diff -Naur wfdb-10.2.5/Makefile.tpl wfdb-10.2.6/Makefile.tpl --- wfdb-10.2.5/Makefile.tpl Tue Jan 15 16:07:45 2002 +++ wfdb-10.2.6/Makefile.tpl Mon Mar 11 12:10:54 2002 @@ -1,5 +1,5 @@ -# file: Makefile.tpl G. Moody 24 May 2000 -# Last revised: 15 January 2002 +# file: Makefile.tpl G. Moody 24 May 2000 +# Last revised: 11 March 2002 # This section of the Makefile should not need to be changed. # ARCH specifies the type of CPU and the operating system (e.g., 'i686-Linux'). @@ -54,7 +54,7 @@ cd waverc; $(MAKE) clean cd wview; $(MAKE) -f clean test -d doc && ( cd doc; $(MAKE) clean ) - rm -f *~ conf/*~ conf/prompt config.cache */*.exe + rm -f *~ conf/*~ conf/prompt config.cache */*.exe $(PACKAGE)-*.spec # 'make config.cache': check configuration config.cache: @@ -123,6 +123,12 @@ # binaries and other installed files bin-tarball: test-install cd $(HOME)/wfdb-test; tar cfvz ../$(PACKAGE)-$(ARCH).tar.gz . + +# 'make doc-tarball': make a gzipped tar archive of formatted documents +# (requires many freely-available utilities that are not part of this +# package; see doc/Makefile.top for details) +doc-tarball: + cd doc; $(MAKE) tarball # 'make rpms': make source and binary RPMs RPMROOT=/usr/src/redhat diff -Naur wfdb-10.2.5/NEWS wfdb-10.2.6/NEWS --- wfdb-10.2.5/NEWS Sun Mar 10 11:04:38 2002 +++ wfdb-10.2.6/NEWS Mon Jun 17 18:53:58 2002 @@ -1,3 +1,51 @@ +10.2.6: + Added setifreq() and getifreq() to the WFDB library. setifreq + allows the caller to resample an input record at any convenient + sampling frequency, using getvec() to perform xform's resampling + algorithm transparently. Thanks to Pat Hamilton for the inspiration! + The complementary getifreq returns the current getvec frequency + (either the native sampling frequency of the current record, or + the frequency previously set using setifreq()). Times expressed + in sample intervals passed to or from other WFDB functions (getann, + putann, timstr, mstimstr, strtim) are rescaled to match the intervals + corresponding to the chosen frequency. + + 'sqrs' and 'sqrs125' now use setifreq() to resample their inputs. + + Added 'wfdb-config', a tiny program (in app) that reports the WFDB + library version and linking information (similar to libwww-config, + gtk-config, etc.). + + The WFDB library now records the base time with millisecond precision + (previous versions did so with one-second precision), and 'xform' + provides starting times to the library function 'setbasetime' with + millisecond precision. Thanks to Allavatam Venugopal for providing + examples that illustrated the need for these features. + + Fixed handling of absolute time strings in 'ann2rr', 'bxb', 'epic', + 'fir', 'ihr', 'mxm', 'pscgen', 'rdann', and 'rxr' (all in app). + + Fixed deskewing buffer initialization in getframe() (in lib/signal.c). + broken by the 10.2.0 update, which introduced an infinite loop when + reading a record that requires skew correction starting at sample 0. + Thanks to Andrew Walsh for finding an example that triggered this bug. + + Fixed rounding errors in adumuv(), muvadu(), and physadu() (all in + lib/signal.c). Previous versions rounded negative values toward zero; + to obtain consistent conversions, however, it is necessary to round + all values down (e.g., from -1.5 to -2 rather than up to -1). + + Fixed a memory leak in wfdb_fclose() (in lib/wfdbio.h), and made + additional minor changes for portability (in lib/calib.c, lib/signal.c, + and lib/wfdblib.h). Thanks to Ion Gaztaņaga for bug reports, for his + careful notes on compiling the WFDB library using Borland C++ Builder + (see INSTALL for a summary), and for testing intermediate versions + of the library. + + Fixed a bug in checkpkg/appcheck, which was correctly testing xform + with NETFILES and reporting any errors, but was not counting errors + in this test. + 10.2.5: New output format options in 'ann2rr' and 'ihr'. diff -Naur wfdb-10.2.5/README.NETFILES wfdb-10.2.6/README.NETFILES --- wfdb-10.2.5/README.NETFILES Thu Sep 6 13:33:25 2001 +++ wfdb-10.2.6/README.NETFILES Fri Jun 21 22:54:12 2002 @@ -1,9 +1,9 @@ file: README.NETFILES G. Moody 14 September 1999 - Last revised: 6 September 2001 + Last revised: 21 June 2002 -This version of the WFDB software package contains experimental NETFILES -support in the WFDB library, which is compiled if you have previously -installed libwww (see http://www.w3.org/Library/). +This version of the WFDB software package contains NETFILES support in the +WFDB library, which is compiled if you have previously installed libwww +(see http://www.w3.org/Library/). NETFILES support is known to work well under Linux, Solaris, and MS-Windows. When compiling the WFDB library as a static library with NETFILES support, it @@ -15,13 +15,13 @@ path should contain one or more components that refer to remote files available via http or ftp. If NETFILES support is included, the default WFDB path (defined in lib/wfdblib.h) is - . http://www.physionet.org/physiobank/database -(i.e., the first component is the current (local) directory, and the second -component is the top-level PhysioBank database directory). If you use a -local PhysioBank mirror, you may wish to change www.physionet.org to the -hostname of your local mirror in lib/wfdblib.h before compiling the WFDB -library. You may always override this path by setting the WFDB environment -variable. + . /usr/database http://www.physionet.org/physiobank/database +(i.e., the first component is the current (local) directory, the second is +/usr/database in the local file system, and the third component is the +top-level PhysioBank database directory). If you use a local PhysioBank +mirror, you may wish to change www.physionet.org to the hostname of your local +mirror in lib/wfdblib.h before compiling the WFDB library. You may always +override this path by setting the WFDB environment variable. Provided that a remote path component (one beginning with http:// or ftp://) is included in the WFDB path, all WFDB applications that read local files will @@ -58,4 +58,4 @@ information it receives from your browser.) NETFILES support was originally implemented by Michael Dakin as part of his -summer UROP project at MIT. Thanks, Mike! +summer 1999 UROP project at MIT. Thanks, Mike! diff -Naur wfdb-10.2.5/app/Makefile wfdb-10.2.6/app/Makefile --- wfdb-10.2.5/app/Makefile Sun Mar 10 12:42:43 2002 +++ wfdb-10.2.6/app/Makefile Mon Jun 24 22:43:07 2002 @@ -33,12 +33,12 @@ # type `make listing'. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 15 January 2002 +# Last revised: 11 March 2002 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 5 +RELEASE = 6 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.5 +PACKAGE=wfdb-10.2.6 # file: linux.def G. Moody 31 May 2000 # Last revised: 17 December 2001 # 'make' definitions for compiling the WFDB Software Package under Linux @@ -169,19 +169,20 @@ echo "Nothing to be done for lib-post-uninstall" # _____________________________________________________________________________ # file: Makefile.tpl G. Moody 23 May 2000 -# Last revised: 6 December 2000 +# Last revised: 27 April 2002 # This section of the Makefile should not need to be changed. CFILES = ann2rr.c bxb.c calsig.c ecgeval.c epic.c fir.c ihr.c mfilt.c \ mrgann.c mxm.c nst.c plotstm.c pscgen.c pschart.c psfd.c rdann.c rdsamp.c \ rr2ann.c rxr.c sampfreq.c sample.c sigamp.c skewedit.c snip.c sortann.c \ sqrs.c sqrs125.c sumann.c sumstats.c tach.c view.c vsetup.c wfdbcat.c \ - wfdbcollate.c wfdbdesc.c wfdbwhich.c wrann.c wrsamp.c wvscript.c xform.c + wfdbcollate.c wfdb-config.c wfdbdesc.c wfdbwhich.c wrann.c wrsamp.c \ + wvscript.c xform.c XFILES = ann2rr bxb calsig ecgeval epic fir ihr mfilt \ mrgann mxm nst plotstm pscgen pschart psfd rdann rdsamp \ rr2ann rxr sampfreq sigamp skewedit snip sortann \ sqrs sqrs125 sumann sumstats tach wfdbcat \ - wfdbcollate wfdbdesc wfdbwhich wrann wrsamp xform + wfdbcollate wfdb-config wfdbdesc wfdbwhich wrann wrsamp xform SCRIPTS = cshsetwfdb setwfdb PSFILES = pschart.pro psfd.pro 12lead.pro OTHERFILES = cshsetwfdb setwfdb setwfdb.bat sample8.hea @@ -247,3 +248,6 @@ $(CC) $(CFLAGS) -DPROLOG=\"$(PSPDIR)/psfd.pro\" psfd.c -o $@ $(LDFLAGS) sigamp: sigamp.c $(CC) $(CFLAGS) sigamp.c -o $@ $(LDFLAGS) -lm +wfdb-config: wfdb-config.c Makefile + $(CC) -DVERSION='"$(VERSION)"' -DCFLAGS='"-I$(INCDIR)"' \ + -DLDFLAGS='"$(LDFLAGS)"' -o $@ wfdb-config.c diff -Naur wfdb-10.2.5/app/Makefile.tpl wfdb-10.2.6/app/Makefile.tpl --- wfdb-10.2.5/app/Makefile.tpl Wed Dec 6 16:32:12 2000 +++ wfdb-10.2.6/app/Makefile.tpl Sat Apr 27 16:40:07 2002 @@ -1,17 +1,18 @@ # file: Makefile.tpl G. Moody 23 May 2000 -# Last revised: 6 December 2000 +# Last revised: 27 April 2002 # This section of the Makefile should not need to be changed. CFILES = ann2rr.c bxb.c calsig.c ecgeval.c epic.c fir.c ihr.c mfilt.c \ mrgann.c mxm.c nst.c plotstm.c pscgen.c pschart.c psfd.c rdann.c rdsamp.c \ rr2ann.c rxr.c sampfreq.c sample.c sigamp.c skewedit.c snip.c sortann.c \ sqrs.c sqrs125.c sumann.c sumstats.c tach.c view.c vsetup.c wfdbcat.c \ - wfdbcollate.c wfdbdesc.c wfdbwhich.c wrann.c wrsamp.c wvscript.c xform.c + wfdbcollate.c wfdb-config.c wfdbdesc.c wfdbwhich.c wrann.c wrsamp.c \ + wvscript.c xform.c XFILES = ann2rr bxb calsig ecgeval epic fir ihr mfilt \ mrgann mxm nst plotstm pscgen pschart psfd rdann rdsamp \ rr2ann rxr sampfreq sigamp skewedit snip sortann \ sqrs sqrs125 sumann sumstats tach wfdbcat \ - wfdbcollate wfdbdesc wfdbwhich wrann wrsamp xform + wfdbcollate wfdb-config wfdbdesc wfdbwhich wrann wrsamp xform SCRIPTS = cshsetwfdb setwfdb PSFILES = pschart.pro psfd.pro 12lead.pro OTHERFILES = cshsetwfdb setwfdb setwfdb.bat sample8.hea @@ -77,3 +78,6 @@ $(CC) $(CFLAGS) -DPROLOG=\"$(PSPDIR)/psfd.pro\" psfd.c -o $@ $(LDFLAGS) sigamp: sigamp.c $(CC) $(CFLAGS) sigamp.c -o $@ $(LDFLAGS) -lm +wfdb-config: wfdb-config.c Makefile + $(CC) -DVERSION='"$(VERSION)"' -DCFLAGS='"-I$(INCDIR)"' \ + -DLDFLAGS='"$(LDFLAGS)"' -o $@ wfdb-config.c diff -Naur wfdb-10.2.5/app/ann2rr.c wfdb-10.2.6/app/ann2rr.c --- wfdb-10.2.5/app/ann2rr.c Tue Jan 15 12:46:19 2002 +++ wfdb-10.2.6/app/ann2rr.c Mon May 20 17:40:17 2002 @@ -1,5 +1,5 @@ -/* file: ann2rr.c G. Moody 16 May 1995 - Last revised: 15 January 2002 +/* file: ann2rr.c G. Moody 16 May 1995 + Last revised: 20 May 2002 ------------------------------------------------------------------------------- ann2rr: Calculate RR intervals from an annotation file Copyright (C) 2002 George B. Moody @@ -161,16 +161,17 @@ if (to) { if (*argv[(int)to] == '#') { if ((beat_number = atol(argv[(int)to]+1)) < 1L) beat_number = 1L; - to = 0L; + to = (WFDB_Time)0; } else { beat_number = -1L; to = strtim(argv[(int)to]); + if (to < (WFDB_Time)0) to = -to; } } tp = from; - while (getann(0, &annot) == 0 && (to == 0L || annot.time <= to)) { + while (getann(0, &annot) == 0 && (to == (WFDB_Time)0 || annot.time <= to)){ if (!isann(annot.anntyp)) continue; if ((flag[0] && isqrs(annot.anntyp)) || flag[annot.anntyp]) { if (cflag == 0 || previous_annot_valid == 1) { diff -Naur wfdb-10.2.5/app/bxb.c wfdb-10.2.6/app/bxb.c --- wfdb-10.2.5/app/bxb.c Wed Nov 7 10:58:28 2001 +++ wfdb-10.2.6/app/bxb.c Mon May 20 17:52:34 2002 @@ -1,9 +1,9 @@ /* file: bxb.c G. Moody 14 December 1987 - Last revised: 7 November 2001 + Last revised: 20 May 2002 ------------------------------------------------------------------------------- bxb: ANSI/AAMI-standard beat-by-beat annotation file comparator -Copyright (C) 2001 George B. Moody +Copyright (C) 2002 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 @@ -778,12 +778,25 @@ match_dt = (int)strtim(argv[match_dt]); else match_dt = (int)strtim(".15"); /* 150 milliseconds */ - if (start) + if (start) { start = strtim(argv[(int)start]); + /* If the header file defines a base time (absolute time of day), + the start and end times can be supplied in the form '[hh:mm:ss]', + and strtim returns a negative value (to signal that the user + specified the time in this way). In this case, the magnitude of + the returned value is the elapsed time in sample intervals. We + don't care how the user entered the time here, so we throw away + the sign information and keep the elapsed time. */ + if (start < (WFDB_Time)0) + start = -start; + } else start = strtim("5:0"); /* 5 minutes */ - if (end_time) + if (end_time) { end_time = strtim(argv[(int)end_time]); + /* See the comments about strtim in the previous block (above). */ + if (end_time < (WFDB_Time)0) end_time = -end_time; + } else if ((end_time = strtim("e")) == 0L) end_time = -1L; /* record length unavailable -- go to end of reference annotation file */ diff -Naur wfdb-10.2.5/app/epic.c wfdb-10.2.6/app/epic.c --- wfdb-10.2.5/app/epic.c Wed Nov 7 10:58:58 2001 +++ wfdb-10.2.6/app/epic.c Mon May 20 17:54:33 2002 @@ -947,12 +947,16 @@ the test period. */ if (min_length) min_length = strtim(argv[min_length]); - if (start_time) + if (start_time) { start_time = strtim(argv[(int)start_time]); + if (start_time < (WFDB_Time)0) start_time = -start_time; + } else start_time = strtim("5:0"); /* 5 minutes */ - if (end_time) + if (end_time) { end_time = strtim(argv[(int)end_time]); + if (end_time < (WFDB_Time)0) end_time = -end_time; + } else if ((end_time = strtim("e")) == 0L) end_time = -1L; /* record length unavailable -- go to end of reference annotation file */ diff -Naur wfdb-10.2.5/app/fir.c wfdb-10.2.6/app/fir.c --- wfdb-10.2.5/app/fir.c Tue Oct 9 10:35:00 2001 +++ wfdb-10.2.6/app/fir.c Mon May 20 17:57:17 2002 @@ -1,9 +1,9 @@ /* file: fir.c G. Moody 5 January 1987 - Last revised: 9 October 2001 + Last revised: 20 May 2002 ------------------------------------------------------------------------------- fir: General-purpose FIR filter for database records -Copyright (C) 2001 George B. Moody +Copyright (C) 2002 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 @@ -227,10 +227,13 @@ } if (from > 0L) { from = strtim(argv[from]); + if (from < (WFDB_Time)0) from = -from; (void)isigsettime(from); } - if (to > 0L) + if (to > 0L) { to = strtim(argv[to]); + if (to < (WFDB_Time)0) to = -to; + } nsamp = (to > 0L) ? to - from : -1L; if ((vout = (int *)calloc((unsigned)nsig, sizeof(int))) == NULL || (vin = (int **)calloc((unsigned)flen, sizeof(int *))) == NULL) diff -Naur wfdb-10.2.5/app/ihr.c wfdb-10.2.6/app/ihr.c --- wfdb-10.2.5/app/ihr.c Tue Jan 15 15:12:24 2002 +++ wfdb-10.2.6/app/ihr.c Mon May 20 17:58:39 2002 @@ -1,5 +1,5 @@ /* file ihr.c G. Moody 12 November 1992 - Last revised: 15 January 2002 + Last revised: 20 May 2002 ------------------------------------------------------------------------------- ihr: Generate instantaneous heart rate data from annotation file @@ -167,7 +167,10 @@ exit(2); if (from && iannsettime(strtim(argv[(int)from])) < 0) exit(2); - if (to) to = strtim(argv[(int)to]); + if (to) { + to = strtim(argv[(int)to]); + if (to < (WFDB_Time)0) to = -to; + } if (flag[0]) /* neither -i nor -p used -- include only normal beats */ for (j = 0; j <= ACMAX; j++) diff -Naur wfdb-10.2.5/app/mxm.c wfdb-10.2.6/app/mxm.c --- wfdb-10.2.5/app/mxm.c Sun Jan 30 04:13:16 2000 +++ wfdb-10.2.6/app/mxm.c Mon May 20 18:00:44 2002 @@ -1,9 +1,9 @@ /* file: mxm.c G. Moody 20 March 1992 - Last revised: 4 May 1999 + Last revised: 20 May 2002 ------------------------------------------------------------------------------- mxm: ANSI/AAMI-standard measurement-by-measurement annotation file comparator -Copyright (C) 1999 George B. Moody +Copyright (C) 2002 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 @@ -306,12 +306,16 @@ } /* Set the times of the start and end of the test period. */ - if (start) + if (start) { start = strtim(argv[(int)start]); + if (start < (WFDB_Time)0) start = -start; + } else start = strtim("5:0"); /* 5 minutes */ - if (end_time) + if (end_time) { end_time = strtim(argv[(int)end_time]); + if (end_time < (WFDB_Time)0) end_time = -end_time; + } else if ((end_time = strtim("e")) == 0L) end_time = -1L; /* record length unavailable -- go to end of reference annotation file */ diff -Naur wfdb-10.2.5/app/pscgen.c wfdb-10.2.6/app/pscgen.c --- wfdb-10.2.5/app/pscgen.c Sun Jan 30 04:13:16 2000 +++ wfdb-10.2.6/app/pscgen.c Mon May 20 18:20:34 2002 @@ -1,9 +1,9 @@ /* file: pscgen.c G. Moody 26 November 1990 - Last revised: 4 May 1999 + Last revised: 20 May 2002 ------------------------------------------------------------------------------- pscgen: Generate a script for pschart -Copyright (C) 1999 George B. Moody +Copyright (C) 2002 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 @@ -80,6 +80,7 @@ exit(1); } from = strtim(argv[i]); + if (from < (WFDB_Time)0) from = -from; break; case 'l': /* specify strip length */ if (++i >= argc) { @@ -94,6 +95,7 @@ exit(1); } to = strtim(argv[i]); + if (to < (WFDB_Time)0) to = -to; break; } else { diff -Naur wfdb-10.2.5/app/rdann.c wfdb-10.2.6/app/rdann.c --- wfdb-10.2.5/app/rdann.c Mon Feb 26 12:31:54 2001 +++ wfdb-10.2.6/app/rdann.c Mon May 20 17:35:41 2002 @@ -1,9 +1,9 @@ /* file rdann.c T. Baker and G. Moody 27 July 1981 - Last revised: 26 February 2001 + Last revised: 20 May 2002 ------------------------------------------------------------------------------- rdann: Print an annotation file in ASCII form -Copyright (C) 1999 George B. Moody +Copyright (C) 2002 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 @@ -232,11 +232,12 @@ if (to) { if (*argv[(int)to] == '#') { if ((beat_number = atol(argv[(int)to]+1)) < 1L) beat_number = 1L; - to = 0L; + to = (WFDB_Time)0; } else { beat_number = -1L; to = strtim(argv[(int)to]); + if (to < (WFDB_Time)0) to = -to; } } diff -Naur wfdb-10.2.5/app/rxr.c wfdb-10.2.6/app/rxr.c --- wfdb-10.2.5/app/rxr.c Wed Nov 7 10:59:15 2001 +++ wfdb-10.2.6/app/rxr.c Mon May 20 19:17:35 2002 @@ -1,9 +1,9 @@ /* file: rxr.c G. Moody 16 August 1989 - Last revised: 7 November 2001 + Last revised: 20 May 2002 ------------------------------------------------------------------------------- rxr: ANSI/AAMI-standard run-by-run annotation file comparator -Copyright (C) 2001 George B. Moody +Copyright (C) 2002 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 @@ -701,12 +701,16 @@ match_dt = (int)strtim(argv[match_dt]); else match_dt = (int)strtim(".15"); /* 150 milliseconds */ - if (start) + if (start) { start = strtim(argv[(int)start]); + if (start < (WFDB_Time)0) start = -start; + } else start = strtim("5:0"); /* 5 minutes */ - if (end_time) + if (end_time) { end_time = strtim(argv[(int)end_time]); + if (end_time < (WFDB_Time)0) end_time = -end_time; + } else if ((end_time = strtim("e")) == 0L) end_time = -1L; /* record length unavailable -- go to end of reference annotation file */ diff -Naur wfdb-10.2.5/app/sqrs.c wfdb-10.2.6/app/sqrs.c --- wfdb-10.2.5/app/sqrs.c Mon Dec 17 21:52:00 2001 +++ wfdb-10.2.6/app/sqrs.c Tue May 28 11:22:10 2002 @@ -1,9 +1,9 @@ /* file: sqrs.c G. Moody 27 October 1990 - Last revised: 17 December 2001 + Last revised: 28 May 2002 ------------------------------------------------------------------------------- sqrs: Single-channel QRS detector -Copyright (C) 2001 George B. Moody +Copyright (C) 2002 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 @@ -34,10 +34,9 @@ `sqrs' can process records containing any number of signals, but it uses only one signal for QRS detection (signal 0 by default; this can be changed using -the `-s' option, see below). For best results on adult human ECGs, use `xform' -to resample the input signal at 250 Hz if a different sampling frequency was -used originally. For other ECGs, it may be necessary to experiment with the -input sampling frequency and the time constants indicated below. +the `-s' option, see below). 'sqrs' has been optimized for adult human ECGs. +For other ECGs, it may be necessary to experiment with the input sampling +frequency and the time constants indicated below. This program is provided as an example only, and is not intended for any clinical application. At the time the algorithm was originally published, @@ -170,11 +169,8 @@ } a.name = "qrs"; a.stat = WFDB_WRITE; if ((nsig = wfdbinit(record, &a, 1, s, nsig)) < 1) exit(2); - if (sampfreq((char *)NULL) < 200. || sampfreq((char *)NULL) > 300.) { - (void)fprintf(stderr, "warning: %s is designed for 250 Hz input\n", - argv[0]); - (void)fprintf(stderr, " Consider resampling using `xform'.\n"); - } + if (sampfreq((char *)NULL) < 240. || sampfreq((char *)NULL) > 260.) + setifreq(250.); if (from > 0L) { if ((from = strtim(argv[from])) < 0L) from = -from; diff -Naur wfdb-10.2.5/app/sqrs125.c wfdb-10.2.6/app/sqrs125.c --- wfdb-10.2.5/app/sqrs125.c Mon Dec 17 21:51:41 2001 +++ wfdb-10.2.6/app/sqrs125.c Tue May 28 11:59:42 2002 @@ -1,9 +1,9 @@ /* file: sqrs125.c G. Moody 27 October 1990 - Last revised: 17 December 2001 + Last revised: 28 May 2002 ------------------------------------------------------------------------------- sqrs125: Single-channel QRS detector for data sampled at 100 - 150 Hz -Copyright (C) 2001 George B. Moody +Copyright (C) 2002 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 @@ -177,11 +177,8 @@ } a.name = "qrs"; a.stat = WFDB_WRITE; if ((nsig = wfdbinit(record, &a, 1, s, nsig)) < 1) exit(2); - if (sampfreq((char *)NULL) < 100. || sampfreq((char *)NULL) > 150.) { - (void)fprintf(stderr, "warning: %s is designed for 125 Hz input\n", - argv[0]); - (void)fprintf(stderr, " Consider resampling using `xform'.\n"); - } + if (sampfreq((char *)NULL) < 120. || sampfreq((char *)NULL) > 130.) + setifreq(125.); if (from > 0L) { if ((from = strtim(argv[from])) < 0L) from = -from; diff -Naur wfdb-10.2.5/app/wfdb-config.c wfdb-10.2.6/app/wfdb-config.c --- wfdb-10.2.5/app/wfdb-config.c Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.6/app/wfdb-config.c Mon Jun 17 19:07:26 2002 @@ -0,0 +1,107 @@ +/* file: wfdb-config.c G. Moody 27 April 2002 + +------------------------------------------------------------------------------- +wfdb-config: Print WFDB library version and linking information +Copyright (C) 2002 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/). +_______________________________________________________________________________ + +*/ + +#include +#ifndef __STDC__ +extern void exit(); +#endif + +#include + +#ifndef VERSION +#define VERSION "VERSION not defined" +#endif + +#ifndef LDFLAGS +#define LDFLAGS "LDFLAGS not defined" +#endif + +#ifndef CFLAGS +#define CFLAGS "CFLAGS not defined" +#endif + +char *pname; + +main(argc, argv) +int argc; +char *argv[]; +{ + char *filename, *prog_name(); + int i; + void help(); + + pname = prog_name(argv[0]); + if (argc == 1) { + help(); + exit(1); + } + + for (i = 1; i < argc; i++) { + if (strcmp(argv[i], "--version") == 0) + printf("%s\n", VERSION); + else if (strcmp(argv[i], "--libs") == 0) + printf("%s\n", LDFLAGS); + else if (strcmp(argv[i], "--cflags") == 0) + printf("%s\n", CFLAGS); + else + help(); + } + exit(0); +} + +char *prog_name(s) +char *s; +{ + char *p = s + strlen(s); + +#ifdef MSDOS + while (p >= s && *p != '\\' && *p != ':') { + if (*p == '.') + *p = '\0'; /* strip off extension */ + if ('A' <= *p && *p <= 'Z') + *p += 'a' - 'A'; /* convert to lower case */ + p--; + } +#else + while (p >= s && *p != '/') + p--; +#endif + return (p+1); +} + +static char *help_strings[] = { + "usage: %s [--version] [--libs] [--cflags]\n", + NULL +}; + +void help() +{ + int i; + + (void)fprintf(stderr, help_strings[0], pname); + for (i = 1; help_strings[i] != NULL; i++) + (void)fprintf(stderr, "%s\n", help_strings[i]); +} diff -Naur wfdb-10.2.5/app/xform.c wfdb-10.2.6/app/xform.c --- wfdb-10.2.5/app/xform.c Sun Oct 14 22:34:15 2001 +++ wfdb-10.2.6/app/xform.c Mon May 20 20:39:37 2002 @@ -1,9 +1,9 @@ /* file: xform.c G. Moody 8 December 1983 - Last revised: 14 October 2001 + Last revised: 20 May 2002 ------------------------------------------------------------------------------- xform: Sampling frequency, amplitude, and format conversion for WFDB records -Copyright (C) 2001 George B. Moody +Copyright (C) 2002 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 @@ -502,7 +502,7 @@ if (from) startp = argv[(int)from]; from = strtim(startp); if (from < 0L) from = -from; - strcpy(btstring, timstr(-from)); + strcpy(btstring, mstimstr(-from)); if (to) { to = strtim(argv[(int)to]); if (to < 0L) to = -to; diff -Naur wfdb-10.2.5/checkpkg/Makefile wfdb-10.2.6/checkpkg/Makefile --- wfdb-10.2.5/checkpkg/Makefile Sun Mar 10 12:42:43 2002 +++ wfdb-10.2.6/checkpkg/Makefile Mon Jun 24 22:43:07 2002 @@ -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: 15 January 2002 +# Last revised: 11 March 2002 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 5 +RELEASE = 6 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.5 +PACKAGE=wfdb-10.2.6 # file: linux.def G. Moody 31 May 2000 # Last revised: 17 December 2001 # 'make' definitions for compiling the WFDB Software Package under Linux diff -Naur wfdb-10.2.5/checkpkg/appcheck wfdb-10.2.6/checkpkg/appcheck --- wfdb-10.2.5/checkpkg/appcheck Tue Dec 18 10:20:31 2001 +++ wfdb-10.2.6/checkpkg/appcheck Thu May 23 20:22:15 2002 @@ -1,6 +1,6 @@ #!/bin/sh # file: appcheck G. Moody 7 September 2001 -# Last revised: 18 December 2001 +# Last revised: 23 May 2002 # # This script checks the functionality of the WFDB applications in the 'app' # directory. @@ -381,8 +381,9 @@ TESTS=`expr $TESTS + 1` done -( grep "WFDB_NETFILES 1" /usr/include/wfdb/wfdb.h >/dev/null 2>&1 ) && -( echo "Testing xform (with NETFILES) ..." +if ( grep "WFDB_NETFILES 1" /usr/include/wfdb/wfdb.h >/dev/null 2>&1 ) +then + echo "Testing xform (with NETFILES) ..." xform -i mimicdb/237/237 -s 1 2 0 3 -f 9:19:45 -t "[22:01:23 20/07/1995]" \ -a all -M -n xform -S input/xform >xform-2.out 2>&1 for F in xform-2.out xform.hea xform.dat xform.all @@ -396,7 +397,7 @@ fi TESTS=`expr $TESTS + 1` done -) +fi cat < 1 ? "s" :""); @@ -187,8 +254,10 @@ int check(char *record, char *orec) { + WFDB_Date d; WFDB_Frequency f; WFDB_Time t, tt; + double x; /* *** sampfreq *** */ if ((f = sampfreq(NULL)) != 0.0) { @@ -238,7 +307,79 @@ else if (vflag) printf("[OK]: annopen of 2 files succeeded\n"); - /* *** strtim *** */ + /* *** strecg, ecgstr *** */ + i = strecg("N"); + if (i != 1) { + printf("Error: strecg returned %d (should have been 1)\n", i); + errors++; + } + else if (vflag) + printf("[OK]: strecg returned %d\n", i); + + p = ecgstr(i); + if (strcmp(p, "N")) { + printf("Error: ecgstr returned '%s' (should have been 'N')\n", p); + errors++; + } + else if (vflag) + printf("[OK]: ecgstr returned '%s'\n", p); + + /* *** strann, annstr, anndesc *** */ + i = strann("N"); + if (i != 1) { + printf("Error: strann returned %d (should have been 1)\n", i); + errors++; + } + else if (vflag) + printf("[OK]: strann returned %d\n", i); + + p = annstr(i); + if (strcmp(p, "N")) { + printf("Error: annstr returned '%s' (should have been 'N')\n", p); + errors++; + } + else if (vflag) + printf("[OK]: annstr returned '%s'\n", p); + + p = anndesc(i); + if (strcmp(p, "Normal beat")) { + printf("Error: anndesc returned '%s' (should have been 'Normal beat')\n", + p); + errors++; + } + else if (vflag) + printf("[OK]: anndesc returned '%s'\n", p); + + /* *** setecgstr, setannstr, setanndesc *** */ + + i = setecgstr(1, "X"); + p = ecgstr(1); + if (i != 0 || strcmp(p, "X")) { + printf("Error: setecgstr failed\n"); + errors++; + } + else if (vflag) + printf("[OK]: setecgstr succeeded\n"); + + i = setannstr(-1, "Y"); + p = annstr(1); + if (i != 0 || strcmp(p, "Y")) { + printf("Error: setannstr failed\n"); + errors++; + } + else if (vflag) + printf("[OK]: setannstr succeeded\n"); + + i = setanndesc(-1, "ZZ zz"); + p = anndesc(1); + if (i != 0 || strcmp(p, "ZZ zz")) { + printf("Error: setanndesc failed\n"); + errors++; + } + else if (vflag) + printf("[OK]: setanndesc succeeded\n"); + + /* *** strtim, timstr *** */ t = strtim("0:5"); if (t != (WFDB_Time)(5.0 * f)) { printf("Error: strtim returned %ld (should have been %ld)\n", t, @@ -247,7 +388,32 @@ } else if (vflag) printf("[OK]: strtim returned %ld\n", t); - + + p = timstr(t); q = " 0:05"; + if (strcmp(p, q)) { + printf("Error: timstr returned '%s' (should have been '%s')\n", p, q); + errors++; + } + else if (vflag) + printf("[OK]: timstr returned '%s'\n", p); + + /* *** strdat, datstr *** */ + q = " 31/12/1999"; + d = strdat(q); + if (d != 2451544L) { + printf("Error: strdat returned %ld (should have been 2451544)\n", d); + errors++; + } + else if (vflag) + printf("[OK]: strdat returned %ld\n", d); + p = datstr(d); + if (strcmp(p, q)) { + printf("Error: datstr returned '%s' (should have been '%s')\n", p, q); + errors++; + } + else if (vflag) + printf("[OK]: datstr returned '%s'\n", p); + /* *** iannsettime *** */ stat = iannsettime(t); if (stat) { @@ -259,7 +425,7 @@ printf("[OK]: iannsettime skipping forward to %s\n", timstr(t)); - /* *** getann, annstr, mstimstr *** */ + /* *** getann, stimstr *** */ for (i = 0; i < 5; i++) { stat = getann(0, &annot); if (stat != 0 && stat != -1) { @@ -344,6 +510,40 @@ } } + /* *** aduphys, physadu *** */ + x = aduphys((WFDB_Signal)0, (WFDB_Sample)1000); + if (x != -0.12) { + printf("Error: aduphys returned %g (should have been -0.12)\n", x); + errors++; + } + else if (vflag) + printf("[OK]: aduphys returned %g\n", x); + + i = physadu((WFDB_Signal)0, x); + if (i != (WFDB_Sample)1000) { + printf("Error: physadu returned %d (should have been 1000)\n", i); + errors++; + } + else if (vflag) + printf("[OK]: physadu returned %d\n", i); + + /* *** adumuv, muvadu *** */ + i = adumuv((WFDB_Signal)0, (WFDB_Sample)1000); + if (i != 5000) { + printf("Error: adumuv returned %d (should have been 5000)\n", i); + errors++; + } + else if (vflag) + printf("[OK]: adumuv returned %d\n", i); + + i = muvadu((WFDB_Signal)0, i); + if (i != (WFDB_Sample)1000) { + printf("Error: muvadu returned %d (should have been 1000)\n", i); + errors++; + } + else if (vflag) + printf("[OK]: muvadu returned %d\n", i); + /* *** sampfreq *** */ f = sampfreq(NULL); if (f != 360.0) { @@ -362,6 +562,14 @@ } else if (vflag) printf("[OK]: strtim returned %ld\n", t); + + p = timstr(t); q = " 0:20"; + if (strcmp(p, q)) { + printf("Error: timstr returned '%s' (should have been '%s')\n", p, q); + errors++; + } + else if (vflag) + printf("[OK]: timstr returned '%s'\n", p); /* *** isigsettime *** */ stat = isigsettime(t); @@ -494,6 +702,9 @@ } wfdbquit(); + setecgstr(1, "N"); + setannstr(-1, "N"); + setanndesc(-1, "Normal beat"); } char *prog_name(s) @@ -542,25 +753,8 @@ printf("setgvmode\n"); printf("ungetann\n"); printf("isgsettime\n"); - printf("ecgstr\n"); - printf("strecg\n"); - printf("setecgstr\n"); - printf("strann\n"); - printf("setannstr\n"); - printf("anndesc\n"); - printf("setanndesc\n"); printf("iannclose\n"); printf("oannclose\n"); - printf("datstr\n"); - printf("strdat\n"); - printf("adumuv\n"); - printf("muvadu\n"); - printf("physadu\n"); - printf("calopen\n"); - printf("getcal\n"); - printf("putcal\n"); - printf("newcal\n"); - printf("flushcal\n"); printf("setheader\n"); printf("setmsheader\n"); printf("wfdbgetskew\n"); @@ -578,4 +772,6 @@ printf("setobsize\n"); printf("wfdbfile\n"); printf("wfdbflush\n"); + printf("setifreq\n"); + printf("getifreq\n"); } diff -Naur wfdb-10.2.5/checkpkg/libcheck wfdb-10.2.6/checkpkg/libcheck --- wfdb-10.2.5/checkpkg/libcheck Tue Dec 11 12:53:41 2001 +++ wfdb-10.2.6/checkpkg/libcheck Mon Jun 17 18:42:10 2002 @@ -1,6 +1,6 @@ #!/bin/sh # file: libcheck G. Moody 8 September 2001 -# Last revised: 11 December 2001 +# Last revised: 17 June 2002 # # This script checks the functionality of the WFDB library by comparing the # outputs of 'lcheck' with expected outputs. See 'lcheck.c' for details of @@ -28,7 +28,7 @@ ./lcheck -v >lcheck.log cp ../data/100s.atr expected/100s.chk cp ../data/100s.dat expected/100z.dat -CF="lcheck.log 100s.chk 100z.dat 100z.hea" +CF="lcheck.log lcheck_cal 100s.chk 100z.dat 100z.hea" if grep "WFDB supports NETFILES" lcheck.log >/dev/null 2>&1 then CF="$CF udb/100s.chk udb/100z.dat udb/100z.hea" @@ -50,6 +50,7 @@ PASS=`expr $PASS + 1` case $i in *.hea) rm -f $i ;; + lcheck_cal) rm -f $i ;; *) rm -f $i expected/$i ;; esac else diff -Naur wfdb-10.2.5/conf/version.def wfdb-10.2.6/conf/version.def --- wfdb-10.2.5/conf/version.def Tue Jan 15 15:42:39 2002 +++ wfdb-10.2.6/conf/version.def Mon Mar 11 11:50:47 2002 @@ -1,10 +1,10 @@ # file: version.def G. Moody 24 May 2000 -# Last revised: 15 January 2002 +# Last revised: 11 March 2002 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 5 +RELEASE = 6 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables diff -Naur wfdb-10.2.5/convert/Makefile wfdb-10.2.6/convert/Makefile --- wfdb-10.2.5/convert/Makefile Sun Mar 10 12:42:43 2002 +++ wfdb-10.2.6/convert/Makefile Mon Jun 24 22:43:07 2002 @@ -33,12 +33,12 @@ # type `make listing'. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 15 January 2002 +# Last revised: 11 March 2002 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 5 +RELEASE = 6 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.5 +PACKAGE=wfdb-10.2.6 # file: linux.def G. Moody 31 May 2000 # Last revised: 17 December 2001 # 'make' definitions for compiling the WFDB Software Package under Linux diff -Naur wfdb-10.2.5/data/Makefile wfdb-10.2.6/data/Makefile --- wfdb-10.2.5/data/Makefile Sun Mar 10 12:42:43 2002 +++ wfdb-10.2.6/data/Makefile Mon Jun 24 22:43:07 2002 @@ -33,12 +33,12 @@ # listing'. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 15 January 2002 +# Last revised: 11 March 2002 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 5 +RELEASE = 6 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.5 +PACKAGE=wfdb-10.2.6 # file: linux.def G. Moody 31 May 2000 # Last revised: 17 December 2001 # 'make' definitions for compiling the WFDB Software Package under Linux diff -Naur wfdb-10.2.5/doc/Makefile wfdb-10.2.6/doc/Makefile --- wfdb-10.2.5/doc/Makefile Sun Mar 10 12:42:43 2002 +++ wfdb-10.2.6/doc/Makefile Mon Jun 24 22:43:07 2002 @@ -1,10 +1,10 @@ # file: Makefile G. Moody 24 June 1989 -# Last revised: 18 December 2001 +# Last revised: 11 March 2002 # `make' description file for WFDB software documentation # # ----------------------------------------------------------------------------- # WFDB applications: programs for working with annotated signals -# Copyright (C) 2001 George B. Moody +# Copyright (C) 2002 George B. Moody # # These programs are free software; you can redistribute them and/or modify # them under the terms of the GNU General Public License as published by the @@ -69,25 +69,28 @@ # of available formats and the commands needed to produce them: # WFDB Applications Guide -# printed copy 'make ag' (requires troff, tbl, latex, dvips, & a printer) -# HTML 'make ag.html' (requires rman, latex2html, and perl) -# man pages 'make ag.man' -# PDF 'make ag.pdf' (requires troff, tbl, latex, dvips, and ps2pdf) -# PostScript 'make ag.ps' (requires troff, tbl, latex, and dvips) -# +# printed copy 'make wag-book' (requires troff, tbl, latex, dvips, a printer) +# HTML 'make wag.html' (requires rman, latex2html, and perl) +# man pages 'make wag.man' +# PDF 'make wag.pdf' (requires troff, tbl, latex, dvips, and ps2pdf) +# PostScript 'make wag.ps' (requires troff, tbl, latex, dvips, ps2pdf, and +# pdftops *) # WFDB Programmer's Guide -# printed copy 'make pg' (requires troff, texi2dvi, dvips, & a printer) -# Windows help 'make pg.hlp' (requires makertf and hcrtf) -# HTML 'make pg.html' (requires texi2html and perl) -# info 'make pg.info' (requires makeinfo or GNU emacs) -# PDF 'make pg.pdf' (requires texi2dvi) -# PostScript 'make pg.ps' (requires texi2dvi and dvips) +# printed copy 'make wpg-book' (requires troff, texi2dvi, dvips, & a printer) +# Windows help 'make wpg.hlp' (requires makertf and hcrtf) +# HTML 'make wpg.html' (requires texi2html and perl) +# info 'make wpg.info' (requires makeinfo or GNU emacs) +# PDF 'make wpg.pdf' (requires texi2dvi) +# PostScript 'make wpg.ps' (requires texi2dvi and dvips) # # WAVE User's Guide -# printed copy 'make ug' (requires troff, latex, dvips, and a printer) -# HTML 'make ug.html' (requires latex2html and perl) -# PDF 'make ug.pdf' (requires pdflatex) -# PostScript 'make ug.ps' (requires latex and dvips) +# printed copy 'make wug-book' (requires troff, latex, dvips, and a printer) +# HTML 'make wug.html' (requires latex2html and perl) +# PDF 'make wug.pdf' (requires pdflatex) +# PostScript 'make wug.ps' (requires latex and dvips) + +# * See 'wag-src/Makefile' for information about making a PostScript version +# of the WFDB Applications Guide without the use of ps2pdf or pdftops. # If GNU emacs or GNU info has been installed on your system, a hypertext # version of the WFDB Programmer's Guide may be installed by typing `make @@ -131,12 +134,12 @@ # `make ug'. To print the WFDB Programmer's Guide, type `make pg'. # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 15 January 2002 +# Last revised: 11 March 2002 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 5 +RELEASE = 6 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -144,7 +147,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.5 +PACKAGE=wfdb-10.2.6 # file: linux.def G. Moody 31 May 2000 # Last revised: 17 December 2001 # 'make' definitions for compiling the WFDB Software Package under Linux @@ -266,8 +269,8 @@ lib-post-uninstall: echo "Nothing to be done for lib-post-uninstall" # _____________________________________________________________________________ -# file: Makefile.tpl G. Moody 24 May 2000 -# Last revised: 20 December 2001 +# file: Makefile.tpl G. Moody 24 May 2000 +# Last revised: 11 March 2002 # Change the settings below as appropriate for your setup. # Set COLORS to 'color' if you have a color printer and would like to print @@ -332,7 +335,8 @@ MAN7 = $(MANDIR)/man7 # If you want to put the man pages somewhere else, edit 'maninst.sh' first. -# PERL is the full pathname of your perl interpreter, needed for 'make htmlpg'. +# PERL is the full pathname of your perl interpreter, needed for +# 'make wpg.html'. PERL = /usr/bin/perl # PSPRINT is the name of the program that prints PostScript files. If your @@ -342,7 +346,7 @@ PSPRINT = lpr # TROFF is the name of the program that prints UNIX troff files (needed to -# 'make ag' and for the covers of the guides). Use 'groff' if you have +# 'make wag-book' and for the covers of the guides). Use 'groff' if you have # GNU groff (the preferred formatter). TROFF = groff # Use 'ptroff' if you have Adobe TranScript software. diff -Naur wfdb-10.2.5/doc/Makefile.top wfdb-10.2.6/doc/Makefile.top --- wfdb-10.2.5/doc/Makefile.top Tue Dec 18 14:16:58 2001 +++ wfdb-10.2.6/doc/Makefile.top Sat Jun 1 14:51:43 2002 @@ -1,10 +1,10 @@ # file: Makefile G. Moody 24 June 1989 -# Last revised: 18 December 2001 +# Last revised: 11 March 2002 # `make' description file for WFDB software documentation # # ----------------------------------------------------------------------------- # WFDB applications: programs for working with annotated signals -# Copyright (C) 2001 George B. Moody +# Copyright (C) 2002 George B. Moody # # These programs are free software; you can redistribute them and/or modify # them under the terms of the GNU General Public License as published by the @@ -69,25 +69,28 @@ # of available formats and the commands needed to produce them: # WFDB Applications Guide -# printed copy 'make ag' (requires troff, tbl, latex, dvips, & a printer) -# HTML 'make ag.html' (requires rman, latex2html, and perl) -# man pages 'make ag.man' -# PDF 'make ag.pdf' (requires troff, tbl, latex, dvips, and ps2pdf) -# PostScript 'make ag.ps' (requires troff, tbl, latex, and dvips) -# +# printed copy 'make wag-book' (requires troff, tbl, latex, dvips, a printer) +# HTML 'make wag.html' (requires rman, latex2html, and perl) +# man pages 'make wag.man' +# PDF 'make wag.pdf' (requires troff, tbl, latex, dvips, and ps2pdf) +# PostScript 'make wag.ps' (requires troff, tbl, latex, dvips, ps2pdf, and +# pdftops *) # WFDB Programmer's Guide -# printed copy 'make pg' (requires troff, texi2dvi, dvips, & a printer) -# Windows help 'make pg.hlp' (requires makertf and hcrtf) -# HTML 'make pg.html' (requires texi2html and perl) -# info 'make pg.info' (requires makeinfo or GNU emacs) -# PDF 'make pg.pdf' (requires texi2dvi) -# PostScript 'make pg.ps' (requires texi2dvi and dvips) +# printed copy 'make wpg-book' (requires troff, texi2dvi, dvips, & a printer) +# Windows help 'make wpg.hlp' (requires makertf and hcrtf) +# HTML 'make wpg.html' (requires texi2html and perl) +# info 'make wpg.info' (requires makeinfo or GNU emacs) +# PDF 'make wpg.pdf' (requires texi2dvi) +# PostScript 'make wpg.ps' (requires texi2dvi and dvips) # # WAVE User's Guide -# printed copy 'make ug' (requires troff, latex, dvips, and a printer) -# HTML 'make ug.html' (requires latex2html and perl) -# PDF 'make ug.pdf' (requires pdflatex) -# PostScript 'make ug.ps' (requires latex and dvips) +# printed copy 'make wug-book' (requires troff, latex, dvips, and a printer) +# HTML 'make wug.html' (requires latex2html and perl) +# PDF 'make wug.pdf' (requires pdflatex) +# PostScript 'make wug.ps' (requires latex and dvips) + +# * See 'wag-src/Makefile' for information about making a PostScript version +# of the WFDB Applications Guide without the use of ps2pdf or pdftops. # If GNU emacs or GNU info has been installed on your system, a hypertext # version of the WFDB Programmer's Guide may be installed by typing `make diff -Naur wfdb-10.2.5/doc/Makefile.tpl wfdb-10.2.6/doc/Makefile.tpl --- wfdb-10.2.5/doc/Makefile.tpl Thu Dec 20 18:27:51 2001 +++ wfdb-10.2.6/doc/Makefile.tpl Mon Jun 24 10:19:00 2002 @@ -1,5 +1,5 @@ -# file: Makefile.tpl G. Moody 24 May 2000 -# Last revised: 20 December 2001 +# file: Makefile.tpl G. Moody 24 May 2000 +# Last revised: 11 March 2002 # Change the settings below as appropriate for your setup. # Set COLORS to 'color' if you have a color printer and would like to print @@ -64,7 +64,8 @@ MAN7 = $(MANDIR)/man7 # If you want to put the man pages somewhere else, edit 'maninst.sh' first. -# PERL is the full pathname of your perl interpreter, needed for 'make htmlpg'. +# PERL is the full pathname of your perl interpreter, needed for +# 'make wpg.html'. PERL = /usr/bin/perl # PSPRINT is the name of the program that prints PostScript files. If your @@ -74,7 +75,7 @@ PSPRINT = lpr # TROFF is the name of the program that prints UNIX troff files (needed to -# 'make ag' and for the covers of the guides). Use 'groff' if you have +# 'make wag-book' and for the covers of the guides). Use 'groff' if you have # GNU groff (the preferred formatter). TROFF = groff # Use 'ptroff' if you have Adobe TranScript software. diff -Naur wfdb-10.2.5/doc/README wfdb-10.2.6/doc/README --- wfdb-10.2.5/doc/README Sun Mar 10 17:07:18 2002 +++ wfdb-10.2.6/doc/README Mon Jun 24 09:59:40 2002 @@ -1,5 +1,5 @@ file: README G. Moody 7 September 1989 - Last revised: 10 March 2002 + Last revised: 24 June 2002 This directory and its subdirectories contain documentation for the WFDB Software Package, including UNIX man pages in troff source format for the WFDB @@ -10,12 +10,12 @@ installed on-line by following the instructions in `Makefile'. If you follow the instructions for a standard installation of the WFDB Software -Package, the man pages from the wfdb-apps subdirectory will be installed so -they can be read using 'man', 'xman', etc. If you have the necessary -formatting software, these man pages and a large amount of other documentation -can be produced in a wide variety of formats from the sources in in this -directory (see 'Makefile'). Here is a brief list of available formats and the -commands needed to produce them: +Package, the man pages from the wag-src subdirectory will be installed so they +can be read using 'man', 'xman', etc. If you have the necessary formatting +software, these man pages and a large amount of other documentation can be +produced in a wide variety of formats from the sources in in this directory +(see 'Makefile'). Here is a brief list of available formats and the commands +needed to produce them: WFDB Applications Guide printed copy 'make wag-book'(requires troff, tbl, latex, dvips, & a printer) @@ -34,7 +34,7 @@ WAVE User's Guide printed copy 'make wug-book'(requires troff, latex, dvips, and a printer) - HTML 'make wug.html'(requires latex2html and perl) + HTML 'make wug.html'(requires latex2html and perl) ** PDF 'make wug.pdf' (requires pdflatex) PostScript 'make wug.ps' (requires latex and dvips) @@ -45,6 +45,13 @@ references properly. If you encounter errors while attempting to make wpg.pdf, try replacing pdflatex's copy of texinfo.tex with a version dated June 2001 or later. This problem occurs under Red Hat Linux 7.2. + +** Recent versions of Red Hat Linux have included several different versions + of latex2html and of the utilities it uses, with a variety of bugs in the + image-generation process. If some of the images generated using 'make + wug.html' have a black border at the left and lower edges, replace + /usr/bin/pstoimg with the version found in wug-src/wave/misc and try again. + These problems occur under Red Hat Linux 7.1, 7.2, and 7.3. The following files will be found in this directory: diff -Naur wfdb-10.2.5/doc/wag-src/Makefile wfdb-10.2.6/doc/wag-src/Makefile --- wfdb-10.2.5/doc/wag-src/Makefile Sun Mar 10 12:42:43 2002 +++ wfdb-10.2.6/doc/wag-src/Makefile Mon Jun 24 22:43:07 2002 @@ -59,12 +59,12 @@ # PostScript 'make wag.ps' (requires troff, tbl, latex, and dvips) # _____________________________________________________________________________ # file: version.def G. Moody 24 May 2000 -# Last revised: 15 January 2002 +# Last revised: 11 March 2002 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 2 -RELEASE = 5 +RELEASE = 6 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # VDEFS is the set of C compiler options needed to set version number variables @@ -72,7 +72,7 @@ VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE) # _____________________________________________________________________________ -PACKAGE=wfdb-10.2.5 +PACKAGE=wfdb-10.2.6 # file: linux.def G. Moody 31 May 2000 # Last revised: 17 December 2001 # 'make' definitions for compiling the WFDB Software Package under Linux @@ -195,7 +195,7 @@ echo "Nothing to be done for lib-post-uninstall" # _____________________________________________________________________________ # file: Makefile.tpl G. Moody 24 May 2000 -# Last revised: 20 December 2001 +# Last revised: 24 June 2002 # Change the settings below as appropriate for your setup. # D2PARGS is a list of options for dvips. Uncomment one of these to set the @@ -263,6 +263,31 @@ # Use the following definition to get the GNU groff version of the 'ms' macros. TMS = -mgs +# WAGPSREQ is the target that must be made in order to make the PostScript +# version of the manual (wag.ps), and MAKEWAGPS is the command that must be +# run in order to do this. The process is a bit convoluted, because the +# simple PostScript version (wag0.ps) is concatenated from several PostScript +# files and thus lacks DSCs (document structuring comments). wag0.ps can be +# printed or viewed directly, but most (perhaps all) viewers are incapable of +# allowing the user to jump to a random page in a PostScript file that lacks +# DSCs, and it's not easy to select a subset of pages to print in such a +# file. If you have ghostscript version 7.x or later (earlier versions will +# not work properly), ps2pdf (included with ghostscript) and acroread (or +# pdftops), you can translate wag0.ps into PDF (adding the DSCs in the +# process), and then translate the PDF file back into PostScript with DSCs. +# A disadvantage of this is that the PDF version is roughly 25% larger than +# wag0.ps, and the final PostScript version is nearly twice as large as +# wag0.ps, and takes longer to render as a result. To enable creation of +# PostScript with DSCs in this way, uncomment the next two lines: +WAGPSREQ = wag.pdf +MAKEWAGPS = acroread -toPostScript wag.pdf +# You can use pdftops instead of acroread by commenting out the previous line +# and uncommenting the next one. +# MAKEWAGPS = pdftops wag.pdf +# Otherwise, uncomment the next two lines instead: +# WAGPSREQ = wag0.ps +# MAKEWAGPS = cp wag0.ps wag.ps + # It should not be necessary to modify anything below this line. # ----------------------------------------------------------------------------- @@ -282,9 +307,9 @@ rm -f ../wag/* # 'make wag-book': print a copy of the WFDB Applications Guide -wag-book: wag.ps +wag-book: wag0.ps $(TROFF) wag.cover >wagcover.ps - $(PSPRINT) wagcover.ps wag.ps + $(PSPRINT) wagcover.ps wag0.ps # 'make wag.html': format the WFDB Applications Guide as HTML wag.html: @@ -322,22 +347,25 @@ $(LN) $(MAN1)/view.1 $(MAN1)/vsetup.1 # 'make wag.pdf': format the WFDB Applications Guide as PDF -wag.pdf: wag.ps - ps2pdf wag.ps wag.pdf - # The PDF produced this way is not so great -- a better way - # of generating PDF will be implemented in the future +wag.pdf: wag0.ps + ps2pdf wag0.ps wag.pdf + +# 'make wag.ps': format the WFDB Applications Guide as PostScript +wag.ps: $(WAGPSREQ) + $(MAKEWAGPS) -# 'make ag.ps': format the WFDB Applications Guide as PostScript -wag.ps: +wag0.ps: latex wag dvips -o wag1.ps wag.dvi tbl appguide.int | $(TROFF) $(TMS) >wag2.ps tbl *.1 *.3 *.5 | $(TROFF) $(TMAN) >wag3.ps + latex blankpage + dvips $(D2PARGS) -o blankpage.ps blankpage.dvi latex install dvips $(D2PARGS) -o wag4.ps install.dvi latex eval dvips $(D2PARGS) -o wag5.ps eval.dvi - cat wag[12345].ps | grep -v '^%%' >wag.ps + cat wag[123].ps blankpage.ps wag4.ps blankpage.ps wag5.ps | grep -v '^%%' >wag0.ps # 'make clean': remove intermediate and backup files clean: diff -Naur wfdb-10.2.5/doc/wag-src/Makefile.tpl wfdb-10.2.6/doc/wag-src/Makefile.tpl --- wfdb-10.2.5/doc/wag-src/Makefile.tpl Thu Dec 20 15:10:28 2001 +++ wfdb-10.2.6/doc/wag-src/Makefile.tpl Mon Jun 24 20:06:36 2002 @@ -1,5 +1,5 @@ # file: Makefile.tpl G. Moody 24 May 2000 -# Last revised: 20 December 2001 +# Last revised: 24 June 2002 # Change the settings below as appropriate for your setup. # D2PARGS is a list of options for dvips. Uncomment one of these to set the @@ -67,6 +67,31 @@ # Use the following definition to get the GNU groff version of the 'ms' macros. TMS = -mgs +# WAGPSREQ is the target that must be made in order to make the PostScript +# version of the manual (wag.ps), and MAKEWAGPS is the command that must be +# run in order to do this. The process is a bit convoluted, because the +# simple PostScript version (wag0.ps) is concatenated from several PostScript +# files and thus lacks DSCs (document structuring comments). wag0.ps can be +# printed or viewed directly, but most (perhaps all) viewers are incapable of +# allowing the user to jump to a random page in a PostScript file that lacks +# DSCs, and it's not easy to select a subset of pages to print in such a +# file. If you have ghostscript version 7.x or later (earlier versions will +# not work properly), ps2pdf (included with ghostscript) and acroread (or +# pdftops), you can translate wag0.ps into PDF (adding the DSCs in the +# process), and then translate the PDF file back into PostScript with DSCs. +# A disadvantage of this is that the PDF version is roughly 25% larger than +# wag0.ps, and the final PostScript version is nearly twice as large as +# wag0.ps, and takes longer to render as a result. To enable creation of +# PostScript with DSCs in this way, uncomment the next two lines: +WAGPSREQ = wag.pdf +MAKEWAGPS = acroread -toPostScript wag.pdf +# You can use pdftops instead of acroread by commenting out the previous line +# and uncommenting the next one. +# MAKEWAGPS = pdftops wag.pdf +# Otherwise, uncomment the next two lines instead: +# WAGPSREQ = wag0.ps +# MAKEWAGPS = cp wag0.ps wag.ps + # It should not be necessary to modify anything below this line. # ----------------------------------------------------------------------------- @@ -86,9 +111,9 @@ rm -f ../wag/* # 'make wag-book': print a copy of the WFDB Applications Guide -wag-book: wag.ps +wag-book: wag0.ps $(TROFF) wag.cover >wagcover.ps - $(PSPRINT) wagcover.ps wag.ps + $(PSPRINT) wagcover.ps wag0.ps # 'make wag.html': format the WFDB Applications Guide as HTML wag.html: @@ -126,22 +151,25 @@ $(LN) $(MAN1)/view.1 $(MAN1)/vsetup.1 # 'make wag.pdf': format the WFDB Applications Guide as PDF -wag.pdf: wag.ps - ps2pdf wag.ps wag.pdf - # The PDF produced this way is not so great -- a better way - # of generating PDF will be implemented in the future +wag.pdf: wag0.ps + ps2pdf wag0.ps wag.pdf + +# 'make wag.ps': format the WFDB Applications Guide as PostScript +wag.ps: $(WAGPSREQ) + $(MAKEWAGPS) -# 'make ag.ps': format the WFDB Applications Guide as PostScript -wag.ps: +wag0.ps: latex wag dvips -o wag1.ps wag.dvi tbl appguide.int | $(TROFF) $(TMS) >wag2.ps tbl *.1 *.3 *.5 | $(TROFF) $(TMAN) >wag3.ps + latex blankpage + dvips $(D2PARGS) -o blankpage.ps blankpage.dvi latex install dvips $(D2PARGS) -o wag4.ps install.dvi latex eval dvips $(D2PARGS) -o wag5.ps eval.dvi - cat wag[12345].ps | grep -v '^%%' >wag.ps + cat wag[123].ps blankpage.ps wag4.ps blankpage.ps wag5.ps | grep -v '^%%' >wag0.ps # 'make clean': remove intermediate and backup files clean: diff -Naur wfdb-10.2.5/doc/wag-src/ann2rr.1 wfdb-10.2.6/doc/wag-src/ann2rr.1 --- wfdb-10.2.5/doc/wag-src/ann2rr.1 Tue Jan 15 15:20:44 2002 +++ wfdb-10.2.6/doc/wag-src/ann2rr.1 Sat Jun 1 15:05:39 2002 @@ -12,7 +12,7 @@ .PP Use \fBann2rr\fR to extract a list of intervals, in text format, from an annotation file. By default, the intervals are listed in units of sample -intervals (use \fBsampfreq\fR(1) to determine the sampling frequency of the +intervals (use \fIsampfreq\fR(1) to determine the sampling frequency of the input record if necessary). Options for \fBann2rr\fR include: .TP \fB-c\fR @@ -85,7 +85,7 @@ Multiply input by \fIn\fR to obtain intervals (or, if \fB-T\fR is also used, times of occurrence) in units of sample intervals). Default: \fIn\fR = 1. .PP -Note that \fBwrann\fR(1) also provides a way to generate an annotation file from +Note that \fIwrann\fR(1) also provides a way to generate an annotation file from text. Unlike that of \fBrr2ann\fR, \fBwrann\fR's input format permits specifying annotation types and other fields in addition to the times of occurrence. .PP diff -Naur wfdb-10.2.5/doc/wag-src/appguide.int wfdb-10.2.6/doc/wag-src/appguide.int --- wfdb-10.2.5/doc/wag-src/appguide.int Thu Dec 20 14:03:23 2001 +++ wfdb-10.2.6/doc/wag-src/appguide.int Mon Jun 24 16:17:13 2002 @@ -1,5 +1,5 @@ \" file: appguide.int G. Moody July 1989 -\" Last revised: 15 November 2001 +\" Last revised: 1 June 2002 \" Table of contents and introduction to the WFDB Applications Guide. \" \" To print this document using GNU groff, use: @@ -42,58 +42,59 @@ 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 +log10 calculate common logarithms of two-column data 23 +lomb estimate power spectrum using the Lomb periodogram method 24 +memse estimate power spectrum using maximum entropy (all poles) method 25 +mfilt general-purpose median filter for WFDB records 27 +mrgann merge annotation files 28 +mxm ANSI/AAMI-standard measurement-by-measurement comparator 30 +nst noise stress test for ECG analysis programs 32 +plot2d, plot3d make 2-D or 3-D plots from text files of data, using \fIgnuplot\fR 35 +plotstm produce scatter plot of ST measurement errors on a PostScript device 37 +plt make 2-D plots 38 +pschart produce annotated `chart recordings' on a PostScript device 43 +psfd produce annotated `full-disclosure' plots on a PostScript device 47 +rdann read a WFDB annotation file 51 +rdsamp read WFDB signal files 53 +rxr ANSI/AAMI-standard run-by-run annotation comparator 54 +sampfreq show sampling frequency for a record 56 +sample digitize and replay analog signals (MS-DOS only) 57 +setwfdb, cshsetwfdb set WFDB environment variables 61 +sigamp measure signal amplitudes of a WFDB record 63 +skewedit edit skew fields of header file(s) 64 +snip copy an excerpt of a WFDB record 65 +sortann rearrange annotations in canonical order 66 +sqrs, sqrs125 single-channel QRS detector 68 +sumann summarize the contents of a WFDB annotation file 70 +sumstats derive aggregate statistics from bxb, rxr, etc., line-format output 71 +tach heart rate tachometer 72 +view, vsetup WFDB browser for MS-DOS 74 +wave waveform analyzer, viewer, and editor for the X Window System 77 +wfdbcat copy WFDB records to standard output 87 +wfdbcollate collate WFDB records into a multi-segment record 88 +wfdb-config print WFDB library info 90 +wfdbdesc read signal specifications 91 +wfdbwhich find a WFDB file and print its pathname 92 +wrann write a WFDB annotation file 93 +wrsamp write WFDB signal files 94 +wview WFDB browser for MS Windows 96 +xform sampling frequency, amplitude, and format conversion for WFDB records 100 \fBSection 3: WFDB library\fP -wfdb Waveform Database library 100 - +wfdb Waveform Database library 102 +wfdbf Waveform Database library wrappers for Fortran 105 \fBSection 5: WFDB file formats\fP -annot WFDB annotation file formats 103 -header WFDB header file format 104 -signal WFDB signal file formats 111 -wfdbcal WFDB calibration file format 113 +annot WFDB annotation file formats 108 +header WFDB header file format 109 +signal WFDB signal file formats 116 +wfdbcal WFDB calibration file format 118 \fBAppendices\fP - \fIInstalling the WFDB Software Package\fP 115 - \fIEvaluating ECG Analyzers\fP 119 + \fIInstalling the WFDB Software Package\fP 121 + \fIEvaluating ECG Analyzers\fP 125 .TE .LP @@ -128,21 +129,36 @@ Certain types of command arguments are used by many of the applications described in this guide. These include: .IP \fIrecord\fP 15 -Where this appears, substitute the name of a WFDB record. MIT-BIH Arrhythmia -Database record names are 3-digit numbers, AHA Database record names are -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-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. -A record name is \fInot\fP a file name. See the \fIWFDB Programmer's Guide\fP -for further details on record names. +Where this appears, substitute the name of a WFDB record. \fBA record +name is \fInot\fB a file name!\fR The first part of the name of a .hea +file is the name of the record to which the .hea file belongs; so the +record name corresponding to `100.hea' is `100'. MIT-BIH Arrhythmia +Database record names are 3-digit numbers, AHA Database record names +are 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-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. Once +again: a record name is \fBnot\fP a file name; record names never +include an extension (.hea, .dat, etc.). +.PP +Wherever a record name can be supplied to a WFDB application, you may include +path information if necessary. For example, if the WFDB path includes the +current directory, and if the current directory includes a subdirectory named +`my_records', and that directory contains a record named `record_23', you +can supply `my_records/record_23' in place of a record 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 -`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. +Where this appears, substitute an annotator name. \fBAnnotator names +are \fInot\fB file names!\fR The suffix (extension) of the name of an +annotation file is the annotator name for that file; so, for example, +the annotator name for `e0104.atr' is `atr'. The special annotator +name `atr' is used to name the set of \fIreference annotations\fP +supplied by the database developers. Other annotation sets have +annotator names that 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 @@ -166,12 +182,15 @@ beneath, etc. Where the notation `\fIsignal-list\fP' (or `\fIsignal ...\fP') appears in this guide, you may specify more than one signal in any desired order; separate the signal numbers using spaces. -.bp .PP -Under UNIX, if the WFDB Software Package has been installed on your -system, you can also access the information contained in this guide -using \fIman\fR and related programs. In some cases you may need -to add \fB/usr/local/man\fR to your \fBMANPATH\fR environment variable, in +Under Linux or Unix, if the WFDB Software Package has been installed +on your system, you can also access the information contained in the +main sections of this guide using \fIman\fR and related programs. For +example, to see the manual page for \fIrdsamp\fR, run the command `man +rdsamp'. (This also works under MS-Windows if you have installed the +Cygwin package, which includes the \fIman\fR utility for formatting +and reading manual pages.) In some cases you may need to add +\fB/usr/local/man\fR to your \fBMANPATH\fR environment variable, in order to make these pages accessible to \fIman\fR. .PP An HTML version of this guide is also available; point your Web browser to diff -Naur wfdb-10.2.5/doc/wag-src/blankpage.tex wfdb-10.2.6/doc/wag-src/blankpage.tex --- wfdb-10.2.5/doc/wag-src/blankpage.tex Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.6/doc/wag-src/blankpage.tex Sat Jun 1 14:01:47 2002 @@ -0,0 +1,8 @@ +\documentclass{article} +\usepackage{rawfonts} +\IfFileExists{times.sty}{\usepackage{times}}{\@missingfileerror{times}{sty}} +\pagestyle{empty} +\begin{document} +\newpage +\center{[This page intentionally left blank.]} +\end{document} diff -Naur wfdb-10.2.5/doc/wag-src/eval.tex wfdb-10.2.6/doc/wag-src/eval.tex --- wfdb-10.2.5/doc/wag-src/eval.tex Thu Dec 20 14:03:13 2001 +++ wfdb-10.2.6/doc/wag-src/eval.tex Sat Jun 1 14:07:04 2002 @@ -1,4 +1,6 @@ \documentclass[twoside]{article} +\usepackage{rawfonts} +\IfFileExists{times.sty}{\usepackage{times}}{\@missingfileerror{times}{sty}} \oddsidemargin 0.1in \evensidemargin -0.1in \def\textwidth{6.375 in} @@ -9,7 +11,7 @@ \date{} \begin{document} -\setcounter{page}{119} +\setcounter{page}{125} \maketitle diff -Naur wfdb-10.2.5/doc/wag-src/fixag.sed wfdb-10.2.6/doc/wag-src/fixag.sed --- wfdb-10.2.5/doc/wag-src/fixag.sed Tue Dec 18 16:52:32 2001 +++ wfdb-10.2.6/doc/wag-src/fixag.sed Mon Jun 24 20:16:49 2002 @@ -1,4 +1,5 @@ s/sampfreq-1.htm/sampfr-1.htm/g +s/wfdbcal-5.htm/wfdbca-5.htm/g s/wfdbwhich-1.htm/wfdbwh-1.htm/g s/sumstats-1.htm/sumsta-1.htm/g s/ecgeval-1.htm/ecgeva-1.htm/g @@ -7,15 +8,34 @@ s/wfdbcollate-1.htm/wfdbco-1.htm/g s/plotstm-1.htm/plotst-1.htm/g s/setwfdb-1.htm/setwfd-1.htm/g +s/wfdb-config-1.htm/wfdb-c-1.htm/g +s/cc<\/I>(1)<\/A>/cc<\/I>(1)/g +s/gcc<\/I>(1)<\/A>/gcc<\/I>(1)/g +s/ld<\/I>(1)<\/A>/ld<\/I>(1)/g s/scanf<\/I>(3)<\/A>/scanf<\/I>(3)/g s/fseek<\/I>(3)<\/A>/fseek<\/I>(3)/g s/gnuplot<\/I>(1)<\/A>/gnuplot<\/I>(1)/g s/plot<\/I>(1)<\/A>/plot<\/I>(1)/g s/plot<\/I>(3)<\/A>/plot<\/I>(3)/g s/X<\/I>(1)<\/A>/X<\/I>(1)/g -s/xview<\/I>(1)<\/A>/xview<\/I>(1)/g s/sh<\/I>(1)<\/A>/sh<\/I>(1)/g +s/xview<\/I>(1)<\/A>/xview<\/I>(1)/g +s/F(n)<\/I><\/A>/F(n)<\/I>/g +s/F(n)<\/A>/F(n)/g +s/osigfopen(nsig)<\/A>/osigfopen(nsig)/g +s/N (1)<\/A>/N (1)/g +s/N (2)<\/A>/N (2)/g +s/N (3)<\/A>/N (3)/g +s/N (4)<\/A>/N (4)/g +s/N (8)<\/A>/N (8)/g +s/iconedit<\/B>(1)<\/A>/iconedit<\/B>(1)/g +s/openwin<\/B>(1)<\/A>/openwin<\/B>(1)/g +s/xdpyinfo<\/B>(1)<\/A>/xdpyinfo<\/B>(1)/g s/xdpyinfo<\/I>(1)<\/A>/xdpyinfo<\/I>(1)/g +s/xhost<\/B>(1)<\/A>/xhost<\/B>(1)/g +s/xlsfonts<\/B>(1)<\/A>/xlsfonts<\/B>(1)/g +s/xmodmap<\/B>(1)<\/A>/xmodmap<\/B>(1)/g +s/xnews<\/B>(1)<\/A>/xnews<\/B>(1)/g s/\n<\/BODY>/<\/UL>\n



\nGeorge B. Moody (george@mit.edu<\tt>)<\/A>\n<\/ADDRESS><\I>\n<\/BODY>/ s//WFDB Applications Guide<\/A>/ diff -Naur wfdb-10.2.5/doc/wag-src/install.tex wfdb-10.2.6/doc/wag-src/install.tex --- wfdb-10.2.5/doc/wag-src/install.tex Thu Dec 20 14:02:41 2001 +++ wfdb-10.2.6/doc/wag-src/install.tex Sat Jun 1 14:10:00 2002 @@ -1,4 +1,6 @@ \documentclass[twoside]{article} +\usepackage{rawfonts} +\IfFileExists{times.sty}{\usepackage{times}}{\@missingfileerror{times}{sty}} \oddsidemargin 0.1in \evensidemargin -0.1in \def\textwidth{6.375 in} @@ -9,7 +11,7 @@ \date{} \begin{document} -\setcounter{page}{115} +\setcounter{page}{121} \maketitle @@ -84,7 +86,7 @@ \subsection*{MS-Windows} If you have not already done so, install the Cygwin development environment -(freely available from {\tt http://sources.redhat.com/cygwin/}). This includes +(freely available from {\tt http://\-sources.\-red\-hat.\-com/\-cygwin/}). This includes {\tt 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. @@ -184,6 +186,4 @@ 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. -\newpage -\center{[This page intentionally left blank.]} \end{document} diff -Naur wfdb-10.2.5/doc/wag-src/intro.ht0 wfdb-10.2.6/doc/wag-src/intro.ht0 --- wfdb-10.2.5/doc/wag-src/intro.ht0 Tue Oct 16 22:53:00 2001 +++ wfdb-10.2.6/doc/wag-src/intro.ht0 Mon Jun 24 14:44:47 2002 @@ -4,7 +4,7 @@

-Up: WFDB Applications Guide +Up: WFDB Applications Guide

Introduction

@@ -30,16 +30,19 @@ your environment is set up properly so that WFDB applications can find their input files. See setwfdb(1) 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. +the WFDB Programmer's Guide, in +the section about the database path.

Certain types of command arguments are used by many of the applications described in this guide. These include:

record -
Where this appears, substitute the name of a WFDB record. MIT-BIH -Arrhythmia Database record names are 3-digit numbers, AHA Database +
Where this appears, substitute the name of a WFDB record. A record +name is not a file name! The first part of the name of a +.hea file is the name of the record to which the .hea file +belongs; so the record name corresponding to 100.hea is 100. +MIT-BIH Arrhythmia Database record names are 3-digit numbers, AHA Database record names are 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 @@ -47,22 +50,34 @@ 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. -A record name is not a file name. See the -WFDB Programmer's Guide for -further details on record names. +Once again: a record name is not a file name; record names +never include an extension (.hea, .dat, etc.). +

+Wherever a record name can be supplied to a WFDB application, you may include +path information if necessary. For example, if the WFDB path includes the +current directory, and if the current directory includes a subdirectory named +my_records, and that directory contains a record named +record_23, you can supply my_records/record_23 in place of a +record name. See the WFDB Programmer's +Guide for further details on record +names.

annotator -
Where this appears, substitute an annotator name. The annotator name +
Where this appears, substitute an annotator name. Annotator names are +not file names! The suffix (extension) of the name of an annotation +file is the annotator name for that file; so, for example, the annotator name +for `e0104.atr' is `atr'. The special annotator name `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. +supplied by the database developers. Other annotation sets have annotator +names that may contain letters, digits, and underscores, as for record names.
time
Where this appears, substitute a string in standard time format. Time arguments generally specify elapsed times from the beginning of the record (for exceptions to this rule, see the section on the -strtim function in the -WFDB Programmer's Guide). Examples of standard time format: +strtim function in the +WFDB Programmer's Guide). Examples of +standard time format: @@ -83,11 +98,14 @@

-Under UNIX, if the WFDB Software Package has been installed on your +Under Linux or UNIX, if the WFDB Software Package has been installed on your system, you can also access the information contained in this guide -using man and related programs. In some cases you may need -to add /usr/local/man to your MANPATH environment variable, -in order to make these pages accessible to man. +using man and related programs. For example, to see the manual +page for rdsamp, run the command man rdsamp. (This also +works under MS-Windows if you have installed the Cygwin package, which includes +the man utility for formatting and reading manual pages.) In some +cases you may need to add /usr/local/man to your MANPATH +environment variable, in order to make these pages accessible to man.


@@ -95,6 +113,6 @@ welcome. Please send them to:

George B. Moody (george@mit.edu)

-16 October 2001 +24 June 2002 diff -Naur wfdb-10.2.5/doc/wag-src/sqrs.1 wfdb-10.2.6/doc/wag-src/sqrs.1 --- wfdb-10.2.5/doc/wag-src/sqrs.1 Tue Oct 16 22:56:12 2001 +++ wfdb-10.2.6/doc/wag-src/sqrs.1 Tue May 28 11:57:50 2002 @@ -1,4 +1,4 @@ -.TH SQRS 1 "16 October 2001" "WFDB software 10.2" "WFDB applications" +.TH SQRS 1 "28 May 2002" "WFDB software 10.2" "WFDB applications" .SH NAME sqrs \- single-channel QRS detector .SH SYNOPSIS @@ -18,14 +18,24 @@ normal; the annotation file may also contain `artifact' annotations at locations that \fIsqrs\fR believes are noise-corrupted. .PP -\fIsqrs\fR can process records containing any number of signals, but it uses -only one signal for QRS detection (signal 0 by default; this can be changed -using the \fB-s\fR option, see below). For best results on adult human ECGs, -use \fIxform\fR to resample the input signal at 250 Hz if a different sampling -frequency was used originally (or use \fIsqrs125\fR, a variant of \fIsqrs\fR -designed for signals sampled at 125 Hz). For other ECGs, it may be necessary to -experiment with the input sampling frequency and the time constants indicated -in the source file. +\fIsqrs\fR can process records containing any number of signals, but +it uses only one signal for QRS detection (signal 0 by default; this +can be changed using the \fB-s\fR option, see below). \fIsqrs\fR is +optimized for use with adult human ECGs. For other ECGs, it may be +necessary to experiment with the sampling frequency as recorded in the +input record's header file (see \fIheader\fR(5)) and the time constants +indicated in the source file. +.PP +\fIsqrs\fR uses the WFDB library's \fIsetifreq\fR function to resample +the input signal at 250 Hz if a significantly different sampling frequency +is indicated in the header file. \fIsqrs125\fR is identical to \fIsqrs\fR +except that its filter and time constants have been designed for 125 Hz +input, so that its speed is roughly twice that of \fIsqrs\fR. If the input +signal has been sampled at a frequency near 125 Hz, the quality of the +outputs of \fIsqrs\fR and \fIsqrs125\fR will be nearly identical. (Note +that older versions of these programs did not resample their inputs; rather, +they warned if the sampling frequency was significantly different than the +ideal frequency, and suggested using \fIxform\fR(1) to resample the input.) .PP This program is provided as an example only, and is not intended for any clinical application. At the time the algorithm was originally published, diff -Naur wfdb-10.2.5/doc/wag-src/wag.cover wfdb-10.2.6/doc/wag-src/wag.cover --- wfdb-10.2.5/doc/wag-src/wag.cover Sun Mar 10 11:05:25 2002 +++ wfdb-10.2.6/doc/wag-src/wag.cover Sat Jun 1 14:58:03 2002 @@ -45,7 +45,7 @@ -MARCH 2002 +JUNE 2002 .bp diff -Naur wfdb-10.2.5/doc/wag-src/wag.ht0 wfdb-10.2.6/doc/wag-src/wag.ht0 --- wfdb-10.2.5/doc/wag-src/wag.ht0 Sun Mar 10 11:06:18 2002 +++ wfdb-10.2.6/doc/wag-src/wag.ht0 Mon Jun 24 14:45:37 2002 @@ -11,8 +11,8 @@ Up:Books about PhysioToolkit

WFDB Applications Guide

Tenth Edition
-(Revised for release 10.2.5)
-10 March 2002
+(Revised for release 10.2.6)
+24 June 2002



@@ -61,6 +61,7 @@

  • calsig: calibrate signals of a WFDB record
  • coherence: estimate coherence and cross-spectrum of two time series +
  • dfa: detrended fluctuation analysis
  • ecgeval: generate and run ECG analyzer evaluation script
  • epic: ANSI/AAMI-standard episode-by-episode @@ -117,6 +118,7 @@
  • wfdbcat: copy WFDB files to standard output
  • wfdbcollate: collate WFDB records into a multi-segment record +
  • wfdb-config: print WFDB library info
  • wfdbdesc: read signal specifications
  • wfdbwhich: find a WFDB file and print its pathname @@ -129,6 +131,8 @@

    Functions

    • wfdb: Waveform Database library +
    • wfdbf: Waveform Database library bindings for + Fortran

    File formats

      diff -Naur wfdb-10.2.5/doc/wag-src/wag.tex wfdb-10.2.6/doc/wag-src/wag.tex --- wfdb-10.2.5/doc/wag-src/wag.tex Thu Dec 20 13:09:56 2001 +++ wfdb-10.2.6/doc/wag-src/wag.tex Mon Jun 24 12:19:47 2002 @@ -1,10 +1,12 @@ \documentclass[twoside]{book} +\usepackage{rawfonts} +\IfFileExists{times.sty}{\usepackage{times}}{\@missingfileerror{times}{sty}} \pagenumbering{roman} \title{WFDB Applications Guide} \author{Tenth Edition\\ -(revised and with corrections for WFDB 10.2.4)\\ -20 December 2001\\ +(revised and with corrections for WFDB 10.2.6)\\ +24 June 2002\\ \\ \\ \\ @@ -18,7 +20,7 @@ \pagestyle{empty} \vspace*{\fill} \noindent -Copyright \copyright 1992 -- 2001 George B. Moody +Copyright \copyright 1992 -- 2002 George B. Moody \vspace{1 in} \noindent @@ -34,6 +36,7 @@ USA\\ \end{quote} +\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. diff -Naur wfdb-10.2.5/doc/wag-src/wfdb-config.1 wfdb-10.2.6/doc/wag-src/wfdb-config.1 --- wfdb-10.2.5/doc/wag-src/wfdb-config.1 Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.6/doc/wag-src/wfdb-config.1 Thu May 30 14:47:24 2002 @@ -0,0 +1,35 @@ +.TH WFDB-CONFIG 1 "30 May 2002" "WFDB software 10.2.6" "WFDB applications" +.SH NAME +wfdb-config \- print WFDB library version and configuration info +.SH SYNOPSIS +\fBwfdb-config\fR [ \fB--cflags\fR ] [ \fB--libs\fR ] [ \fB--version\fR ] +.SH DESCRIPTION +This program prints information about the WFDB library installation. Use +it with one of these options: +.TP +\fB--cflags\fR +Print options needed by \fIcc\fR(1) or \fIgcc\fR(1) to find the WFDB +library's 'include' (*.h) files. +.TP +\fB--libs\fR +Print options needed by \fIcc\fR(1), \fIgcc\fR(1), or \fIld\fR(1) to find +and link a program with the WFDB library (and, if NETFILES support is +compiled into the WFDB library, with the \fIlibwww\fR libraries). +.TP +\fB--version\fR +Print the version number of the most recent version of the WFDB library +that has been installed. + +.SS Example +.PP +To compile \fIprog.c\fR with the WFDB library, use: +.br + \fBgcc `wfdb-config --cflags` prog.c `wfdb-config --libs`\fR +.br +Additional options may be added to the command if needed (for example, +to link to other libraries). + +.SH AUTHOR +George B. Moody (george@mit.edu) +.SH SOURCE +http://www.physionet.org/physiotools/wfdb/app/wfdb-config.c diff -Naur wfdb-10.2.5/doc/wag-src/wfdb.3 wfdb-10.2.6/doc/wag-src/wfdb.3 --- wfdb-10.2.5/doc/wag-src/wfdb.3 Wed Oct 31 20:48:53 2001 +++ wfdb-10.2.6/doc/wag-src/wfdb.3 Sat Jun 1 13:24:27 2002 @@ -1,4 +1,4 @@ -.TH WFDB 3 "31 October 2001" "WFDB software 10.2.1" "WFDB library" +.TH WFDB 3 "1 June 2002" "WFDB software 10.2.6" "WFDB library" .SH NAME wfdb \- Waveform Database library .SH SYNOPSIS @@ -30,6 +30,8 @@ .br WFDB_Frequency getcfreq(void) .br +WFDB_Frequency getifreq(void) +.br char *getwfdb(void) .br int getframe(WFDB_Sample *\fIvector\fP) @@ -86,6 +88,8 @@ .br void setcfreq(WFDB_Frequency \fIcounter_frequency\fP) .br +int setifreq(WFDB_Frequency \fIgetvec_frequency\fP) +.br void setwfdb(char *\fIdatabase_path_string\fP) .br int setecgstr(int \fIannotation_code\fP, char *\fIannotation_mnemonic_string\fP) @@ -177,11 +181,11 @@ .SH SEE ALSO .TP \fIWFDB Programmer's Guide\fR -(On systems that support GNU emacs, the \fIGuide\fR may be available on-line +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 \fIi\fR to find out. An HTML version may be installed on your system (in -\fI/usr/help/html/dbpg\fP); the most recent version can be viewed on-line at -\fBhttp://www.physionet.org/physiotools/dbpg/\fP. +\fI/usr/help/html/wpg\fP); the most recent version can be viewed on-line at +\fBhttp://www.physionet.org/physiotools/wpg/\fP. .PP The WFDB library can also be used with Fortran programs; see the \fIGuide\fR for details. diff -Naur wfdb-10.2.5/doc/wag-src/wfdbf.3 wfdb-10.2.6/doc/wag-src/wfdbf.3 --- wfdb-10.2.5/doc/wag-src/wfdbf.3 Wed Dec 31 19:00:00 1969 +++ wfdb-10.2.6/doc/wag-src/wfdbf.3 Mon Jun 24 17:15:19 2002 @@ -0,0 +1,224 @@ +.TH WFDBF 3 "24 June 2002" "WFDB software 10.2.6" "WFDB library" +.SH NAME +wfdbf \- Waveform Database library wrappers for Fortran +.SH SYNOPSIS +implicit integer(a-z) +.br +real aduphys, getbasecount, getcfreq, getifreq, sampfreq +.br +character aux(256), desc(80), filetype(32), fname(40), name(20), pathname(80), record(16), string(32), units(20) +.br +integer a, adcres, adczero, ampl, anntyp, baseline, bsize, caltype, chan, cksum, date, dummy, fmt, group, initval, microvolts, mode, nann, nsamp, nsig, num, s, spf, stat, subtyp, time, v(32), value +.br +real gain, frequency, high, low, scale +.PP +setanninfo(a, name, stat) +.br +getsiginfo(s, fname, desc, units, gain, initval, group, fmt, spf, bsize, adcres, adczero, baseline, nsamp, cksum) +.br +setsiginfo(s, fname, desc, units, gain, initval, group, fmt, spf, bsize, adcres, adczero, baseline, nsamp, cksum) +.br +annopen(record, nann) +.br +isigopen(record, nsig) +.br +osigopen(record, nsig) +.br +osigfopen(nsig) +.br +wfdbinit(record, nann, nsig) +.br +setgvmode(mode) +.br +getspf(dummy) +.br +getvec(v) +.br +getframe(v) +.br +putvec(v) +.br +getann(a, time, anntyp, subtyp, chan, num, aux) +.br +ungetann(a, time, anntyp, subtyp, chan, num, aux) +.br +putann(a, time, anntyp, subtyp, chan, num, aux) +.br +isigsettime(time) +.br +isgsettime(group, time) +.br +iannsettime(time) +.br +ecgstr(code, string) +.br +strecg(string) +.br +setecgstr(code, string) +.br +annstr(code, string) +.br +strann(string) +.br +setannstr(code, string) +.br +anndesc(code, string) +.br +setanndesc(code, string) +.br +iannclose(a) +.br +oannclose(a) +.br +timstr(time, string) +.br +mstimstr(time, string) +.br +strtim(string) +.br +datstr(date, string) +.br +strdat(string) +.br +adumuv(s, ampl) +.br +muvadu(s, microvolts) +.br +aduphys(s, ampl) +.br +physadu(s, value) +.br +calopen(fname) +.br +getcal(desc, units, low, high, scale, caltype) +.br +putcal(desc, units, low, high, scale, caltype) +.br +newcal(fname) +.br +flushcal(dummy) +.br +getinfo(record, string) +.br +putinfo(string) +.br +newheader(record) +.br +setheader(record, nsig) +.br +wfdbgetskew(s) +.br +wfdbsetskew(s, value) +.br +wfdbgetstart(s) +.br +wfdbsetstart(s, value) +.br +wfdbquit(dummy) +.br +sampfreq(record) +.br +setsampfreq(frequency) +.br +getcfreq(dummy) +.br +setcfreq(frequency) +.br +getifreq(dummy) +.br +setifreq(frequency) +.br +getbasecount(dummy) +.br +setbasecount(frequency) +.br +setbasetime(string) +.br +wfdbquiet(dummy) +.br +wfdbverbose(dummy) +.br +wfdberror(string) +.br +setwfdb(string) +.br +getwfdb(string) +.br +setibsize(value) +.br +setobsize(value) +.br +wfdbfile(filetype, record, pathname) +.br +wfdbflush(dummy) +.br +isann(anntyp) +.br +isqrs(anntyp) +.br +setisqrs(anntyp, value) +.br +map1(anntyp) +.br +setmap1(anntyp, value) +.br +map2(anntyp) +.br +setmap2(anntyp, value) +.br +ammap(anntyp) +.br +mamap(anntyp, subtyp) +.br +annpos(anntyp) +.br +setannpos(anntyp, value) +.br + +.SH DESCRIPTION +Fortran programs can use the WFDB library to read and write waveform database +files. Differences in argument-passing conventions between Fortran and C +(the language of the WFDB library) require the use of a set of wrappers +as an interface between the library and Fortran code that invokes its +functions. These wrappers are contained within 'wfdbf.c', provided in +the 'fortran' directory of the WFDB software package. + +.PP +Most of these wrapper subroutines behave like their similarly-named +counterparts in the WFDB library. The functions setanninfo, setsiginfo, and +getsiginfo do not have direct equivalents in the WFDB library; they are +provided in order to permit Fortran programs to read and write data structures +passed to and from several of the WFDB library functions. Since the contents +of these structures are directly accessible by C programs, these functions are +not needed in the C library. + +.PP +Before using annopen, set up the annotation information structures +using setanninfo. After using isigopen or osigopen, use getsiginfo to +obtain the contents of the signal information structures if necessary. +Before using osigfopen or setheader, use setsiginfo to set the +contents of the signal information structures. Before using wfdbinit, +use setanninfo and setsiginfo to set the contents of the annotation +and signal information structures. + +.PP +To use these wrappers, call them as shown above, then compile your +code together with wfdbf.c and link to the WFDB library. If you are +using the GNU g77 compiler, do so using a command such as: +.br +g77 -o foo -fwritable-strings foo.f wfdbf.c -lwfdb +.br +See 'fortran/README' for further information about using the WFDB Fortran +wrappers. +.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 +\fIi\fR to find out. An HTML version may be installed on your system (in +\fI/usr/help/html/wpg\fP); the most recent version can be viewed on-line at +\fBhttp://www.physionet.org/physiotools/wpg/\fP. +.SH AUTHOR +George B. Moody (george@mit.edu) +.SH SOURCES +http://www.physionet.org/physiotools/wfdb/fortran/wfdbf.c diff -Naur wfdb-10.2.5/doc/wpg/info/wpg wfdb-10.2.6/doc/wpg/info/wpg --- wfdb-10.2.5/doc/wpg/info/wpg Sun Mar 10 11:37:36 2002 +++ wfdb-10.2.6/doc/wpg/info/wpg Mon Jun 24 22:20:24 2002 @@ -3,140 +3,143 @@  Indirect: wpg-1: 62 -wpg-2: 49549 -wpg-3: 99433 -wpg-4: 149034 -wpg-5: 192519 -wpg-6: 229812 -wpg-7: 274496 -wpg-8: 298818 +wpg-2: 44729 +wpg-3: 93152 +wpg-4: 142593 +wpg-5: 191051 +wpg-6: 238508 +wpg-7: 282721 +wpg-8: 307050  Tag Table: (Indirect) Node: Top62 -Node: Overview1833 -Node: Concepts 14201 -Node: Concepts 26188 -Node: Concepts 38167 -Node: Applications10119 -Node: Guide12010 -Node: Recent changes19382 -Node: Usage28204 -Node: print samples29245 -Node: compiling30815 -Node: other languages32726 -Node: WFDB path35852 -Node: running example38525 -Node: name restrictions39155 -Node: WFDB path syntax40192 -Node: exercises 146229 -Node: Functions48634 -Node: introduction to functions49549 -Node: selecting52376 -Node: annopen52805 -Node: isigopen55410 -Node: osigopen59972 -Node: osigfopen62186 -Node: wfdbinit63842 -Node: signal and annotation I/O65127 -Node: getvec65600 -Node: getframe67494 -Node: putvec68817 -Node: getann70842 -Node: ungetann72212 -Node: putann72908 -Node: non-sequential73942 -Node: isigsettime74444 -Node: isgsettime75177 -Node: iannsettime75685 -Node: conversion76879 -Node: annstr and strann77509 -Node: timstr and strtim82445 -Node: datstr and strdat87195 -Node: aduphys and physadu88235 -Node: calibration90821 -Node: calopen91485 -Node: getcal92381 -Node: putcal93580 -Node: newcal93942 -Node: flushcal94461 -Node: miscellaneous functions94807 -Node: newheader96567 -Node: setheader97869 -Node: setmsheader99433 -Node: wfdbquit100973 -Node: iannclose and oannclose102173 -Node: wfdbquiet and wfdbverbose103064 -Node: wfdberror103554 -Node: sampfreq104545 -Node: setsampfreq105473 -Node: setbasetime106009 -Node: setgvmode106832 -Node: getspf108314 -Node: counter conversion108867 -Node: setwfdb111470 -Node: getwfdb113982 -Node: wfdbfile114706 -Node: wfdbflush115832 -Node: getinfo116127 -Node: putinfo117004 -Node: setibsize117745 -Node: setobsize118747 -Node: wfdbgetskew119769 -Node: wfdbsetskew121334 -Node: wfdbgetstart121976 -Node: wfdbsetstart123078 -Node: Data Types123716 -Node: WFDB_Siginfo structures125712 -Node: WFDB_Calinfo structures132055 -Node: WFDB_Anninfo structures134100 -Node: WFDB_Annotation structures136856 -Node: Annotation Codes139740 -Node: Mapping macros144400 -Node: Database Files146347 -Node: Header Files149034 -Node: Signal Files149901 -Node: Annotation Files150720 -Node: Calibration Files151129 -Node: AHA Format Files151894 -Node: Standard I/O153363 -Node: Multiplexed Signal Files154607 -Node: Multi-Frequency Records155788 -Node: Multi-Segment Records159038 -Node: Multiple Record Access160991 -Node: Special Files162436 -Node: Piped and Local Records165340 -Node: NETFILES167191 -Node: Annotation Order169908 -Node: Examples173311 -Node: Example 1174411 -Node: Example 2178366 -Node: Example 3180607 -Node: Example 4182420 -Node: Example 5185301 -Node: Example 6189418 -Node: Example 7192519 -Node: Example 8199397 -Node: Example 9207661 -Node: Example 10214330 -Node: Exercises221689 -Node: Glossary229812 -Node: Installation250321 -Node: Distribution251214 -Node: Unix installation251765 -Node: MS-Windows installation254164 -Node: Other installation257462 -Node: WFDB Applications258622 -Node: Using259618 -Node: Annotation I/O261410 -Node: Evaluation263051 -Node: Signal processing269974 -Node: Graphics272966 -Node: Extensions274496 -Node: Sources283353 -Node: Answers295056 -Node: Concept Index298818 -Node: Function and Macro Index327194 -Node: Copying331876 +Node: Overview1887 +Node: Concepts 14255 +Node: Concepts 26242 +Node: Concepts 38221 +Node: Applications10173 +Node: Guide12064 +Node: Recent changes19434 +Node: Usage29831 +Node: print samples30872 +Node: compiling32442 +Node: other languages37217 +Node: WFDB path40343 +Node: running example43018 +Node: name restrictions43692 +Node: WFDB path syntax44729 +Node: exercises 150770 +Node: Functions53175 +Node: introduction to functions54166 +Node: selecting57071 +Node: annopen57494 +Node: isigopen60099 +Node: osigopen64661 +Node: osigfopen66875 +Node: wfdbinit68531 +Node: special input modes69816 +Node: setifreq70296 +Node: getifreq72518 +Node: setgvmode73003 +Node: getspf74478 +Node: signal and annotation I/O75021 +Node: getvec75504 +Node: getframe78201 +Node: putvec79524 +Node: getann81549 +Node: ungetann82919 +Node: putann83615 +Node: non-sequential84649 +Node: isigsettime85151 +Node: isgsettime85884 +Node: iannsettime86392 +Node: conversion87586 +Node: annstr and strann88216 +Node: timstr and strtim93152 +Node: datstr and strdat97902 +Node: aduphys and physadu98942 +Node: calibration101528 +Node: calopen102192 +Node: getcal103088 +Node: putcal104287 +Node: newcal104649 +Node: flushcal105168 +Node: miscellaneous functions105514 +Node: newheader107081 +Node: setheader108383 +Node: setmsheader109947 +Node: wfdbquit111487 +Node: iannclose and oannclose112687 +Node: wfdbquiet and wfdbverbose113578 +Node: wfdberror114068 +Node: sampfreq115059 +Node: setsampfreq115987 +Node: setbasetime116523 +Node: counter conversion117355 +Node: setwfdb119963 +Node: getwfdb122475 +Node: wfdbfile123199 +Node: wfdbflush124325 +Node: getinfo124620 +Node: putinfo125497 +Node: setibsize126238 +Node: setobsize127240 +Node: wfdbgetskew128262 +Node: wfdbsetskew129827 +Node: wfdbgetstart130469 +Node: wfdbsetstart131571 +Node: Data Types132209 +Node: WFDB_Siginfo structures134205 +Node: WFDB_Calinfo structures140548 +Node: WFDB_Anninfo structures142593 +Node: WFDB_Annotation structures145349 +Node: Annotation Codes148233 +Node: Mapping macros152893 +Node: Database Files154840 +Node: Header Files157527 +Node: Signal Files158394 +Node: Annotation Files159213 +Node: Calibration Files159622 +Node: AHA Format Files160387 +Node: Standard I/O161856 +Node: Multiplexed Signal Files163100 +Node: Multi-Frequency Records164281 +Node: Multi-Segment Records167531 +Node: Multiple Record Access169484 +Node: Special Files170929 +Node: Piped and Local Records173833 +Node: NETFILES175684 +Node: Annotation Order178401 +Node: Examples181804 +Node: Example 1183042 +Node: Example 2186997 +Node: Example 3189238 +Node: Example 4191051 +Node: Example 5193932 +Node: Example 6198049 +Node: Example 7201150 +Node: Example 8208028 +Node: Example 9216292 +Node: Example 10222961 +Node: Exercises230301 +Node: Glossary238508 +Node: Installation258843 +Node: Distribution259736 +Node: Unix installation260287 +Node: MS-Windows installation262686 +Node: Other installation265687 +Node: WFDB Applications266847 +Node: Using267843 +Node: Annotation I/O269635 +Node: Evaluation271276 +Node: Signal processing278199 +Node: Graphics281191 +Node: Extensions282721 +Node: Sources291585 +Node: Answers303288 +Node: Concept Index307050 +Node: Function and Macro Index336368 +Node: Copying341315  End Tag Table diff -Naur wfdb-10.2.5/doc/wpg/info/wpg-1 wfdb-10.2.6/doc/wpg/info/wpg-1 --- wfdb-10.2.5/doc/wpg/info/wpg-1 Sun Mar 10 11:37:36 2002 +++ wfdb-10.2.6/doc/wpg/info/wpg-1 Mon Jun 24 22:20:24 2002 @@ -5,8 +5,8 @@ This guide documents the Waveform Database interface library (the WFDB library). This file contains the text of the Tenth Edition of the -`WFDB Programmer's Guide' (March, 2002), with revisions for release -10.2.5 of the WFDB library. +`WFDB Programmer's Guide' (June, 2002), with revisions for release +10.2.6 of the WFDB library. * Menu: @@ -17,7 +17,8 @@ the WFDB library. * Functions:: Call and return syntax of each function, with descriptions and program examples. -* Data Types:: Annotator and signal information structures, +* Data Types:: Simple and compound types, including annotator, + calibration, and signal information structures, and annotation structures. * Annotation Codes:: Table of codes, descriptions of mapping macros. * Database Files:: A description of the standard file types, and @@ -319,9 +320,9 @@ 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 +Coherent, and more), MS-DOS, MS-Windows, VMS, and classic MacOS. 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 @@ -332,7 +333,7 @@ Greenwald, David Israel, Roger Mark, Joe Mietus, Warren Muldrow, and especially to Paul Schluter, whose elegant 8080 assembly language functions inspired these (long live `getann'!). Pat Hamilton and Bob -Farrell contributed ports, to the Macintosh and the MS 32-bit Windows +Farrell contributed ports, to classic MacOS and the MS 32-bit Windows environments, respectively. Jose Garcia Moros and Salvador Olmos contributed Matlab/Octave reimplementations of a useful subset of the WFDB library. Thanks also to the many readers of earlier versions of @@ -386,6 +387,38 @@ WFDB Software Package distribution, for information on any more recent changes that may not be described here. +Changes in version 10.2.6 +------------------------- + + The new functions `setifreq' and `getifreq' allow an application to +choose any convenient sampling frequency for reading input signals. +Samples read from signal files using `getvec' are buffered, resampled, +and delivered to the calling application as if the original signals had +been sampled at the desired frequency. Times expressed in sample +intervals passed to or from other WFDB library functions (`getann', +`putann', `mstimstr', `timstr', and `strtim') are rescaled as needed to +match intervals corresponding to the chosen frequency. Thanks to Pat +Hamilton for the inspiration! + + The WFDB library now records the base time with millisecond precision +(previous versions did so with one-second precision), and `xform' +provides starting times to the library function `setbasetime' with +millisecond precision. Thanks to Allavatam Venugopal for providing +examples that illustrated the need for these features. + + Fixed deskewing buffer initialization in `getframe', broken by the +10.2.0 update, which introduced an infinite loop when reading a record +that requires skew correction starting at sample 0. Thanks to Andrew +Walsh for finding an example that triggered this bug. + + Fixed rounding errors in `adumuv', `muvadu', and `physadu'. +Previous versions rounded negative values toward zero; to obtain +consistent conversions, however, it is necessary to round all values +down (e.g., from -1.5 to -2 rather than up to -1). + + Fixed a memory leak in wfdb_fclose() (in lib/wfdbio.h). Thanks to +Ion Gaztan~aga. + Changes in version 10.2.5 ------------------------- @@ -670,6 +703,29 @@ will need additional libraries, and the corresponding `-l' options can usually be given before or after the `-lwfdb' option. + If the WFDB library was installed with NETFILES support, it will make +use of functions contained in the `libwww' libraries. If you have +dynamically linkable versions of the `libwww' libraries, as under +GNU/Linux, these will be loaded automatically when you run `psamples'. +If you have only static versions of these libraries, as under Solaris +or MS-Windows, however, it is necessary to provide additional arguments +in the `cc' command line in order to compile successfully. One way to +do this is to follow the model used to compile the standard WFDB +applications supplied with the WFDB library; see `Makefile' in the +`app' directory of the WFDB software package source tree. + + If you are using WFDB version 10.2.6 or a later version and `gcc' or +a compatible compiler, the `wfdb-config' utility is available to help +construct commands for compiling programs that use the WFDB library +(and the `libwww' libraries, if available). Use it like this: + + gcc `wfdb-config --cflags` -o psamples `wfdb-config --libs` + +Note that this command contains backticks (`), not apostrophes ('). +`wfdb-config' is particularly useful if the WFDB library or its `*.h' +files are installed in non-standard locations, or if you have only +static `libwww' libraries. + Under MS-Windows, it will be easiest to use `gcc', the GNU C/C++ compiler, which is included in the freely available Cygwin software development system (`http://source.redhat.com/cygwin/'), and also in @@ -679,18 +735,40 @@ terminal emulator window or an MS-DOS box in exactly the same way as described above for Unix C compilers. - 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: - - cl psamples.c -link wfdb - -With Borland C/C++, use: - - bcc -LLIBDIR psamples.c wfdb.lib - -where LIBDIR is the directory in which `wfdb.lib' (the WFDB library) -has been installed. (Substitute `tcc' for `bcc' if you are using Turbo -C or C++.) See your compiler manual for further information. + The WFDB library is developed and tested using `gcc', but careful +attention has been given to making it usable with any K&R or ANSI/ISO C +compiler. Note, however, that binary versions of the WFDB library that +have been compiled using `gcc' are _not_ compatible with most +proprietary C/C++ compilers (except under Unix). Since `gcc' is free, +high quality, and supported, it is highly recommended that you use it +for compiling your WFDB applications. + + If you choose to use an incompatible proprietary compiler, you are on +your own!
  • 2:14.8752 minutes + 14.875 seconds
    143143 seconds (2 minutes + 23 seconds)