TRACK-pylib 0.1.0__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.
Files changed (45) hide show
  1. pyTRACK/__init__.py +4 -0
  2. pyTRACK/_lib/libtrack.so +0 -0
  3. pyTRACK/data/CMAP.1074 +46 -0
  4. pyTRACK/data/CMAP.dat.claire +16 -0
  5. pyTRACK/data/CMAP.dat.john +13458 -0
  6. pyTRACK/data/CMAP.dat.mask +3129 -0
  7. pyTRACK/data/CMAP.dat.mine +3001 -0
  8. pyTRACK/data/CMAP.dat.orig +3001 -0
  9. pyTRACK/data/adapt.dat +2 -0
  10. pyTRACK/data/constraints.dat +38 -0
  11. pyTRACK/data/constraints.dat.proto +38 -0
  12. pyTRACK/data/constraints.dat.reg +38 -0
  13. pyTRACK/data/constraints.dat.sphery +45 -0
  14. pyTRACK/data/gridT63.nc +0 -0
  15. pyTRACK/data/initial.T42_NH +19 -0
  16. pyTRACK/data/initial.T42_SH +19 -0
  17. pyTRACK/data/initial.T63_NH +19 -0
  18. pyTRACK/data/initial.T63_SH +19 -0
  19. pyTRACK/data/initial.st +16 -0
  20. pyTRACK/data/zone.dat +4 -0
  21. pyTRACK/data/zone.dat.new +10 -0
  22. pyTRACK/indat/RSPLICE.in +22 -0
  23. pyTRACK/indat/RSPLICE_GFS.in +20 -0
  24. pyTRACK/indat/RUNDATIN.GFS_MSLP.in +53 -0
  25. pyTRACK/indat/RUNDATIN.GFS_MSLP_A.in +54 -0
  26. pyTRACK/indat/RUNDATIN.GFS_VOR.in +53 -0
  27. pyTRACK/indat/RUNDATIN.GFS_VOR_A.in +54 -0
  28. pyTRACK/indat/RUNDATIN.era_MSLP.in +49 -0
  29. pyTRACK/indat/RUNDATIN.era_MSLP_A.in +50 -0
  30. pyTRACK/indat/RUNDATIN.era_VOR.in +50 -0
  31. pyTRACK/indat/RUNDATIN.era_VOR_A.in +51 -0
  32. pyTRACK/indat/SPACE_FILTER.in +38 -0
  33. pyTRACK/indat/STATS.era2_NH.in +110 -0
  34. pyTRACK/indat/STATS.era2_NH_wght.in +147 -0
  35. pyTRACK/indat/STATS.era2_SH.in +110 -0
  36. pyTRACK/indat/STATS.era2_SH_wght.in +143 -0
  37. pyTRACK/indat/calcvor_onelev.in +34 -0
  38. pyTRACK/indat/specfilt.in +31 -0
  39. pyTRACK/track.py +70 -0
  40. pyTRACK/track_master.py +245 -0
  41. pyTRACK/utils.py +425 -0
  42. track_pylib-0.1.0.dist-info/METADATA +28 -0
  43. track_pylib-0.1.0.dist-info/RECORD +45 -0
  44. track_pylib-0.1.0.dist-info/WHEEL +5 -0
  45. track_pylib-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,51 @@
