[teqc] helpful tip of week 1988

Lou Estey lou at unavco.org
Wed Feb 14 10:43:18 MST 2018

This week's tip: the '+relax' option

 From `teqc +help | grep relax`:

       +relax      allow relaxed requirements on some RINEX fields
       -relax      strict requirements on RINEX fields (default)

First, notice that '+relax' only applies to reading RINEX, not manufacturer raw
data formats.  So what is meant by "relaxed requirements on some RINEX fields"?
Some background (or reminders) about RINEX:

Each RINEX file is an ASCII text file that is strongly column-aligned and
strongly formatted for each sub-element of a file.  (This design follows
from Fortran, the language of the original RINEX converters and readers.
And this is why you should always use a non-proportional or fixed-width font
like Courier to view a RINEX file; this keeps the columns properly aligned.)
There are also no metatags delimiting each piece as one would have in, say,
XML (except, perhaps, the "END OF HEADER" line at the end of each header),
so one has to "know" where one is in a RINEX file by context.  There are also
quite a number of special cases in the definition.  All of these combine so
that it is often visually difficult to see many formatting errors in RINEX.
Therefore, creating perfect, error-free RINEX is a more arduous task than
it could have been with a more modern design.

As a result, over the years, here at UNAVCO we've had to cope with quite a
plethora of faultily formatted RINEX files.  The '+relax' option enabled us
to overcome certain constraints so that these faulty RINEX files could be read
(and, in most cases, repaired by teqc).  Thus the '+relax' option was really
developed as an in-house workaround to try to repair faulty RINEX files that
had been sent to us.

