Skip to content

Commit 6b1d0d7

Browse files
Merge pull request #115 from IPGP/dev-tpx1_01a
v2.3.2
2 parents 986f70a + 0b4a03d commit 6b1d0d7

80 files changed

Lines changed: 1966 additions & 621 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
# autorino
44
autorino is a tool for _Assisted Unloading, Treatment & Organisation of RINex Observations_ 🛰️ 🌐 🦏
55

6-
**Version: 2.3.1**
7-
**Date: 2025-08-29**
6+
**Version: 2.3.2**
7+
**Date: 2025-11-20**
88

99
**Main developper:** [Pierre Sakic](https://github.com/PierreS-alpha) (IPGP-OVS, Paris, France)
1010
**Contact e-mail:** sakic@ipgp.fr

autorino/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import os
1111
from os import path
1212

13-
__version__ = "2.3.1" # changed automaticcaly with bump-my-version
13+
__version__ = "2.3.2" # changed automaticcaly with bump-my-version
1414

1515
#### IMPORT CONFIG FOR LOGGER
1616
log_file_path = os.path.join(

autorino/api/convert_rnx.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def convert_rnx(
3535
raw_out_structure=None,
3636
processes=1,
3737
filter_prev_tables=False,
38+
converter="auto"
3839
):
3940
"""
4041
Frontend function that performs RAW > RINEX conversion.
@@ -93,6 +94,9 @@ def convert_rnx(
9394
If True, filters and skip previously converted files
9495
with tables stored in the tmp tables directory.
9596
Default is False.
97+
converter: str, optional
98+
The software to be used for converting the RAW files to RINEX.
99+
Default is "auto".
96100
97101
Returns
98102
-------
@@ -124,6 +128,7 @@ def convert_rnx(
124128
force_rnx,
125129
rinexmod_options,
126130
filter_prev_tables,
131+
converter,
127132
)
128133
args_wrap.append(args)
129134

@@ -200,6 +205,8 @@ def convert_raw_wrap(args):
200205
- filter_prev_tables : bool
201206
If True, filters and skips previously converted files with
202207
tables stored in the tmp tables directory.
208+
- converter : str
209+
The software to be used for converting the RAW files to RINEX.
203210
204211
Returns
205212
-------
@@ -215,6 +222,7 @@ def convert_raw_wrap(args):
215222
force_rnx,
216223
rinexmod_options,
217224
filter_prev_tables,
225+
converter
218226
) = args
219227
# Initialize the ConvertGnss object with the provided directories and metadata
220228
cnv = arocnv.ConvertGnss(out_dir_use, tmp_dir, log_dir, metadata=metadata)
@@ -225,6 +233,7 @@ def convert_raw_wrap(args):
225233
force=force_rnx,
226234
rinexmod_options=rinexmod_options,
227235
filter_prev_tables=filter_prev_tables,
236+
converter=converter,
228237
)
229238
# Return the ConvertGnss object containing the conversion results
230239
return cnv

autorino/bin/autorino_convert_rnx.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,27 @@ def main():
137137
default=False,
138138
)
139139

140+
parser.add_argument(
141+
"-c",
142+
"--converter",
143+
help="The software to be used for converting the RAW files to RINEX. "
144+
"Default is 'auto' which lets autorino choose the best available converter based on RAW file extension."
145+
"Possible values are:"
146+
"* 'auto' (automatic choice based on the extension),"
147+
"* 'trm2rnx' (Trimble unofficial),"
148+
"* 't0xconvert' (Trimble official),"
149+
"* 'runpkr00' (Trimble legacy),"
150+
"* 'teqc' (legacy conversion & RINEX Handeling),"
151+
"* 'mdb2rinex' (Leica),"
152+
"* 'sbf2rin' (Septentrio),"
153+
"* 'convbin' (BINEX),"
154+
"* 'tps2rin' (Topcon),"
155+
"* 'converto' (RINEX Handeling),"
156+
"* 'gfzrnx' (RINEX Handeling)",
157+
default="auto",
158+
)
159+
160+
140161
args = parser.parse_args()
141162

142163
aroapi.convert_rnx(
@@ -153,6 +174,7 @@ def main():
153174
raw_out_structure=args.raw_out_structure,
154175
processes=args.processes,
155176
filter_prev_tables=args.filter_prev_tables,
177+
converter=args.converter
156178
)
157179

158180

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
Created on 25/10/2025 16:09:59
5+
6+
@author: psakic
7+
"""
8+
9+
import argparse
10+
import yaml
11+
from autorino.api.splice_rnx_rel import splice_rnx_rel
12+
13+
14+
def main():
15+
parser = argparse.ArgumentParser(description=splice_rnx_rel.__doc__)
16+
parser.add_argument(
17+
"-i", "--rnxs_inp",
18+
required=True,
19+
nargs="+",
20+
help="The input RINEX files to be spliced. The input can be a list, a text file path, a tuple of text files or a directory path."
21+
)
22+
parser.add_argument(
23+
"-o", "--out_dir",
24+
required=True,
25+
help="The output directory where the spliced files will be stored."
26+
)
27+
parser.add_argument(
28+
"-t", "--tmp_dir",
29+
required=True,
30+
help="The temporary directory used during the splicing process."
31+
)
32+
parser.add_argument(
33+
"-l", "--log_dir",
34+
default=None,
35+
help="The directory where logs will be stored. (optional)"
36+
)
37+
parser.add_argument(
38+
"-S", "--handle_software",
39+
default="converto",
40+
help="The software to be used for handling the RINEX files during the splice operation. Defaults to 'converto'. (optional)"
41+
)
42+
parser.add_argument(
43+
"-p", "--period",
44+
default="1d",
45+
help="The period for splicing the RINEX files. Defaults to '1d'. (optional)"
46+
)
47+
parser.add_argument(
48+
"-R", "--rolling_period",
49+
action="store_true",
50+
help="Whether to use a rolling period for splicing the RINEX files. (optional)"
51+
)
52+
parser.add_argument(
53+
"-r", "--rolling_ref",
54+
default="-1",
55+
help="The reference for the rolling period (datetime-like or int). Use -1 for the last epoch. (optional)"
56+
)
57+
parser.add_argument(
58+
"-m", "--round_method",
59+
default="floor",
60+
help="The method for rounding the epochs during the splice operation. Defaults to 'floor'. (optional)"
61+
)
62+
parser.add_argument(
63+
"-d", "--drop_epoch_rnd",
64+
action="store_true",
65+
help="Whether to drop the rounded epochs during the splice operation. (optional)"
66+
)
67+
parser.add_argument(
68+
"-x", "--rinexmod_options",
69+
type=yaml.safe_load,
70+
default=None,
71+
help="Options for modifying the RINEX files, provided as a YAML/JSON string or file content (e.g. '{longname: False}'). (optional)"
72+
)
73+
parser.add_argument(
74+
"-M", "--metadata",
75+
nargs="+",
76+
default=None,
77+
help="Metadata to include (list of sitelog paths, single sitelog path, directory, or MetaData objects). (optional)"
78+
)
79+
80+
args = parser.parse_args()
81+
82+
rolling_ref_val = args.rolling_ref
83+
84+
spc_main_obj = splice_rnx_rel(
85+
rnxs_inp=args.rnxs_inp,
86+
out_dir=args.out_dir,
87+
tmp_dir=args.tmp_dir,
88+
log_dir=args.log_dir,
89+
handle_software=args.handle_software,
90+
period=args.period,
91+
rolling_period=args.rolling_period,
92+
rolling_ref=rolling_ref_val,
93+
round_method=args.round_method,
94+
drop_epoch_rnd=args.drop_epoch_rnd,
95+
rinexmod_options=args.rinexmod_options,
96+
metadata=args.metadata,
97+
)
98+
99+
# Optionally print a short summary or representation
100+
if spc_main_obj is not None:
101+
print(spc_main_obj)
102+
103+
if __name__ == "__main__":
104+
main()

autorino/convert/cnv_cmd_run.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ def _convert_select(converter_inp, inp_raw_fpath=None):
156156
bin_kwoptions = dict()
157157

158158
# +++++ SEPTENTRIO
159-
elif re.match(".[0-9]{2}_", ext) or converter_inp == "sbf2rin":
159+
elif re.match(".([0-9]{2}_|A)", ext) or converter_inp == "sbf2rin":
160160
converter_name = "sbf2rin"
161161
brand = "Septentrio"
162162
cmd_build_fct = arocnv.cmd_build_sbf2rin

configfiles/main/autorino_main_cfg.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ environment:
1818
converto : "ConvertoCPP" # Path to ConvertoCPP tool.
1919
gfzrnx : "gfzrnx" # Path to GFZRNX tool.
2020
teqc : "teqc" # Path to TEQC tool.
21+
# NB: custom handle_software ('converto' or 'gfzrnx') must be defined as an option within splice/split steps.
2122
general:
2223
log_level: "DEBUG" # Logging level for the application.
2324
trimble_default_software: "trm2rinex" # Default Trimble converter key (lowercase).

docs/_modules/autorino/api/check_rnx.html

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<meta charset="utf-8" />
77
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
88
<title>autorino.api.check_rnx &mdash; autorino documentation</title>
9-
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=80d5e7a1" />
9+
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=b86133f3" />
1010
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
1111
<link rel="stylesheet" type="text/css" href="../../../_static/dark_mode_css/general.css?v=c0a7eb24" />
1212
<link rel="stylesheet" type="text/css" href="../../../_static/dark_mode_css/dark.css?v=70edf1c7" />
@@ -52,6 +52,7 @@
5252
<li class="toctree-l1"><a class="reference internal" href="../../../config_files_nutshell.html">Configuration files in a nutshell</a></li>
5353
<li class="toctree-l1"><a class="reference internal" href="../../../config_files_details.html">Configuration file details</a></li>
5454
<li class="toctree-l1"><a class="reference internal" href="../../../under_hood.html">Under the hood</a></li>
55+
<li class="toctree-l1"><a class="reference internal" href="../../../under_hood.html#about-epoch-range-and-timing">About <em>epoch range</em> and timing.</a></li>
5556
<li class="toctree-l1"><a class="reference internal" href="../../../autorino.html">autorino package</a></li>
5657
</ul>
5758

@@ -87,23 +88,23 @@ <h1>Source code for autorino.api.check_rnx</h1><div class="highlight"><pre>
8788

8889
<span class="sd">@author: psakic</span>
8990
<span class="sd">&quot;&quot;&quot;</span>
90-
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
91+
<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
9192

92-
<span class="kn">import</span> <span class="nn">autorino.cfgenv</span> <span class="k">as</span> <span class="nn">aroenv</span>
93-
<span class="kn">import</span> <span class="nn">autorino.check</span> <span class="k">as</span> <span class="nn">arochk</span>
94-
<span class="kn">import</span> <span class="nn">autorino.common</span> <span class="k">as</span> <span class="nn">arocmn</span>
95-
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
96-
<span class="kn">import</span> <span class="nn">os</span>
97-
<span class="kn">import</span> <span class="nn">logging</span>
98-
<span class="kn">from</span> <span class="nn">geodezyx</span> <span class="kn">import</span> <span class="n">utils</span>
93+
<span class="kn">import</span><span class="w"> </span><span class="nn">autorino.cfgenv</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">aroenv</span>
94+
<span class="kn">import</span><span class="w"> </span><span class="nn">autorino.check</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">arochk</span>
95+
<span class="kn">import</span><span class="w"> </span><span class="nn">autorino.common</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">arocmn</span>
96+
<span class="kn">import</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pd</span>
97+
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
98+
<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span>
99+
<span class="kn">from</span><span class="w"> </span><span class="nn">geodezyx</span><span class="w"> </span><span class="kn">import</span> <span class="n">utils</span>
99100

100101
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s2">&quot;autorino&quot;</span><span class="p">)</span>
101102
<span class="n">logger</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">aroenv</span><span class="o">.</span><span class="n">ARO_ENV_DIC</span><span class="p">[</span><span class="s2">&quot;general&quot;</span><span class="p">][</span><span class="s2">&quot;log_level&quot;</span><span class="p">])</span>
102103

103104

104105
<div class="viewcode-block" id="check_rnx">
105106
<a class="viewcode-back" href="../../../autorino.api.html#autorino.api.check_rnx.check_rnx">[docs]</a>
106-
<span class="k">def</span> <span class="nf">check_rnx</span><span class="p">(</span>
107+
<span class="k">def</span><span class="w"> </span><span class="nf">check_rnx</span><span class="p">(</span>
107108
<span class="n">inp_dir_parent</span><span class="p">,</span>
108109
<span class="n">inp_dir_structure</span><span class="p">,</span>
109110
<span class="n">epoch_start</span><span class="p">,</span>
@@ -112,7 +113,8 @@ <h1>Source code for autorino.api.check_rnx</h1><div class="highlight"><pre>
112113
<span class="n">output_dir</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
113114
<span class="p">):</span>
114115
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
115-
<span class="sd"> This function checks the RINEX files in the input directory.</span>
116+
<span class="sd"> Checks the presence of RINEX files in the input directory over a specified time range,</span>
117+
<span class="sd"> and computes their completeness ratio.</span>
116118

117119
<span class="sd"> Parameters</span>
118120
<span class="sd"> ----------</span>
@@ -188,7 +190,7 @@ <h1>Source code for autorino.api.check_rnx</h1><div class="highlight"><pre>
188190
<span class="c1"># checkrnx_format</span>
189191
<div class="viewcode-block" id="checkrnx_output">
190192
<a class="viewcode-back" href="../../../autorino.api.html#autorino.api.check_rnx.checkrnx_output">[docs]</a>
191-
<span class="k">def</span> <span class="nf">checkrnx_output</span><span class="p">(</span>
193+
<span class="k">def</span><span class="w"> </span><span class="nf">checkrnx_output</span><span class="p">(</span>
192194
<span class="n">output_dir</span><span class="p">,</span> <span class="n">eporng</span><span class="p">,</span> <span class="n">tabu_chk_col</span><span class="p">,</span> <span class="n">tabu_chk_bnw</span><span class="p">,</span> <span class="n">df_chk_sum</span><span class="p">,</span> <span class="n">df_chk_full_stats</span>
193195
<span class="p">):</span>
194196
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>

0 commit comments

Comments
 (0)