1 |
#meta_data.pm |
---|
2 |
#Time-stamp: <2005-03-15 10:47:56 lstearns> |
---|
3 |
# |
---|
4 |
#Abstract: This module will read in tables of tower related meta data |
---|
5 |
# and output hash arrays of the information based on param id. Hacked |
---|
6 |
# together from the subroutine in tower_parse.perl and perl_defs.pm, |
---|
7 |
# a piece of code from Brian Blanton (Thanks Brian!!). |
---|
8 |
|
---|
9 |
# perl defs and subroutines common to quoddy nc/fc runs |
---|
10 |
# v11/07/2001 B.O.B. |
---|
11 |
# v02/09/2002 B.O.B. to work out of dmf |
---|
12 |
# v06/04/2002 B.O.B. added initial da stuff |
---|
13 |
# v19/08/2002 B.O.B. fixes for changes to "edu" from "com" |
---|
14 |
# v13/09/2002 B.O.B. added truxton stuff |
---|
15 |
# v13/12/2002 B.O.B. version for casco4b inclusion/ ssh assim |
---|
16 |
# vxx/09/2003 B.O.B. modified for SEACOOS |
---|
17 |
# v15/02/2004 B.O.B. turned into perl package provider (seacoos_sab_defs) |
---|
18 |
|
---|
19 |
|
---|
20 |
package meta_data; # assumes seacoos_sab_defs.pm |
---|
21 |
|
---|
22 |
use strict; |
---|
23 |
use warnings; |
---|
24 |
use vars qw(); |
---|
25 |
|
---|
26 |
|
---|
27 |
BEGIN{ |
---|
28 |
use Exporter (); |
---|
29 |
|
---|
30 |
our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); |
---|
31 |
|
---|
32 |
$VERSION="1.0"; |
---|
33 |
|
---|
34 |
@ISA = qw(Exporter); |
---|
35 |
|
---|
36 |
@EXPORT = qw( |
---|
37 |
%parse_info %parse_output |
---|
38 |
%T1_conversion_coeff %T1_conversion_formula |
---|
39 |
%LSRB_conversion_coeff %LSRB_conversion_formula |
---|
40 |
%R4_conversion_coeff %R4_conversion_formula |
---|
41 |
%conversion_coeff %conversion_formula |
---|
42 |
%range %precision %derived %units |
---|
43 |
%format %long_name %standard_name |
---|
44 |
%description %sub_vars %dimensions |
---|
45 |
%global_format %global_value |
---|
46 |
%tower_lon %tower_lat |
---|
47 |
@vars @globals |
---|
48 |
); |
---|
49 |
|
---|
50 |
@EXPORT_OK=(); |
---|
51 |
} |
---|
52 |
|
---|
53 |
|
---|
54 |
our(%parse_info,%parse_output, |
---|
55 |
%conversion_coeff,%conversion_formula, |
---|
56 |
%T1_conversion_coeff,%T1_conversion_formula, |
---|
57 |
%LSRB_conversion_coeff,%LSRB_conversion_formula, |
---|
58 |
%R4_conversion_coeff,%R4_conversion_formula, |
---|
59 |
%range,%precision,%derived,%units, |
---|
60 |
%format,%long_name,%standard_name, |
---|
61 |
%description,%sub_vars,%dimensions, |
---|
62 |
%global_format,%global_value, |
---|
63 |
%tower_lon,%tower_lat, |
---|
64 |
@vars,@globals |
---|
65 |
); |
---|
66 |
|
---|
67 |
my($param_id,$parse_info,$parse_output, |
---|
68 |
$conversion_coeff,$conversion_formula, |
---|
69 |
$range,$precision,$derived,$units, |
---|
70 |
$format,$long_name,$standard_name, |
---|
71 |
$description,$sub_vars,@sub_vars, |
---|
72 |
$dimensions,$meta_data_dir, |
---|
73 |
$g_a_format,$g_a_value,$g_a_name, |
---|
74 |
$tower_id,$tower_lon,$tower_lat |
---|
75 |
); |
---|
76 |
|
---|
77 |
#$meta_data_dir = '/afs/isis.unc.edu/depts/marine/workspace/hseim/'. |
---|
78 |
# 'sablam4/lstearns/perl/test_nemo/meta_data/'; |
---|
79 |
$meta_data_dir = '/opt/local/seacoos/bin/meta_data/'; |
---|
80 |
|
---|
81 |
###################################################################### |
---|
82 |
### Initialize Info ################################################## |
---|
83 |
#sub initialize_info { |
---|
84 |
|
---|
85 |
#$meta_data_dir = "/afs/isis.unc.edu/depts/marine/workspace/hseim/". |
---|
86 |
# "sablam3/seacoos/meta_data/"; |
---|
87 |
#This section is fairly consistant, in fact I'd like to pull it out |
---|
88 |
#and put it in a seperate script that gets loaded. This is to |
---|
89 |
#read in all of the tables of information that relate to parsing, |
---|
90 |
#conversion, and ancillary information about all of the variables. |
---|
91 |
|
---|
92 |
#################################################################### |
---|
93 |
# Read Parsing Information Table |
---|
94 |
open(PARSING_INFO,"${meta_data_dir}parse.table"); |
---|
95 |
|
---|
96 |
#Loop through the lines of the file |
---|
97 |
while (<PARSING_INFO>) { |
---|
98 |
#Get rid of the carriage return. |
---|
99 |
chop; |
---|
100 |
|
---|
101 |
#Ignore comments, that is, any line starting with a '#' character |
---|
102 |
#This is done by setting a comment line to an empty line |
---|
103 |
$_=~s/^^\#.*//; |
---|
104 |
|
---|
105 |
#Consider only non-empty lines |
---|
106 |
if ($_) { |
---|
107 |
#Split lines of the table using 2 or more spaces (which |
---|
108 |
#allows for single spaces in the entries) |
---|
109 |
($param_id,$parse_info,$parse_output) = split('\s{2,}'); |
---|
110 |
|
---|
111 |
#Store information in hash arrays with the param id as the key |
---|
112 |
$parse_info{$param_id}=$parse_info; |
---|
113 |
$parse_output{$param_id}=$parse_output; |
---|
114 |
} |
---|
115 |
} |
---|
116 |
close(PARSING_INFO); |
---|
117 |
|
---|
118 |
#################################################################### |
---|
119 |
# Read Conversions Table |
---|
120 |
open(T1_CONVERSION_INFO,"${meta_data_dir}T1_conversions.table"); |
---|
121 |
while (<T1_CONVERSION_INFO>) { |
---|
122 |
chop; |
---|
123 |
$_=~s/^\#.*//; |
---|
124 |
if ($_) { |
---|
125 |
($param_id,$conversion_coeff,$conversion_formula) = split('\s{2,}'); |
---|
126 |
$T1_conversion_coeff{$param_id}=$conversion_coeff; |
---|
127 |
$T1_conversion_formula{$param_id}=$conversion_formula; |
---|
128 |
} |
---|
129 |
} |
---|
130 |
close(T1_CONVERSION_INFO); |
---|
131 |
|
---|
132 |
#################################################################### |
---|
133 |
# Read Conversions Table |
---|
134 |
open(LSRB_CONVERSION_INFO,"${meta_data_dir}LSRB_conversions.table"); |
---|
135 |
while (<LSRB_CONVERSION_INFO>) { |
---|
136 |
chop; |
---|
137 |
$_=~s/^\#.*//; |
---|
138 |
if ($_) { |
---|
139 |
($param_id,$conversion_coeff,$conversion_formula) = split('\s{2,}'); |
---|
140 |
$LSRB_conversion_coeff{$param_id}=$conversion_coeff; |
---|
141 |
$LSRB_conversion_formula{$param_id}=$conversion_formula; |
---|
142 |
} |
---|
143 |
} |
---|
144 |
close(LSRB_CONVERSION_INFO); |
---|
145 |
|
---|
146 |
#################################################################### |
---|
147 |
# Read Conversions Table |
---|
148 |
open(R4_CONVERSION_INFO,"${meta_data_dir}R4_conversions.table"); |
---|
149 |
while (<R4_CONVERSION_INFO>) { |
---|
150 |
chop; |
---|
151 |
$_=~s/^\#.*//; |
---|
152 |
if ($_) { |
---|
153 |
($param_id,$conversion_coeff,$conversion_formula) = split('\s{2,}'); |
---|
154 |
$R4_conversion_coeff{$param_id}=$conversion_coeff; |
---|
155 |
$R4_conversion_formula{$param_id}=$conversion_formula; |
---|
156 |
} |
---|
157 |
} |
---|
158 |
close(R4_CONVERSION_INFO); |
---|
159 |
|
---|
160 |
#################################################################### |
---|
161 |
# Read Conversions Table |
---|
162 |
open(CONVERSION_INFO,"${meta_data_dir}conversions.table"); |
---|
163 |
while (<CONVERSION_INFO>) { |
---|
164 |
chop; |
---|
165 |
$_=~s/^\#.*//; |
---|
166 |
if ($_) { |
---|
167 |
($param_id,$conversion_coeff,$conversion_formula) = split('\s{2,}'); |
---|
168 |
$conversion_coeff{$param_id}=$conversion_coeff; |
---|
169 |
$conversion_formula{$param_id}=$conversion_formula; |
---|
170 |
} |
---|
171 |
} |
---|
172 |
close(CONVERSION_INFO); |
---|
173 |
|
---|
174 |
#################################################################### |
---|
175 |
# Read Variables Table |
---|
176 |
open(VARIABLE_INFO,"${meta_data_dir}variable.table"); |
---|
177 |
while (<VARIABLE_INFO>) { |
---|
178 |
chop; |
---|
179 |
$_=~s/^\#.*//; |
---|
180 |
if ($_) { |
---|
181 |
($param_id,$range,$precision,$derived,$units,$format,$dimensions, |
---|
182 |
$long_name,$standard_name,$description) = split('\s{2,}'); |
---|
183 |
$range{$param_id}=$range; |
---|
184 |
$precision{$param_id}=$precision; |
---|
185 |
$derived{$param_id}=$derived; |
---|
186 |
$units{$param_id}=$units; |
---|
187 |
$format{$param_id} = $format; |
---|
188 |
$dimensions{$param_id} = $dimensions; |
---|
189 |
$long_name{$param_id}=$long_name; |
---|
190 |
$standard_name{$param_id}=$standard_name; |
---|
191 |
$description{$param_id}=$description; |
---|
192 |
push(@vars,"$param_id"); |
---|
193 |
} |
---|
194 |
} |
---|
195 |
close(VARIABLE_INFO); |
---|
196 |
|
---|
197 |
#################################################################### |
---|
198 |
# Read Sub_Vars Table |
---|
199 |
open(SUB_VAR_INFO,"${meta_data_dir}subvars.table"); |
---|
200 |
while (<SUB_VAR_INFO>) { |
---|
201 |
chop; |
---|
202 |
$_=~s/^\#.*//; |
---|
203 |
if ($_) { |
---|
204 |
($param_id,$sub_vars) = split('\s{2,}'); |
---|
205 |
@sub_vars = split(',',$sub_vars); |
---|
206 |
@{$sub_vars{$param_id}}=@sub_vars; |
---|
207 |
} |
---|
208 |
} |
---|
209 |
close(SUB_VAR_INFO); |
---|
210 |
|
---|
211 |
#################################################################### |
---|
212 |
# Read Globals Table |
---|
213 |
open(GLOBAL_INFO,"${meta_data_dir}globals.table"); |
---|
214 |
while (<GLOBAL_INFO>) { |
---|
215 |
chop; |
---|
216 |
$_=~s/^\#.*//; |
---|
217 |
if ($_) { |
---|
218 |
($g_a_name,$g_a_format,$g_a_value) = split('\s{2,}'); |
---|
219 |
$global_format{$g_a_name}=$g_a_format; |
---|
220 |
$global_value{$g_a_name}=$g_a_value; |
---|
221 |
push(@globals,"$g_a_name"); |
---|
222 |
|
---|
223 |
} |
---|
224 |
} |
---|
225 |
close(GLOBAL_INFO); |
---|
226 |
|
---|
227 |
#################################################################### |
---|
228 |
# Read Locations Table |
---|
229 |
open(LOCATION_INFO,"${meta_data_dir}locations.table"); |
---|
230 |
while (<LOCATION_INFO>) { |
---|
231 |
chop; |
---|
232 |
$_=~s/^\#.*//; |
---|
233 |
if ($_) { |
---|
234 |
($tower_id,$tower_lat,$tower_lon) = split('\s{2,}'); |
---|
235 |
$tower_lat{$tower_id}=$tower_lat; |
---|
236 |
$tower_lon{$tower_id}=$tower_lon; |
---|
237 |
} |
---|
238 |
} |
---|
239 |
close(LOCATION_INFO); |
---|
240 |
|
---|
241 |
#} |
---|
242 |
|
---|
243 |
|
---|
244 |
|
---|
245 |
1; |
---|
246 |
|
---|