1
+ n
2
+ 1
3
+ /users/nutis/kih/R_TRACK/data/initial
4
+ n
5
+ n
6
+ n
7
+ y
8
+ 1.0e+5
9
+ n
10
+ 1.0
11
+ 1
12
+ n
13
+ 0
14
+ n
15
+ 2#
16
+ 1
17
+ 30!
18
+ e
19
+ 2
20
+ 7
21
+ n
22
+ 0
23
+ n
24
+ n
25
+ n
26
+ 0.
27
+ y
28
+ 1
29
+ 0
30
+ 0.
31
+ y
32
+ d
33
+ n
34
+ n
35
+ 0
36
+ n
37
+ 0.2
38
+ 0.8
39
+ y
40
+ y
41
+ 6.
42
+ 1.
43
+ n
44
+ n
45
+ n
46
+ y
47
+ y
48
+ y
49
+ 0
50
+ 0
51
+ n
@@ -0,0 +1,38 @@
1
+ /users/nutis/kih/DISK2/ERA_UTF/RAW/THETA/vor.dat
2
+ n
3
+ 0
4
+ 0
5
+ y
6
+ n
7
+ n
8
+ g
9
+ n
10
+ 1
11
+ 128
12
+ 1
13
+ 64
14
+ y
15
+ 4
16
+ 1
17
+ 1
18
+ 100000
19
+ 0
20
+ 42
21
+ 0
22
+ y
23
+ 1
24
+ 2
25
+ 0
26
+ 5
27
+ 50
28
+ 1
29
+ 1
30
+ y
31
+ 0.1
32
+ n
33
+ y
34
+ y
35
+ 370
36
+ 370
37
+ y
38
+ ERA_T42_128_64
@@ -0,0 +1,110 @@
1
+ /users/nutis/kih/T_TRACK/indat/gridT42.utf
2
+ n
3
+ 1
4
+ /users/nutis/kih/T_TRACK/data/initial.stat
5
+ y
6
+ 1
7
+ y
8
+ tr_trs
9
+ 1
10
+ 1000000000
11
+ n
12
+ n
13
+ n
14
+ n
15
+ n
16
+ n
17
+ 2
18
+ 1
19
+ 100000
20
+ 1
21
+ n
22
+ 6.
23
+ y
24
+ 1
25
+ n
26
+ 1
27
+ y
28
+ 1
29
+ s
30
+ 2
31
+ 90.
32
+ 0.
33
+ 1
34
+ 129
35
+ 1
36
+ 64
37
+ 100
38
+ 100
39
+ -1.951718
40
+ 1.951718
41
+ -1.951718
42
+ 1.951718
43
+ 3000
44
+ 0.0
45
+ 360.0
46
+ 0.0
47
+ 90.0
48
+ 0.25
49
+ s
50
+ 2
51
+ 3
52
+ 400.
53
+ 0.1
54
+ n
55
+ 0.5
56
+ n
57
+ 1
58
+ s
59
+ 2
60
+ 3
61
+ 400.
62
+ 0.1
63
+ n
64
+ 0.5
65
+ n
66
+ 1
67
+ s
68
+ 2
69
+ 3
70
+ 400.
71
+ 0.1
72
+ n
73
+ 0.5
74
+ n
75
+ 0
76
+ 2
77
+ 3
78
+ 400.
79
+ 0.1
80
+ n
81
+ 0.5
82
+ n
83
+ 0
84
+ 2
85
+ 3
86
+ 150.
87
+ 0.1
88
+ 0.5
89
+ n
90
+ 2
91
+ 3
92
+ 150.
93
+ 0.1
94
+ 0.5
95
+ n
96
+ y
97
+ 2
98
+ 3
99
+ 200.
100
+ 0.1
101
+ 0.5
102
+ n
103
+ 0
104
+ y
105
+ y
106
+ 0.023909410
107
+ n
108
+ 0
109
+
110
+
@@ -0,0 +1,147 @@
1
+ /users/kih/TRACK-hg-working/indat/gridT42.utf
2
+ n
3
+ 0
4
+ 2
5
+ 0.001
6
+ n
7
+ y
8
+ g
9
+ n
10
+ 1
11
+ 128
12
+ 1
13
+ 64
14
+ y
15
+ 1
16
+ y
17
+ y
18
+ tr_trs
19
+ s
20
+ 1
21
+ 1000000000
22
+ n
23
+ n
24
+ n
25
+ n
26
+ a
27
+ n
28
+ n
29
+ n
30
+ 2
31
+ 1
32
+ 100000
33
+ 0
34
+ 1
35
+ n
36
+ 6.
37
+ y
38
+ 1
39
+ n
40
+ 1
41
+ y
42
+ 1
43
+ 0
44
+ s
45
+ 2
46
+ 90.
47
+ 0.
48
+ 1
49
+ 129
50
+ 1
51
+ 64
52
+ 0
53
+ 100
54
+ 100
55
+ -1.951718
56
+ 1.951718
57
+ -1.951718
58
+ 1.951718
59
+ 5000
60
+ 0.0
61
+ 360.0
62
+ 0.0
63
+ 90.0
64
+ y
65
+ 0.005
66
+ 0.25
67
+ 0
68
+ a
69
+ 1
70
+ 0
71
+ 5
72
+ s
73
+ n
74
+ 1
75
+ y
76
+ 3
77
+ 400.
78
+ 0.1
79
+ n
80
+ 0.5
81
+ n
82
+ 1
83
+ s
84
+ n
85
+ 1
86
+ n
87
+ 3
88
+ 400.
89
+ 0.1
90
+ n
91
+ 0.5
92
+ n
93
+ 1
94
+ s
95
+ n
96
+ 1
97
+ n
98
+ 3
99
+ 400.
100
+ 0.1
101
+ n
102
+ 0.5
103
+ n
104
+ 0
105
+ n
106
+ 1
107
+ n
108
+ 3
109
+ 400.
110
+ 0.1
111
+ n
112
+ 0.5
113
+ n
114
+ 0
115
+ n
116
+ 1
117
+ n
118
+ 3
119
+ 150.
120
+ 0.1
121
+ 0.5
122
+ n
123
+ n
124
+ 1
125
+ n
126
+ 3
127
+ 150.
128
+ 0.1
129
+ 0.5
130
+ n
131
+ y
132
+ n
133
+ 1
134
+ n
135
+ 3
136
+ 200.
137
+ 0.1
138
+ 0.5
139
+ n
140
+ 0
141
+ y
142
+ y
143
+ 0.023909410
144
+ n
145
+ 0
146
+
147
+
@@ -0,0 +1,110 @@
1
+ /users/nutis/kih/T_TRACK/indat/gridT42.utf
2
+ n
3
+ 1
4
+ /users/nutis/kih/T_TRACK/data/initial.stat
5
+ y
6
+ 1
7
+ y
8
+ tr_trs
9
+ 1
10
+ 1000000000
11
+ n
12
+ n
13
+ n
14
+ n
15
+ n
16
+ n
17
+ 2
18
+ 1
19
+ 100000
20
+ 1
21
+ n
22
+ 6.
23
+ y
24
+ 1
25
+ n
26
+ 1
27
+ y
28
+ 1
29
+ s
30
+ 2
31
+ -90.
32
+ 0.
33
+ 1
34
+ 129
35
+ 1
36
+ 64
37
+ 100
38
+ 100
39
+ -1.951718
40
+ 1.951718
41
+ -1.951718
42
+ 1.951718
43
+ 3000
44
+ 0.0
45
+ 360.0
46
+ -90.0
47
+ 0.0
48
+ 0.25
49
+ s
50
+ 2
51
+ 3
52
+ 400.
53
+ 0.1
54
+ n
55
+ 0.5
56
+ n
57
+ 1
58
+ s
59
+ 2
60
+ 3
61
+ 400.
62
+ 0.1
63
+ n
64
+ 0.5
65
+ n
66
+ 1
67
+ s
68
+ 2
69
+ 3
70
+ 400.
71
+ 0.1
72
+ n
73
+ 0.5
74
+ n
75
+ 0
76
+ 2
77
+ 3
78
+ 400.
79
+ 0.1
80
+ n
81
+ 0.5
82
+ n
83
+ 0
84
+ 2
85
+ 3
86
+ 150.
87
+ 0.1
88
+ 0.5
89
+ n
90
+ 2
91
+ 3
92
+ 150.
93
+ 0.1
94
+ 0.5
95
+ n
96
+ y
97
+ 2
98
+ 3
99
+ 200.
100
+ 0.1
101
+ 0.5
102
+ n
103
+ 0
104
+ y
105
+ y
106
+ 0.023909410
107
+ n
108
+ 0
109
+
110
+
@@ -0,0 +1,143 @@
1
+ /users/kih/TRACK-hg-working/indat/gridT42.utf
2
+ n
3
+ 0
4
+ 2
5
+ 0.001
6
+ n
7
+ y
8
+ g
9
+ n
10
+ 1
11
+ 129
12
+ 1
13
+ 64
14
+ y
15
+ 1
16
+ y
17
+ y
18
+ tr_trs
19
+ s
20
+ 1
21
+ 1000000000
22
+ n
23
+ n
24
+ n
25
+ n
26
+ a
27
+ n
28
+ n
29
+ n
30
+ 2
31
+ 1
32
+ 100000
33
+ 0
34
+ 1
35
+ n
36
+ 6.
37
+ y
38
+ 1
39
+ n
40
+ 1
41
+ y
42
+ 1
43
+ 0
44
+ s
45
+ 2
46
+ -90.
47
+ 0.
48
+ 1
49
+ 129
50
+ 1
51
+ 64
52
+ 0
53
+ 100
54
+ 100
55
+ -1.951718 1.951878
56
+ -1.951718 1.951878
57
+ 5000
58
+ 0.0
59
+ 360.0
60
+ -90.0
61
+ 0.0
62
+ y
63
+ 0.005
64
+ 0.25
65
+ 0
66
+ a
67
+ 1
68
+ 0
69
+ 5
70
+ s
71
+ n
72
+ 1
73
+ n
74
+ 3
75
+ 400.
76
+ 0.1
77
+ n
78
+ 0.5
79
+ n
80
+ 1
81
+ s
82
+ n
83
+ 1
84
+ n
85
+ 3
86
+ 400.
87
+ 0.1
88
+ n
89
+ 0.5
90
+ n
91
+ 1
92
+ s
93
+ n
94
+ 1
95
+ n
96
+ 3
97
+ 400.
98
+ 0.1
99
+ n
100
+ 0.5
101
+ n
102
+ 0
103
+ n
104
+ 1
105
+ n
106
+ 3
107
+ 400.
108
+ 0.1
109
+ n
110
+ 0.5
111
+ n
112
+ 0
113
+ n
114
+ 1
115
+ n
116
+ 3
117
+ 150.
118
+ 0.1
119
+ 0.5
120
+ n
121
+ n
122
+ 1
123
+ n
124
+ 3
125
+ 150.
126
+ 0.1
127
+ 0.5
128
+ n
129
+ y
130
+ n
131
+ 1
132
+ n
133
+ 3
134
+ 200.
135
+ 0.1
136
+ 0.5
137
+ n
138
+ 0
139
+ y
140
+ y
141
+ 0.023909410
142
+ n
143
+ 0
@@ -0,0 +1,34 @@
1
+ n
2
+ 0
3
+ 4
4
+ n
5
+ 1
6
+ y
7
+ VAR1
8
+ n
9
+ n
10
+ g
11
+ n
12
+ 1
13
+ NX
14
+ 1
15
+ NY
16
+ y
17
+ 12
18
+ 0
19
+ 2
20
+ y
21
+ VAR1
22
+ VAR2
23
+ 1
24
+ 1
25
+ 10000
26
+ 1
27
+ 1
28
+ 10000
29
+ VORFILE
30
+ 0
31
+ 10
32
+ 0.
33
+ 0.
34
+ 0
@@ -0,0 +1,31 @@
1
+ n
2
+ 0
3
+ 0
4
+ y
5
+ n
6
+ n
7
+ g
8
+ n
9
+ 1
10
+ NX
11
+ 1
12
+ NY
13
+ y
14
+ 4
15
+ 1
16
+ 1
17
+ 10000
18
+ 1
19
+ n
20
+ TRUNC
21
+ y
22
+ 1
23
+ TRUNC
24
+ 2
25
+ y
26
+ 0.1
27
+ 0
28
+ 5
29
+ TRUNC
30
+ n
31
+
pyTRACK/track.py ADDED
@@ -0,0 +1,70 @@
1
+ def set_track_env():
2
+ import os
3
+
4
+ pkgpath=os.path.dirname(__file__)
5
+ curr=os.getcwd()
6
+ os.environ["DATCM"] = pkgpath
7
+ os.environ["SPECTRAL"] = os.path.join(curr, "specfilt")
8
+ os.environ["FINIT"] = os.path.join(curr, "month.nc")
9
+
10
+ def track(input_file="input.nc", namelist=None):
11
+ """
12
+ Run TRACK.
13
+
14
+ Parameters
15
+ ----------
16
+ input_file : str
17
+ Name of the input file (passed with -i).
18
+ namelist : str or None
19
+ Path to the namelist file to feed to stdin.
20
+ If None, runs TRACK normally without stdin redirection.
21
+ """
22
+
23
+ import os
24
+ import ctypes
25
+
26
+ # Path to shared library
27
+ _LIB = os.path.join(os.path.dirname(__file__), "_lib", "libtrack.so")
28
+
29
+ if not os.path.exists(_LIB):
30
+ raise FileNotFoundError(f"libtrack.so not found at {_LIB}")
31
+
32
+ lib = ctypes.CDLL(_LIB)
33
+
34
+ # Define function signature
35
+ lib.track_main.argtypes = [
36
+ ctypes.c_int,
37
+ ctypes.POINTER(ctypes.c_char_p)
38
+ ]
39
+ lib.track_main.restype = ctypes.c_int
40
+
41
+ pkgpath = os.path.dirname(__file__)
42
+
43
+ args = [
44
+ b"track",
45
+ b"-i", input_file.encode("utf-8"),
46
+ b"-f", b"year",
47
+ ]
48
+
49
+ argc = len(args)
50
+ argv = (ctypes.c_char_p * argc)(*args)
51
+
52
+ set_track_env()
53
+
54
+ if namelist is not None:
55
+ # If a namelist is provided, redirect stdin
56
+ if not os.path.exists(namelist):
57
+ raise FileNotFoundError(f"Namelist not found: {namelist}")
58
+
59
+ import os
60
+ old_stdin_fd = os.dup(0)
61
+ try:
62
+ with open(namelist, "rb") as f:
63
+ os.dup2(f.fileno(), 0) # redirect stdin
64
+ lib.track_main(argc, argv)
65
+ finally:
66
+ os.dup2(old_stdin_fd, 0) # restore stdin
67
+ os.close(old_stdin_fd)
68
+ else:
69
+ # No namelist, call normally
70
+ lib.track_main(argc, argv)