rda-python-icoads 1.0.7__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.

@@ -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()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rda_python_icoads
3
- Version: 1.0.7
3
+ Version: 1.0.9
4
4
  Summary: RDA python package to manage RDA ICOADS datasets
5
5
  Author-email: Zaihua Ji <zji@ucar.edu>
6
6
  Project-URL: Homepage, https://github.com/NCAR/rda-python-icoads
@@ -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=8r130jzm4b9IPjMJBwwRvWrdgxDnXC8KbQjFwiE7LPA,23704
5
- rda_python_icoads/rdimma1_csv.f,sha256=_hOHvA0UiTykCIsj7ZYkmooNmUq29-p7ZnyjeSyvt8U,22443
6
- rda_python_icoads-1.0.7.dist-info/LICENSE,sha256=1dck4EAQwv8QweDWCXDx-4Or0S8YwiCstaso_H57Pno,1097
7
- rda_python_icoads-1.0.7.dist-info/METADATA,sha256=A_c8OYK75PcYGSFTl7Cy2LwVZ2TNTGlns8EUXa5QO1Y,772
8
- rda_python_icoads-1.0.7.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
9
- rda_python_icoads-1.0.7.dist-info/entry_points.txt,sha256=q-IUAuLdRph_A67-ktgEyowjGyOSRovQTzQWPf_Qtwk,69
10
- rda_python_icoads-1.0.7.dist-info/top_level.txt,sha256=PjJe4PwUIiNxPlNg2d8JNPY1SLSu-_GHAdXe-hUVU1U,18
11
- rda_python_icoads-1.0.7.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- imma1_subset = rda_python_icoads.imma1_subset:main