rda-python-icoads 1.0.6__py3-none-any.whl → 1.0.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rda-python-icoads might be problematic. Click here for more details.
- rda_python_icoads/R3.0-stat_doc.pdf +0 -0
- rda_python_icoads/checkicoads.py +222 -0
- rda_python_icoads/cleanicoads.py +175 -0
- rda_python_icoads/counticoads.py +153 -0
- rda_python_icoads/fillicoads.py +138 -0
- rda_python_icoads/fillinventory.py +149 -0
- rda_python_icoads/fillitable.py +289 -0
- rda_python_icoads/fillmonth.py +94 -0
- rda_python_icoads/imma1_subset.py +1 -0
- rda_python_icoads/msg +457 -0
- rda_python_icoads/msg3.0_subset_readme.txt +94 -0
- rda_python_icoads/msg3_subset.py +345 -0
- rda_python_icoads/msg_download.py +211 -0
- rda_python_icoads/msgsubset.f +612 -0
- rda_python_icoads/writeicoads.py +169 -0
- {rda_python_icoads-1.0.6.dist-info → rda_python_icoads-1.0.9.dist-info}/METADATA +1 -1
- rda_python_icoads-1.0.9.dist-info/RECORD +25 -0
- rda_python_icoads-1.0.9.dist-info/entry_points.txt +12 -0
- rda_python_icoads-1.0.6.dist-info/RECORD +0 -11
- rda_python_icoads-1.0.6.dist-info/entry_points.txt +0 -2
- {rda_python_icoads-1.0.6.dist-info → rda_python_icoads-1.0.9.dist-info}/LICENSE +0 -0
- {rda_python_icoads-1.0.6.dist-info → rda_python_icoads-1.0.9.dist-info}/WHEEL +0 -0
- {rda_python_icoads-1.0.6.dist-info → rda_python_icoads-1.0.9.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
#
|
|
3
|
+
##################################################################################
|
|
4
|
+
#
|
|
5
|
+
# Title : writeicoads
|
|
6
|
+
# Author : Zaihua Ji, zji@ucar.edu
|
|
7
|
+
# Date : 01/05/2021
|
|
8
|
+
# 2025-03-03 transferred to package rda_python_icoads from
|
|
9
|
+
# https://github.com/NCAR/rda-icoads.git
|
|
10
|
+
# Purpose : read ICOADS data from IVADDB and write out monthly files in IMMA format
|
|
11
|
+
#
|
|
12
|
+
# Github : https://github.com/NCAR/rda-python-icoads.git
|
|
13
|
+
#
|
|
14
|
+
##################################################################################
|
|
15
|
+
|
|
16
|
+
import sys
|
|
17
|
+
import os
|
|
18
|
+
import re
|
|
19
|
+
from os import path as op
|
|
20
|
+
from rda_python_common import PgLOG
|
|
21
|
+
from rda_python_common import PgDBI
|
|
22
|
+
from rda_python_common import PgSIG
|
|
23
|
+
from rda_python_common import PgUtil
|
|
24
|
+
from rda_python_common import PgFile
|
|
25
|
+
from . import PgIMMA
|
|
26
|
+
|
|
27
|
+
PVALS = {
|
|
28
|
+
'bdate' : None,
|
|
29
|
+
'edate' : None,
|
|
30
|
+
'month' : [],
|
|
31
|
+
'bmdate' : [],
|
|
32
|
+
'emdate' : [],
|
|
33
|
+
'fnroot' : "IMMA1_R3.0.0",
|
|
34
|
+
'names' : None,
|
|
35
|
+
'mporc' : 10,
|
|
36
|
+
'dumpall' : 0
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
#
|
|
40
|
+
# main function to run dsarch
|
|
41
|
+
#
|
|
42
|
+
def main():
|
|
43
|
+
|
|
44
|
+
option = ''
|
|
45
|
+
argv = sys.argv[1:]
|
|
46
|
+
|
|
47
|
+
for arg in argv:
|
|
48
|
+
if arg == "-b":
|
|
49
|
+
PgLOG.PGLOG['BCKGRND'] = 1
|
|
50
|
+
elif arg == "-a":
|
|
51
|
+
PVALS['dumpall'] = 1
|
|
52
|
+
elif arg == "-f":
|
|
53
|
+
option = 'f'
|
|
54
|
+
elif arg == "-m":
|
|
55
|
+
option = 'm'
|
|
56
|
+
elif re.match(r'^-', arg):
|
|
57
|
+
PgLOG.pglog(arg + ": Invalid Option", PgLOG.LGWNEX)
|
|
58
|
+
elif option:
|
|
59
|
+
if option == 'f':
|
|
60
|
+
PVALS['fnroot'] = arg
|
|
61
|
+
elif option == 'm':
|
|
62
|
+
PVALS['mproc'] = arg
|
|
63
|
+
option = ''
|
|
64
|
+
elif not PVALS['bdate']:
|
|
65
|
+
PVALS['bdate'] = arg
|
|
66
|
+
elif not PVALS['edate']:
|
|
67
|
+
PVALS['edate'] = arg
|
|
68
|
+
else:
|
|
69
|
+
PgLOG.pglog(arg + ": Invalid parameter", PgLOG.LGWNEX)
|
|
70
|
+
|
|
71
|
+
PgDBI.ivaddb_dbname()
|
|
72
|
+
|
|
73
|
+
if not (PVALS['bdate'] and PVALS['edate']):
|
|
74
|
+
pgrec = PgDBI.pgget("cntldb.inventory", "min(date) bdate, max(date) edate", '', PgLOG.LGEREX)
|
|
75
|
+
print("Usage: writeicoads [-a] [-m mproc] [-f RootFileName] BeginDate EndDate")
|
|
76
|
+
print(" Default RootFileName = {}".format(PVALS['fnroot']))
|
|
77
|
+
print(" Option -a - dump all attms, including multi-line ones, such as IVAD and REANQC")
|
|
78
|
+
print(" Option -m - start up to given number of processes, one for each file dump (Default to 10)")
|
|
79
|
+
print(" Set BeginDate and EndDate between '{}' and '{}'".format(pgrec['bdate'], pgrec['edate']))
|
|
80
|
+
sys.exit(0)
|
|
81
|
+
|
|
82
|
+
if PgUtil.diffdate(PVALS['bdate'], PVALS['edate']) > 0:
|
|
83
|
+
tmpdate = PVALS['bdate']
|
|
84
|
+
PVALS['bdate'] = PVALS['edate']
|
|
85
|
+
PVALS['edate'] = tmpdate
|
|
86
|
+
|
|
87
|
+
PgLOG.PGLOG['LOGFILE'] = "icoads.log"
|
|
88
|
+
PgLOG.cmdlog("writeicoads {}".format(' '.join(argv)))
|
|
89
|
+
PVALS['names'] = '/'.join(PgIMMA.IMMA_NAMES)
|
|
90
|
+
write_imma_data()
|
|
91
|
+
PgLOG.cmdlog()
|
|
92
|
+
sys.exit(0)
|
|
93
|
+
|
|
94
|
+
#
|
|
95
|
+
# read imma data from IVADB and dump into files
|
|
96
|
+
#
|
|
97
|
+
def write_imma_data():
|
|
98
|
+
|
|
99
|
+
mcnt = init_months()
|
|
100
|
+
|
|
101
|
+
if mcnt == 1: PVALS['mproc'] = 1
|
|
102
|
+
if PVALS['mproc'] > 1: PgSIG.start_none_daemon('writeicoads', '', PgLOG.PGLOG['CURUID'], PVALS['mproc'], 300, 1)
|
|
103
|
+
|
|
104
|
+
for midx in range(mcnt):
|
|
105
|
+
if PVALS['mproc'] > 1:
|
|
106
|
+
stat = PgSIG.start_child("writeicoads_{}".format(midx), PgLOG.LOGWRN, 1) # try to start a child process
|
|
107
|
+
if stat <= 0:
|
|
108
|
+
sys.exit(1) # something wrong
|
|
109
|
+
elif PgSIG.PGSIG['PPID'] > 1:
|
|
110
|
+
write_monthly_imma_file(midx)
|
|
111
|
+
sys.exit(0) # stop child process
|
|
112
|
+
else:
|
|
113
|
+
PgDBI.pgdisconnect(0) # disconnect database for reconnection
|
|
114
|
+
continue # continue for next midx
|
|
115
|
+
else:
|
|
116
|
+
write_monthly_imma_file(midx)
|
|
117
|
+
|
|
118
|
+
if PVALS['mproc'] > 1: # quit parent without waiting
|
|
119
|
+
PgLOG.pglog("Started {} child processes to write icoads files".format(mcnt), PgLOG.LOGWRN)
|
|
120
|
+
|
|
121
|
+
#
|
|
122
|
+
# read icoads record from given file name and save them into RDADB
|
|
123
|
+
#
|
|
124
|
+
def write_monthly_imma_file(midx):
|
|
125
|
+
|
|
126
|
+
fname = "{}_{}".format(PVALS['fnroot'], PVALS['month'][midx])
|
|
127
|
+
PgLOG.pglog("write IMMA1 records into File '{}' from IVADDB".format(fname), PgLOG.WARNLG)
|
|
128
|
+
opened = 0
|
|
129
|
+
acounts = [0]*PgIMMA.TABLECOUNT
|
|
130
|
+
IMMA = open(fname, 'w')
|
|
131
|
+
cdate = PVALS['bmdate'][midx]
|
|
132
|
+
while cdate <= PVALS['emdate'][midx]:
|
|
133
|
+
acnts = PgIMMA.write_imma_records(IMMA, cdate, 0, PVALS['dumpall'])
|
|
134
|
+
if acnts:
|
|
135
|
+
for i in range(PgIMMA.TABLECOUNT): acounts[i] += acnts[i]
|
|
136
|
+
cdate = PgUtil.adddate(cdate, 0, 0, 1)
|
|
137
|
+
|
|
138
|
+
IMMA.close()
|
|
139
|
+
if acounts[0] == 0: PgFile.delete_local_file(fname)
|
|
140
|
+
|
|
141
|
+
PgLOG.pglog("{}({}) written into {}".format('/'.join(map(str, acounts)), PVALS['names'], fname), PgLOG.LOGWRN)
|
|
142
|
+
|
|
143
|
+
#
|
|
144
|
+
# intialize month arrays
|
|
145
|
+
#
|
|
146
|
+
def init_months():
|
|
147
|
+
|
|
148
|
+
bdate = PVALS['bdate']
|
|
149
|
+
table = "cntldb.inventory"
|
|
150
|
+
mcnt = done = 0
|
|
151
|
+
while True:
|
|
152
|
+
edate = PgUtil.enddate(bdate, 0, 'M')
|
|
153
|
+
if PgUtil.diffdate(PVALS['edate'], edate) <= 0:
|
|
154
|
+
edate = PVALS['edate']
|
|
155
|
+
done = 1
|
|
156
|
+
if PgDBI.pgget(table, "date", "date BETWEEN '{}' AND '{}'".format(bdate, edate), PgLOG.LGEREX):
|
|
157
|
+
PVALS['bmdate'].append(bdate)
|
|
158
|
+
PVALS['month'].append(PgUtil.format_date(bdate, "YYYY-MM"))
|
|
159
|
+
PVALS['emdate'].append(edate)
|
|
160
|
+
mcnt += 1
|
|
161
|
+
if done: break
|
|
162
|
+
bdate = PgUtil.adddate(edate, 0, 0, 1)
|
|
163
|
+
|
|
164
|
+
return mcnt
|
|
165
|
+
|
|
166
|
+
#
|
|
167
|
+
# call main() to start program
|
|
168
|
+
#
|
|
169
|
+
if __name__ == "__main__": main()
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
rda_python_icoads/PgIMMA.py,sha256=VJVFXUzOpGhlm-oHV35zkX_I-MMo-pJQt31ZOIlIDeo,58125
|
|
2
|
+
rda_python_icoads/R3.0-stat_doc.pdf,sha256=7f9wKlaTV7ZWXCqyZ4MZ3QcL5pw-Hz623A3xe8QCoFM,59515
|
|
3
|
+
rda_python_icoads/README_R3.0_Subset.html,sha256=tf5Om69KsZZ9ksIjIwtGQUtU8O4U-fqOrIxrl_4tRPo,6878
|
|
4
|
+
rda_python_icoads/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
5
|
+
rda_python_icoads/checkicoads.py,sha256=nbA09uqaVBf9BHPWWeLFke3sRAGgV7CyOG4VIKI33wY,6599
|
|
6
|
+
rda_python_icoads/cleanicoads.py,sha256=A7JuwYbaVHjVpZFuQZBd9YMQTdMnu7YiqSmbnq058BI,4936
|
|
7
|
+
rda_python_icoads/counticoads.py,sha256=GB7mRXXQ80Ty_1UF4hyYxrO0IPOeUCq5JUhoxkuvXZs,4555
|
|
8
|
+
rda_python_icoads/fillicoads.py,sha256=xIj9vm3LdhjwQar28B77vfpe7gJDGHCUZ_08zzRnTuo,4239
|
|
9
|
+
rda_python_icoads/fillinventory.py,sha256=eRNw6laHsF_Ry5SVOJCulDNa4T-9FTT2UObt__Pr3IM,4144
|
|
10
|
+
rda_python_icoads/fillitable.py,sha256=_zCUuYZifMZUoBO8JSY0DcoQOM33smQ1WtWJWnlH3ks,9941
|
|
11
|
+
rda_python_icoads/fillmonth.py,sha256=Abo_5KoX4Zs-vlYcEvovo14xEiO_BNgUxV5fFxT-L3M,2546
|
|
12
|
+
rda_python_icoads/imma1_subset.py,sha256=8r130jzm4b9IPjMJBwwRvWrdgxDnXC8KbQjFwiE7LPA,23704
|
|
13
|
+
rda_python_icoads/msg,sha256=J5lkNELaJke718h8VJgqbR0v_nkivStfW0xKz30sVJw,27153
|
|
14
|
+
rda_python_icoads/msg3.0_subset_readme.txt,sha256=Nb3rFq4lkxBDhSzS5XLCgCkZpozUGefy2JkUh1gk0Wo,4144
|
|
15
|
+
rda_python_icoads/msg3_subset.py,sha256=piTGWpsUjbCD2J6q3SylQRlzux5RqW4-ifoSMbvFK_s,13026
|
|
16
|
+
rda_python_icoads/msg_download.py,sha256=SqJVdVs6kN-ZLh1d4rSMS4IkRdRrYf5c4Y45zV7pJVQ,6704
|
|
17
|
+
rda_python_icoads/msgsubset.f,sha256=KuM2WAk0ZFEH8LBhHKiGWt8zaW_0ARJXYV2kiD5w5xs,21253
|
|
18
|
+
rda_python_icoads/rdimma1_csv.f,sha256=_hOHvA0UiTykCIsj7ZYkmooNmUq29-p7ZnyjeSyvt8U,22443
|
|
19
|
+
rda_python_icoads/writeicoads.py,sha256=nNgcPTFw957qsBkMVXgrPAkj3qmG8g5b6NeePp4NkNk,5270
|
|
20
|
+
rda_python_icoads-1.0.9.dist-info/LICENSE,sha256=1dck4EAQwv8QweDWCXDx-4Or0S8YwiCstaso_H57Pno,1097
|
|
21
|
+
rda_python_icoads-1.0.9.dist-info/METADATA,sha256=gEgX9ihZd2B002Z7_knUJWgqybCtUa9Fqp6mHcdJjyk,772
|
|
22
|
+
rda_python_icoads-1.0.9.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
23
|
+
rda_python_icoads-1.0.9.dist-info/entry_points.txt,sha256=AQnzGqKNOCg8X7dRieCscw3tH8_Y05RCw9_ij4hlIOY,557
|
|
24
|
+
rda_python_icoads-1.0.9.dist-info/top_level.txt,sha256=PjJe4PwUIiNxPlNg2d8JNPY1SLSu-_GHAdXe-hUVU1U,18
|
|
25
|
+
rda_python_icoads-1.0.9.dist-info/RECORD,,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
checkicoads = rda_python_icoads.checkicoads:main
|
|
3
|
+
cleanicoads = rda_python_icoads.cleanicoads:main
|
|
4
|
+
counticoads = rda_python_icoads.counticoads:main
|
|
5
|
+
fillicoads = rda_python_icoads.fillicoads:main
|
|
6
|
+
fillinventory = rda_python_icoads.fillinventory:main
|
|
7
|
+
fillitable = rda_python_icoads.fillitable:main
|
|
8
|
+
fillmonth = rda_python_icoads.fillmonth:main
|
|
9
|
+
imma1_subset = rda_python_icoads.imma1_subset:main
|
|
10
|
+
msg3_subset = rda_python_icoads.msg3_subset:main
|
|
11
|
+
msg_download = rda_python_icoads.msg_download:main
|
|
12
|
+
writeicoads = rda_python_icoads.writeicoads:main
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
rda_python_icoads/PgIMMA.py,sha256=VJVFXUzOpGhlm-oHV35zkX_I-MMo-pJQt31ZOIlIDeo,58125
|
|
2
|
-
rda_python_icoads/README_R3.0_Subset.html,sha256=tf5Om69KsZZ9ksIjIwtGQUtU8O4U-fqOrIxrl_4tRPo,6878
|
|
3
|
-
rda_python_icoads/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
4
|
-
rda_python_icoads/imma1_subset.py,sha256=vPZ-pHoE1pY0_KCEERx5-cvD6N0Drwvk0GLPa3i5fxo,23680
|
|
5
|
-
rda_python_icoads/rdimma1_csv.f,sha256=_hOHvA0UiTykCIsj7ZYkmooNmUq29-p7ZnyjeSyvt8U,22443
|
|
6
|
-
rda_python_icoads-1.0.6.dist-info/LICENSE,sha256=1dck4EAQwv8QweDWCXDx-4Or0S8YwiCstaso_H57Pno,1097
|
|
7
|
-
rda_python_icoads-1.0.6.dist-info/METADATA,sha256=5c3M34YkDs1ljjEOxUbUbGnwDj-M9cQsHDJJbQsJXDM,772
|
|
8
|
-
rda_python_icoads-1.0.6.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
9
|
-
rda_python_icoads-1.0.6.dist-info/entry_points.txt,sha256=q-IUAuLdRph_A67-ktgEyowjGyOSRovQTzQWPf_Qtwk,69
|
|
10
|
-
rda_python_icoads-1.0.6.dist-info/top_level.txt,sha256=PjJe4PwUIiNxPlNg2d8JNPY1SLSu-_GHAdXe-hUVU1U,18
|
|
11
|
-
rda_python_icoads-1.0.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|