diff -Naur --exclude Makefile --exclude info wfdb-10.5.14/app/gqfuse.c wfdb-10.5.15/app/gqfuse.c --- wfdb-10.5.14/app/gqfuse.c 2012-05-07 03:42:34.000000000 -0400 +++ wfdb-10.5.15/app/gqfuse.c 2012-09-25 12:18:33.000000000 -0400 @@ -1,5 +1,5 @@ /* file: gqfuse.c G. Moody 6 May 2012 - Last revised: 7 May 2012 + Last revised: 25 September 2012 ------------------------------------------------------------------------------- gqfuse: combine QRS annotation files Copyright (C) 2012 George B. Moody @@ -260,23 +260,13 @@ A more detailed summary is in the man page (gqpost.1). */ static char *help_strings[] = { - "usage: %s -r RECORD [OPTIONS ...]\n", - "where RECORD is the name of the record to be analyzed, and OPTIONS may", - "include any of:", - " -a ANNOTATOR read annotations from the specified ANNOTATOR (default: qrs)", - " -c FILE initialize parameters from the specified configuration FILE", - " -f TIME begin processing at specified time", - " -h print this usage summary", - " -H read multifrequency signals in high resolution mode", - " -m THRESH set interpolated event acceptance threshold to THRESH", - " (default: 1)", - " -o ANNOTATOR write annotations to the specified ANNOTATOR (default: gqp)", - " -t TIME stop processing at specified time", - "If too many true beats are rejected, decrease THRESH; if too many false", - "detections are accepted, increase THRESH.", - "Note that the output is a complete copy of the input (with rejected events", - "flagged as ARFCT). The -f and -t options only limit the interval during", - "which events may be rejected.", + "usage: %s -r RECORD -a ANNOTATOR ANNOTATOR ... [OPTIONS ...]\n", + "where RECORD is the name of the record to be analyzed, two or more", + "ANNOTATOR arguments specify annotation sets to be read and fused, and", + "OPTIONS may include any of:", + " -c FILE initialize parameters from the specified configuration FILE", + " -h print this usage summary", + " -o ANNOTATOR write annotations to the specified ANNOTATOR (default: gqf)", NULL }; diff -Naur --exclude Makefile --exclude info wfdb-10.5.14/doc/wag-src/gqfuse.1 wfdb-10.5.15/doc/wag-src/gqfuse.1 --- wfdb-10.5.14/doc/wag-src/gqfuse.1 1969-12-31 19:00:00.000000000 -0500 +++ wfdb-10.5.15/doc/wag-src/gqfuse.1 2012-09-25 12:14:16.000000000 -0400 @@ -0,0 +1,62 @@ +.TH GQFUSE 1 "25 September 2012" "WFDB 10.5.15" "WFDB Applications Guide" +.SH NAME +gqfuse \- combine QRS annotation files +.SH SYNOPSIS +\fBgqfuse -r\fR \fIrecord\fR -a \fIannotator1 annotator2 ...\fR [ \fIoptions\fR ... ] +.SH DESCRIPTION +.PP +\fBgqfuse\fR produces a QRS annotation file based on two or more input QRS +annotation files with annotator names \fIannotator1\fR, \fIannotator2\fR, etc. +Each one-minute segment of the output annotation file is a copy of the +corresponding segment of one of the input annotation files. In each segment, +the program copies the input that best matches a predicted heart rate. If +there are N inputs, the prediction is the median of N+1 values (the previous +prediction and the number of beats marked within the current segment of each of +the N input files). Although this process allows the input to be switched once +per minute, the policy for resolving ties (within 2 beats) favors not switching +if the previously chosen input is one of those belonging to the tie. +.PP +As its name suggests, \fBgqfuse\fR is intended to be used as a companion to the +\fBgqrs\fR(1) QRS detector, but it is able to process annotations from any beat +detector. Non-beat annotations (e.g., rhythm, signal quality, artifact, +non-QRS waveforms, and notes) are copied to the output if present in the best +matching input segments, but they are not counted as beats by \fBgqfuse\fR when +it makes heart rate predictions. +.PP +One way to use \fBgqfuse\fR is to combine input annotation files for each +available ECG signal in a record, made using a single detector such as +\fBgqrs\fR. Another is to combine input annotation files made using a +variety of QRS detectors. These ideas can be combined as desired. +.PP +A configuration file, which can be shared with \fBgqrs\fR and \fBgqpost\fR(1), +can be used to specify the expected heart rate. (In future versions, other +parameters in the configuration file may also be used by \fBgqfuse\fR). The +configuration file is unnecessary when processing adult human ECGs, but an +appropriately constructed configuration file allows \fBgqrs\fR to analyze +fetal, pediatric, and animal ECGs. +.PP +\fIOptions\fR include: +.TP +\fB-c\fR \fIfile\fR +Initialize parameters based on the specified (text) configuration +\fIfile\fR. See the example configuration file, \fIgqrs.conf\fR, for details. +.TP +\fB-h\fR +Print a usage summary. +.TP +\fB-o\fR \fIname\fR +Write annotations to an annotation file with the specified annotator \fIname\fR +(default: \fBgqf\fR). +.SH ENVIRONMENT +.PP +It may be necessary to set and export the shell variable \fBWFDB\fR (see +\fBsetwfdb\fR(1)). +.SH SEE ALSO +\fBgqrs\fR(1), \fBecgpuwave\fR(1), \fBsetwfdb\fR(1), +\fBsqrs\fR(1), \fBwqrs\fR(1) +.SH AUTHORS +George B. Moody (george@mit.edu). +.SH SOURCES +http://www.physionet.org/physiotools/wfdb/app/gqfuse.c +.br +http://www.physionet.org/physiotools/wfdb/app/gqrs.conf diff -Naur --exclude Makefile --exclude info wfdb-10.5.14/doc/wpg-src/wpg0.tex wfdb-10.5.15/doc/wpg-src/wpg0.tex --- wfdb-10.5.14/doc/wpg-src/wpg0.tex 2012-08-13 17:35:48.000000000 -0400 +++ wfdb-10.5.15/doc/wpg-src/wpg0.tex 2012-09-25 11:27:48.000000000 -0400 @@ -9049,6 +9049,12 @@ @unnumberedsec WFDB 10.5 +@unnumberedsubsec Changes in version 10.5.15 (25 September 2012) + +Changes to the internal function readheader() in WFDB library version +10.5.14 made the library unable to open EDF files. This bug has been +fixed. + @unnumberedsubsec Changes in version 10.5.14 (13 August 2012) WFDB applications can now read shared and private PhysioNetWorks projects diff -Naur --exclude Makefile --exclude info wfdb-10.5.14/lib/signal.c wfdb-10.5.15/lib/signal.c --- wfdb-10.5.14/lib/signal.c 2012-08-13 15:09:20.000000000 -0400 +++ wfdb-10.5.15/lib/signal.c 2012-09-25 12:51:10.000000000 -0400 @@ -1,5 +1,5 @@ /* file: signal.c G. Moody 13 April 1989 - Last revised: 13 August 2012 wfdblib 10.5.14 + Last revised: 25 September 2012 wfdblib 10.5.15 WFDB library functions for signals _______________________________________________________________________________ @@ -806,16 +806,16 @@ /* If the final component of the record name includes a '.', assume it is a file name. */ - q = record + strlen(record) - 1; - while (p > q && *q != '.' && *q != '/' && *q != ':' && *q != '\\') + q = (char *)record + strlen(record) - 1; + while (q > record && *q != '.' && *q != '/' && *q != ':' && *q != '\\') q--; if (*q == '.') { - if (strcmp(q+1, "hea")) /* assume EDF if suffix is not '.hea' */ - return (edfparse(hheader)); - else if ((hheader = wfdb_open(NULL, record, WFDB_READ)) == NULL) { + if ((hheader = wfdb_open(NULL, record, WFDB_READ)) == NULL) { wfdb_error("init: can't open %s\n", record); return (-1); } + else if (strcmp(q+1, "hea")) /* assume EDF if suffix is not '.hea' */ + return (edfparse(hheader)); } /* Otherwise, assume the file name is record.hea. */ diff -Naur --exclude Makefile --exclude info wfdb-10.5.14/lib/wfdb.h wfdb-10.5.15/lib/wfdb.h --- wfdb-10.5.14/lib/wfdb.h 2012-08-13 15:23:30.000000000 -0400 +++ wfdb-10.5.15/lib/wfdb.h 2012-09-25 12:52:07.000000000 -0400 @@ -32,7 +32,7 @@ /* WFDB library version. */ #define WFDB_MAJOR 10 #define WFDB_MINOR 5 -#define WFDB_RELEASE 14 +#define WFDB_RELEASE 15 #define WFDB_NETFILES 1 /* if 1, library includes code for HTTP, FTP clients */ #define WFDB_NETFILES_LIBCURL 1 diff -Naur --exclude Makefile --exclude info wfdb-10.5.14/lib/wfdblib.h wfdb-10.5.15/lib/wfdblib.h --- wfdb-10.5.14/lib/wfdblib.h 2012-08-13 15:34:10.000000000 -0400 +++ wfdb-10.5.15/lib/wfdblib.h 2012-09-25 12:52:07.000000000 -0400 @@ -96,9 +96,9 @@ variable is not set. This value is edited by the configuration script (../configure), which also edits this block of comments to match. - If WFDB_NETFILES support is disabled, the string ". /home/george/Desktop/wfdb-10.5.14/build/database" is + If WFDB_NETFILES support is disabled, the string ". /usr/local/database" is usually sufficient for a default WFDB path, thus restricting the search for - WFDB files to the current directory ("."), followed by /home/george/Desktop/wfdb-10.5.14/build/database). + WFDB files to the current directory ("."), followed by /usr/local/database). If WFDB_NETFILES support is enabled, the first setting below adds the web-accessible PhysioBank databases to the default path; you may wish to @@ -107,9 +107,9 @@ */ #ifndef WFDB_NETFILES -# define DEFWFDB ". /home/george/Desktop/wfdb-10.5.14/build/database" +# define DEFWFDB ". /usr/local/database" #else -# define DEFWFDB ". /home/george/Desktop/wfdb-10.5.14/build/database http://physionet.org/physiobank/database" +# define DEFWFDB ". /usr/local/database http://physionet.org/physiobank/database" #endif /* Mac OS 9 and earlier, only: The value of DEFWFDB given below specifies diff -Naur --exclude Makefile --exclude info wfdb-10.5.14/MANIFEST wfdb-10.5.15/MANIFEST --- wfdb-10.5.14/MANIFEST 2012-08-13 19:02:14.000000000 -0400 +++ wfdb-10.5.15/MANIFEST 2012-09-25 12:18:58.000000000 -0400 @@ -288,6 +288,7 @@ doc/wag-src/fixag.sed doc/wag-src/fixag.sh doc/wag-src/getpagenos.c +doc/wag-src/gqfuse.1 doc/wag-src/gqrs.1 doc/wag-src/header.5 doc/wag-src/hrfft.1 diff -Naur --exclude Makefile --exclude info wfdb-10.5.14/NEWS wfdb-10.5.15/NEWS --- wfdb-10.5.14/NEWS 2012-08-13 19:54:56.000000000 -0400 +++ wfdb-10.5.15/NEWS 2012-09-25 12:55:13.869811676 -0400 @@ -1,4 +1,12 @@ -10.5.14 (2 August 2012): +10.5.15 (25 September 2012): + A new application (app/gqfuse.c) for combining two or more beat + annotation files is included in this release. + + Changes to the internal function readheader() in WFDB library version + 10.5.14 made the library unable to open EDF files. This bug has been + fixed. + +10.5.14 (13 August 2012): WFDB applications can now read shared and private PhysioNetWorks projects securely, just as they have been able to read PhysioBank data since version 10.0.1 (November 1999). A new shell script @@ -31,7 +39,6 @@ to Justin Leo Cheang Loong for reporting this issue. 10.5.12 (24 April 2012): - When called with a NULL argument, getinfo() sometimes behaves differently in WFDB library version 10.5.11 than it does in previous versions. This release restores the previous behavior. Thanks to