This program accepts newline-separated queries that can be expressed using a
single criterion, reading them from the standard input.  It searches the
PhysioBank Index, which it loads into memory at startup time, for records that
satisfy the queries it receives, and writes its results to the standard output. 

When a connection to the server is first established, there may be a brief
delay while the PhysioBank Index is loaded.  When it is ready to accept a
query, it writes a prompt ("> ", or "Look for: ", depending on how it has been
compiled). 

A simple query is of the form:

[MODIFIER] SUBJECT OP PATTERN

where [MODIFIER] specifies the format of the results, and may be omitted 
      SUBJECT specifies a category of data in the PhysioBank Index
      OP is one of  < <= = >= > ~ !~ != ?
      PATTERN is the pattern or threshold with which successive elements of the
        SUBJECT are compared

By default, results are shown as a list of matching record names, followed
by an empty line and a status line (showing the number of matches and the
query as it was understood by this program).

Any query may be prefixed by a [MODIFIER], which is a single character
(either # or +). The modifier # suppresses display of the list of matches,
so that only the status line appears as output.  The modifier + adds the
matching SUBJECT elements to the list of matches as a second column.

A SUBJECT may be a literal subject or a subject class.  Literal subjects may be:
 * a quoted signal name such as "aVF" or 'CVP' [' and " are equivalent]
 * an @-prefixed annotator name such as @atr or @qrs
 * a /-prefixed annotation mnemonic such as /V or /(SVTA
Case is significant in literal subjects; /E and /e are different.

Subject classes may be any of:
      AnnM	Age    	      BP     EP      Resp
      AnnR	Diag   	      CO     Flow    Sound
		Info   	      CO2    HR      ST
		Med 	      ECG    Noise   Status
		Record 	      EEG    O2      Stim
		Sex 	      EMG    PLETH   SV
		    	      EOG    Pos     Temp
AnnM and AnnR are machine and reference annotators respectively.  Subjects
in the second column (Age, Diag, etc.) select categories of metadata.
The remaining subjects are classes of signals.

Case is not significant in non-literal subjects (Age = age = AGE = aGe).
Append -N to any non-literal SUBJECT to find records including at least N
instances of the SUBJECT (so ecg-3 is defined for records with 3 or more ECG
signals).  The hyphen (-) may be omitted unless SUBJECT is CO, CO2, or O2,
where it is needed to avoid ambiguity.

OP specifies how your SUBJECT elements are compared with your PATTERN.  The
'~' (similar) and '!~' (different) operators behave differently when applied
to numeric and string comparisons.  Numbers are "similar" if the SUBJECT is
within 10% of the PATTERN, and "different" otherwise.  Strings are "similar"
if the SUBJECT contains the PATTERN, and "different" otherwise.  Queries
containing the '?' (is defined) operator return rows in which SUBJECT is
present;  PATTERN is ignored in such queries. Queries consisting of a SUBJECT
only are equivalent to 'SUBJECT ?' queries.

Note that OP must be separated from SUBJECT and PATTERN by whitespace
(one or more spaces or tabs).

PATTERN may include whitespace (spaces and tabs) if it is enclosed in quotation
marks;  otherwise, it ends at the first whitespace and any remaining input
characters are ignored.  Patterns containing ':' are assumed to specify
durations in [hh:]mm:ss format, patterns ending in Hz are assumed to
specify sampling frequencies, and patterns containing 'adu/' are assumed to
specify signal gains (see examples below).  If PATTERN is omitted in a query,
its value is '' (the empty string, which is less than any non-empty value in
string comparisons) or 0 (in numeric comparisons).

Examples of simple queries:

Query		        Matches records with

age > 18		age of subject defined and greater than 18
sex = F			a female subject
ECG-2 < 0:30		two or more ECG signals, duration less than 30 seconds
"aVF"			an aVF signal
@atr >= 10:0		atr annotations, duration 10 minutes or more
@qrs >= 100		qrs annotations, 100 or more
AnnR			reference annotations
length > 2:0:0          duration greater than 2 hours
length > 48:0:0		duration greater than 2 days (48 hours)
@atr/(VT > 0:3		atr annotations with VT episodes, total > 3 seconds
/V > 100                any annotator with more than 100 V annotations
record ~ mitdb		record name contains 'mitdb'
med ~ Atenolol          medication list contains 'Atenolol'
ECG-12 >= 250Hz		twelve or more ECG signals, sampled at 250Hz or more
ECG-12 >= "250 Hz"      same as above
BP > "10 adu/mmHg"	blood pressure signals with resolution > 10 adu/mmHg
info ~ "ST elev"	info contains 'ST elev'

Note that the patterns in the last three examples are quoted because they
contain spaces.

Enter a query, or ? to view short help, HELP for this help, or EXIT to quit.