Below are examples of which constraints are most likely relaxed with '+relax'
(and you may want to also consult ftp://igs.org/pub/data/format/rinex211.txt),
based on cases that we actually came across quite frequently from other
converters.  However, you should be aware that I've often had to tweak the
code, on the spot, to deal with whatever specific RINEX-bug-of-the-week was
driving us crazy, so there can certainly be differences depending on the
version of teqc you are (or were) using.

- Missing 'END OF HEADER' line at end of header; '+relax' ignores the error
   and, of course, upon outputting a repaired RINEX file, the 'END OF HEADER'
   header line should be present.  (This does not apply to old RINEX version 1
   files which had no 'END OF HEADER' line.)

- Epochs in a RINEX observation or meteorological file should only occur in
   a time sequential order; '+relax' ignores any epochs which have a timestamp
   that precede the last successfully read epoch.

- Blank line where there should be an epoch (in RINEX obs, nav, or met);
   '+relax' should ignore the blank line.

- Location in RINEX obs file is where an "epoch" or "event" should be, and
   there appears to be an event flag = 2, 3, 4, or 5, but there is no epoch
   printed (i.e. all the fields for the epoch date and time are blanks);
   in this case '+relax' assumes the epoch is the last successfully read

- RINEX obs file on a EPOCH/SAT line; '+relax' tries to determine whether
   there is a mislocated receiver clock offset value at the end of the line
   (see tip of week https://postal.unavco.org/pipermail/teqc/2018/002393.html).

- RINEX obs file trying to read the LLI field of an observation and an
   invalid value (or ASCII character) is found; '+relax' should try to set
   the LLI to a reasonable value for output.

- The RINEX file does not terminate in a normal way, e.g complete epoch of
   observations in a RINEX obs file or complete set of navigation fields for
   a navigation message in a RINEX nav file; '+relax' ignores this last
   incomplete element.

There are obviously many, many more thousands of ways to muck up a RINEX file --
far too many to even consider trying to fix in code with the '+relax' option.
In fact, for many past cases here at UNAVCO, we've had to resort to simple
brute force manual editing to try to save some files.

But, in an emergency, if teqc is complaining about an error in a RINEX file,
it doesn't hurt to at least try the '+relax' option:

teqc +relax +v suspect_filename

... and if you get: teqc: 'suspect_filename' readable as (relaxed) RINEX V.2.11 format
... then try something like:

teqc +relax suspect_filename > possibly_fixed_file
teqc +v possibly_fixed_file

But don't count on '+relax' to be able to fix every mucked-up RINEX file.

Happy teqc-ing!


Louis H. Estey, Ph.D.              office:  [+001] 303-381-7456
UNAVCO, 6350 Nautilus Drive           FAX:  [+001] 303-381-7451
Boulder, CO  80301-5554            e-mail:  lou  unavco.org

"If the universe is the answer, what is the question?"
                                                -- Leon Lederman

Past helpful tips:

week 1894: using teqc config files - http://postal.unavco.org/pipermail/teqc/2016/002067.html
week 1895: qc of high-rate data - http://postal.unavco.org/pipermail/teqc/2016/002071.html
week 1896: UNIX/Linux shells for Windows - http://postal.unavco.org/pipermail/teqc/2016/002072.html
week 1897: '-' vs. '+' teqc options - http://postal.unavco.org/pipermail/teqc/2016/002076.html
week 1898: auto-identification of formats - http://postal.unavco.org/pipermail/teqc/2016/002092.html
week 1899: auto-identification vs. format flags - http://postal.unavco.org/pipermail/teqc/2016/002096.html
week 1900: square brackets in options - http://postal.unavco.org/pipermail/teqc/2016/002105.html
week 1901: using option '+mds' - http://postal.unavco.org/pipermail/teqc/2016/002108.html
week 1902: qc results w/ problematic nav messages - http://postal.unavco.org/pipermail/teqc/2016/002113.html
week 1903: '-no_orb[it]' and '-no_pos[ition]' options - http://postal.unavco.org/pipermail/teqc/2016/002115.html
week 1904: '-week' option - http://postal.unavco.org/pipermail/teqc/2016/002117.html
week 1905: using '+bcf' for XYZ/geodetic conversion - http://postal.unavco.org/pipermail/teqc/2016/002126.html
week 1906: the '+v[erify]' option - http://postal.unavco.org/pipermail/teqc/2016/002128.html
week 1907: '+C2', '+L5', "+L6', '+L7', '+L8', '+all' options - http://postal.unavco.org/pipermail/teqc/2016/002130.html
week 1908: getting RINEX doppler and L2 - http://postal.unavco.org/pipermail/teqc/2016/002131.html
week 1909: using paths w/ file names - http://postal.unavco.org/pipermail/teqc/2016/002132.html
week 1910: the (un)importance of file names - http://postal.unavco.org/pipermail/teqc/2016/002133.html
week 1911: notices, warnings, and errors - http://postal.unavco.org/pipermail/teqc/2016/002134.html
week 1912: the '-max_rx_SVs' option - http://postal.unavco.org/pipermail/teqc/2016/002137.html
week 1913: the end of '++igs' and '+igs' - http://postal.unavco.org/pipermail/teqc/2016/002140.html
week 1914: splicing together RINEX files - http://postal.unavco.org/pipermail/teqc/2016/002144.html
week 1915: using '-O.int' and '-O.dec' - http://postal.unavco.org/pipermail/teqc/2016/002145.html
week 1916: '+doy' option - http://postal.unavco.org/pipermail/teqc/2016/002146.html
week 1917: '-tbin' and '-ast' options - http://postal.unavco.org/pipermail/teqc/2016/002152.html
week 1918: mp12 RMS before/after Oct 2013 - http://postal.unavco.org/pipermail/teqc/2016/002158.html
week 1919: the global windowing options - http://postal.unavco.org/pipermail/teqc/2016/002159.html
week 1920: '-M.dec' and '-N.dec' options - http://postal.unavco.org/pipermail/teqc/2016/002163.html
week 1921: combining time filtering options - http://postal.unavco.org/pipermail/teqc/2016/002176.html
week 1922: helping me (or someone else on the list) help you - http://postal.unavco.org/pipermail/teqc/2016/002187.html
week 1923: the "build" line - http://postal.unavco.org/pipermail/teqc/2016/002190.html
week 1924: the qc '-w[idth]' option - http://postal.unavco.org/pipermail/teqc/2016/002193.html
week 1925: qc with explicit time windowing - http://postal.unavco.org/pipermail/teqc/2016/002194.html
week 1926: the '+rx_state' option - http://postal.unavco.org/pipermail/teqc/2016/002200.html
week 1927: the '-O.sum' option - http://postal.unavco.org/pipermail/teqc/2016/002204.html
week 1928: the '+meta' and '+mds' options - http://postal.unavco.org/pipermail/teqc/2016/002206.html
week 1930: more on '-O.sum' - http://postal.unavco.org/pipermail/teqc/2017/002207.html
week 1931: the '-O.s[ystem]' option - http://postal.unavco.org/pipermail/teqc/2017/002208.html
week 1932: leap seconds - http://postal.unavco.org/pipermail/teqc/2017/002215.html
week 1936: what you can (and shouldn't) do in a RINEX obs file - http://postal.unavco.org/pipermail/teqc/2017/002229.html
week 1938: the '+psp' option - http://postal.unavco.org/pipermail/teqc/2017/002231.html
week 1939: the '+diag' option - http://postal.unavco.org/pipermail/teqc/2017/002235.html
week 1951: '-n_<system>' and SV filtering options - http://postal.unavco.org/pipermail/teqc/2017/002277.html
week 1953: more with '+diag' option - http://postal.unavco.org/pipermail/teqc/2017/002287.html
week 1954: using '+diag' output to split raw files - http://postal.unavco.org/pipermail/teqc/2017/002290.html
week 1955: current qc notation - http://postal.unavco.org/pipermail/teqc/2017/002302.html
week 1956: the '+qcq' option - http://postal.unavco.org/pipermail/teqc/2017/002304.html
week 1957: using Trimble formats - http://postal.unavco.org/pipermail/teqc/2017/002305.html
week 1958: ToC != ToE messages - http://postal.unavco.org/pipermail/teqc/2017/002310.html
week 1959: receivers vs. formats - http://postal.unavco.org/pipermail/teqc/2017/002311.html
week 1960: when the '-week' option is very wrong to use - https://postal.unavco.org/pipermail/teqc/2017/002314.html
week 1961: "less" is usually best - https://postal.unavco.org/pipermail/teqc/2017/002315.html
week 1962: using GPS L2C with teqc - https://postal.unavco.org/pipermail/teqc/2017/002316.html
week 1964: the '+eds' options - https://postal.unavco.org/pipermail/teqc/2017/002317.html
week 1965: handling RINEX comment lines - https://postal.unavco.org/pipermail/teqc/2017/002324.html
week 1966: the '+dUTC_p' options - https://postal.unavco.org/pipermail/teqc/2017/002331.html
week 1967: the strange position from '+meta' - https://postal.unavco.org/pipermail/teqc/2017/002355.html
week 1972: what shows up as metadata in RINEX headers - https://postal.unavco.org/pipermail/teqc/2017/002362.html
week 1973: GPS L2C navigation messages - https://postal.unavco.org/pipermail/teqc/2017/002363.html
week 1974: the '+ion_p' options - https://postal.unavco.org/pipermail/teqc/2017/002370.html
week 1975: the '+event' options - https://postal.unavco.org/pipermail/teqc/2017/002372.html
week 1976: options '+smtt' (default) vs. '-smtt' - https://postal.unavco.org/pipermail/teqc/2017/002374.html
week 1977: the reported interval with '+meta' for a RINEX obs file - https://postal.unavco.org/pipermail/teqc/2017/002377.html
week 1978: the '-N.dUTC' options - https://postal.unavco.org/pipermail/teqc/2017/002378.html
week 1979: the various qc elevation angles - https://postal.unavco.org/pipermail/teqc/2017/002383.html
week 1980: avoid in RINEX: Transit data - https://postal.unavco.org/pipermail/teqc/2017/002385.html
week 1981: avoid in RINEX: epoch flag = 6 - https://postal.unavco.org/pipermail/teqc/2017/002389.html
week 1982: avoid in RINEX: RCV CLOCK OFFS APPL = 1 - https://postal.unavco.org/pipermail/teqc/2018/002392.html
week 1983: don't count on in RINEX: receiver clock offset per epoch - https://postal.unavco.org/pipermail/teqc/2018/002393.html
week 1984: requirements for multiple target files/stdin - https://postal.unavco.org/pipermail/teqc/2018/002410.html
week 1985: default output for various input - https://postal.unavco.org/pipermail/teqc/2018/002412.html
week 1986: the '+latency' options - https://postal.unavco.org/pipermail/teqc/2018/002419.html
week 1987: the 'O.px and 'O.pg' options - https://postal.unavco.org/pipermail/teqc/2018/002422.html

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://postal.unavco.org/pipermail/teqc/attachments/20180214/e289fcae/attachment-0001.html>

More information about the teqc mailing list