##// END OF EJS Templates
Update html images routes
jespinoza -
r14:8f437cc4b32c
parent child
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,64 +1,64
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Is Madrigal appropriate</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_install.html" --><!-- InstanceParam name="href_back_top" type="text" value="admin.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_install.html" --><!-- InstanceParam name="href_prev_top" type="text" value="admin.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_install.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_install.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_install.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_install.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Is Madrigal appropriate for my instrument(s)?<!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'ad_install.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Installing Madrigal <!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">Is Madrigal appropriate for my instrument(s)?</h1>
40 40 <p>The Madrigal database is designed to hold data about the upper atmosphere. One of the strengths of the Madrigal is that most of the measured parameters it contains are defined
41 in a community standard, whose metadata can be found under the Access metadata tab. With the release of Madrigal 3.0, the file format is now Hdf2 with the restrictions defined in the <a href="/static/CEDARMadrigalHdf5Format.pdf">CEDAR Madrigal Hdf5 file format</a>. This standard defines many frames of reference used commonly in atmospheric science, such as geodetic coordinates, geomagnetic coordinates, or radar (azimuth, elevation, and range) coordinates. Upper atmospheric data that can fit into one of these coordinate systems is a good candidate for Madrigal. Madrigal is not presently designed to handle spacecraft ephemeris in order to determine location, and to date Madrigal has only been used to hold spacecraft data that is independent of position (such as solar wind) or can be converted to one of the coordinate systems discussed above (such as total electron concentration in geodetic coordinates from GPS satellites).</p>
41 in a community standard, whose metadata can be found under the Access metadata tab. With the release of Madrigal 3.0, the file format is now Hdf2 with the restrictions defined in the <a href="{% static 'CEDARMadrigalHdf5Format.pdf">CEDAR Madrigal Hdf5 file format</a>. This standard defines many frames of reference used commonly in atmospheric science, such as geodetic coordinates, geomagnetic coordinates, or radar (azimuth, elevation, and range) coordinates. Upper atmospheric data that can fit into one of these coordinate systems is a good candidate for Madrigal. Madrigal is not presently designed to handle spacecraft ephemeris in order to determine location, and to date Madrigal has only been used to hold spacecraft data that is independent of position (such as solar wind) or can be converted to one of the coordinate systems discussed above (such as total electron concentration in geodetic coordinates from GPS satellites).</p>
42 42 <p>Generally, if the <a href="{% url 'parameter_metadata' %}">parameters found in the metadata</a> are appropriate for you, or only a few additions need to be made, then data from your instrument(s) is probably appropriate for Madrigal. Please feel free to contact the <a href="mailto:madrigal@haystack.mit.edu">OpenMadrigal administrator</a> if you have any questions about using Madrigal. </p>
43 43 <!-- InstanceEndEditable -->
44 44 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
45 45 <tr>
46 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
47 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
48 <td width="5%"><a href="{% url 'docs' 'ad_install.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
46 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
47 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
48 <td width="5%"><a href="{% url 'docs' 'ad_install.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
49 49 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Is Madrigal appropriate for my instrument(s)?<!-- InstanceEndEditable --></td>
50 50 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
51 51 <td width="18%"><a href="/">Madrigal home</a></td>
52 52 </tr>
53 53 </table>
54 54 <div class='online-navigation'>
55 55 <b class="navlabel">Previous:</b>
56 56 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
57 57 <b class="navlabel">&nbsp;&nbsp;Up:</b>
58 58 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
59 59 <b class="navlabel">&nbsp;&nbsp;Next:</b>
60 60 <a class="sectref" href="{% url 'docs' 'ad_install.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Installing Madrigal <!-- InstanceEndEditable --></A></div>
61 61 <hr/>
62 62 <p>&nbsp;</p>
63 63 </body>
64 64 <!-- InstanceEnd --></html>
@@ -1,370 +1,370
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Creating and modifying Madrigal experiments</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_other.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_createFiles.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_createFiles.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_other.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_createFiles.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_other.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_createFiles.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_other.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'ad_createFiles.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_other.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'ad_createFiles.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_other.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Creating and modifying Madrigal experiments <!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'ad_createFiles.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Creating Madrigal data files <!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'ad_other.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Other admin tasks <!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">Creating and modifying Madrigal experiments</h1>
40 40 <p>Adding data to Madrigal involves two steps. The first step is <a href="{% url 'docs' 'ad_createFiles.html' %}">creating Madrigal data files</a>, as discussed in the previous section. The next is installing them on the Madrigal database, with the appropriate metadata and any additional plots or other information you want to supply. </p>
41 41 <p>There are a number of scripts supplied with Madrigal to simplify the task of creating or modifying experiments on Madrigal. Use these scripts if you want to:</p>
42 42 <ul>
43 43 <li><a href="#createExpWithFile">Create an experiment using a pre-existing Madrigal file</a></li>
44 44 <li><a href="#createRTExp">Create an experiment when no Madrigal file yet exists</a> (such as to create a real-time file)</li>
45 45 <li><a href="#changeExpStatus">Modify the status of a given experiment</a></li>
46 46 <li><a href="#addFileToExp">Add a new file to an experiment</a></li>
47 47 <li><a href="#updateFileInExp">Modify an existing file in an experiment</a></li>
48 48 <li><a href="#changeFileStatus">Change the status of a file in an experiment</a></li>
49 49 <li><a href="#removeFileFromExp">Remove a file from an experiment</a></li>
50 50 <li><a href="#auxillary">Adding auxiliary plots and information to a Madrigal experiment</a></li>
51 51 </ul>
52 52 <p>After changing a Madrigal experiment using one or more of the scripts above, the script <em>madroot</em>/bin/updateMaster must be run for the changes to take effect. That's because these scripts change the metadata files in the local directory, and updateMaster combines all the local metadata files into the ones in <em>madroot</em>/metadata, which the used by the user interface to Madrigal. </p>
53 53 <p>This page also describes how you can add auxiliary information to a given Madrigal experiment. </p>
54 54 <h4><a name="createExpWithFile" id="createExpWithFile"></a>Create an experiment using a pre-existing Madrigal file</h4>
55 55 <p>If you have already created a Madrigal file for a given experiment, and want to add that new experiment to Madrigal, use the script createExpWithFile.py, located in <em>madroot</em>/bin. Usage:</p>
56 56 <pre>
57 57 createExpWithFile.py is a script used to create a new Madrigal experiment
58 58 based on an already existing file. Information such as the duration of the
59 59 experiment is obtained by analyzing the file.
60 60
61 61 With Madrigal 3, accepts either old CEDAR database format files, or CEDAR Madrigal
62 62 Hdf5 files.
63 63
64 64 Required arguments:
65 65
66 66 --madFilename - full path to the complete Madrigal file. Basename will
67 67 be maintained. If old CEDAR databse format, .hdf5 will
68 68 be appended
69 69
70 70 --expTitle - experiment title. Use quotes if title contains spaces.
71 71
72 72
73 73 --permission - 0 for public, 1 for private (restricted to certain IP range)
74 74 (both the experiment and the file will set)
75 75
76 76 --fileDesc - file decription
77 77
78 78 Optional arguments:
79 79
80 80 --instCode - instrument code. If this argument missing, instrument code is
81 81 taken from file, but error is thrown if more than one kinst found.
82 82
83 83 --category - 1=default, 2=variant, or 3=history If this argument is missing,
84 84 1 (default) used.
85 85
86 86 --dirName - directory name to use for experiment. If not given, the directory
87 87 name will be the default name DDmmmYY[optChar]. Cannot contain "/"
88 88
89 89 --optChar - optional character to be added to experiment directory if no dirName
90 90 given. If dirName argument given, this argument ignored. optChar
91 91 is used if the default directory name DDmmmYY is used for
92 92 more than one experiment created for a given instrument on a given day.
93 93 For example, if --optChar=h for a MLH experiment on September 12, 2005,
94 94 then the experiment directory created would be experiments/2005/mlh/12sep05h.
95 95
96 96 --kindat - Set file kindat independently from one (or more) in file
97 97
98 98 --experimentsDirNum - the number to be appended to the experiments directory, if experiments
99 99 directory being used is of the form experiments[0-9]* instead of just
100 100 experiments. For example, if experimentsDirNum is 7, then the experiment
101 101 would be created in MADROOT/experiments7 instead of MADROOT/experiments.
102 102 Default is to create in experiments directory.
103 103
104 104 --PI - set Principal Investigator for this experiment
105 105
106 106 --PIEmail - set PI email for this experiment
107 107
108 108 --fileAnalyst - set file analyst name for this file. This will default to blank.
109 109
110 110 --fileAnalystEmail - set file analyst email for this file. This will default to blank.
111 111
112 112 </pre>
113 113 <pre>&nbsp;</pre>
114 114 <p>Example: If you have already created the Madrigal file mlh060120g.001.hdf5 in the /tmp directory,
115 115 and the experiment name is Calibration, the file should be public, and the description is "Final", you would enter:</p>
116 116 <pre>/opt/madrigal/bin/createExpWithFile.py --madFilename=/tmp/mlh060120g.001.hdf5 \
117 117 --expTitle="Calibration" --permission=0 --fileDesc="Final"</pre>
118 118 <p>If your input file is an old style CEDAR database file mlh060120g.001, the only difference is that there is not hdf5 extension:</p>
119 119 <pre>/opt/madrigal/bin/createExpWithFile.py --madFilename=/tmp/mlh060120g.001 \
120 120 --expTitle=&quot;Calibration&quot; --permission=0 --fileDesc=&quot;Final&quot;</pre>
121 121 <h4><a name="createRTExp" id="createRTExp"></a>Create an experiment when no Madrigal file yet exists</h4>
122 122 <p>If you want to create an experiment for a Madrigal data yet to be created (such as when you want to create the Madrigal file in real-time), use the script createRTExp.py, located in <em>madroot</em>/bin. Usage: </p>
123 123 <pre>createRTExpWithFile.py is a script used to create a new Madrigal experiment
124 124 that will contain real-time files. These real-time files are assumed not to exist
125 125 yet.</pre>
126 126 <pre>Required arguments::</pre>
127 127 <pre> --startDate - experiment start date in form YYYY-MM-DD</pre>
128 128 <pre> --inst - instrument code or 3-letter Madrigal mnenonic</pre>
129 129 <pre> --expTitle - experiment title. Use quotes if title contains spaces.</pre>
130 130 <pre> --rtFiles - comma-separated list of realtime file basenames to be created</pre>
131 131 <pre> --kindats - comma-separated list of ints or single int of kindats for each realtime file.
132 132 The length and order must be the same as rtFiles. If only one
133 133 given, it is assumed that all rtFiles have the same kindat.</pre>
134 134 <pre> --fileDescs - comma-separated list of file descriptions. If the file description contains spaces,
135 135 quotes must be used.</pre>
136 136 <pre>Optional argument::</pre>
137 137 <pre> --numDays - number of days the experiment is estimated to run - if not given, and no start
138 138 and end times specified, defaults to one day. Error raised if endDate and endTime
139 139 also specified.</pre>
140 140 <pre> --startTime - start time in form HH:MM:DD. Defaults to 00:00:00</pre>
141 141 <pre> --endDate - end day in form YYYY-MM-DD. endTime must also be specified</pre>
142 142 <pre> --endTime - end time in form HH:MM:DD. endDate must also be specified</pre>
143 143 <pre> --permissions - comma-separated list of 0 for public, 1 for private (restricted to certain IP range).
144 144 If only one given, it is assumed it applied to all. If this argument is not
145 145 given, it defaults to 0 (public)</pre>
146 146 <pre> --dirName - directory name to use for experiment. If not given, the directory
147 147 name will be the default name DDmmmYY[optChar]. Cannot contain &quot;/&quot;</pre>
148 148 <pre> --optChar - optional character to be added to experiment directory if no dirName
149 149 given. If dirName argument given, this argument ignored. optChar
150 150 is used if the default directory name DDmmmYY is used for
151 151 more than one experiment created for a given instrument on a given day.
152 152 For example, if --optChar=h for a MLH experiment on September 12, 2005,
153 153 then the experiment directory created would be experiments/2005/mlh/12sep05h.</pre>
154 154 <pre> --security - overall experiment access. 0 for public, 1 for private, -1 for ignore.
155 155 Defaults to public (0)</pre>
156 156 <pre>--experimentsDirNum - the number to be appended to the experiments directory, if experiments
157 157 directory being used is of the form experiments[0-9]* instead of just
158 158 experiments. For example, if experimentsDirNum is 7, then the experiment
159 159 would be created in /Users/brideout/madroot31/experiments7 instead of MADROOT/experiments.
160 160 Default is to create in experiments directory.</pre>
161 161
162 162 <pre> --PI - set Principal Investigator for this experiment</pre>
163 163
164 164 <pre> --PIEmail - set PI email for this experiment</pre>
165 165
166 166 <pre> --fileAnalyst - set file analyst name for these files (no commas allowed).
167 167 This will default to blank. If a different
168 168 fileAnalyst is desired for each file, the names must be comma separated.</pre>
169 169
170 170 <pre> --fileAnalystEmail - set file analyst email for this file. This will default to blank.
171 171 If a different fileAnalyst email is desired for each file, the emails must be comma separated.</pre>
172 172 <p>Example: If you plan to create two real-time Madrigal files called mlh021001a.000.hdf5 and mlh021001b.000.hdf5 for the
173 173 Millstone Hill Radar for an experiment planned to run 2 days, with both files having the kindat 3410, you would enter:</p>
174 174 <pre>/opt/madrigal/bin/createRTExp.py --startDate=2002-10-01 --numDays=2 --inst=mlh --expTitle="test experiment" \
175 175 --rtFiles=mlh021001a.000.hdf5,mlh021001b.000.hdf5 --kindats=3410 \
176 176 --fileDescs="preliminary - single pulse,preliminary - alternating code"
177 177 </pre>
178 178 <h4><a name="changeExpStatus" id="changeExpStatus"></a>Modify the status of a given experiment</h4>
179 179 <p>All of the experiment attributes can be changed by the script changeExpStatus.py, located in <em>madroot</em>/bin. The most common reason you'd want to run this script is to change an experiment's security, with the options being 0 (public), 1 (<a href="ad_other.html#private">limited by IP address</a>), and -1 (ignored, or hidden from everyone). To completely remove an experiment, simply delete the directory. However, setting security to -1 allows you to bring the experiment back at some later time by running changeExpStatus.py again. </p>
180 180 <p>A number of other attributes can also be modified, but most are set automatically, and should not need modification.</p>
181 181 <p>Usage:</p>
182 182 <pre>changeExpStatus.py is a script used to change the status of an
183 183 existing Madrigal experiment. The following attributes can be changed:</pre>
184 184 <pre> expUrl
185 185 experiment name
186 186 siteID
187 187 start date
188 188 start time
189 189 end date
190 190 end time
191 191 instrument code
192 192 security (public, private. ignore)
193 193 PI (optional - overrides default for instrument)
194 194 PIEmail (optional - overrides default for instrument</pre>
195 195 <pre>Required argument: </pre>
196 196 <pre> --expDir - full path to experiment directory. Example:
197 197 &quot;/opt/madrigal/experiments/1998/mlh/20jan98&quot;</pre>
198 198 <pre>Optional arguments - set these to change an experiment attribute:</pre>
199 199
200 200 <pre> --expUrl - must be in form &lt;cgi base&gt;/madtoc/YYYY/&lt;3 letter lower case inst code&gt;/&lt;expDir&gt;
201 201 example: http://www.haystack.mit.edu/cgi-bin/madtoc/1997/mlh/03dec97g</pre>
202 202 <pre> --expName - experiment name. Quotes required if contains spaces. Example: &quot;World Day&quot;</pre>
203 203 <pre> --siteID - Madrigal siteID of where data will be stored. Error raised if not the siteID
204 204 of the local Madrigal site. Example: 4</pre>
205 205 <pre> --startDate - new start date of experiment (UT). In form YYYY-MM-DD. Example: 1998-01-20</pre>
206 206 <pre> --startTime - new start time of experiment (UT). In form HH:MM:DD. Example: 12:30:00</pre>
207 207 <pre> --endDate - new end date of experiment (UT). In form YYYY-MM-DD. Example: 1998-01-21</pre>
208 208 <pre> --endTime - new end time of experiment (UT). In form HH:MM:DD. Example: 23:30:00</pre>
209 209 <pre> --inst - new instrument code. Example: 30</pre>
210 210 <pre> --security - new security code. Allowed values are 0 for public, 1 for private (limited IP range access)
211 211 -1 for ignore, 2 for archived experiment, 3 for private (limited IP range access) archived
212 212 experiment.</pre>
213 213 <pre> --PI - set Principal Investigator for this experiment</pre>
214 214 <pre> --PIEmail - set PI email for this experiment</pre>
215 215 <p>Example: to change to experiment /opt/madrigal/experiments/2006/mlh/20jan to be private, you would run: </p>
216 216 <pre>/opt/madrigal/bin/changeExpStatus.py --expDir=/opt/madrigal/experiments/2006/mlh/20jan06 --security=1
217 217
218 218 </pre>
219 219 <h4><a name="addFileToExp" id="addFileToExp"></a>Add a new file to an experiment</h4>
220 220 <p>If you want to add a new file to an existing Madrigal experiment, use addFileToExp.py, located in <em>madroot</em>/bin. You can use this script to add a completely new file, or to update an existing one. It you update an existing file and want to change the status of the older file to history or variant, use the script <a href="#changeFileStatus">changeFileStatus.py</a>. </p>
221 221 <p>Usage: </p>
222 222 <pre>
223 223 addFileToExp.py is a script used to add a new Madrigal file to an
224 224 existing experiment. Information such as the duration of the
225 225 experiment is updated by analyzing the file.
226 226
227 227 With Madrigal 3, accepts either old CEDAR database format files, or CEDAR Madrigal
228 228 Hdf5 files.
229 229
230 230 Required arguments:
231 231
232 232 --madFilename - full path to the complete Madrigal file. Basename will
233 233 be maintained. If old CEDAR databse format, .hdf5 will
234 234 be appended
235 235
236 236 --expDir - full path to experiment directory. Example:
237 237 "/opt/madrigal/experiments/1998/mlh/20jan98"
238 238
239 239 --permission - 0 for public, 1 for private (restricted to certain IP range)
240 240
241 241 --fileDesc - file decription
242 242
243 243 Optional arguments:
244 244
245 245 --category - 1=default, 2=variant, or 3=history If this argument is missing,
246 246 1 (default) used.
247 247
248 248 --kindat - Set file kindat independently from one (or more) in file
249 249
250 250 --skipNotify - if this flag set (no arguments), registered users will NOT be notified
251 251 of this change. The default is to email all registered users.
252 252
253 253 --fileAnalyst - set file analyst name for this file. This will default to blank.
254 254
255 255 --fileAnalystEmail - set file analyst email for this file. This will default to blank.
256 256 </pre>
257 257 <p>Example: If you want to add the new file /tmp/mlh060120g.002.hdf to an existing experiment, you would enter:</p>
258 258 <pre>/opt/madrigal/bin/createExpWithFile.py --madFilename=/tmp/mlh060120g.002.hdf5 \
259 259 --expDir=/opt/madrigal/experiments/2006/mlh/20jan06 --permission=0 \
260 260 --fileDesc=&quot;alternative analysis&quot; --category=1
261 261 </pre>
262 262 <p>If you are adding an old style Cedar databse file /tmp/mlh060120g.002 to an existing experiment, you would enter the same command except without the .hdf5 extension:</p>
263 263 <pre>/opt/madrigal/bin/createExpWithFile.py --madFilename=/tmp/mlh060120g.002 \
264 264 --expDir=/opt/madrigal/experiments/2006/mlh/20jan06 --permission=0 \
265 265 --fileDesc=&quot;alternative analysis&quot; --category=1
266 266 </pre>
267 267 <h4><a name="updateFileInExp" id="updateFileInExp"></a>Modify an existing file in an experiment</h4>
268 268 <p>If you want to modify an existing file in a Madrigal experiment, use updateFileInExp.py, located in <em>madroot</em>/bin. Note that if the modification in the file is significant, it is preferable to make the old file a history file using <a href="#changeFileStatus">changeFileStatus.py</a>, and to add a new file with a different name using <a href="#addFileToExp">addFileToExp.py</a>.</p>
269 269 <p>Usage: </p>
270 270 <pre>updateFileInExp.py is a script used to update an existing Madrigal file in an
271 271 existing experiment. Information such as the duration of the
272 272 experiment is updated by analyzing the file. This script is use to replace
273 273 an existing Madrigal file. Use addFileToExp.py to add a new file, and
274 274 changeFileStatus.py to change any file attribute.</pre>
275 275 <pre>Required arguments:</pre>
276 276 <pre> --madFilename - full path to the new version of the Madrigal file. Basename will
277 277 be maintained.</pre>
278 278 <pre> --expDir - full path to experiment directory. Example:
279 279 &quot;/opt/madrigal/experiments/1998/mlh/20jan98&quot;
280 280 </pre>
281 281 <p>Example: To modify the existing file /opt/madrigal/experiments/2002/01oct02/mlh021001a.000.hdf5 with the file /tmp/mlh021001a.000.hdf5, you would enter:</p>
282 282 <pre>/opt/madrigal/bin/updateFileInExp.py --madFilename=/tmp/mlh021001a.000.hdf5 \
283 283 --expDir=/opt/madrigal/experiments/2002/01oct02 </pre>
284 284 <h4><a name="changeFileStatus" id="changeFileStatus"></a>Change the status of a file in an experiment</h4>
285 285 <p>If you want to change the status of any existing file in an experiment, such as to make a default file into a history file, use changeFileStatus.py, located in <em>madroot</em>/bin. Usage: </p>
286 286 <pre>
287 287 changeFileStatus.py is a script used to change the status of an
288 288 existing Madrigal file. The file permission, the file description,
289 289 or the file category can be changed.
290 290
291 291 Required arguments:
292 292
293 293 --filename - basename of existing Madrigal file.
294 294
295 295 --expDir - full path to experiment directory. Example:
296 296 "/opt/madrigal/experiments/1998/mlh/20jan98"
297 297
298 298 Optional arguments - set these to change a file attribute:
299 299
300 300 --permission - 0 for public, 1 for private (restricted to certain IP range)
301 301
302 302 --fileDesc - file decription
303 303
304 304 --category - 1=default, 2=variant, 3=history, or 4=realtime
305 305
306 306 --fileAnalyst - set file analyst name for this file.
307 307
308 308 --fileAnalystEmail - set file analyst email for this file.
309 309 </pre>
310 310 <p>Example: If you want to change the status of /opt/madrigal/experiments/2002/01oct02/mlh021001a.000.hdf5 to be a history file, you would enter:</p>
311 311 <pre>
312 312 /opt/madrigal/bin/changeFileStatus.py --filename=mlh021001a.000.hdf5 \
313 313 --expDir=/opt/madrigal/experiments/2002/01oct02 \
314 314 --category=3</pre>
315 315 <h4><a name="removeFileFromExp" id="removeFileFromExp"></a>Remove a file from an experiment</h4>
316 316 <p>To completely remove a file from an existing experiment, rather than simply make it a history file, use removeFileFromExp.py, located in <em>madroot</em>/bin. Usage: </p>
317 317 <pre>
318 318 removeFileFromExp.py is a script used to remove an existing Madrigal file from an
319 319 existing experiment. Information such as the duration of the
320 320 experiment is updated by analyzing the remaining files. </pre>
321 321 <pre>Required arguments:</pre>
322 322 <pre> --filename - basename of the Madrigal file to be removed.</pre>
323 323 <pre> --expDir - full path to experiment directory. Example:
324 324 &quot;/opt/madrigal/experiments/1998/mlh/20jan98&quot;
325 325 </pre>
326 326 <p>Example: To remove the file /opt/madrigal/experiments/2002/01oct02/mlh021001a.000.hdf5, you would enter:</p>
327 327 <pre>/opt/madrigal/bin/removeFileFromExp.py --filename=mlh021001a.000.hdf5 \
328 328 --expDir=/opt/madrigal/experiments/2002/01oct02
329 329 </pre>
330 330 <h4><a name="auxillary" id="auxillary"></a>Adding auxiliary plots and information to a Madrigal experiment</h4>
331 331 <p>Since Madrigal is a web-based application, you can also display auxiliary plots and information about your experiment as web pages. If you add additional web documents according to the rules below, these documents will also show up through the standard Madrigal interface. </p>
332 332 <ul>
333 333 <li>Subdirectories containing an html file named index.html . Links to these files will show up the experiment page. The
334 334 page title will be displayed as a link.</li>
335 335 <li>Html pages in the main directory, and again links to these files will show up the experiment page. The
336 336 page title will be displayed as a link.</li>
337 337 <li>Plots or other files related to individual records in the dataset. Links to these files appear next to the appropriate record in the summarizeCedarFile.cgi page. These files must be located in the subdirectory "plots/[file name]/records" under the experiment directory, where &quot;file name&quot; is the base name of the experiment record.. In order for the script to determine which file goes with which record, the files must include a five digit number somewhere in its name. For example, plot00027.gif would appear as a link next to record 27 in summarizeCedarFile.cgi. More than one file can be associated with a given record.
338 338 <ul>
339 339 <li>If you want to create individual record plots for an incoherent scatter radar with the standard parameters Te, Ti, Ne, and ion velocity, simply run the script createRecordPlots.py. For example, to create all the individual record plots for the Madrigal file mlh980120g.001.hdf5, you would run a command similar to the following:</li>
340 340 </ul>
341 341 <blockquote>
342 342 <pre>/opt/madrigal/bin/createRecordPlots.py /opt/madrigal/experiments/1998/mlh/20jan98/mil980120g.001.hdf5</pre>
343 343 </blockquote>
344 344 </li>
345 345 </ul>
346 <p>As an example of plots associated with individual records, lets say you have a Madrigal experiment in the directory /opt/madrigal/experiments/2002/01oct02, with a file named mlh021001a.001.hdf5. If this file had 10 records, you could then create 10 plot files called plot001.png through plot010.png. You would then create the subdirectories plots/mlh021001a.001.hdf5/ under the main directory /opt/madrigal/experiments/2002/01oct02/, and put those 10 plot files there. </p>
346 <p>As an example of plots associated with individual records, lets say you have a Madrigal experiment in the directory /opt/madrigal/experiments/2002/01oct02, with a file named mlh021001a.001.hdf5. If this file had 10 records, you could then create 10 plot files called plot001.png' %} through plot010.png' %}. You would then create the subdirectories plots/mlh021001a.001.hdf5/ under the main directory /opt/madrigal/experiments/2002/01oct02/, and put those 10 plot files there. </p>
347 347 <p><br>
348 348 </p>
349 349 <!-- InstanceEndEditable -->
350 350 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
351 351 <tr>
352 <td width="5%"><a href="{% url 'docs' 'ad_createFiles.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
353 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
354 <td width="5%"><a href="{% url 'docs' 'ad_other.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
352 <td width="5%"><a href="{% url 'docs' 'ad_createFiles.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
353 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
354 <td width="5%"><a href="{% url 'docs' 'ad_other.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
355 355 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Creating and modifying Madrigal experiments<!-- InstanceEndEditable --></td>
356 356 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
357 357 <td width="18%"><a href="/">Madrigal home</a></td>
358 358 </tr>
359 359 </table>
360 360 <div class='online-navigation'>
361 361 <b class="navlabel">Previous:</b>
362 362 <a class="sectref" href="{% url 'docs' 'ad_createFiles.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Creating Madrigal data files <!-- InstanceEndEditable --></A>
363 363 <b class="navlabel">&nbsp;&nbsp;Up:</b>
364 364 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
365 365 <b class="navlabel">&nbsp;&nbsp;Next:</b>
366 366 <a class="sectref" href="{% url 'docs' 'ad_other.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Other admin tasks <!-- InstanceEndEditable --></A></div>
367 367 <hr/>
368 368 <p>&nbsp;</p>
369 369 </body>
370 370 <!-- InstanceEnd --></html>
@@ -1,615 +1,615
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Creating and editing Madrigal data files </title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" -->
10 10
11 11 <style type="text/css">
12 12 td.linenos { background-color: #f0f0f0; padding-right: 10px; }
13 13 span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
14 14 pre { line-height: 125%; }
15 15 body .hll { background-color: #ffffcc }
16 16 body { background: #f8f8f8; }
17 17 body .c { color: #408080; font-style: italic } /* Comment */
18 18 body .err { border: 1px solid #FF0000 } /* Error */
19 19 body .k { color: #008000; font-weight: bold } /* Keyword */
20 20 body .o { color: #666666 } /* Operator */
21 21 body .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
22 22 body .cm { color: #408080; font-style: italic } /* Comment.Multiline */
23 23 body .cp { color: #BC7A00 } /* Comment.Preproc */
24 24 body .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
25 25 body .c1 { color: #408080; font-style: italic } /* Comment.Single */
26 26 body .cs { color: #408080; font-style: italic } /* Comment.Special */
27 27 body .gd { color: #A00000 } /* Generic.Deleted */
28 28 body .ge { font-style: italic } /* Generic.Emph */
29 29 body .gr { color: #FF0000 } /* Generic.Error */
30 30 body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
31 31 body .gi { color: #00A000 } /* Generic.Inserted */
32 32 body .go { color: #888888 } /* Generic.Output */
33 33 body .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
34 34 body .gs { font-weight: bold } /* Generic.Strong */
35 35 body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
36 36 body .gt { color: #0044DD } /* Generic.Traceback */
37 37 body .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
38 38 body .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
39 39 body .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
40 40 body .kp { color: #008000 } /* Keyword.Pseudo */
41 41 body .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
42 42 body .kt { color: #B00040 } /* Keyword.Type */
43 43 body .m { color: #666666 } /* Literal.Number */
44 44 body .s { color: #BA2121 } /* Literal.String */
45 45 body .na { color: #7D9029 } /* Name.Attribute */
46 46 body .nb { color: #008000 } /* Name.Builtin */
47 47 body .nc { color: #0000FF; font-weight: bold } /* Name.Class */
48 48 body .no { color: #880000 } /* Name.Constant */
49 49 body .nd { color: #AA22FF } /* Name.Decorator */
50 50 body .ni { color: #999999; font-weight: bold } /* Name.Entity */
51 51 body .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
52 52 body .nf { color: #0000FF } /* Name.Function */
53 53 body .nl { color: #A0A000 } /* Name.Label */
54 54 body .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
55 55 body .nt { color: #008000; font-weight: bold } /* Name.Tag */
56 56 body .nv { color: #19177C } /* Name.Variable */
57 57 body .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
58 58 body .w { color: #bbbbbb } /* Text.Whitespace */
59 59 body .mb { color: #666666 } /* Literal.Number.Bin */
60 60 body .mf { color: #666666 } /* Literal.Number.Float */
61 61 body .mh { color: #666666 } /* Literal.Number.Hex */
62 62 body .mi { color: #666666 } /* Literal.Number.Integer */
63 63 body .mo { color: #666666 } /* Literal.Number.Oct */
64 64 body .sb { color: #BA2121 } /* Literal.String.Backtick */
65 65 body .sc { color: #BA2121 } /* Literal.String.Char */
66 66 body .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
67 67 body .s2 { color: #BA2121 } /* Literal.String.Double */
68 68 body .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
69 69 body .sh { color: #BA2121 } /* Literal.String.Heredoc */
70 70 body .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
71 71 body .sx { color: #008000 } /* Literal.String.Other */
72 72 body .sr { color: #BB6688 } /* Literal.String.Regex */
73 73 body .s1 { color: #BA2121 } /* Literal.String.Single */
74 74 body .ss { color: #19177C } /* Literal.String.Symbol */
75 75 body .bp { color: #008000 } /* Name.Builtin.Pseudo */
76 76 body .vc { color: #19177C } /* Name.Variable.Class */
77 77 body .vg { color: #19177C } /* Name.Variable.Global */
78 78 body .vi { color: #19177C } /* Name.Variable.Instance */
79 79 body .il { color: #666666 } /* Literal.Number.Integer.Long */
80 80
81 81 </style>
82 82
83 83 <!-- InstanceEndEditable -->
84 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
84 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
85 85 <style type="text/css">
86 86 html body {
87 87 background-color: {{bg_color}};
88 88 }
89 89 </style>
90 90 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_createExp.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_experiments.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_experiments.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_createExp.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_experiments.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_createExp.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_experiments.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_createExp.html" -->
91 91 </head>
92 92
93 93 <body>
94 94 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
95 95 <tr>
96 <td width="5%"><a href="{% url 'docs' 'ad_experiments.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
97 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
98 <td width="5%"><a href="{% url 'docs' 'ad_createExp.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
96 <td width="5%"><a href="{% url 'docs' 'ad_experiments.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
97 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
98 <td width="5%"><a href="{% url 'docs' 'ad_createExp.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
99 99 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Creating and editing Madrigal data files <!-- InstanceEndEditable --></td>
100 100 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
101 101 <td width="18%"><a href="/">Madrigal home</a></td>
102 102 </tr>
103 103 </table>
104 104 <div class='online-navigation'>
105 105 <b class="navlabel">Previous:</b>
106 106 <a class="sectref" href="{% url 'docs' 'ad_experiments.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Madrigal data organization <!-- InstanceEndEditable --></A>
107 107 <b class="navlabel">&nbsp;&nbsp;Up:</b>
108 108 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
109 109 <b class="navlabel">&nbsp;&nbsp;Next:</b>
110 110 <a class="sectref" href="{% url 'docs' 'ad_createExp.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Creating Madrigal experiments <!-- InstanceEndEditable --></A></div>
111 111 <hr/>
112 112 <!-- InstanceBeginEditable name="EditDoc" -->
113 113 <h1 align="center">Creating and editing Madrigal data files</h1>
114 <p>A key element in administering the Madrigal database is the ability to create and edit Madrigal data files. An ambitious Madrigal administrator could read the <a href="/static/CEDARMadrigalHdf5Format.pdf" target="_blank">CEDAR Madrigal Hdf5 format</a> description and write their own code from scratch. However, Madrigal provides API's and examples in two languages, Python and Matlab, to make this chore much, much easier. This section describes how to create Madrigal files using each of those two languages.</p>
114 <p>A key element in administering the Madrigal database is the ability to create and edit Madrigal data files. An ambitious Madrigal administrator could read the <a href="{% static 'CEDARMadrigalHdf5Format.pdf" target="_blank">CEDAR Madrigal Hdf5 format</a> description and write their own code from scratch. However, Madrigal provides API's and examples in two languages, Python and Matlab, to make this chore much, much easier. This section describes how to create Madrigal files using each of those two languages.</p>
115 115 <ul>
116 116 <li><a href="#python">Python</a></li>
117 117 <li><a href="#matlab">Matlab</a></li>
118 118 </ul>
119 119 <h2><a name="python" id="python"></a>Python</h2>
120 120 <h3>How have things changed with Madrigal 3?</h3>
121 121 <p>For the most part, python scripts that created Madrigal 2 files will only need to be slightly modified to create Madrigal 3 files. With Madrigal 3, the independent parameters (excluding time) must be explicitly declared. This is because Madrigal 3 files contain both a table layout, and (if there are independent parameters) a grid layout, with the number of dimensions = 1 + (number of independent parameters). The first dimension is always time. The independent parameters are declared in the MadrigalDataRecord init method.</p>
122 122 <p>The second small change is the addition of an optional argument <em>arraySplitParms</em>. If one of more array splitting parameters are given, then multiple grids of data will be created, one grid for each unique combination of values of the array splitting parameters. The idea behind this argument is to make the gridded data less sparse and more useful to the end user. For example, a phased array incoherent scatter radar such as PFISR that simultaneously measures along different beams would split its arrays by the parameter beam_id. This would make the gridded data both dense and more user friendly - a user could simply open the data for the beam of interest.</p>
123 123 <h2>Instructions</h2>
124 124 <p>This section gives an introduction to using the madrigal python API to create new Cedar Madrigal Hdf5 files, and to edit existing Cedar Madrigal Hdf5 files. Examples are given of <a href="#create"> creating new normal-sized files, </a> <a href="#create_large">creating new large files</a>, and <a href="#edit">editing existing files.</a> Users creating Cedar Madrigal Hdf5 files with python can choose between two sightly different patterns, one which maximizes speed but could have memory issues with very large files, and another that limits memory use with very large files, but is somewhat slower. Complete <a href="madrigal/cedar.m.html">documentation</a> is available as part of the Madrigal Python API documentation. </p>
125 125 <p>The python cedar module was written to simplify the task of creating Cedar Madrigal Hdf5 files as much as possible. The user of this module only needs to know the following about the Cedar format: </p>
126 126 <ul>
127 127 <li>Cedar Madrigal Hdf5 files are made up of metadata and data records. Each data record consists of a measurement made with a single instrument over a single interval of time.</li>
128 128 <li>All parameters in Cedar Madrigal Hdf5 files are defined in the standard. Contact Bill Rideout if you can't find a parameter you need; more can be added.</li>
129 129 <li>Each data record in a Cedar Madrigal Hdf5 file has the same parameters. These parameters are either scalar (a single measurement per data record), or vectors (called 2D sometimes for historical reasons, but there is a limit of 5 for the number of independent spatial parameters).</li>
130 130 <li>If there are vector parameters, then the parameters which serve as independent parameters must be specified. Up to 5 may be given.</li>
131 131 <li>The Cedar Madrigal Hdf5 always contains a Table Layout, where the data is listed in a flat table, which means the scalar parameters are repeated for each row in a single data record.</li>
132 132 <li>If there are vector parameters, then there will also be one or more Array Layouts. The array layout is a multidimensional layout, with time in one dimension, and one dimension for each independent parameter. When you create this file, you can also choose to specify parameters used to split these arrays. For example, incoherent scatter radar taken with radars that measure different beams over the same time period may decide to have separate arrays for each beam code.</li>
133 133 <li>A list of Cedar parameters and their units can be found under<em> Access metadata</em> menu item from any Madrigal 3 site. A complete description of each parameter can also be seen by clicking on any parameter name. Parameters can be referred to in the python API either by case-insensitive mnemonics (e.g., "Gdalt") or by integer id. Parameters are set either to float, integer, or string values, according to their type, or to the special values 'missing', 'assumed', or 'knownbad' may be used for numeric values. The values 'assumed' and 'knownbad' can only be applied to error parameters.</li>
134 134 <li>In addition to data records, the Cedar format also allows two types of records that contain human-readable descriptions of the data: a catalog record and a header record. They are two only for historical reasons; each contains different metadata fields.</li>
135 135 </ul>
136 136 <blockquote>
137 137 <h3>MadrigalCedarFile</h3>
138 138 </blockquote>
139 139 <p>The high level object in the cedar module is <a href="madrigal/cedar.m.html"> MadrigalCedarFile</a>. This class emulates a python list, and so users may treat it just like a python list. The restriction enforced is that all items in the list must be either <a href="madrigal/cedar.m.html">MadrigalCatalogRecords</a>, <a href="madrigal/cedar.m.html">MadrigalHeaderRecords</a>, or <a href="madrigal/cedar.m.html">MadrigalDataRecords</a>. Each of these three classes supports the method getType(), which returns 'catalog', 'header', and 'data', respectively.</p>
140 140 <blockquote>
141 141 <a name="catHeadRec" id="catHeadRec"></a><h3>Using Python to add catalog and header records.</h3>
142 142 </blockquote>
143 143 <p>Cedar catalog and header records can be difficult to create. With the cedar module
144 144 <a href="madrigal/cedar.m.html"> CatalogHeaderCreator</a>, creating
145 145 these records should now be much easier. Catalog and header records contain a lot of information
146 146 that can be deduced from the data - this includes which parameters are present, minimum and maximums
147 147 of certain parameters, and start and stop times. The only parts of the catalog or header record that
148 148 can't be determined automatically are some optional descriptive text fields. With this new module,
149 149 you simply pass in strings of any length if you want to fill in one of those optional descriptive
150 150 text fields - the module will handle all formating for you.</p>
151 151 <p>Here's a list of the optional descriptive text fields for a <i>catalog</i> record:</p>
152 152 <ul>
153 153 <li><b>principleInvestigator: </b>names of responsible Principal Investigator(s) or others knowledgeable
154 154 about the experiment</li>
155 155 <li><b>expPurpose: </b>brief description of the experiment purpose</li>
156 156 <li><b>expMode: </b>further elaboration of meaning of experiment mode; e.g. antenna patterns and
157 157 pulse sequences</li>
158 158 <li><b>cycleTime: </b>minutes for one full measurement cycle (this needs to be a number)</li>
159 159 <li><b>correlativeExp: </b>any correlative experiments (experiments with related data)</li>
160 160 <li><b>sciRemarks: </b>scientific remarks</li>
161 161 <li><b>instRemarks: </b>instrument remarks</li>
162 162 </ul>
163 163 <p>Here's a list of the optional descriptive text fields for a <i>header</i> record:</p>
164 164 <ul>
165 165 <li><b>kindatDesc: </b>description of how this data was analyzed (the kind of data)</li>
166 166 <li><b>analyst: </b>name of person(s) who analyzed this data</li>
167 167 <li><b>comments: </b>additional comments about data (describe any instrument-specific parameters)</li>
168 168 <li><b>history: </b>a description of the history of the processing of this file</li>
169 169 </ul>
170 170 <p><a name="create" id="create"></a> </p>
171 171 <blockquote>
172 172 <h3>Creating a new normal-sized file example</h3>
173 173 </blockquote>
174 174 <div class="highlight">
175 175 <pre><span></span><span class="sd">&quot;&quot;&quot;createSample.py shows an example of creating an entirely new Madrigal</span>
176 176 <span class="sd">file using the Python cedar module. In particular, it creates a file with</span>
177 177 <span class="sd">a catalog record, a header record, and two data records. The data records</span>
178 178 <span class="sd">contain two 1D parameters (System temperature - SYSTMP and Transmitter</span>
179 179 <span class="sd">Frequency TFREQ) and five 2D parameters (GDALT, GDLAT, GLON, and TR, and DTR)</span>
180 180 <span class="sd">The independent spatial parameter in this example is just GDALT.</span>
181 181
182 182 <span class="sd">This example uses the normal-sized pattern for speed, where normal sized is considered
183 183 less than 3000 records</span><span class="sd">. In that pattern, all the records are appended to the MadrigalCedarFile </span>
184 184 <span class="sd">object, and then write is called to write everything to file at once, including both the Table and </span>
185 185 <span class="sd">Array Layouts.</span>
186 186
187 187 <span class="sd">$Id$</span>
188 188 <span class="sd">&quot;&quot;&quot;</span>
189 189
190 190 <span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">os.path</span>
191 191 <span class="kn">import</span> <span class="nn">types</span>
192 192 <span class="kn">import</span> <span class="nn">datetime</span>
193 193
194 194 <span class="kn">import</span> <span class="nn">madrigal.metadata</span>
195 195 <span class="kn">import</span> <span class="nn">madrigal.cedar</span>
196 196
197 197 <span class="c1">################# sample data #################</span>
198 198
199 199 <span class="n">kinst</span> <span class="o">=</span> <span class="mi">30</span> <span class="c1"># instrument identifier of Millstone Hill ISR</span>
200 200 <span class="n">kindat</span> <span class="o">=</span> <span class="mi">3408</span> <span class="c1"># id of kind of data processing</span>
201 201 <span class="n">nrow</span> <span class="o">=</span> <span class="mi">5</span> <span class="c1"># all data records have 5 2D rows</span>
202 202
203 203 <span class="n">SYSTMP</span> <span class="o">=</span> <span class="p">(</span><span class="mf">120.0</span><span class="p">,</span> <span class="mf">122.0</span><span class="p">)</span>
204 204 <span class="n">TFREQ</span> <span class="o">=</span> <span class="p">(</span><span class="mf">4.4E8</span><span class="p">,</span> <span class="mf">4.4E8</span><span class="p">)</span>
205 205
206 206 <span class="n">GDALT</span> <span class="o">=</span> <span class="p">((</span><span class="mf">70.0</span><span class="p">,</span> <span class="mf">100.0</span><span class="p">,</span> <span class="mf">200.0</span><span class="p">,</span> <span class="mf">300.0</span><span class="p">,</span> <span class="mf">400.0</span><span class="p">),</span>
207 207 <span class="p">(</span><span class="mf">70.0</span><span class="p">,</span> <span class="mf">100.0</span><span class="p">,</span> <span class="mf">200.0</span><span class="p">,</span> <span class="mf">300.0</span><span class="p">,</span> <span class="mf">400.0</span><span class="p">))</span>
208 208
209 209 <span class="n">GDLAT</span> <span class="o">=</span> <span class="p">((</span><span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">),</span>
210 210 <span class="p">(</span><span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">))</span>
211 211
212 212 <span class="n">GLON</span> <span class="o">=</span> <span class="p">((</span><span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">),</span>
213 213 <span class="p">(</span><span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">))</span>
214 214
215 215 <span class="n">TR</span> <span class="o">=</span> <span class="p">((</span><span class="s1">&#39;missing&#39;</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">2.3</span><span class="p">,</span> <span class="mf">3.0</span><span class="p">),</span>
216 216 <span class="p">(</span><span class="s1">&#39;missing&#39;</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.7</span><span class="p">,</span> <span class="mf">2.4</span><span class="p">,</span> <span class="mf">3.1</span><span class="p">))</span>
217 217
218 218
219 219 <span class="n">DTR</span> <span class="o">=</span> <span class="p">((</span><span class="s1">&#39;missing&#39;</span><span class="p">,</span> <span class="s1">&#39;assumed&#39;</span><span class="p">,</span> <span class="s1">&#39;assumed&#39;</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">,</span> <span class="mf">0.7</span><span class="p">),</span>
220 220 <span class="p">(</span><span class="s1">&#39;missing&#39;</span><span class="p">,</span> <span class="s1">&#39;assumed&#39;</span><span class="p">,</span> <span class="mf">0.7</span><span class="p">,</span> <span class="mf">0.4</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">))</span>
221 221
222 222 <span class="c1">################# end sample data #################</span>
223 223
224 224 <span class="n">newFile</span> <span class="o">=</span> <span class="s1">&#39;/tmp/testCedar.hdf5&#39;</span>
225 225
226 226 <span class="c1"># create a new Madrigal file </span>
227 227 <span class="n">cedarObj</span> <span class="o">=</span> <span class="n">madrigal</span><span class="o">.</span><span class="n">cedar</span><span class="o">.</span><span class="n">MadrigalCedarFile</span><span class="p">(</span><span class="n">newFile</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
228 228
229 229 <span class="c1"># create all data records - each record lasts one minute</span>
230 230 <span class="n">startTime</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2005</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">19</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
231 231 <span class="n">recTime</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">60</span><span class="p">)</span>
232 232 <span class="k">for</span> <span class="n">recno</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">):</span>
233 233 <span class="n">endTime</span> <span class="o">=</span> <span class="n">startTime</span> <span class="o">+</span> <span class="n">recTime</span>
234 234 <span class="n">dataRec</span> <span class="o">=</span> <span class="n">madrigal</span><span class="o">.</span><span class="n">cedar</span><span class="o">.</span><span class="n">MadrigalDataRecord</span><span class="p">(</span><span class="n">kinst</span><span class="p">,</span>
235 235 <span class="n">kindat</span><span class="p">,</span>
236 236 <span class="n">startTime</span><span class="o">.</span><span class="n">year</span><span class="p">,</span>
237 237 <span class="n">startTime</span><span class="o">.</span><span class="n">month</span><span class="p">,</span>
238 238 <span class="n">startTime</span><span class="o">.</span><span class="n">day</span><span class="p">,</span>
239 239 <span class="n">startTime</span><span class="o">.</span><span class="n">hour</span><span class="p">,</span>
240 240 <span class="n">startTime</span><span class="o">.</span><span class="n">minute</span><span class="p">,</span>
241 241 <span class="n">startTime</span><span class="o">.</span><span class="n">second</span><span class="p">,</span>
242 242 <span class="n">startTime</span><span class="o">.</span><span class="n">microsecond</span><span class="o">/</span><span class="mi">10000</span><span class="p">,</span>
243 243 <span class="n">endTime</span><span class="o">.</span><span class="n">year</span><span class="p">,</span>
244 244 <span class="n">endTime</span><span class="o">.</span><span class="n">month</span><span class="p">,</span>
245 245 <span class="n">endTime</span><span class="o">.</span><span class="n">day</span><span class="p">,</span>
246 246 <span class="n">endTime</span><span class="o">.</span><span class="n">hour</span><span class="p">,</span>
247 247 <span class="n">endTime</span><span class="o">.</span><span class="n">minute</span><span class="p">,</span>
248 248 <span class="n">endTime</span><span class="o">.</span><span class="n">second</span><span class="p">,</span>
249 249 <span class="n">endTime</span><span class="o">.</span><span class="n">microsecond</span><span class="o">/</span><span class="mi">10000</span><span class="p">,</span>
250 250 <span class="p">(</span><span class="s1">&#39;systmp&#39;</span><span class="p">,</span> <span class="s1">&#39;tfreq&#39;</span><span class="p">),</span>
251 251 <span class="p">(</span><span class="s1">&#39;gdalt&#39;</span><span class="p">,</span> <span class="s1">&#39;gdlat&#39;</span><span class="p">,</span> <span class="s1">&#39;glon&#39;</span><span class="p">,</span> <span class="s1">&#39;tr&#39;</span><span class="p">,</span> <span class="s1">&#39;dtr&#39;</span><span class="p">),</span>
252 252 <span class="n">nrow</span><span class="p">,</span> <span class="n">ind2DList</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;gdalt&#39;</span><span class="p">])</span>
253 253
254 254 <span class="c1"># set 1d values</span>
255 255 <span class="n">dataRec</span><span class="o">.</span><span class="n">set1D</span><span class="p">(</span><span class="s1">&#39;systmp&#39;</span><span class="p">,</span> <span class="n">SYSTMP</span><span class="p">[</span><span class="n">recno</span><span class="p">])</span>
256 256 <span class="n">dataRec</span><span class="o">.</span><span class="n">set1D</span><span class="p">(</span><span class="s1">&#39;tfreq&#39;</span><span class="p">,</span> <span class="n">TFREQ</span><span class="p">[</span><span class="n">recno</span><span class="p">])</span>
257 257
258 258 <span class="c1"># set 2d values</span>
259 259 <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrow</span><span class="p">):</span>
260 260 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;gdalt&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">GDALT</span><span class="p">[</span><span class="n">recno</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
261 261 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;gdlat&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">GDLAT</span><span class="p">[</span><span class="n">recno</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
262 262 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;glon&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">GLON</span><span class="p">[</span><span class="n">recno</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
263 263 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;tr&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">TR</span><span class="p">[</span><span class="n">recno</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
264 264 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;dtr&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">DTR</span><span class="p">[</span><span class="n">recno</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
265 265
266 266 <span class="c1"># append new data record</span>
267 267 <span class="n">cedarObj</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dataRec</span><span class="p">)</span>
268 268
269 269 <span class="n">startTime</span> <span class="o">+=</span> <span class="n">recTime</span>
270 270
271 271 <span class="c1"># write new file</span>
272 272 <span class="n">cedarObj</span><span class="o">.</span><span class="n">write</span><span class="p">()</span>
273 273
274 274 <span class="c1"># next, use the cedar.CatalogHeaderCreator class to add catalog and header </span>
275 275 <span class="n">catHeadObj</span> <span class="o">=</span> <span class="n">madrigal</span><span class="o">.</span><span class="n">cedar</span><span class="o">.</span><span class="n">CatalogHeaderCreator</span><span class="p">(</span><span class="n">newFile</span><span class="p">)</span>
276 276 <span class="n">catHeadObj</span><span class="o">.</span><span class="n">createCatalog</span><span class="p">(</span><span class="n">principleInvestigator</span><span class="o">=</span><span class="s2">&quot;John Holt&quot;</span><span class="p">,</span> <span class="n">sciRemarks</span><span class="o">=</span><span class="s2">&quot;Test data only - do not use&quot;</span><span class="p">)</span>
277 277 <span class="n">catHeadObj</span><span class="o">.</span><span class="n">createHeader</span><span class="p">(</span><span class="n">analyst</span><span class="o">=</span><span class="s2">&quot;Bill Rideout&quot;</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="s2">&quot;Do not use this data&quot;</span><span class="p">)</span>
278 278 <span class="n">catHeadObj</span><span class="o">.</span><span class="n">write</span><span class="p">()</span>
279 279 </pre></div>
280 280
281 281
282 282 <p><a name="create_large" id="create2"></a></p>
283 283 <h3>Creating a new large file example</h3>
284 284 <div class="highlight"><pre><span></span><span class="sd">&quot;&quot;&quot;createSampleLargeFile.py shows an example of creating an entirely new,</span>
285 285 <span class="sd">very large Madrigal file using the Python cedar module. </span>
286 286
287 287 <span class="sd">In particular, it creates a file with</span>
288 288 <span class="sd">a catalog record, a header record, and one hundred thousand data records. Because this</span>
289 289 <span class="sd">is a large file, it calls dump for every five hundred records, which writes all the data</span>
290 290 <span class="sd">to file in the Table Layout. This limits the memory footprint to just over 1GB.</span>
291 291 <span class="sd">This example closes with a call to close(), which triggers the </span>
292 292 <span class="sd">creation of Array Layout, which again keeps the memory footprint down by only reading</span>
293 293 <span class="sd">in a set number of records at a time.</span>
294 294
295 295 <span class="sd">The data records</span>
296 296 <span class="sd">contain two 1D parameters (System temperature - SYSTMP and Transmitter</span>
297 297 <span class="sd">Frequency TFREQ) and five 2D parameters (GDALT, GDLAT, GLON, and TR, and DTR)</span>
298 298 <span class="sd">The independent spatial parameter in this example is just GDALT.</span>
299 299
300 300 <span class="sd">$Id$</span>
301 301 <span class="sd">&quot;&quot;&quot;</span>
302 302
303 303 <span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">os.path</span>
304 304 <span class="kn">import</span> <span class="nn">types</span>
305 305 <span class="kn">import</span> <span class="nn">datetime</span>
306 306
307 307 <span class="kn">import</span> <span class="nn">madrigal.metadata</span>
308 308 <span class="kn">import</span> <span class="nn">madrigal.cedar</span>
309 309
310 310 <span class="c1">################# sample data #################</span>
311 311
312 312 <span class="n">kinst</span> <span class="o">=</span> <span class="mi">30</span> <span class="c1"># instrument identifier of Millstone Hill ISR</span>
313 313 <span class="n">kindat</span> <span class="o">=</span> <span class="mi">3408</span> <span class="c1"># id of kind of data processing</span>
314 314 <span class="n">nrow</span> <span class="o">=</span> <span class="mi">5</span> <span class="c1"># all data records have 5 2D rows</span>
315 315
316 316 <span class="n">SYSTMP</span> <span class="o">=</span> <span class="p">(</span><span class="mf">120.0</span><span class="p">,</span> <span class="mf">122.0</span><span class="p">)</span>
317 317 <span class="n">TFREQ</span> <span class="o">=</span> <span class="p">(</span><span class="mf">4.4E8</span><span class="p">,</span> <span class="mf">4.4E8</span><span class="p">)</span>
318 318
319 319 <span class="n">GDALT</span> <span class="o">=</span> <span class="p">((</span><span class="mf">70.0</span><span class="p">,</span> <span class="mf">100.0</span><span class="p">,</span> <span class="mf">200.0</span><span class="p">,</span> <span class="mf">300.0</span><span class="p">,</span> <span class="mf">400.0</span><span class="p">),</span>
320 320 <span class="p">(</span><span class="mf">70.0</span><span class="p">,</span> <span class="mf">100.0</span><span class="p">,</span> <span class="mf">200.0</span><span class="p">,</span> <span class="mf">300.0</span><span class="p">,</span> <span class="mf">400.0</span><span class="p">))</span>
321 321
322 322 <span class="n">GDLAT</span> <span class="o">=</span> <span class="p">((</span><span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">),</span>
323 323 <span class="p">(</span><span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">,</span> <span class="mf">42.0</span><span class="p">))</span>
324 324
325 325 <span class="n">GLON</span> <span class="o">=</span> <span class="p">((</span><span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">),</span>
326 326 <span class="p">(</span><span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">,</span> <span class="mf">270.0</span><span class="p">))</span>
327 327
328 328 <span class="n">TR</span> <span class="o">=</span> <span class="p">((</span><span class="s1">&#39;missing&#39;</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">2.3</span><span class="p">,</span> <span class="mf">3.0</span><span class="p">),</span>
329 329 <span class="p">(</span><span class="s1">&#39;missing&#39;</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.7</span><span class="p">,</span> <span class="mf">2.4</span><span class="p">,</span> <span class="mf">3.1</span><span class="p">))</span>
330 330
331 331
332 332 <span class="n">DTR</span> <span class="o">=</span> <span class="p">((</span><span class="s1">&#39;missing&#39;</span><span class="p">,</span> <span class="s1">&#39;assumed&#39;</span><span class="p">,</span> <span class="s1">&#39;assumed&#39;</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">,</span> <span class="mf">0.7</span><span class="p">),</span>
333 333 <span class="p">(</span><span class="s1">&#39;missing&#39;</span><span class="p">,</span> <span class="s1">&#39;assumed&#39;</span><span class="p">,</span> <span class="mf">0.7</span><span class="p">,</span> <span class="mf">0.4</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">))</span>
334 334
335 335 <span class="c1">################# end sample data #################</span>
336 336
337 337 <span class="n">newFile</span> <span class="o">=</span> <span class="s1">&#39;/tmp/testCedar.hdf5&#39;</span>
338 338 <span class="k">try</span><span class="p">:</span>
339 339 <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">newFile</span><span class="p">)</span>
340 340 <span class="k">except</span><span class="p">:</span>
341 341 <span class="k">pass</span>
342 342
343 343 <span class="c1"># create a new Madrigal file </span>
344 344 <span class="n">cedarObj</span> <span class="o">=</span> <span class="n">madrigal</span><span class="o">.</span><span class="n">cedar</span><span class="o">.</span><span class="n">MadrigalCedarFile</span><span class="p">(</span><span class="n">newFile</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
345 345
346 346 <span class="c1"># create all data records - each record lasts one minute</span>
347 347 <span class="n">startTime</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2005</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">19</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
348 348 <span class="n">recTime</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span>
349 349 <span class="k">for</span> <span class="n">recno</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100000</span><span class="p">):</span>
350 350 <span class="n">endTime</span> <span class="o">=</span> <span class="n">startTime</span> <span class="o">+</span> <span class="n">recTime</span>
351 351 <span class="n">dataRec</span> <span class="o">=</span> <span class="n">madrigal</span><span class="o">.</span><span class="n">cedar</span><span class="o">.</span><span class="n">MadrigalDataRecord</span><span class="p">(</span><span class="n">kinst</span><span class="p">,</span>
352 352 <span class="n">kindat</span><span class="p">,</span>
353 353 <span class="n">startTime</span><span class="o">.</span><span class="n">year</span><span class="p">,</span>
354 354 <span class="n">startTime</span><span class="o">.</span><span class="n">month</span><span class="p">,</span>
355 355 <span class="n">startTime</span><span class="o">.</span><span class="n">day</span><span class="p">,</span>
356 356 <span class="n">startTime</span><span class="o">.</span><span class="n">hour</span><span class="p">,</span>
357 357 <span class="n">startTime</span><span class="o">.</span><span class="n">minute</span><span class="p">,</span>
358 358 <span class="n">startTime</span><span class="o">.</span><span class="n">second</span><span class="p">,</span>
359 359 <span class="n">startTime</span><span class="o">.</span><span class="n">microsecond</span><span class="o">/</span><span class="mi">10000</span><span class="p">,</span>
360 360 <span class="n">endTime</span><span class="o">.</span><span class="n">year</span><span class="p">,</span>
361 361 <span class="n">endTime</span><span class="o">.</span><span class="n">month</span><span class="p">,</span>
362 362 <span class="n">endTime</span><span class="o">.</span><span class="n">day</span><span class="p">,</span>
363 363 <span class="n">endTime</span><span class="o">.</span><span class="n">hour</span><span class="p">,</span>
364 364 <span class="n">endTime</span><span class="o">.</span><span class="n">minute</span><span class="p">,</span>
365 365 <span class="n">endTime</span><span class="o">.</span><span class="n">second</span><span class="p">,</span>
366 366 <span class="n">endTime</span><span class="o">.</span><span class="n">microsecond</span><span class="o">/</span><span class="mi">10000</span><span class="p">,</span>
367 367 <span class="p">(</span><span class="s1">&#39;systmp&#39;</span><span class="p">,</span> <span class="s1">&#39;tfreq&#39;</span><span class="p">),</span>
368 368 <span class="p">(</span><span class="s1">&#39;gdalt&#39;</span><span class="p">,</span> <span class="s1">&#39;gdlat&#39;</span><span class="p">,</span> <span class="s1">&#39;glon&#39;</span><span class="p">,</span> <span class="s1">&#39;tr&#39;</span><span class="p">,</span> <span class="s1">&#39;dtr&#39;</span><span class="p">),</span>
369 369 <span class="n">nrow</span><span class="p">,</span> <span class="n">ind2DList</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;gdalt&#39;</span><span class="p">])</span>
370 370
371 371 <span class="c1"># set 1d values</span>
372 372 <span class="n">dataRec</span><span class="o">.</span><span class="n">set1D</span><span class="p">(</span><span class="s1">&#39;systmp&#39;</span><span class="p">,</span> <span class="n">SYSTMP</span><span class="p">[</span><span class="n">recno</span> <span class="o">%</span> <span class="mi">2</span><span class="p">])</span>
373 373 <span class="n">dataRec</span><span class="o">.</span><span class="n">set1D</span><span class="p">(</span><span class="s1">&#39;tfreq&#39;</span><span class="p">,</span> <span class="n">TFREQ</span><span class="p">[</span><span class="n">recno</span> <span class="o">%</span> <span class="mi">2</span><span class="p">])</span>
374 374
375 375 <span class="c1"># set 2d values</span>
376 376 <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nrow</span><span class="p">):</span>
377 377 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;gdalt&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">GDALT</span><span class="p">[</span><span class="n">recno</span> <span class="o">%</span> <span class="mi">2</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
378 378 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;gdlat&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">GDLAT</span><span class="p">[</span><span class="n">recno</span> <span class="o">%</span> <span class="mi">2</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
379 379 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;glon&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">GLON</span><span class="p">[</span><span class="n">recno</span> <span class="o">%</span> <span class="mi">2</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
380 380 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;tr&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">TR</span><span class="p">[</span><span class="n">recno</span> <span class="o">%</span> <span class="mi">2</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
381 381 <span class="n">dataRec</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s1">&#39;dtr&#39;</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">DTR</span><span class="p">[</span><span class="n">recno</span> <span class="o">%</span> <span class="mi">2</span><span class="p">][</span><span class="n">n</span><span class="p">])</span>
382 382
383 383 <span class="c1"># append new data record</span>
384 384 <span class="n">cedarObj</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dataRec</span><span class="p">)</span>
385 385
386 386 <span class="n">startTime</span> <span class="o">+=</span> <span class="n">recTime</span>
387 387
388 388 <span class="k">if</span> <span class="n">recno</span> <span class="o">%</span> <span class="mi">500</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">recno</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
389 389 <span class="n">cedarObj</span><span class="o">.</span><span class="n">dump</span><span class="p">()</span> <span class="c1"># this puts everything on disk and removes it from RAM</span>
390 390 <span class="k">if</span> <span class="n">recno</span> <span class="o">%</span> <span class="mi">10000</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
391 391 <span class="c1"># give some feedback</span>
392 392 <span class="k">print</span><span class="p">(</span><span class="s1">&#39;At </span><span class="si">%i</span><span class="s1"> records&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">recno</span><span class="p">))</span>
393 393
394 394 <span class="c1"># finished adding new records</span>
395 395 <span class="n">cedarObj</span><span class="o">.</span><span class="n">dump</span><span class="p">()</span> <span class="c1"># write whatever records are still in RAM</span>
396 396 <span class="k">print</span><span class="p">(</span><span class="s1">&#39;about to call close, which will also create the array layout&#39;</span><span class="p">)</span>
397 397 <span class="n">cedarObj</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="c1"># this triggers creation of the Array Layout, then closes file</span>
398 398
399 399 <span class="k">print</span><span class="p">(</span><span class="s1">&#39;Finally, using CatalogHeaderCreator to add some descriptive text.&#39;</span><span class="p">)</span>
400 400 <span class="c1"># next, use the cedar.CatalogHeaderCreator class to add catalog and header </span>
401 401 <span class="n">catHeadObj</span> <span class="o">=</span> <span class="n">madrigal</span><span class="o">.</span><span class="n">cedar</span><span class="o">.</span><span class="n">CatalogHeaderCreator</span><span class="p">(</span><span class="n">newFile</span><span class="p">)</span>
402 402 <span class="n">catHeadObj</span><span class="o">.</span><span class="n">createCatalog</span><span class="p">(</span><span class="n">principleInvestigator</span><span class="o">=</span><span class="s2">&quot;John Holt&quot;</span><span class="p">,</span> <span class="n">sciRemarks</span><span class="o">=</span><span class="s2">&quot;Test data only - do not use&quot;</span><span class="p">)</span>
403 403 <span class="n">catHeadObj</span><span class="o">.</span><span class="n">createHeader</span><span class="p">(</span><span class="n">analyst</span><span class="o">=</span><span class="s2">&quot;Bill Rideout&quot;</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="s2">&quot;Do not use this data&quot;</span><span class="p">)</span>
404 404 <span class="n">catHeadObj</span><span class="o">.</span><span class="n">write</span><span class="p">()</span>
405 405 </pre></div>
406 406 <p><a name="edit" id="edit"></a>
407 407 </p>
408 408 <h2>Editing an existing file example</h2>
409 409 <div class="highlight">
410 410 <pre><span class="sd">&quot;&quot;&quot;editSample.py shows an example of editing existing data in a Madrigal</span>
411 411 <span class="sd">file using the Python cedar module. In particular, it edits the sample file</span>
412 412 <span class="sd"><span class="s">mlh980120g.002.hdf5</span> to increase all Ti values by a factor of 1.2</span>
413 413 <span class="sd">&quot;&quot;&quot;</span>
414 414
415 415 <span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">os.path</span>
416 416 <span class="kn">import</span> <span class="nn">types</span>
417 417
418 418 <span class="kn">import</span> <span class="nn">madrigal.metadata</span>
419 419 <span class="kn">import</span> <span class="nn">madrigal.cedar</span>
420 420
421 421 <span class="n">metaObj</span> <span class="o">=</span> <span class="n">madrigal</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">MadrigalDB</span><span class="p">()</span>
422 422
423 423 <span class="n">orgFile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">metaObj</span><span class="o">.</span><span class="n">getMadroot</span><span class="p">(),</span> <span class="s">&#39;experiments/1998/mlh/20jan98/mlh980120g.002.hdf5&#39;</span><span class="p">)</span>
424 424 <span class="n">newFile</span> <span class="o">=</span> <span class="s">&#39;/tmp/mlh980120g.002.hdf5&#39;</span>
425 425
426 426 <span class="c"># read the Madrigal file into memory</span>
427 427 <span class="n">cedarObj</span> <span class="o">=</span> <span class="n">madrigal</span><span class="o">.</span><span class="n">cedar</span><span class="o">.</span><span class="n">MadrigalCedarFile</span><span class="p">(</span><span class="n">orgFile</span><span class="p">)</span>
428 428
429 429 <span class="c"># loop through each record, increasing all Ti values by a factor of 1.2</span>
430 430 <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">cedarObj</span><span class="p">:</span>
431 431 <span class="c"># skip header and catalog records</span>
432 432 <span class="k">if</span> <span class="n">record</span><span class="o">.</span><span class="n">getType</span><span class="p">()</span> <span class="o">==</span> <span class="s">&#39;data&#39;</span><span class="p">:</span>
433 433 <span class="c"># loop through each 2D roow</span>
434 434 <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">record</span><span class="o">.</span><span class="n">getNrow</span><span class="p">()):</span>
435 435 <span class="n">presentTi</span> <span class="o">=</span> <span class="n">record</span><span class="o">.</span><span class="n">get2D</span><span class="p">(</span><span class="s">&#39;Ti&#39;</span><span class="p">,</span> <span class="n">row</span><span class="p">)</span>
436 436 <span class="c"># make sure its not a special string value, eg &#39;missing&#39;</span>
437 437 <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">presentTi</span><span class="p">)</span> <span class="o">!=</span> <span class="n">types</span><span class="o">.</span><span class="n">StringType</span><span class="p">:</span>
438 438 <span class="n">record</span><span class="o">.</span><span class="n">set2D</span><span class="p">(</span><span class="s">&#39;Ti&#39;</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">presentTi</span><span class="o">*</span><span class="mf">1.2</span><span class="p">)</span>
439 439
440 440 <span class="c"># write edited file</span>
441 441 <span class="n">cedarObj</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">newFilename</span><span class="o">=</span><span class="n">newFile</span><span class="p">)</span></pre></div>
442 442
443 443 <p>&nbsp; </p>
444 444 <h2><a name="matlab" id="matlab"></a>Matlab</h2>
445 445 <p>To create CEDAR Madrigal Hdf5 files with Matlab, you will need to put the file MadrigalHdf5File.m on your Matlab path. You also need to run the Matlab script on a server with Madrigal installed, since ultimately Matlab will simply write your information to a *.mat file, and then call the python script createMadrigalHdf5FromMatlab.py to convert that *.mat file to the output Hdf5 file. The script createMadrigalHdf5FromMatlab.py is installed in MADROOT/bin as part of the Madrigal installation.</p>
446 446 <p>You may however, run MadrigalHdf5File.m on a non-Madrigal server, and save the output file as a *.mat file, rather than an Hdf5 file. You could then convert that *.mat file into a Madrigal file on a server with Madrigal installed, using the convertToMadrigal function also defined in MadrigalHdf5File.m.</p>
447 447 <p>There are only seven methods in the main class of this API, along with one helper method needed only if not running on a Madrigal server:</p>
448 448 <ol>
449 449 <li>MadrigalHdf5File (the init method)</li>
450 450 <li>appendRecord (called once for each Madrigal record added)</li>
451 451 <li>set1DParm (called for each one D parameter in each Madrigal record)</li>
452 452 <li>set2DParm (called for each two D parameter in each Madrigal record, passes in a vector of length equal to number of rows in record)</li>
453 453 <li>setCatalog - called once per file; set some metadata beyond the default automatically added</li>
454 454 <li>setHeader - called once per file; set the rest of the metadata</li>
455 455 <li>write - called when file complete</li>
456 456 </ol>
457 457 <p>These seven methods are documented below, along with the helper method convertToMadrigal. An <a href="#matlab_example">example Matlab script</a> that creates a CEDAR Madrigal Hdf5 file is also given.</p>
458 458
459 459 <div class="highlight">
460 460 <pre><span class="nn">classdef</span> MadrigalHdf5File<br /> <span class="nb">% class MadrigalHdf5File allows the creation of Madrigal Hdf5 files via<br /> % Matlab. The general idea of this class is to simply write out all<br /> % data for the file in a Matlab struct array. Then the python script<br /> % createMadrigalHdf5FromMatlab is called from this scriptto create all <br /> % metadata and alternate array layouts. This keeps the amount of Matlab <br /> % code here at a minimum. See file testMadrigalHdf5File.m for example<br /> % usage.</span>
461 461
462 462 <span class="nn">methods<br /> function</span> madFile = MadrigalHdf5File(filename, oneDParms, ...<br /> independent2DParms, twoDParms, arraySplittingParms)<br /> <span class="nb">% Object constructor for MadrigalHdf5File<br /> % Inputs:<br /> % filename - the filename to write to. Must end *.hdf5,<br/> % .hdf, or .mat. If .mat, writes a Matlab file that must<br/> % later be converted to Madrigal using convertToMadrigal<br /> % oneDParms - a cell array of strings representing 1D parms. May be<br /> % empty. Example:<br /> % cellstr(char('azm', 'elm', 'sn', 'beamid'))<br /> % independent2DParms - a cell array of strings representing independent <br /> % 2D parms. May be empty (ie, {}). Examples:<br /> % cellstr(char('range'))<br /> % cellstr(char('gdlat', 'glon'))<br /> % cellstr(char())<br /> % twoDParms - a cell array of strings representing dependent <br /> % 2D parms. May be empty (ie, {}). Examples:<br /> % cellstr(char('ti', 'dti', 'ne', 'dne'))<br /> % cellstr(char())<br /> % arraySplittingParms - a cell array of strings representing <br /> % parameters whose values are used to split arrays. May <br /> % be empty, in which case set to {}. Example:<br /> % cellstr(char('beamid'))<br /> % skipArray - optional argument. If set to true, no array<br /> % layout created. If false or not passed in, array layout<br /> % created if any 2D variables.</span>
463 463
464 464 <span class="nn">function</span> madFile = appendRecord(madFile, ut1_unix, ut2_unix, kindat, ...<br /> kinst, numRows)<br /> <span class="nb">% appendRecord adds a new record to MadrigalHdf5File. It<br /> % returns the record number of the present row (first will be<br /> % 0)<br /> % Inputs:<br /> % madFile - the created MadrigalHdf5File object<br /> % ut1_unix, ut2_unix - unix start and end time of record in<br /> % float seconds since 1970-01-01<br /> % kindat - integer kind of data code. See metadata.<br /> % kinst - integer instrument code. See metadata.<br /> % numRows - number of rows of 2D data. If all 1D data, set<br /> % to 1<br /> % Returns:<br /> % the record number of the present row (first will be 0)<br /> % Affects:<br /> % Updates madFile.recordCount, appends to madFile.data the<br /> % number of rows numRows with all data except stdParms set<br /> % to NaN. Use set1D and set2D to populate that record using<br /> % recNum as index.</span>
465 465
466 466 <span class="nn">function</span> madFile = set1DParm(madFile, parm, value, lastRec)<br /> <span class="nb">% set1DParm sets the values of 1D parm parm to value value for<br /> % record with lastRecord value lastRec</span>
467 467
468 468 <span class="nn">function</span> madFile = set2DParm(madFile, parm, values, lastRec)<br /> <span class="nb">% set2DParm sets the values of 2D parm parm to value values for<br /> % record with lastRecord value lastRec</span>
469 469
470 470 <span class="nn">function</span> madFile = setCatalog(madFile, principleInvestigator, expPurpose, expMode, ...<br /> cycleTime, correlativeExp, sciRemarks, instRemarks)<br /> <span class="nb">% setCatalog allows setting extra information in the catalog<br /> % record. This method is optional. Even if this method is not<br /> % called, the catalog record will contain a description of the<br /> % instrument (kinst code and name) and kind of data brief<br /> % description, along with a list of description of the<br /> % parameters in the file, and the first and last times of the<br /> % measurements.<br /> %<br /> % Inputs:<br /> %<br /> % principleInvestigator - Names of responsible Principal Investigator(s) or <br /> % others knowledgeable about the experiment.<br /> % expPurpose - Brief description of the experiment purpose<br /> % expMode - Further elaboration of meaning of MODEXP; e.g. antenna patterns <br /> % and pulse sequences.<br /> % cycleTime - Minutes for one full measurement cycle - must<br /> % be numeric<br /> % correlativeExp - Correlative experiments (experiments with related data)<br /> % sciRemarks - scientific remarks<br /> % instRemarks - instrument remarks<br /> %</span>
471 471
472 472 <span class="nn">function</span> madFile = setHeader(madFile, kindatDesc, analyst, comments, history)<br /> <span class="nb">% setHeader allows setting extra information in the header<br /> % record. This method is optional.<br /> %<br /> % Inputs:<br /> %<br /> % kindatDesc - description of how this data was analyzed (the kind of data)<br /> % analyst - name of person who analyzed this data<br /> % comments - additional comments about data (describe any instrument-specific parameters)<br /> % history - a description of the history of the processing of this file<br /> %</span>
473 473
474 474 <span class="nn">function</span> write(madFile)<br /> <span class="nb">% write writes out the complete Hdf5 file to madFile.filename</span>
475 475
476 476 <span class="nn">function</span> convertToMadrigal(matFile, madrigalFile)<br /> <span class="nb">% convertToMadrigal converts a matlab mat file to Madrigal Hdf5 file<br/> % Inputs:<br/> % matFile - existing Matlab .mat file created earlier<br/> % madrigalFile - madrigal file to create. Must end *.hdf5, .h5,<br/> % .hdf, or .mat.<br/></span>
477 477 </pre>
478 478 </div>
479 479
480 480
481 481 <a name="matlab_example"></a>Example usage of MadrigalHdf5File
482 482 <div class="highlight">
483 483 <pre>
484 484 <span class="nb">% test/example script to exercise MadrigalHdf5File
485 485 %
486 486 % $Id: testMadrigalHdf5File.m 4644 2015-01-13 19:30:37Z brideout $</span>
487 487 filename = <span class="s">'/Users/brideout/Documents/workspace/mad3_0/madroot/source/madmatlab/example.h5'</span>;
488 488 oneDParms = cellstr(char(<span class="s">'azm'</span>, <span class="s">'elm'</span>, <span class="s">'sn'</span>, <span class="s">'beamid'</span>));
489 489 independent2DParms = cellstr(char(<span class="s">'range'</span>));
490 490 twoDParms = cellstr(char(<span class="s">'ti'</span>, <span class="s">'dti'</span>));
491 491 <span class="nb">% Use {} for independent2DParms and twoDParms if all scalar parameters</span>
492 492 arraySplittingParms = cellstr(char(<span class="s">'beamid'</span>));
493 493 <span class="nb">% Use arraySplittingParms = {}; for no splitting</span>
494 494
495 495 <span class="nb">% some hard-coded fake data</span>
496 496 ut1_unix = 1.0E9;
497 497 ut2_unix = 1.0E9 + 100;
498 498 kindat = 3410;
499 499 kinst= 30;
500 500 numRows = 5;
501 501 azm = 100.0;
502 502 elm = 45.0;
503 503 sn = 0.5;
504 504 range = [100.0, 150.0, 200.0, 250.0, 300.0];
505 505 ti = [1000.0, 1100.0, 1200.0, 1300.0, 1400.0];
506 506 dti = [100.0, 150.0, 200.0, 250.0, 300.0];
507 507 beamids = [1,2,1,2,1,2,1,2,1,2];
508 508
509 509
510 510 madFile = MadrigalHdf5File(filename, oneDParms, ...
511 511 independent2DParms, twoDParms, arraySplittingParms);
512 512
513 513 <span class="nn">for</span> rec = 1:10
514 514 madFile = madFile.appendRecord(ut1_unix, ut2_unix, kindat, ...
515 515 kinst, numRows);
516 516
517 517 <span class="nb">% set 1D values</span>
518 518 madFile = madFile.set1DParm(<span class="s">'azm'</span>, azm, madFile.lastRecord);
519 519 madFile = madFile.set1DParm(<span class="s">'elm'</span>, elm, madFile.lastRecord);
520 520 madFile = madFile.set1DParm(<span class="s">'sn'</span>, sn, madFile.lastRecord);
521 521 madFile = madFile.set1DParm(<span class="s">'beamid'</span>, beamids(rec), madFile.lastRecord);
522 522
523 523 <span class="nb">% set 2D and independent variables</span>
524 524 madFile = madFile.set2DParm(<span class="s">'range'</span>, range, madFile.lastRecord);
525 525 madFile = madFile.set2DParm(<span class="s">'ti'</span>, ti, madFile.lastRecord);
526 526 madFile = madFile.set2DParm(<span class="s">'dti'</span>, dti, madFile.lastRecord);
527 527
528 528 <span class="nn">end</span>
529 529
530 530 <span class="nb">% add catalog and header info</span>
531 531 principleInvestigator = <span class="s">'Bill Rideout'</span>;
532 532 expPurpose = <span class="s">'Measure the ionosphere'</span>;
533 533 expMode = <span class="s">'Vector measurements'</span>;
534 534 cycleTime = 20.0;
535 535 correlativeExp = '';
536 536 sciRemarks = <span class="s">'Big solar storm'</span>;
537 537 instRemarks = <span class="s">'Working well!!!'</span>;
538 538 madFile = madFile.setCatalog(principleInvestigator, expPurpose, expMode, ...
539 539 cycleTime, correlativeExp, sciRemarks, instRemarks);
540 540
541 541 kindatDesc = <span class="s">'Regular processing'</span>;
542 542 analyst = <span class="s">'Phil Erickson'</span>;
543 543 comments = <span class="s">'Include unusual parameter description here'</span>;
544 544 history = <span class="s">'Reprocessed four times'</span>;
545 545 madFile = madFile.setHeader(kindatDesc, analyst, comments, history);
546 546
547 547 write(madFile);
548 548 </pre>
549 549
550 550 <h3>Converting an old Madrigal 2 file to Madrigal 3</h3>
551 551 <p>If you have old Madrigal 2 files you want to convert to Madrigal 3, you can use $MADROOT/bin/exportToHdf.py</p>
552 552 <pre>
553 553 $MADROOT/bin/exportToHdf.py -h
554 554
555 555 exportToHdf.py is a script used to convert a Cedar file to hdf5 format.
556 556
557 557 Required arguments:
558 558
559 559 --cedarFilename - full path of existing Madrigal file.
560 560
561 561 --hdf5Filename - full path of hdf5 file to write.
562 562
563 563 Optional arguments - set these to add layouts, parameters or filters. Default is to use cachedFiles.ini:
564 564
565 565 --independentSpatialParms - a comma separated list of parameters as mnemonics
566 566 that represent independent spatial variables. Causes array layout to be added to
567 567 output Hdf5 file. If not given, uses $/home/midasop/mad3/cachedFiles.ini
568 568
569 569 --arraySplittingParms - a comma separated list of parameters as mnemonics used to split
570 570 arrays into subarrays. For example, beamcode would split data with separate beamcodes
571 571 into separate arrays. The number of separate arrays will be up to the product of the number of
572 572 unique values found for each parameter, with the restriction that combinations with no records will
573 573 not create a separate array. . If not given, uses $/home/midasop/mad3/cachedFiles.ini
574 574
575 575 --extraParameters - These parameters will be added to the output file if
576 576 they are not already in the input file. Comma-delimited. Default is no
577 577 extra parameter
578 578
579 579 --filter - Filter argument as in isprint command as string (eg, 'ti.500,2000') Only one allowed.
580 580 Default is no filtering
581 581
582 582 --status - use to set status of file. Default is 1 (default). Use -1 to get from fileTab (error raised
583 583 if not available)
584 584
585 585 Example:
586 586 exportToHdf --cedarFilename=/opt/madrigal/experiments/1998/mlh/20jan98/mil20100112.001
587 587 --hdf5Filename=/home/user/data/mil20100112.hdf5
588 588 --independentSpatialParms=range
589 589 --arraySplittingParms=kinst,pl,mdtyp
590 590 --extraParameters=ti,te
591 591 --filter=ti,500,1000
592 592 </pre>
593 593 </div>
594 594 <!-- InstanceEndEditable -->
595 595 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
596 596 <tr>
597 <td width="5%"><a href="{% url 'docs' 'ad_experiments.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
598 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
599 <td width="5%"><a href="{% url 'docs' 'ad_createExp.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
597 <td width="5%"><a href="{% url 'docs' 'ad_experiments.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
598 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
599 <td width="5%"><a href="{% url 'docs' 'ad_createExp.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
600 600 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Creating and editing Madrigal data files <!-- InstanceEndEditable --></td>
601 601 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
602 602 <td width="18%"><a href="/">Madrigal home</a></td>
603 603 </tr>
604 604 </table>
605 605 <div class='online-navigation'>
606 606 <b class="navlabel">Previous:</b>
607 607 <a class="sectref" href="{% url 'docs' 'ad_experiments.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Madrigal data organization <!-- InstanceEndEditable --></A>
608 608 <b class="navlabel">&nbsp;&nbsp;Up:</b>
609 609 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
610 610 <b class="navlabel">&nbsp;&nbsp;Next:</b>
611 611 <a class="sectref" href="{% url 'docs' 'ad_createExp.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Creating Madrigal experiments <!-- InstanceEndEditable --></A></div>
612 612 <hr/>
613 613 <p>&nbsp;</p>
614 614 </body>
615 615 <!-- InstanceEnd --></html>
@@ -1,87 +1,87
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>How Madrigal data is organized</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_createFiles.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_metadata.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_metadata.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_createFiles.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_metadata.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_createFiles.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_metadata.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_createFiles.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'ad_metadata.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_createFiles.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'ad_metadata.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_createFiles.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->How Madrigal data is organized <!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'ad_metadata.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Madrigal data model <!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'ad_createFiles.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Creating Madrigal data files <!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">How Madrigal data is organized </h1>
40 40 <p>In the Madrigal database, the data are organized by experiment. An experiment consists of data from a single instrument, and, as a rule, is meant to address a particular scientific goal. Most often an experiment will correspond to a particular set of operating modes run for a contiguous interval of time. For example, the data collected by an incoherent scatter radar during a world day would constitute an experiment. More complicated situations exist, and judgment may have to be exercised in determining what constitutes an experiment. For example, an experiment might be interrupted temporarily in order to use a different set of operating modes in support of a satellite overpass. In this case there could be two experiments which overlap in time.</p>
41 41 <p>To each experiment there corresponds a directory. These directories are of the form <em>madroot</em>/experiments[0-9]*/&lt;year&gt;/&lt;instrument&gt;/&lt;<em>directory</em>&gt;, where year is the four-digit year. The next level is the experiments[0-9]*, where the directory must begin &quot;experiments&quot; and then may be followed by any number of digits. This is to allow additional hard drives to be mounted to expand the directory space. The next level, instrument, is the 3-letter mnemonic for the instrument (set in the instTab.txt file), and &lt;<em>directory</em>&gt; is an arbitrary directory name. An example might be /opt/madrigal/experiments/1997/son/06jan1997_001, which would contain a 1997 Sondrestrom (son) experiment. The use of the starting date in the experiment directory name is not required. </p>
42 42 <p>Prior to Madrigal 2.5, the final directory name was required to be in the form DDmmmYY*, where the date was the start date of the experiment and * is an optional character to distinguish different experiments with the same start date. For example, /opt/madrigal/experiments/1997/son/06jan97 contained Sondrestrom data for an experiment beginning on 6 January, 1997, where year =1997, instrument =son, start_date =06jan97, and there was no optional character because there was only one Sondrestrom experiment starting on that date. This convention has been dropped as a requirement, although it is still commonly used as a convention.</p>
43 43 <p>Previously, experiments that did not follow the above naming convention were effectively &quot;hidden&quot;. With Madrigal 2.5, the security field in the metadata file expTab.txt can be used to hide (or restrict access to) an experiment. (See the <a href="ad_createExp.html#changeExpStatus">change experiment status</a> tool). </p>
44 44 <p>Each experiment directory must contain: </p>
45 45 <ul>
46 46 <li>The Experiment Table entry (expTab.txt) for this experiment. This file is created automatically if you use the tools described in the <a href="{% url 'docs' 'ad_createExp.html' %}">creating experiments</a> section. </li>
47 47 </ul>
48 48 Each experiment directory may contain:
49 49 <ul>
50 50 <li>The metadata file fileTab.txt for this experiment. This table must have one entry for each Madrigal format file in the experiment. This file is created automatically if you use the tools described in the <a href="ad_createExp.html">creating experiments</a> section. </li>
51 <li>One or more datasets in <a href="/static/CEDARMadrigalHdf5Format.pdf" target="_blank">CEDAR Madrigal Hdf5 format</a>. </li>
51 <li>One or more datasets in <a href="{% static 'CEDARMadrigalHdf5Format.pdf' %}" target="_blank">CEDAR Madrigal Hdf5 format</a>. </li>
52 52 <li>Subdirectories containing an html file named index.html . Links to these files will show up the experiment page. </li>
53 53 <li>Html pages in the main directory, and again links to these files will show up the experiment page. </li>
54 54 <li>Plots or other files related to individual records in the dataset. Links to these files appear next to the appropriate record in the summarizeCedarFile.cgi page. These files must be located in the subdirectory "plots/[file name]/records" under the experiment directory. In order for the script to determine which file goes with which record, the files must include a five digit number somewhere in its name. For example, plot00027.gif would appear as a link next to record 27 in summarizeCedarFile.cgi. More than one file can be associated with a given record. </li>
55 55 </ul>
56 56 <p>An essential role for a Madrigal administrator is to run the script <em>madroot</em>/bin/updateMaster on a regular basis. This script performs a number of functions:</p>
57 57 <ul>
58 58 <li>It gathers all the separate metadata files in the individual experiment directories into the central directory <em>madroot</em>/metadata. </li>
59 59 <li>It gathers metadata files from other Madrigal sites into the central directory <em>madroot</em>/metadata. </li>
60 60 <li>It updates geophysical files from the OpenMadrigal site.</li>
61 61 </ul>
62 62 <p>It is recommended that this script be set as a cron job to run once a day. </p>
63 63 <p>For Madrigal sites with limited bandwidth, updateMaster can occasionally be run with the -s flag. This will skip any possible download of the latest geophysical files, and so maybe run faster. However, it is still important to run updateMaster without the -s flag on a regular basis.</p>
64 64 <p>A complete description of the various ways to add and modify experiments in a Madrigal database is given <a href="{% url 'docs' 'ad_createExp.html' %}">in the next section.</a> The updateMaster script must be run after each change described in that section for the changes to take effect. </p>
65 65 <p>Note that an experiment need not contain any Madrigal files. </p>
66 66 <!-- InstanceEndEditable -->
67 67 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
68 68 <tr>
69 <td width="5%"><a href="{% url 'docs' 'ad_metadata.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
70 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
71 <td width="5%"><a href="{% url 'docs' 'ad_createFiles.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
69 <td width="5%"><a href="{% url 'docs' 'ad_metadata.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
70 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
71 <td width="5%"><a href="{% url 'docs' 'ad_createFiles.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
72 72 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->How Madrigal data is organized<!-- InstanceEndEditable --></td>
73 73 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
74 74 <td width="18%"><a href="/">Madrigal home</a></td>
75 75 </tr>
76 76 </table>
77 77 <div class='online-navigation'>
78 78 <b class="navlabel">Previous:</b>
79 79 <a class="sectref" href="{% url 'docs' 'ad_metadata.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Madrigal data model <!-- InstanceEndEditable --></A>
80 80 <b class="navlabel">&nbsp;&nbsp;Up:</b>
81 81 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
82 82 <b class="navlabel">&nbsp;&nbsp;Next:</b>
83 83 <a class="sectref" href="{% url 'docs' 'ad_createFiles.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Creating Madrigal data files <!-- InstanceEndEditable --></A></div>
84 84 <hr/>
85 85 <p>&nbsp;</p>
86 86 </body>
87 87 <!-- InstanceEnd --></html>
@@ -1,181 +1,181
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Installing Madrigal for the first time</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_upgrade.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_appropriate.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_appropriate.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_upgrade.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_appropriate.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_upgrade.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_appropriate.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_upgrade.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'ad_appropriate.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_upgrade.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'ad_appropriate.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_upgrade.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Installing Madrigal for the first time <!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'ad_appropriate.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Is Madrigal appropriate? <!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'ad_upgrade.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Upgrading Madrigal <!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">Installing Madrigal for the first time </h1>
40 40 <h4 align="left">Prerequisites</h4>
41 41 <p>Madrigal is meant to be installed on any Unix-like OS, including Mac and Linux. Most of the prerequisites for Madrigal are pre-installed in any modern unix distribution. They are: </p>
42 42 <ol>
43 43 <li>A C and a FORTRAN compiler. The free GNU compilers may be downloaded from the <a href="http://www.gnu.org/software/gcc/">GNU Website </a>.</li>
44 44 <li>Autotools (automake, autoconf, aclocal, libtoolize, autoheader)</li>
45 45 <li>A web server. See instructions below to run a Django application (which Madrigal is) on apache.</li>
46 46 <li>The environmental variable MADROOT should be set to the path to the Madrigal installation directory. Its recommended this be done in your login script (eg, .bash_profile) because you will need it to run administrative scripts later.</li>
47 47 <li>With Madrigal 3, the installation uses a version of python 3 you install yourself. The easiest way I have found to install python with scientific tools is to use either apt-get (for ubuntu), or the Anaconda python distribution, or pip. The following python modules need to be installed:
48 48 <ol>
49 49 <li>django (version 1.11 or greater)</li>
50 50 <li>pip and setuptools</li>
51 51 <li>numpy</li>
52 52 <li>scipy</li>
53 53 <li>matplotlib</li>
54 54 <li>netCDF4</li>
55 55 <li>h5py</li>
56 56 <li>sqlparse</li>
57 57 <li>filelock</li>
58 58 <li>bootstrap3 (can be installed via <em>pip install django-bootstrap3</em>)</li>
59 59 <li>aacgmv2 (can be installed via <em>pip install aacgmv2</em>)<br />
60 60 </li>
61 61 </ol>
62 62 </li>
63 63 </ol>
64 64 <p>In addition, you need to have Autotools (automake, autoconf, aclocal, libtoolize, autoheader) installed, along with h5repack (may be part of h5utils package).</p>
65 65 <pre></pre>
66 66 <h4 align="left">Installation instructions </h4>
67 67 <p align="left">Madrigal can be installed on any unix server with a web server configured for Django. If you want to link your data in with data on other Madrigal servers, please notify the <a href="mailto:madrigal@haystack.mit.edu">OpenMadrigal administrator</a>. In general you do not need root permission to install madrigal once the prerequisites listed above are installed. </p>
68 68 <ol>
69 69 <li>Create a directory to be used as your Madrigal root directory on your unix server. This directory will be referred to as MADROOT. </li>
70 70 <li>Create the environment variable MADROOT with that directory path. </li>
71 71 <li>Download the latest Madrigal distribution file, madrigal*.tar.gz from the <a href="http://cedar.openmadrigal.org/madrigalDownload/">OpenMadrigal distribution page</a> to MADROOT. </li>
72 72 <li>gunzip madrigal*.tar.gz </li>
73 73 <li>tar -xf madrigal*.tar </li>
74 74 <li>Repeat the 3 steps above to get and untar the Sample Experiments file <em>experiments.tar.gz</em>. </li>
75 75 <li>Make sure $MADROOT/bin/python links to the version of python with the required modules listed above. For example, if you are using anaconda, you might run &lt;<em>ln -s //anaconda/bin/python $MADROOT/bin/python</em>&gt;.</li>
76 76 <li>If desired, copy any data from your old $MADROOT/experiments directory to this new $MADROOT/experiments directory.</li>
77 77 <li>In madroot, there will now be a file called madrigal.cfg.template. Copy it to madrigal.cfg, and edit all the configuration parameters, as described in the <a href="#edit">Editing madrigal.cfg</a> section below. </li>
78 78 <li>Configure your web server to run the Madrigal Django application. Instruction for apache can be found in the <a href="#django">Configuring Apache for a Madrigal Django Application</a> section below. If you are running a webserver other than apache, please consult the Django documentation for your particular webserver. </li>
79 79 <li>Edit the file MADROOT/metadata/siteTab.txt with a unique id to include your site. The format of siteTab.txt is described <a href="ad_metadata.html#siteTab">here</a>. Note that if your site will be running https, the third field will begin https://. If you want to be an official Madrigal site that other Madrigal sites share data with, request the <a href="mailto:madrigal@haystack.mit.edu">OpenMadrigal administrator</a> to assign you this id. If this is just a test site, use any id not already in the siteTab.txt file. Finally, make sure the last column of the line for your site ends <em>,3.0</em> . This tells all sites that you site is now a Madrigal 3 site. For example: <pre>999,mad31,localhost,madrigal,cgi-bin/madrigal,madrigal/servlets,Bill Rideout,MIT Haystack Observatory,Route 40,,Westford,MA,01886,USA,1-781-981-5624,brideout@haystack.mit.edu,3.0</pre></li>
80 80 <li>Be sure to cd to MADROOT before running the following step. Then you should be able to complete the installation simply by typing <br />
81 81 <pre>&lt;sudo&gt; bash installMadrigal &> install.log &</pre>
82 82
83 83 The <em>sudo</em> is required only if installing modules on your default version of python requires sudo. There may be a long pause when running updateMaster near the end of the installation since the instParmTab.txt metadata file is being built for the first time by examining every data file, but future calls to updateMaster will be much faster since only new experiments are examined. Help with any installation errors is available from the <a href="mailto:madrigal@haystack.mit.edu">OpenMadrigal administrator</a>. </li>
84 84 <li>If there were no errors, your madrigal installation should be running at the url given by MADSERVERROOT. </li>
85 85 <li>If you want to receive notices about updates to Madrigal, sign up for the openmadrigal-admin mailing list under http://cedar.openmadrigal.org/openmadrigal. </li>
86 86 <li>Set the script <em>madroot</em>/bin/updateMaster up as a cron job to run once a day. </li>
87 87 <li>If you want to add any documentation pages specific to your site to the Madrigal documentation pages, see the <a href="ad_other.html#siteSpecific">other admin tasks</a> section of this manual.</li>
88 88 <li>If you want to add your own rules of the road to the Madrigal experiment page, see the <a href="ad_other.html#rules">other admin tasks</a> section of this manual.</li>
89 89 </ol>
90 90 <p> </p>
91 91 <h4><a name="edit" id="edit"></a>Editing the madrigal.cfg file </h4>
92 92 The madrigal.cfg file contains all the configuration information specific to your installation. This section discusses how to edit that file for each parameter. The madrigal.cfg.template file contains examples of each parameter.
93 93 <ul>
94 94 <li>MADROOT - Madrigal root directory (absolute). This must be set as an environmental variable. </li>
95 95 <li>MAD<b></b>SERVER - Web server for accessing Madrigal. For https, add https:// to the beginning. If not given, uses http </li>
96 96 <li>MAD<b></b>SERVERROOT - document virtual directory relative to MAD<b></b>SERVER.
97 97 If the full Madrigal Url is the same as the MAD<b></b>SERVER field
98 98 (for example, if the url is <i>http://madrigal.hao.ucar.edu/</i>), then set this field to a period. (Example:
99 99 <i>MAD<b></b>SERVERROOT = .</i> ) </li>
100 100 <li>SITEID - Site ID - Must be unique and same as in siteTab.txt </li>
101 101 <li>HTMLSTYLE - Body style of html pages </li>
102 102 <li>INDEXHEAD - Heading in the top-level Madrigal page </li>
103 103 <li>CONTACT - Mailto link of contact person(s) for this madrigal installation. Multiple email addresses may be included if separated by commas. </li>
104 104 <li>MAILSERVER - Name of mailserver (possibly localhost if running sendmail) </li>
105 105 <li>PLOTBUTTONLABEL - By default the button to show additional documentation is labelled Plots/Docs. Change this line for a different label. <br>
106 106 </li>
107 107 </ul>
108 108
109 109 <h4><a name="django" id="django"></a>Configuring Apache for a Madrigal Django Application</h4>
110 110 <p>Some configuration of apache is required to run a Django application like Madrigal. If you are running a webserver other than apache, please consult the Django documentation for your particular webserver. We will configure apache to run Madrigal in mod_wsgi daemon mode for improved performance.</p>
111 111 <p>The first step is to make sure mod_wsgi is installed as part of your apache webserver. If not, see mod_wsgi installation directions. Once installed, add the line</p>
112 112 <pre>LoadModule wsgi_module modules/mod_wsgi.so</pre>
113 113 <p>near the top of the httpd.conf file. Next add the follow section, with <em>MADROOT</em>, <em>MADSERVERROOT</em> and <em>YOUR_SERVER</em> replaced with values for your server from the madrigal.cfg file described below. Note that if <em>MADSERVERROOT</em> is zero length (that is, if the full Madrigal Url is the same as the MAD<b></b>SERVER field
114 114 - for example, if the url is <i>http://madrigal.hao.ucar.edu/</i>) then /<em>MADSERVERROOT</em> just becomes / unlike in the madrigal.cfg file when it becomes a period. Set <em>NUM_CPU</em> to about one half available on your server.</p>
115 115
116 116 <pre>SetEnv PYTHONPATH <em>MADROOT</em>/source/madpy/djangoMad/
117 117 WSGIDaemonProcess <em>YOUR_SERVER</em> python-path=<em>MADROOT</em>/source/madpy/djangoMad processes=<em>NUM_CPU</em> display-name=%{GROUP} lang='en_US.UTF-8' locale='en_US.UTF-8'
118 118 WSGIProcessGroup <em>YOUR_SERVER</em>
119 119 WSGIScriptAlias /<em>MADSERVERROOT</em> <em>MADROOT</em>/source/madpy/djangoMad/djangoMad/wsgi.py process-group=<em>YOUR_SERVER</em>
120 120 Alias /static/ <em>MADROOT</em>/source/madpy/djangoMad/madweb/static/
121 121 WSGIApplicationGroup %{GLOBAL}</pre>
122 122
123 123 <pre> &lt;Directory <em>MADROOT</em>/source/madpy/djangoMad/madweb/static&gt;</pre>
124 124 <blockquote>
125 125 <pre>Require all granted</pre>
126 126 </blockquote>
127 127 <pre>
128 128 &lt;/Directory&gt;
129 129 &lt;Directory <em>MADROOT</em>/source/madpy/djangoMad/djangoMad&gt;</pre>
130 130 <blockquote>
131 131 <pre>&lt;Files wsgi.py&gt; </pre>
132 132 <blockquote>
133 133 <pre>Require all granted</pre>
134 134 </blockquote>
135 135 <pre>&lt;/Files&gt;</pre>
136 136 </blockquote>
137 137 <pre>&lt;/Directory&gt;
138 138 </pre>
139 139
140 140 <p>You may also need to add to your apache configuration file <em>SetEnv LD_LIBRARY_PATH $MADROOT/lib</em>, possibly along with other library paths.</p>
141 141
142 142 <p>Finally, you need to edit the file <em>MADROOT</em>/source/madpy/djangoMad/djangoMad/settings_production_template.py, and save it as <em>MADROOT</em>/source/madpy/djangoMad/djangoMad/settings_production.py. The lines to be edited are:</p>
143 143 <pre>SECRET_KEY = '*****'
144 144 ALLOWED_HOSTS = ['madrigal3.haystack.mit.edu']
145 145 ADMINS = (('Bill Rideout', 'brideout@haystack.mit.edu'),)
146 146 EMAIL_HOST = 'hyperion.haystack.mit.edu'
147 147 MANAGERS = (('Bill Rideout', 'brideout@haystack.mit.edu'),)
148 148 STATIC_URL = '/static/'</pre>
149 149
150 150 <p>The STATIC_URL line only needs to be edited if MAD<b></b>SERVERROOT is not empty; that is, if your madrigal is installed in a subdirectory.
151 151 For example, if your url is http://madrigal.sri.com/madrigal, you would change that line to be STATIC_URL = '/madrigal/static/'. But if your
152 152 url is http://madrigal.sri.com, you would leave that STATIC_URL line as is.</p>
153 153
154 154 <p>You can generate a new secret key for your site at http://www.miniwebtool.com/django-secret-key-generator/, which is recommended for security reasons. The other lines are self-explanatory. </p>
155 155 <p>When you are done, be sure to restart apache for the changes to take effect. Note that because this Madrigal Django application runs in daemon mode, it will be necessary to restart the web server if you ever update the python code.</p>
156 156
157 157 <h3>Throttling Madrigal admin emails</h3>
158 158 <p>Sometimes Madrigal users write scripts that cause numerous admin emails, and in addition malicious users can also generate numerous admin emails.
159 159 If you would like to throttle the number of Madrigal admin emails you receive, see <a href="{% url 'docs' 'ad_other.html' %}#throttle">Throttling admin emails</a></p>
160 160 <!-- InstanceEndEditable -->
161 161 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
162 162 <tr>
163 <td width="5%"><a href="{% url 'docs' 'ad_appropriate.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
164 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
165 <td width="5%"><a href="{% url 'docs' 'ad_upgrade.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
163 <td width="5%"><a href="{% url 'docs' 'ad_appropriate.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
164 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
165 <td width="5%"><a href="{% url 'docs' 'ad_upgrade.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
166 166 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Installing Madrigal for the first time <!-- InstanceEndEditable --></td>
167 167 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
168 168 <td width="18%"><a href="/">Madrigal home</a></td>
169 169 </tr>
170 170 </table>
171 171 <div class='online-navigation'>
172 172 <b class="navlabel">Previous:</b>
173 173 <a class="sectref" href="{% url 'docs' 'ad_appropriate.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Is Madrigal appropriate? <!-- InstanceEndEditable --></A>
174 174 <b class="navlabel">&nbsp;&nbsp;Up:</b>
175 175 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
176 176 <b class="navlabel">&nbsp;&nbsp;Next:</b>
177 177 <a class="sectref" href="{% url 'docs' 'ad_upgrade.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Upgrading Madrigal <!-- InstanceEndEditable --></A></div>
178 178 <hr/>
179 179 <p>&nbsp;</p>
180 180 </body>
181 181 <!-- InstanceEnd --></html>
@@ -1,154 +1,154
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Using isprint</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_logging.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_logging.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_logging.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_logging.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="dev_contents.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'ad_links.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'dev_contents.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'ad_links.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'dev_contents.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Using isprint <!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'ad_links.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Creating direct links<!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'dev_contents.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Developer's toc<!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">Admin command line tool: isprint</h1>
40 40 <p>Madrigal administrators can get a quick look print out of a CEDAR Madrigal using the command line tool isprint. This may be more convenient than using the web interface or using an Hdf5 viewer such as Hdfview.</p>
41 41 <p> The application isprint is used to display both measured and derived data from one particular Cedar/Madrigal file. The input file can be any valid Cedar format. It will generate a table of user selected parameters subject to user specified filters. The name isprint original referred to &quot;<strong><u>I</u></strong>ncoherent <strong><u>s</u></strong>catter <strong><u>print</u></strong>&quot; but the application now generically prints any data file in the Cedar format. The engine underlying isprint is the main method for outputting Madrigal data. This application is located in <em>madroot</em>/bin.</p>
42 42 <p>The isprint application: </p>
43 43 <ul>
44 44 <li>Treats measured and derived parameters in the same way. </li>
45 45 <li>Accepts any parameter (or two parameters added, subtracted, multiplied, or divided) as a filter, with any number of allowed ranges. </li>
46 46 <li>Keeps track of 1D versus 2D data, and only prints one line of data if only 1D parameters are requested. </li>
47 47 </ul>
48 48 <p>To use isprint, the user needs to specify:</p>
49 49 <ol>
50 50 <li>The full filename </li>
51 51 <li>Output file (if not given, prints ascii to stdout)</li>
52 52 <li>The parameters desired to be displayed (if any) </li>
53 53 <li>Any filters to limit the amount of data shown (if any) </li>
54 54 <li>Any non-default formatting options </li>
55 55 </ol>
56 56 <blockquote>
57 57 <h3>The full filename </h3>
58 58 </blockquote>
59 59 <p>file= path to file (this argument is required) <br />
60 60 <em>Example: file=/opt/madrigal/experiments/1998/mlh/20jan98/mlh980120g.001.hdf5 </em> </p>
61 61 <blockquote>
62 62 <h3>The output file</h3>
63 63 </blockquote>
64 64 <p>output=&lt;output file&gt;. If not given, default is text file to stdout. If given and extension is one of<br />
65 65 &lt;.hdf5, .h5, .hdf&gt;, then will save as Hdf5 file. If extension is .nc, will be saved as netCDF4. In<br />
66 66 all other cases, will be saved as ascii text. If hdf5 or netCDF4, arguments (header, summary, badval,<br />
67 67 assumed, and knownbad) ignored if given.</p>
68 68 <blockquote>
69 69 <h3>The parameters desired to be displayed </h3>
70 70 </blockquote>Simply enter the desired parameter mnemonic (case-insensitive). They will be displayed in the order entered. If none given, only the header records will be displayed. <br />
71 71 <em>Example: azm gdalt Range ti Dti </em>
72 72 <blockquote>
73 73 <h3>Any filters to limit the amount of data shown </h3>
74 74 <h5>Time range </h5>
75 75 </blockquote>
76 76 <p>date1=mm/dd/yyyy - starting date to be examined. If time1 not given, defaults to 0 UT. <br />
77 77 <em>Example: date1=01/20/1998 </em> </p>
78 78 <p>time1=hh:mm:ss - starting UT time to be examined. If date1 given, is applied to date1. If not, applies on the first day of the experiment. <br />
79 79 <em>Example: time1=13:30:00 </em> </p>
80 80 <p>date2=mm/dd/yyyy - ending date to be examined. If time2 not given, defaults to 0 UT. <br />
81 81 <em>Example: date2=01/21/1998 </em> </p>
82 82 <p>time2=hh:mm:ss - ending UT time to be examined - If date2 not given, refers to date1. If date1 and date2 not given, refers to 1st day. <br />
83 83 <em>Example: time2=15:45:00 </em> </p>
84 84 <p><em><strong>In the follow arguments ranges are used. If any range value is not given, it may be used to indicate no lower or upper limit (but the comma is always required). Ranges are inclusive of the end points. </strong></em> </p>
85 85 <blockquote>
86 86 <h5>Geodetic altitude </h5>
87 87 </blockquote>
88 88 <p>z=lower alt limit1, upper alt limit1 [or lower alt limit2 , upper alt limit2 ...] (km) <br />
89 89 <em>Example 1: z=100,500 </em> This would limit the geodetic altitude to 100 to 500 km. <br />
90 90 <em>Example 2: z=100,200or300,400 </em> This would limit the geodetic altitude to 100 to 200 km or 300 to 400 km. <br />
91 91 <em>Example 3: z=,200or300,400 </em> Since the lower limit of the first range is missing, this would limit the geodetic altitude to anything below 200 km or from 300 to 400 km. </p>
92 92 <blockquote>
93 93 <h5>Azimuth (from -180 to 180) </h5>
94 94 </blockquote>
95 95 <p>az=lower az limit1, upper az limit1 [or lower az limit2 , upper az limit2 ...] (from -180 to 180 degrees) <br />
96 96 <em>Example 1: az=100,120 </em> This would limit the azimuth to 100 to 120 degrees. <br />
97 97 <em>Example 2: az=-180,-90or90,180 </em> This would limit the azimuth to between -180 and -90 degrees or to between 90 and 180 degrees. Note this allows a filter to go through 180 degrees. </p>
98 98 <blockquote>
99 99 <h5>Elevation (from 0 to 90) </h5>
100 100 </blockquote>
101 101 <p>el=lower el limit1, upper el limit1 [or lower el limit2 , upper el limit2 ...] (from 0 to 90) <br />
102 102 <em>Example 1: el=0,45 </em> This would limit the elevation from 0 to 45 degrees. </p>
103 103 <blockquote>
104 104 <h5>Pulse length (in seconds) </h5>
105 105 </blockquote>
106 106 <p>plen=lower pl limit1, upper pl limit1 [or lower pl limit2 , upper pl limit2 ...] (pulse len in sec) <br />
107 107 <em>Example 1: plen=,5e-4 </em> This would limit the pulse length to 5e-4 seconds or less. </p>
108 108 <blockquote>
109 109 <h5>Free form filters </h5>
110 110 </blockquote>
111 111 <p>filter=[mnemonic] or [mnemonic1,[+-*/]mnemonic2] , lower limit1 , upper limit1 [or lower limit2 , upper limit2 ...] (any number of filters may be added) <br />
112 112 <em>Example: filter=ti,500,1000or2000,3000 </em> Limits the data to points where Ti is between 500 and 1000 degrees or between 2000 and 3000 degrees. Note that the units are always those of the Cedar standard. <br />
113 113 <em>Example: filter=gdalt,-,sdwht,0, </em> This filter implies "gdalt - sdwht" must be greater than 0.0. Since sdwht is shadow height (the distance above any point on the earth where the sun is first visible), this filter implies that only data in direct sunlight will be displayed. <br />
114 114 <em>Example: filter=ti,/,Dti,100, </em> Limits the data to points where the ratio Ti/dTi is more than 100. </p>
115 115 <blockquote>
116 116 <h3>Format options </h3>
117 117 </blockquote>
118 118 <p>header=t or f (defaults to header=t, show headers at the beginning of each record) <br />
119 119 <em>Example: header=f </em> </p>
120 120 <p>badval=bad value string (defaults to "missing") <br />
121 121 <em>Example: badval=n/a </em> </p>
122 122 <p>assumed=assumed value string (defaults to "assumed") <br />
123 123 <em>Example: assumed=-32766 </em> </p>
124 124 <p>knownbad=known bad value string (defaults to "knownbad") <br />
125 125 <em>Example: knownbad=WARNING-BADVALUE </em> </p>
126 126 <p>mxchar=maximum characters per line (defaults to no maximum) <br />
127 127 <em>Example: mxchar=80 </em></p>
128 128 <p>indSpatialParms=&lt;comma separated list of parms&gt;. Used only if saving to an hdf5 or netCDF4 file. If not given,<br />
129 129 the default is to use the independent parms in the original file. Ignored if only 1D parms requested.</p>
130 130 <p>Example: <code>isprint file=/opt/madrigal/experiments/1998/mlh/20jan98/mil980120g.003.hdf5 date1=01/20/1998 time1=15:00:00 date2=01/20/1998 time2=16:00:00 z=200,300or500,600 badval=noData filter=gdalt,-,sdwht,0, filter=ti,500,1000 uth gdalt gdlat glon ti te </code></p>
131 131 <p>This example would show data from mil980120g.003.hdf5 between 15 and 16 UT on 01/20/1998 where altitude is either between 200 and 300 km or between 500 and 600 km, and where gdalt-sdwht is greater than 0 (point is in sunlight), and where ti is between 500 and 1000. "noData" would be printed if data was not available. </p>
132 132 <p>&nbsp;</p>
133 133 <!-- InstanceEndEditable -->
134 134 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
135 135 <tr>
136 <td width="5%"><a href="{% url 'docs' 'ad_links.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
137 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
138 <td width="5%"><a href="{% url 'docs' 'dev_contents.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
136 <td width="5%"><a href="{% url 'docs' 'ad_links.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
137 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
138 <td width="5%"><a href="{% url 'docs' 'dev_contents.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
139 139 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Command line interface to Madrigal<!-- InstanceEndEditable --></td>
140 140 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
141 141 <td width="18%"><a href="/">Madrigal home</a></td>
142 142 </tr>
143 143 </table>
144 144 <div class='online-navigation'>
145 145 <b class="navlabel">Previous:</b>
146 146 <a class="sectref" href="{% url 'docs' 'ad_links.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Creating direct links<!-- InstanceEndEditable --></A>
147 147 <b class="navlabel">&nbsp;&nbsp;Up:</b>
148 148 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
149 149 <b class="navlabel">&nbsp;&nbsp;Next:</b>
150 150 <a class="sectref" href="{% url 'docs' 'dev_contents.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Developer's toc <!-- InstanceEndEditable --></A></div>
151 151 <hr/>
152 152 <p>&nbsp;</p>
153 153 </body>
154 154 <!-- InstanceEnd --></html>
@@ -1,85 +1,85
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>User access logging</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_other.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_other.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_other.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_other.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_isprint.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'ad_logging.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_isprint.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'ad_logging.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_isprint.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Creating direct links to experiments/files <!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'ad_logging.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->User access logging<!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'ad_isprint.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Using isprint<!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39
40 40
41 41 <h1 align="center">Creating direct links to experiments/files</h1>
42 42
43 43
44 44 <p>There are times you as administrator might want to create urls that directly take a user to a particular experiment, or to a particular
45 45 file within an experiment. Below HOME refers to the url to your site's home page. In all cases, if a user has not yet registered,
46 46 they will first go to the register page, and then directly to the requested url.</p>
47 47
48 48 <h3>To go directly to a particular Madrigal experiment, follow the example below:</h3>
49 49
50 50 <pre>HOME/showExperiment?experiment_list=experiments/2017/arg/27jul17</pre>
51 51
52 52 <h3>To go directly to a particular Madrigal experiment and activate the show plots/docs button, follow the example below:</h3>
53 53
54 54 <pre>HOME/showExperiment?experiment_list=experiments/2017/arg/27jul17&show_plots</pre>
55 55
56 56 <h3>To go directly to a particular Madrigal file, follow the example below:</h3>
57 57
58 58 <pre>HOME/showExperiment?experiment_list=experiments/2017/arg/27jul17&file_list=one_ion_aro20170727topg.000.hdf5</pre>
59 59
60 60 <h3>To go directly to a particular Madrigal file and activate the show plots/docs button, follow the example below:</h3>
61 61
62 62 <pre>HOME/showExperiment?experiment_list=experiments/2017/arg/27jul17&file_list=one_ion_aro20170727topg.000.hdf5&show_plots</pre>
63 63
64 64 <!-- InstanceEndEditable -->
65 65 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
66 66 <tr>
67 <td width="5%"><a href="{% url 'docs' 'ad_logging.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
68 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
69 <td width="5%"><a href="{% url 'docs' 'ad_isprint.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
67 <td width="5%"><a href="{% url 'docs' 'ad_logging.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
68 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
69 <td width="5%"><a href="{% url 'docs' 'ad_isprint.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
70 70 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Creating direct links to experiments/files<!-- InstanceEndEditable --></td>
71 71 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
72 72 <td width="18%"><a href="/">Madrigal home</a></td>
73 73 </tr>
74 74 </table>
75 75 <div class='online-navigation'>
76 76 <b class="navlabel">Previous:</b>
77 77 <a class="sectref" href="{% url 'docs' 'ad_logging.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->User access logging<!-- InstanceEndEditable --></A>
78 78 <b class="navlabel">&nbsp;&nbsp;Up:</b>
79 79 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
80 80 <b class="navlabel">&nbsp;&nbsp;Next:</b>
81 81 <a class="sectref" href="{% url 'docs' 'ad_isprint.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Using isprint <!-- InstanceEndEditable --></A></div>
82 82 <hr/>
83 83 <p>&nbsp;</p>
84 84 </body>
85 85 <!-- InstanceEnd --></html>
@@ -1,78 +1,78
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>User access logging</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_other.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_other.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_other.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_other.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_isprint.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'ad_other.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_links.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'ad_other.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_links.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->User access logging <!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'ad_other.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Other admin tasks <!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'ad_links.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Creating direct links<!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">User access logging</h1>
40 40 <p>Madrigal now logs each time a user accesses data from a Madrigal data file. This log file is stored in <em>madroot</em>/metadata/userdata/access_&lt;YYYY&gt;.log. Each line in the log file has five comma-separated fields:</p>
41 41 <ol>
42 42 <li>User name</li>
43 43 <li>User email</li>
44 44 <li>User affiliation</li>
45 45 <li>Time stamp &lt;YYYY-MM-DD HH-MM-SS&gt; </li>
46 46 <li>Full path the Madrigal file accessed. </li>
47 47 </ol>
48 48 <p>Sample:</p>
49 49 <pre>Bill Rideout,brideout@haystack.mit.edu,MIT Haystack,2006-01-03 10-10-09,/opt/madrigal/experiments/2005/mlh/04sep05/mlh050904a.000.hdf5
50 50 Bill Rideout,brideout@haystack.mit.edu,MIT Haystack,2006-01-03 10-10-10,/opt/madrigal/experiments/2005/mlh/04sep05/mlh050904b.000.hdf5
51 51 Bill Rideout,brideout@haystack.mit.edu,MIT Haystack,2006-01-03 10-10-17,/opt/madrigal/experiments/2005/mlh/04sep05/mlh050904c.000.hdf5
52 52
53 53 </pre>
54 54 <p>When a user is accessing Madrigal through the web, they will be asked for this information the first time they use any Data Access <a href="wt_accessData.html"></a> page. No attempt is made to verify the data they enter. This data is then stored as a cookie, and information from that cookie is used for this logging.</p>
55 55 <p>All the latest releases of the <a href="rt_introduction.html">remote API</a> also require the caller to supply these additional fields. </p>
56 56 <p>The log file will automatically roll over once a year. </p>
57 57 <!-- InstanceEndEditable -->
58 58 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
59 59 <tr>
60 <td width="5%"><a href="{% url 'docs' 'ad_other.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
61 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
62 <td width="5%"><a href="{% url 'docs' 'ad_links.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
60 <td width="5%"><a href="{% url 'docs' 'ad_other.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
61 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
62 <td width="5%"><a href="{% url 'docs' 'ad_links.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
63 63 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->User access logging <!-- InstanceEndEditable --></td>
64 64 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
65 65 <td width="18%"><a href="/">Madrigal home</a></td>
66 66 </tr>
67 67 </table>
68 68 <div class='online-navigation'>
69 69 <b class="navlabel">Previous:</b>
70 70 <a class="sectref" href="{% url 'docs' 'ad_other.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Other admin tasks <!-- InstanceEndEditable --></A>
71 71 <b class="navlabel">&nbsp;&nbsp;Up:</b>
72 72 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
73 73 <b class="navlabel">&nbsp;&nbsp;Next:</b>
74 74 <a class="sectref" href="{% url 'docs' 'ad_links.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Creating direct links<!-- InstanceEndEditable --></A></div>
75 75 <hr/>
76 76 <p>&nbsp;</p>
77 77 </body>
78 78 <!-- InstanceEnd --></html>
@@ -1,255 +1,255
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Madrigal data model</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_experiments.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_upgrade.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_upgrade.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_experiments.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_upgrade.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_experiments.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_upgrade.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_experiments.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'ad_upgrade.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_experiments.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'ad_upgrade.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_experiments.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->The Madrigal data model and metadata files <!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'ad_upgrade.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Upgrading Madrigal <!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'ad_experiments.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Madrigal data organization <!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">The Madrigal data model and metadata files </h1>
40 40 <p align="left">Understanding the Madrigal data model is an important step in understanding how Madrigal works. There is a correspondence between each level of the data model and the metadata files that are found in the MADROOT/metadata directory. In this section we describe each level of the Madrigal data model and the corresponding metadata file.</p>
41 41 <ul>
42 42 <li><a href="#siteTab">Madrigal site</a></li>
43 43 <li><a href="#instTab">Instrument</a></li>
44 44 <li><a href="#instType">Instrument type</a></li>
45 45 <li><a href="#expTab">Experiment</a></li>
46 46 <li><a href="#fileTab">Experiment files</a></li>
47 47 <li><a href="#parcods">Data parameters</a>
48 48 <ul>
49 49 <li><a href="#explanation">Parameter explanations</a></li>
50 50 </ul>
51 51 </li>
52 52 <li><a href="#madCatTab">Parameter categories</a></li>
53 53 <li><a href="#typeTab">Data types (kindat)</a></li>
54 54 <li><a href="#instParmTab">Instrument parameters</a></li>
55 55 <li><a href="#instKindatTab">Instrument kindats</a></li>
56 56 <li><a href="#instDataTab">Instrument data</a></li>
57 57 <li><a href="#data">Madrigal files</a></li>
58 58 </ul>
59 59 <h4 align="left"><a name="siteTab" id="siteTab"></a>Madrigal site - siteTab.txt </h4>
60 60 <p align="left">The highest level of Madrigal is a Madrigal site. A Madrigal site is one particular web site controlled by
61 61 one particular group, that holds all their own data. While each Madrigal site stores their own data locally, they also share metadata with all the other sites. This makes it possible for users to search for data at all the Madrigal sites at once no matter which site they visit, and simply follow links to the Madrigal site that has the data they are interested in.</p>
62 62 <p align="left">Metadata about all sites is stored in MADROOT/metadata/siteTab.txt. When new Madrigal sites are added, this table is updated and all Madrigal sites are notified so they can update this file. If a site is running Madrigal 2.5 or higher, this file will be automatically updated unless the file has been manually modified by the administrator in a way not reported to <a href="mailto:madrigal@haystack.mit.edu">OpenMadrigal administrator</a>. This file contains the following comma-separated fields: </p>
63 63 <ul>
64 64 <li>Site ID (e.g., 1) </li>
65 65 <li>Site Name (e.g., Millstone Hill Observatory)</li>
66 66 <li>Madrigal server (e.g., www.haystack.mit.edu). If https, then you need to append https:// (e.g., https://www.haystack.mit.edu)</li>
67 67 <li>Madrigal document root relative to server (e.g., madrigal) Leave empty if not needed.</li>
68 68 <li>Madrigal CGI directory relative to server (e.g., cgi-bin/madrigal) - This field is no longer used.</li>
69 69 <li>Madrigal servlet directory relative to server (e.g., madrigal/servlets) - This field is no longer used. </li>
70 70 <li>Contact name (e.g., John M. Holt)</li>
71 71 <li>Contact Address 1 (e.g., MIT Haystack Observatory)</li>
72 72 <li>Contact Address 2 (e.g., Route 40)</li>
73 73 <li>Contact Address 3 (e.g., &quot;&quot; )</li>
74 74 <li>Contact City (e.g., Westford)</li>
75 75 <li>Contact State/Province (e.g., MA)</li>
76 76 <li>Contact Postal Code (e.g., 01886)</li>
77 77 <li>Contact Country (e.g., USA)</li>
78 78 <li>Contact Telephone (e.g., 1-617-981-5624)</li>
79 79 <li>Contact email (e.g., mailto:jmh@haystack.mit.edu) Multiple addresses may be listed if separated by semicolons.</li>
80 80 <li>Site version (e.g. 3.0) Version of Madrigal installed as period seperated integers. If not given, default is 2.6.</li>
81 81 </ul>
82 82 <h4><a name="instTab" id="instTab"></a>Instrument - instTab.txt </h4>
83 83 <p>The next layer of the Madrigal data model is the instrument. All data in Madrigal is associated with one and only one instrument. Any given Madrigal site will hold data from one or more instruments. Since Madrigal focuses on ground-based instruments, most instruments have a particular location associated with them. However, some Madrigal data is based on measurements from multiple instruments, and so have no particular location. Some examples are &quot;EISCAT Scientific Association IS Radars&quot; which combine data from the multiple EISCAT radars, and &quot;World-wide GPS Receiver Network&quot;, which consists of over a thousand individual GPS receivers distributed around the globe.</p>
84 84 <p>Metadata about all instruments is stored in MADROOT/metadata/instTab.txt. When new Madrigal instruments are added, this table is updated and all Madrigal sites are notified so they can update this file. If a site is running Madrigal 2.5 or higher, this file will be automatically updated unless the file has been manually modified by the administrator in a way not reported to <a href="mailto:madrigal@haystack.mit.edu">OpenMadrigal administrator</a>. This instrument code list is usually consistent with the Cedar instrument list. This file contains the following comma-separated fields: </p>
85 85 <ul>
86 86 <li>Instrument Code (e.g., 30) </li>
87 87 <li>Instrument 3-letter Mnemonic - either of second two characters may also be numbers (e.g., mlh or p4p)</li>
88 88 <li>Instrument Name (e.g., Millstone Hill Incoherent Scatter Radar)</li>
89 89 <li>Latitude (e.g., 42.5)</li>
90 90 <li>Longitude (e.g., -71.9)</li>
91 91 <li>Altitude in km above sea level (e.g., 0.146)</li>
92 92 <li>Contact name (e.g., John M. Holt)</li>
93 93 <li>Contact Address 1 (e.g., MIT Haystack Observatory)</li>
94 94 <li>Contact Address 2 (e.g., Route 40)</li>
95 95 <li>Contact Address 3 (e.g., &quot;&quot; )</li>
96 96 <li>Contact City (e.g., Westford)</li>
97 97 <li>Contact State/Province (e.g., MA)</li>
98 98 <li>Contact Postal Code (e.g., 01886)</li>
99 99 <li>Contact Country (e.g., USA)</li>
100 100 <li>Contact Telephone (e.g., 1-617-981-5625)</li>
101 101 <li>Contact email (e.g., mailto:jmh@haystack.mit.edu)</li>
102 102 <li>Instrument category id (e.g., 6)</li>
103 103 </ul>
104 104 <p>&nbsp;</p>
105 105 <h4><a name="instType" id="instType"></a>Instrument type - instType.txt </h4>
106 106 <p>The instrument type table lists categories of instruments, to allow the user to search instruments more easily. If a site is running Madrigal 2.5 or higher, this file will be automatically updated unless the file has been manually modified by the administrator in a way not reported to <a href="mailto:madrigal@haystack.mit.edu">OpenMadrigal administrator</a>. This file contains the following comma-separated fields: </p>
107 107 <ul>
108 108 <li>Instrument category id (e.g., 6) </li>
109 109 <li>Instrument category description (e.g., Incoherent Scatter Radar) </li>
110 110 </ul>
111 111 <p>&nbsp;</p>
112 112 <h4><a name="expTab" id="expTab"></a>Experiment - expTab.txt </h4>
113 113 <p>All the data from a given instrument is organized into experiments. An experiment consists of data from a single instrument covering a limited period of time, and, as a rule, is meant to address a particular scientific goal. Madrigal makes the assumption that instruments may be run in different modes, and so the data generated may vary from one experiment to another. By organizing one instrument's data into experiments, the purpose and limitations of each experiment can be made clearer. As a Madrigal administrator, you can also provide users with supplemental plots and documentation about that experiment, in addition to the standard Madrigal data files. See the section on <a href="ad_createExp.html">creating and updating Madrigal experiments</a> for more information.</p>
114 114 <p>Madrigal has a number of security codes for different types of experiments. Most experiments are public, which allows them to be accessed by everyone. An experiment can also be made private, which means that only users with set ranges of ip addresses can access them. (See<a href="ad_other.html#private"> Set private versus public access</a>.) Private experiments are never shared with other Madrigal sites. There is also a hidden experiment state to completely remove an experiment from access by Madrigal (if, for example, the data is discovered to be corrupt, but might be fixed in the future). </p>
115 115 <p>There are also two experiment states for archiving experiments. These are <em>public archive</em> and <em>private archive</em>. These states are meant to support the archiving of Madrigal data at a central Madrigal site, such as the one at NCAR. These archived experiments are duplicates of experiments found at other Madrigal sites. In general these archived experiments are ignored by any part of the user interface that searches all sites, because the user will only want to find the main data source. However, when the user interface is only accessing local data, these archived experiments will appear. A private archived experiment is subject to the same restriction as a regular private experiment. </p>
116 116 <p>Metadata about all experiments is stored in MADROOT/metadata/expTab.txt. This file is automatically generated from individual expTab.txt files located in each experiment directory, as will be described in the <a href="ad_experiments.html">next section on experiment organization</a>. This file contains the following comma-separated fields: </p>
117 117 <ul>
118 118 <li>Experiment ID (auto-generated) </li>
119 119 <li>Experiment URL (e.g., http://www.haystack.mit.edu/cgi-bin/madtoc/1997/mlh/03dec97g). Note this url is historical, and no longer works. </li>
120 120 <li>Experiment Name (e.g., Wide Latitude Substorm Study)</li>
121 121 <li>Site ID (e.g., 1)</li>
122 122 <li>Start Date (YYYYMMDD) (e.g., 19971203) </li>
123 123 <li>Start Time (HHMMSS)(e.g., 011356)</li>
124 124 <li>End Date (e.g., 19971205) (YYYYMMDD)</li>
125 125 <li>End Time (e.g., 123525) (HHMMSS)</li>
126 126 <li>Instrument Code (e.g., 30)</li>
127 127 <li>Security Code (e.g., 0) - 0 for public, 1 for private, -1 for completely ignored, 2 for public archive, 3 for private archive. </li>
128 128 <li>Principle Investigator (e.g., Phil Erickson) optional field - used to override the instrument PI </li>
129 129 <li>Principle Investigator email (e.g., perickson@haystack.mit.edu) optional - PI must also be given </li>
130 130 </ul>
131 131 <p>There is also a file called MADROOT/metadata/expTabAll.txt which is also automatically generated. If differs from expTab.txt in that it contains experiment metadata from all Madrigal sites, not just the local one. Any remote experiment with a non-zero security code will be excluded. </p>
132 132 <h4><a name="fileTab" id="fileTab"></a>Experiment Files - fileTab.txt </h4>
133 133 <p>The data from a given experiment is stored in one or more experiment files. There are a number of reasons
134 134 there may be more than one file for a given experiment. The first is that different kinds of data
135 135 may be stored in different files. Also, the experimental data may be analyzed in more than one way, leading
136 136 to files with different sets of measured parameters. For these two cases, each file should have its own
137 137 kindat code (see below). Another reason for multiple files is that older, historical files can be
138 138 kept on-line for reference purposes. </p>
139 139
140 <p>With Madrigal 3, the format of these files is Hdf5 as defined by the <a href="/static/CEDARMadrigalHdf5Format.pdf" target="_blank">CEDAR Madrigal Hdf5 file format</a>. Each file may contain only one kindat. The category field is used to distinguish
140 <p>With Madrigal 3, the format of these files is Hdf5 as defined by the <a href="{% static 'CEDARMadrigalHdf5Format.pdf' %}" target="_blank">CEDAR Madrigal Hdf5 file format</a>. Each file may contain only one kindat. The category field is used to distinguish
141 141 files which are of historical interest only, e.g. a file which have been superseded by a file with an
142 142 improved electron density calibration. In some cases there may be more than one up-to-date variant of a
143 143 file, e.g. when different analysis options have been chosen. In this case one of these files is designated
144 144 the default, and the others are designated as variants.</p>
145 145 <p>Metadata about all experiment files is stored in MADROOT/metadata/fileTab.txt. This file is automatically generated from individual fileTab.txt files located in each experiment directory, as will be described in the <a href="ad_experiments.html">next section on experiment organization</a>. This file contains the following comma-separated fields: </p>
146 146 <ul>
147 147 <li>File Name (e.g., mil971203g.002) </li>
148 148 <li>Experiment ID (e.g., 10000125) </li>
149 149 <li>Data Type (e.g., 3001) </li>
150 150 <li>Category (1=default, 2=variant, 3=history, 4=real-time)</li>
151 151 <li>Size of File (e.g., 241920) </li>
152 152 <li>File contains at least one Catalog Record File (0 for no, 1 for yes)</li>
153 153 <li>File contains at least one Header Record File (0 for no, 1 for yes)</li>
154 154 <li>Analysis/modify Date (YYYYMMDD) (e.g., 19980101)</li>
155 155 <li>Analysis/modify Time (HHMMSS) (e.g., 115131) </li>
156 156 <li>File processing status description (preliminary, final, or any other description)</li>
157 157 <li>Permission flag: 0 for public, 1 for private</li>
158 158 <li>File analyst - who did the analysis of the data and created this file (e.g. John Holt) optional</li>
159 159 <li>File analyst email (e.g., jholt@haystack.mit.edu) optional - File analyst must also be given </li>
160 160 </ul>
161 161 <p>There is also a file called MADROOT/metadata/fileTabAll.txt which is also automatically generated. If differs from fileTab.txt in that it contains experiment file metadata from all Madrigal sites, not just the local one. </p>
162 162 <p>&nbsp;</p>
163 163 <h4><a name="parcods" id="parcods"></a>Data parameters - parmCodes.txt </h4>
164 164 <p>Any given file is made up a series of records holding measured parameters. Note that based on which parameters are in the file, Madrigal will automatically derive a large number of other parameters such as Kp and Magnetic field strength that aren't in the file itself. In the web browser, measured parameters are shown in bold, derived parameters in normal font. </p>
165 165 <p> The metadata file parmCodes.txt contains information about what Madrigal or Cedar parameters are supported. It replaces the old format file parmCodes.txt used in Madrigal 2 because that old file limited the size of id codes with its column delimited format. . If a parameter has a parameter code of 0, it cannot be stored in a Cedar file and is meant the be a derived value only. All Madrigal mnemonics must be unique. All non-zero parameter codes must be unique. If a new parameter is desired, it should be done in coordination with Bill Rideout at brideout@haystack.mit.edu.</p>
166 166 <p>The file parmCodes.txt is comma delimited. </p>
167 167 <ol>
168 168 <li>Parameter Code (may be zero) </li>
169 169 <li>Description (cannot include a comma)</li>
170 170 <li>Units</li>
171 171 <li>Mnemonic</li>
172 172 <li>Format (Now use C-style formatting)</li>
173 173 <li>Width</li>
174 174 <li>Category Id (see madCatTab.txt) </li>
175 175 <li>Mnemonic has Html description (1 or 0) - used to <a href="#explanation">display extra information</a> about the parameter </li>
176 176 <li>Err mnemonic has Html description (1 or 0) - used to <a href="#explanation">display extra information</a> about the error parameter</li>
177 177 <li>Is duplicate of code (optional field - used because old cedar format format had duplicate parameters to represent different dynamic range).</li>
178 178 </ol>
179 179 <blockquote>
180 180 <h5><a name="explanation" id="explanation"></a>Parameter explanations</h5>
181 181 <p>For parameters that cannot be fully described in the simple string in the parmCodes.txt file, additional explanation about the parameter or its corresponding error parameter can be added to the file madroot/doc/parmDesc.html. Simply create a new named anchor in that file, where the anchor name is the parameter mnemonic in all capitals. Following that, a description of arbitrary length can be given using html. Change one of the last two columns from 0 to 1 for that parameter in parmCodes.txt to let Madrigal know that this explanation exists. In general, the parameter order in parmDesc.html matches that of parmCodes.txt, but that is not a functional requirement. </p>
182 182 </blockquote>
183 183 <h4><a name="madCatTab" id="madCatTab"></a>Parameter categories - madCatTab.txt</h4>
184 184 <p>The Madrigal category metadata file(madCatTab.txt) contains information about what categories Madrigal parameters belong in. The categories are similar to the Cedar categories, but do not follow them exactly. This file does not change. This file contains the following comma-separated fields: </p>
185 185 <ul>
186 186 <li>Category id (integers, starting at 0) </li>
187 187 <li>Category name </li>
188 188 <li>Minimum parameter code (integer). Used only for codes not listed in parmCodes.txt. If category doesn't have a range of codes, use -1. </li>
189 189 <li>Maximum parameter code (integer). Used only for codes not listed in parmCodes.txt. If category doesn't have a range of codes, use -1.</li>
190 190 </ul>
191 191 <h4><a name="typeTab" id="typeTab"></a>Data type (kindat) table - typeTab.txt </h4>
192 192 <p>The Madrigal data type (also called kind of data or kindat) metadata file(typeTab.txt) contains a list of all data
193 193 types in the database. The purpose of the kindat is to uniquely identify the data processing algorithm used to compute
194 194 the parameters in the associated Madrigal file. Each individual Madrigal site is free to update this table, as long as
195 195 there are no duplicate kindats in your own file. It is best to simply keep the kindat codes in ascending order to aviod
196 196 any chance of a duplicate. The kindat description must not contain a comma.</p>
197 197 <ul>
198 198 <li>Data Type Code (e.g., 3001) </li>
199 199 <li>Data Type Brief Description (e.g., Basic Derived Parameters ) </li>
200 200 </ul>
201 201 <h4><a name="instParmTab" id="instParmTab"></a>Instrument parameter table - instParmTab.txt </h4>
202 202 <p>The instrument parameter metadata file (instParmTab.txt) contains information about what measured parameters are found in the data for any given instrument. This data is used to support the global database query web page, and is rebuild by updateMaster.
203 203 This file contains the following comma-separated fields:</p>
204 204 <ul>
205 205 <li>Instrument Code (e.g., 30) </li>
206 206 <li>Parameter mnemonic list (e.g., range rangei az1 az2 el1 el2 pl snp3 chisq mhdqc1 systmp systmi power tfreq popl dpopl ti dti tr dtr vo dvo ph+ dph+ pm dpm fa dfa pnrmd pnrmdi vdopp dvdopp) </li>
207 207 </ul>
208 208 <h4><a name="instKindatTab" id="instKindatTab"></a>Instrument kindat table - instKindatTab.txt </h4>
209 209 <p> The instrument kindat metadata file (instKindatTab.txt) contains information about what kindat codes are used with any given instrument. This data is used to support the global database query web page, and is rebuild by updateMaster. This file contains the following comma-separated fields:</p>
210 210 <ul>
211 211 <li>Instrument Code (e.g., 30) </li>
212 212 <li>Kindat code list (e.g., 3408 13204 13210 3001) </li>
213 213 </ul>
214 214 <h4><a name="instDataTab" id="instKindatTab2"></a>Instrument data table - instData*.txt </h4>
215 215 <p> The instrument data metadata files (instData.txt and instDataPriv.txt) contain information about for what years and instruments each Madrigal site has data. Effectively these file are summaries of data in expTabAll.txt, and only exist to speed UI performance. Note that there will be only one line per kinst value. If muliple sites have data for the same instrument, the rules as to which siteID is used are:</p>
216 216 <ol>
217 217 <li>Test experiments are ignored</li>
218 218 <li>If the local site has that instrument, the local site id is always used (thus archive sites will show data as local).</li>
219 219 <li>Non-local archived experiments are ignored in favor of the main site.</li>
220 220 <li>If the instrument is at multiple non-archived, non-local sites, the site with the largest number of experiments is used.</li>
221 221 </ol>
222 222 <p>The two files instData.txt and instDataPriv.txt diff only in that private data is included in instDataPriv.txt, whereas public data isd included in both.</p>
223 223 <p>This data is used to enhace performance of various web pages, and is rebuild by updateMaster. </p>
224 224 <p>This file contains the following comma-separated fields:</p>
225 225 <ul>
226 226 <li>Site ID (eg, 10)</li>
227 227 <li>Instrument Code (e.g., 30) </li>
228 228 <li>Year for whihc there is data list (e.g., 1998 1999 2002) </li>
229 229 </ul>
230 230 <p>&nbsp;</p>
231 231 <h4><a name="data" id="data"></a>File data </h4>
232 <p>The bottom level of the Madrigal data model is of course the data itself. With Madrigal 3.0 and beyond, the actual file format is Hdf5 that follows the rules defined in the <a href="/static/CEDARMadrigalHdf5Format.pdf" target="_blank">CEDAR Madrigal Hdf5 format</a> document. A Madrigal file is made up of a series of records, each with a start and stop time, representing the integration period of measurement (Madrigal tries to enforce the idea that all measurements take a finite time, but sometimes the start time = the stop time).</p>
232 <p>The bottom level of the Madrigal data model is of course the data itself. With Madrigal 3.0 and beyond, the actual file format is Hdf5 that follows the rules defined in the <a href="{% static 'CEDARMadrigalHdf5Format.pdf' %}" target="_blank">CEDAR Madrigal Hdf5 format</a> document. A Madrigal file is made up of a series of records, each with a start and stop time, representing the integration period of measurement (Madrigal tries to enforce the idea that all measurements take a finite time, but sometimes the start time = the stop time).</p>
233 233 <p>Each Cedar parameter can also have an associated error value. This error value can have the special values &quot;missing&quot;, &quot;assumed&quot;, or &quot;known bad&quot;. If an error parameter is &quot;assumed&quot;, the implication is that the measured value itself is assumed, and does not represent a measured value. If the error value is &quot;known bad&quot;, the measured data is known to have a problem.</p>
234 234 <!-- InstanceEndEditable -->
235 235 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
236 236 <tr>
237 <td width="5%"><a href="{% url 'docs' 'ad_upgrade.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
238 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
239 <td width="5%"><a href="{% url 'docs' 'ad_experiments.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
237 <td width="5%"><a href="{% url 'docs' 'ad_upgrade.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
238 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
239 <td width="5%"><a href="{% url 'docs' 'ad_experiments.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
240 240 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->The Madrigal data model and metadata files <!-- InstanceEndEditable --></td>
241 241 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
242 242 <td width="18%"><a href="/">Madrigal home</a></td>
243 243 </tr>
244 244 </table>
245 245 <div class='online-navigation'>
246 246 <b class="navlabel">Previous:</b>
247 247 <a class="sectref" href="{% url 'docs' 'ad_upgrade.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Upgrading Madrigal <!-- InstanceEndEditable --></A>
248 248 <b class="navlabel">&nbsp;&nbsp;Up:</b>
249 249 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
250 250 <b class="navlabel">&nbsp;&nbsp;Next:</b>
251 251 <a class="sectref" href="{% url 'docs' 'ad_experiments.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Madrigal data organization <!-- InstanceEndEditable --></A></div>
252 252 <hr/>
253 253 <p>&nbsp;</p>
254 254 </body>
255 255 <!-- InstanceEnd --></html>
@@ -1,232 +1,232
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Other administrative tasks</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" -->
10 10
11 11
12 12 <style type="text/css">
13 13 <!--
14 14 .style1 {font-family: "Courier New", Courier, monospace}
15 15 -->
16 16 </style>
17 17 <!-- InstanceEndEditable -->
18 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
18 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
19 19 <style type="text/css">
20 20 html body {
21 21 background-color: {{bg_color}};
22 22 }
23 23 </style>
24 24 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_logging.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_createExp.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_createExp.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_logging.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_createExp.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_logging.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_createExp.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_logging.html" -->
25 25 </head>
26 26
27 27 <body>
28 28 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
29 29 <tr>
30 <td width="5%"><a href="{% url 'docs' 'ad_createExp.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
31 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
32 <td width="5%"><a href="{% url 'docs' 'ad_logging.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
30 <td width="5%"><a href="{% url 'docs' 'ad_createExp.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
31 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
32 <td width="5%"><a href="{% url 'docs' 'ad_logging.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
33 33 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Other administrative tasks <!-- InstanceEndEditable --></td>
34 34 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
35 35 <td width="18%"><a href="/">Madrigal home</a></td>
36 36 </tr>
37 37 </table>
38 38 <div class='online-navigation'>
39 39 <b class="navlabel">Previous:</b>
40 40 <a class="sectref" href="{% url 'docs' 'ad_createExp.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Creating Madrigal experiments <!-- InstanceEndEditable --></A>
41 41 <b class="navlabel">&nbsp;&nbsp;Up:</b>
42 42 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
43 43 <b class="navlabel">&nbsp;&nbsp;Next:</b>
44 44 <a class="sectref" href="{% url 'docs' 'ad_logging.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->User access logging <!-- InstanceEndEditable --></A></div>
45 45 <hr/>
46 46 <!-- InstanceBeginEditable name="EditDoc" -->
47 47 <h1 align="center">Other administrative tasks</h1>
48 48 <p>Some other tasks a Madrigal administrator might need to do:</p>
49 49 <ul>
50 50 <li><a href="#cached_files">Create cached text or netCDF4 versions of CEDAR Madrigal Hdf5 files</a></li>
51 51 <li><a href="#private">Set private versus public access for Madrigal data files</a></li>
52 52 <li><a href="#links">Modifying the Madrigal homepage</a></li>
53 53 <li><a href="#madrigal_cfg">Modify settings in the madrigal.cfg file</a></li>
54 54 <li><a href="#siteSpecific">Add documentation specific to your site to Madrigal documentation page</a></li>
55 55 <li><a href="#rules">Add site-specific rules-of the-road to the Madrigal experiment page</a></li>
56 56 <li><a href="#static">Add static pages to your Madrigal site</a></li>
57 57 <li><a href="#copy_exp">Copy entire experiment directories from one Madrigal site to another</a></li>
58 58 <li><a href="#updateExpTimes">Reset experiment start and end times according to data in the experiment files</a></li>
59 59 <li><a href="#register">Registering interest in an experiment or an intrument</a></li>
60 60 <li><a href="#rebuilding">Rebuilding the madrigal python library</a></li>
61 61 <li><a href="#experiments">Mounting additional hard drives to expand the experiments disc capacity</a></li>
62 62 <li><a href="#throttle">Throttling admin emails if too many are sent</a></li>
63 63 <li><a href="#convert">Converting from http to https</a></li>
64 64 </ul>
65 65 <p>Contact the <a href="mailto:madrigal@haystack.mit.edu">OpenMadrigal administrator</a> <a href="mailto:brideout@haystack.mit.edu"></a> if some other administrative issue arises. </p>
66 66 <h4><a name="cached_files" id="cached_files"></a>Create cached text or netCDF4 versions of CEDAR Madrigal Hdf5 files</h4>
67 67 <p>When users download ascii or netCDF4 versions of CEDAR Madrigal Hdf5 files as is (that is, just the parameters in the file without filtering), these alternative file formats by default are dynamically created. If this takes too long, the Madrigal admistrator can speed that up by creating cached files in the &lt;<em>experiment directory</em>&gt;/overview directory. The cached text file has <em>'.txt.gz</em>' appended to the basename of the CEDAR Madrigal Hdf5 file, and the netCDF4 file has '<em>.nc</em>' appended to the basename of the CEDAR Madrigal Hdf5 file. These cached files are created with the $MADROOT/bin/createCachedFiles.py script. Here's the usage:</p>
68 68 <pre>
69 69 createCachedFiles.py [--excludeText --excludeNetCDF4 --inst=<instList> --path=<expPath>
70 70 --includeNonDefault --overwrite --includeGeo --numCPU=<numCPU> -h --help]
71 71
72 72 By default, both text and netCDF4 files created. Use --excludeText or --excludeNetCDF4 to only create one type.
73 73 By default all instruments will be included. Use --inst=<comma delimited kinst list> to only include some instruments.
74 74 By default, all experiment directories will be included. Use --path to limit to a particular directory and all subdirectories.
75 75 By default only default files will be cached. Use --includeNonDefault to include all files.
76 76 Use --overwrite to overwrite all Hdf5 cached files. Default is to skip existing cached files.
77 77 Set --includeGeo to also convert geophysical files. Default is to skip them.
78 78 numCPU by default is the maximum of (1, numCPUs available - 2). Use --numCPU to override, but still will not be highter than default.
79 79 -h or --help - print usage and exit
80 80 </pre>
81 81 <h4><a name="private" id="private2"></a>Set private versus public access for Madrigal data files</h4>
82 82 <p>This new feature of Madrigal allows data files to be made either publicly available, or restricted to a limited set of IP address listed in a file. </p>
83 83 <p>To disable this feature and make all your data public, run the following from the $MADROOT directory: </p>
84 84 <pre>$MADROOT/bin/setAccess $MADROOT/experiments public </pre>
85 85 <p>To enable this feature, you must first create a file called "trustedIPs.txt" under MADROOT. This file should contain the IP addresses of hosts considered to be part of the private group, or partial IPs if whole sub-nets should be included. This file is not created during installation. Anyone whose browser's IP matches this list will be able to view files marked as private. For example, if trustedIPs.txt contains the line 132.197.*, any IP address that begins 132.197 will have private access. </p>
86 86 <p>Also, if the fileTab.txt file for that experiment can be overwritten by the web server, anyone whose browser's IP matches this list will be able to to change the access of any file between public and private from the madExperiments listing page. </p>
87 87 <p>To change a large number of experiments to be either public or private, run the following script from the $MADROOT directory: </p>
88 88 <pre>$MADROOT/bin/setAccess dirPath [public || private] </pre>
89 89 <p>where dirPath is the full path name of any directory in $MADROOT/experiments, and the second argument is either public or private. This script will set all experiments in dirPath and below to be public or private. </p>
90 90 <p>The access permission for any given file is set in the fileTab.txt file. See <a href="ad_metadata.html">metadata documentation </a> for details. </p>
91 91
92 92 <h4><a name="links" id="links"></a>Modifying the Madrigal homepage</h4>
93 93 <p>You can easily modify the Madrigal homepage of you site by modifying the template file $MADROOT/source/madpy/djangoMad/madweb/templates/madweb/index.html.</p>
94 94
95 95 <h4><a name="madrigal_cfg" id="madrigal_cfg"></a>Modify settings in the madrigal.cfg file</h4>
96 96 <p>The following settings in the <em>madroot</em>/madrigal.cfg file can be modified at any time and the changes will take effect immediately:</p>
97 97 <ul>
98 98 <li>CONTACT - Mailto link of contact person(s) for this madrigal installation. Multiple email addresses may be included if separated by commas. </li>
99 99 <li>MAILSERVER - Name of mailserver (possibly localhost if running sendmail) </li>
100 100 <li>NOTESMANAGER - If you want someone to be notified whenever a user adds a note to an experiment, uncomment this optional line and add the email address. See below for a discussion of the optional notes feature and how to configure it after installation.</li>
101 101 <li>HTMLSTYLE - Body style of html pages </li>
102 102 <li>INDEXHEAD - Heading in the top-level Madrigal page </li>
103 103 </ul>
104 104
105 105 <h4><a name="siteSpecific" id="siteSpecific"></a>Add documentation specific to your site to Madrigal documentation page</h4>
106 106 <p>If you want to add any documentation pages specific to your site to the Madrigal documentation pages, simply put them at a url where they can be indexed. Then edit the file MADROOT/source/madpy/djangoMad/madweb/templates/madweb/madContents.html to modify the line</p>
107 107 <pre>&lt;a href=&quot;#&quot;&gt;</pre>
108 108 <p>to replace # with the url where your site specific documentation is.</p>
109 109
110 110 <h4><a name="rules" id="rules"></a>Add site-specific rules-of the-road to the Madrigal experiment page</h4>
111 111 <p>By default, users see only the Cedar rules-of-the-road on the data access page when they first enter the Madrigal site. If you want your users to see rules-of the-road specific to your Madrigal site when the reach the Madrigal experiment page, simply create a text file with your rules called <strong>local_rules_of_the_road.txt</strong> in the <em>madroot</em> directory. </p>
112 112
113 113 <h4><a name="static" id="static"></a>Add static pages to your Madrigal site</h4>
114 114 <p>Soemtimes its helpful to add static pages to your Madrigal site, such as a page describing your instrument, that you can then simply reference from each individual experiment page. To do this, simply copy the static file to
115 115 MADROOT/source/madpy/djangoMad/madweb/static/siteSpecific, and use the url "/static/siteSpecific/[filename]" to refer to it.</p>
116 116
117 117
118 118 <h4><a name="copy_exp" id="copy_exp"></a>Copy entire experiment directories from one Madrigal site to another</h4>
119 119 <p> If you want to copy data from one Madrigal site into yours (such as is done during the standard installation with the test data from Haystack) copy all the desired data from another Madrigal site into the appropriate directory in $MADROOT/experiments. Then follow these steps: </p>
120 120 <ol>
121 121 <li>cd $MADROOT </li>
122 122 <li>./configureExperiments </li>
123 123 <li>$MADROOT/bin/updateMaster </li>
124 124 </ol>
125 125 <p>The script configureExperiments automatically edits the metadata files, changing the site id to your site id. This same procedure also works for <a href="#experiments">moving experiments between experiments[0-9]* directories</a>.</p>
126 126 <h4><a name="updateExpTimes" id="updateExpTimes"></a>Reset experiment start and end times according to data in the experiment files</h4>
127 127 <p>Sometimes the experiment start and end times in the metadata (the expTab.txt file) are manually edited, and do not match the start and end times of the data found in the files. The script updateExpTimes.py will examine the start and end times of all the files in an experiment, and set the experiment metadata start and end times to be the earliest and latest times found. Usage:</p>
128 128 <pre>$MADROOT/bin/updateExpTimes.py [experiment_directory]</pre>
129 129 <p>If optional argument <em>experiment_directory</em> given, then it will only update all experiments found in that directory. Default is to update the entire database. Only default or real time files are used to determine the times. Example:</p>
130 130 <pre>$MADROOT/bin/updateExpTimes.py $MADROOT/experiments/1998</pre>
131 131 <p>will update all experiment times for the year 1998. </p>
132 132 <p>&nbsp; </p>
133 133 <h4><a name="register" id="register"></a>Registering interest in an experiment or an instrument</h4>
134 134 <p>With Madrigal 2.6, users can register interest in an existing experiment or in an instrument. When a data file is updated
135 135 in that experiment using the standard admin scripts, by default all users registered for that experiment or instrument
136 136 are sent an email. To ensure that is possible, you simply need to make sure the files
137 137 <em>$MADROOT/metadata/userdata/regExp.txt</em> and <em>$MADROOT/metadata/userdata/regExp.txt</em> are writable by the web server. If you get a request from a user to unregister them from an experiment or an instrument, simply delete that line with their email from that file. With Madrigal 3.0, you can also use the utility<em> $MADROOT/bin/registrationAdmin.py</em>. Usage is:</p>
138 138 <pre>registrationAdmin.py [--unregister | --register]
139 139 [--inst=&lt;kinst&gt; | --exp=&lt;expDir&gt;] userEmail</pre>
140 140 <pre>Either unregister or register must be set.
141 141 Either --inst=&lt;instrument code&gt; or --exp=&lt;expDir&gt; must be set.
142 142 expDir is in form &lt;experiments/2010/mlh/18jan10&gt;
143 143 </pre>
144 144 <h4><a name="rebuilding" id="rebuilding"></a>Rebuilding the madrigal python library</h4>
145 145 If for any reason you rebuild the madrigal python library by running <em>MADROOT/bin/python setup.py install</em> in the MADROOT/sopurce/madpy directory, you will need to restart the web server after you are done.
146 146 <h4><a name="experiments" id="experiments"></a>Mounting additional hard drives to expand the experiments disc capacity</h4>
147 147 <p>With Madrigal 2.6, administrators can expand the disc space available for experiments by mounting a directory named <em>experiments[0-9]*</em> in the Madroot directory. For example, you can add a directory called <em>experiments2</em> in the Madroot directory and use it for a mount point for additional space for Madrigal experiments. After you create this additional mount, you will need to create a soft link in your web server document root with a soft link to that new directory. For example, say you do the following:</p>
148 148 <ul>
149 149 <li>You create a new mount called <em>experiments2</em> in your Madroot directory<em>.</em></li>
150 150 <li>Be sure to set the permission of this new directory so that the Madrigal administrator and the web server can read and write in it.</li>
151 151 <li>You need to create a soft link from &lt;madroot&gt;/source/madpy/djangoMad/madweb/static to &lt;madroot&gt;/experiments2. For example, <em>cd /opt/madrigal3/source/madpy/djangoMad/madweb/static</em> and then <em>ln -s /opt/madrigal3/experiments2 experiments2</em>.</li>
152 152 </ul>
153 153 <p>You can now make use of this new directory in two ways:</p>
154 154 <ol>
155 155 <li>You can move experiments or whole directory trees of experiments between different <em>experiments[0-9]*</em> directrories as described in <a href="#copy_exp">Copy entire experiement directories</a> section (remember to run configureExperiments and updateMaster afterwards). Note, however, the experiments with geophysical data should not be moved (years 1950, 1957, and 1963).</li>
156 156 <li>When running the scripts createExpWithFile.py or createRTExp.py, use the <em>--experimentsDirNum</em> argument to choose the new directory to use. By default the base <em>experiments</em> directory will be used. In the example above, the option <em>--experimentsDirNum</em>=2 would cause <em>experiments2</em> to be used.</li>
157 157 </ol>
158 158 <p>&nbsp;</p>
159 159 <h4><a name="throttle" id="throttle"></a>Throttling admin emails if too many sent</h4>
160 160 <p>If you receive too many emails, you can use a third party tool to throttle the amount. The tool I have used successfully is django-email-throttler,
161 161 which is described at https://github.com/robert-kisteleki/django-email-throttler. To install, use pip and then edit your settings_production.py file:</p>
162 162
163 163 <pre>pip install django-email-throttler</pre>
164 164 <p>Then add the following lines to the end of your file MADROOT/source/madpy/djangoMad/djangoMad/settings_production.py.
165 165 The top lines can be adjusted to set exactly how many emails you get, but these numbers should work fine. When done, you will
166 166 need to restart apache for the changes to take affect.</p>
167 167
168 168 <pre>
169 169 # stuff for email throttling and their defaults
170 170 EMAILTHROTTLER_TMPDIR = '/tmp'
171 171 EMAILTHROTTLER_PREFIX = 'emailthrottler-'
172 172 EMAILTHROTTLER_INTERVAL = 600
173 173 EMAILTHROTTLER_TRUNCATE_SUBJECT = None # 128 is also ok
174 174 EMAILTHROTTLER_SUBJECT_THRESHOLD = 3 # 0 for no-check
175 175 EMAILTHROTTLER_OVERALL_THRESHOLD = 6 # 0 for no-check
176 176
177 177 LOGGING = {
178 178 'version': 1,
179 179 'disable_existing_loggers': True,
180 180 'handlers': {
181 181 'mail_admins': {
182 182 'level': 'ERROR',
183 183 'class': 'django.utils.log.AdminEmailHandler',
184 184 'email_backend': 'django_email_throttler.throttler.ThrottledEmailBackend',
185 185 'include_html': False,
186 186 }
187 187 },
188 188 'loggers': {
189 189 'django': {
190 190 'handlers': ['mail_admins'],
191 191 'level': 'ERROR',
192 192 'propagate': True,
193 193 },
194 194 }
195 195 }
196 196 </pre>
197 197
198 198 <h4><a name="convert" id="convert"></a>Converting from http to https</h4>
199 199 <p>The following are the steps needed to change an existing Madrigal site from http to https</p>
200 200 <ol>
201 201 <li>In $MADROOT/metadata/siteTab.txt, include https:// in the third field of your site. For example, change millstone.haystack.mit.edu to https://millstone.haystack.mit.edu</li>
202 202 <li>Change the MAD<b></b>SERVER line in $MADROOT/madrigal.cfg to include https:// For example, change millstone.haystack.mit.edu to https://millstone.haystack.mit.edu</li>
203 203 <li>cd $MADROOT/source/madpy</li>
204 204 <li>$MADROOT/bin/python setup.py install</li>
205 205 <li>$MADROOT/configureExperiments</li>
206 206 <li>$MADROOT/bin/updateMaster</li>
207 207 <li>Let Bill Rideout (brideout@mit.edu) know about the change.</li>
208 208 </ol>
209 209
210 210
211 211 <!-- InstanceEndEditable -->
212 212 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
213 213 <tr>
214 <td width="5%"><a href="{% url 'docs' 'ad_createExp.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
215 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
216 <td width="5%"><a href="{% url 'docs' 'ad_logging.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
214 <td width="5%"><a href="{% url 'docs' 'ad_createExp.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
215 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
216 <td width="5%"><a href="{% url 'docs' 'ad_logging.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
217 217 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Other administrative tasks <!-- InstanceEndEditable --></td>
218 218 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
219 219 <td width="18%"><a href="/">Madrigal home</a></td>
220 220 </tr>
221 221 </table>
222 222 <div class='online-navigation'>
223 223 <b class="navlabel">Previous:</b>
224 224 <a class="sectref" href="{% url 'docs' 'ad_createExp.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Creating Madrigal experiments <!-- InstanceEndEditable --></A>
225 225 <b class="navlabel">&nbsp;&nbsp;Up:</b>
226 226 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
227 227 <b class="navlabel">&nbsp;&nbsp;Next:</b>
228 228 <a class="sectref" href="{% url 'docs' 'ad_logging.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->User access logging <!-- InstanceEndEditable --></A></div>
229 229 <hr/>
230 230 <p>&nbsp;</p>
231 231 </body>
232 232 <!-- InstanceEnd --></html>
@@ -1,165 +1,165
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Upgrading Madrigal</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_metadata.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_install.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_install.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_metadata.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_install.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_metadata.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_install.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_metadata.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'ad_install.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_metadata.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'ad_install.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'ad_metadata.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Upgrading to Madrigal 3<!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'ad_install.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Installing Madrigal <!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'ad_metadata.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Madrigal data model <!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">Upgrading Madrigal to version 3</h1>
40 40 <p align="left">The following directions assume you have a version of Madrigal 2 already running, and you want to upgrade it to Madrigal 3. It is recommended you back up your existing Madrigal installation before proceeding. You will also need to upgrade slightly any loading programs you are running to create the new Madrigal 3 Hdf4 CEDAR format. Contact Bill Rideout or go to <a href="{% url 'docs' 'ad_createFiles.html' %}">Create Madrigal files</a> to learn more.</p>
41 41 <h4 align="left">Prerequisites</h4>
42 42 <p>With Madrigal 3, the installation uses a version of python 3 you install yourself. The easiest way I have found to install python with scientific tools is to use either apt-get (for ubuntu), or the Anaconda python distribution, or pip. The following python modules need to be installed:</p>
43 43 <ol>
44 44 <li>django (version 1.11 or greater)</li>
45 45 <li>pip and setuptools</li>
46 46 <li>numpy</li>
47 47 <li>scipy</li>
48 48 <li>matplotlib</li>
49 49 <li>netCDF4</li>
50 50 <li>h5py</li>
51 51 <li>sqlparse</li>
52 52 <li>filelock</li>
53 53 <li>bootstrap3 (can be installed via <em>pip install django-bootstrap3</em>)</li>
54 54 <li>aacgmv2 (can be installed via <em>pip install aacgmv2</em>)<br />
55 55 </li>
56 56 </ol>
57 57 <p>In addition, you need to have Autotools (automake, autoconf, aclocal, libtoolize, autoheader) installed, along with h5repack (may be part of h5utils package).</p>
58 58
59 59 <pre></pre>
60 60 <h4 align="left">Installation instructions</h4>
61 61 <ol>
62 62 <li>Be sure the environmental variable MADROOT is set to your main Madrigal directory (where madrigal.cfg is locatied). </li>
63 63 <li>Make sure $MADROOT/bin/python links to the version of python with the required modules listed above. For example, if you are using anaconda, you might run &lt;<em>ln -s //anaconda/bin/python $MADROOT/bin/python</em>&gt;.</li>
64 64 <li>Download the latest Madrigal 3 distribution file, madrigal*.tar.gz from the <a href="http://cedar.openmadrigal.org/madrigalDownload/">OpenMadrigal distribution page</a> to MADROOT. </li>
65 65 <li>tar -xzf madrigal*.tar.gz </li>
66 66 <li>Configure your web server to run the Madrigal Django application. Instruction for apache can be found in the <a href="#django">Configuring Apache for a Madrigal Django Application</a> section below. If you are running a webserver other than apache, please consult the Django documentation for your particular webserver. </li>
67 67 <li>Edit your file $MADROOT/metadata/siteTab.txt. The format of siteTab.txt is described <a href="ad_metadata.html#siteTab">here</a>. Note that if your site will be running https, the third field will begin https://. Make sure the last column of that line for your site ends <em>,3.0</em> . This tells all sites that you site is now a Madrigal 3 site. For example: <pre>999,mad31,localhost,madrigal,cgi-bin/madrigal,madrigal/servlets,Bill Rideout,MIT Haystack Observatory,Route 40,,Westford,MA,01886,USA,1-781-981-5624,brideout@haystack.mit.edu,3.0</pre></li>
68 68 <li>Be sure to cd to MADROOT before running the following step. Then you should be able to complete the installation simply by typing <br />
69 69 <pre>bash installMadrigal &amp;&gt; install.log &amp;</pre>
70 70 Help with any installation errors is available from the <a href="mailto:madrigal@haystack.mit.edu">OpenMadrigal administrator</a>. </li>
71 71 <li>If there were no errors, your madrigal installation should be running at the url given by MADSERVERROOT. </li>
72 72 <li>Set the script <em>madroot</em>/bin/updateMaster up as a cron job to run once a day. </li>
73 73 <li>If you want to add any documentation pages specific to your site to the Madrigal documentation pages, see the <a href="ad_other.html#siteSpecific">other admin tasks</a> section of this manual.</li>
74 74 <li>If you want to add your own rules of the road to the Madrigal experiment page, see the <a href="ad_other.html#rules">other admin tasks</a> section of this manual.</li>
75 75 </ol>
76 76 <p> </p>
77 77 <h4><a name="edit" id="edit"></a>Editing the madrigal.cfg file </h4>
78 78 The madrigal.cfg file contains all the configuration information specific to your installation. This section discusses how to edit that file for each parameter. The madrigal.cfg.template file contains examples of each parameter. For an upgrade, this file does not generally need to be edited.
79 79 <ul>
80 80 <li>MADROOT - Madrigal root directory (absolute). This must be set as an environmental variable. </li>
81 81 <li>MAD<b></b>SERVER - Web server for accessing Madrigal. For https, add https:// to the beginning. If not given, uses http </li>
82 82 <li>MAD<b></b>SERVERROOT - document virtual directory relative to MAD<b></b>SERVER.
83 83 If the full Madrigal Url is the same as the MAD<b></b>SERVER field
84 84 (for example, if the url is <i>http://madrigal.hao.ucar.edu/</i>), then set this field to a period. (Example: <i>MAD<b></b>SERVERROOT = .</i> ) </li>
85 85 <li>SITEID - Site ID - Must be unique and same as in siteTab.txt </li>
86 86 <li>HTMLSTYLE - Body style of html pages </li>
87 87 <li>INDEXHEAD - Heading in the top-level Madrigal page </li>
88 88 <li>CONTACT - Mailto link of contact person(s) for this madrigal installation. Multiple email addresses may be included if separated by commas. </li>
89 89 <li>MAILSERVER - Name of mailserver (possibly localhost if running sendmail) </li>
90 90 <li>PLOTBUTTONLABEL - By default the button to show additional documentation is labelled Plots/Docs. Change this line for a different label. <br>
91 91 </li>
92 92 </ul>
93 93 <h4><a name="django" id="django"></a>Configuring Apache for a Madrigal Django Application</h4>
94 94 <p>Some configuration of apache is required to run a Django application like Madrigal. If you are running a webserver other than apache, please consult the Django documentation for your particular webserver. We will configure apache to run Madrigal in mod_wsgi daemon mode for improved performance.</p>
95 95 <p>The first step is to make sure mod_wsgi is installed as part of your apache webserver. If not, see mod_wsgi installation directions. Once installed, add the line</p>
96 96 <pre>LoadModule wsgi_module modules/mod_wsgi.so</pre>
97 97 <p>near the top of the httpd.conf file. Next add the follow section, with <em>MADROOT</em>, <em>MADSERVERROOT</em> and <em>YOUR_SERVER</em> replaced with values for your server from the madrigal.cfg file described below. Note that if <em>MADSERVERROOT</em> is zero length (that is, if the full Madrigal Url is the same as the MAD<b></b>SERVER field
98 98 - for example, if the url is <i>http://madrigal.hao.ucar.edu/</i>) then /<em>MADSERVERROOT</em> just becomes / unlike in the madrigal.cfg file when it becomes a period. Set <em>NUM_CPU</em> to about one half available on your server.</p>
99 99
100 100 <pre>SetEnv PYTHONPATH <em>MADROOT</em>/source/madpy/djangoMad/
101 101 WSGIDaemonProcess <em>YOUR_SERVER</em> python-path=<em>MADROOT</em>/source/madpy/djangoMad processes=<em>NUM_CPU</em> display-name=%{GROUP} lang='en_US.UTF-8' locale='en_US.UTF-8'
102 102 WSGIProcessGroup <em>YOUR_SERVER</em>
103 103 WSGIScriptAlias /<em>MADSERVERROOT</em> <em>MADROOT</em>/source/madpy/djangoMad/djangoMad/wsgi.py process-group=<em>YOUR_SERVER</em>
104 104 Alias /static/ <em>MADROOT</em>/source/madpy/djangoMad/madweb/static/
105 105 WSGIApplicationGroup %{GLOBAL}</pre>
106 106
107 107 <pre> &lt;Directory <em>MADROOT</em>/source/madpy/djangoMad/madweb/static&gt;</pre>
108 108 <blockquote>
109 109 <pre>Require all granted</pre>
110 110 </blockquote>
111 111 <pre>
112 112 &lt;/Directory&gt;
113 113 &lt;Directory <em>MADROOT</em>/source/madpy/djangoMad/djangoMad&gt;</pre>
114 114 <blockquote>
115 115 <pre>&lt;Files wsgi.py&gt; </pre>
116 116 <blockquote>
117 117 <pre>Require all granted</pre>
118 118 </blockquote>
119 119 <pre>&lt;/Files&gt;</pre>
120 120 </blockquote>
121 121 <pre>&lt;/Directory&gt;</pre>
122 122
123 123 <p>You may also need to add to your apache configuration file <em>SetEnv LD_LIBRARY_PATH $MADROOT/lib</em>, possibly along with other library paths.</p>
124 124
125 125 <p>Finally, you need to edit the file <em>MADROOT</em>/source/madpy/djangoMad/djangoMad/settings_production_template.py, and save it as <em>MADROOT</em>/source/madpy/djangoMad/djangoMad/settings_production.py. The lines to be edited are:</p>
126 126 <pre>SECRET_KEY = '*****'
127 127 ALLOWED_HOSTS = ['madrigal3.haystack.mit.edu']
128 128 ADMINS = (('Bill Rideout', 'brideout@haystack.mit.edu'),)
129 129 EMAIL_HOST = 'hyperion.haystack.mit.edu'
130 130 MANAGERS = (('Bill Rideout', 'brideout@haystack.mit.edu'),)
131 131 STATIC_URL = '/static/'</pre>
132 132
133 133 <p>The STATIC_URL line only needs to be edited if MAD<b></b>SERVERROOT is not empty; that is, if your madrigal is installed in a subdirectory.
134 134 For example, if your url is http://madrigal.sri.com/madrigal, you would change that line to be STATIC_URL = '/madrigal/static/'. But if your
135 135 url is http://madrigal.sri.com, you would leave that STATIC_URL line as is.</p>
136 136
137 137 <p>You can generate a new secret key for your site at http://www.miniwebtool.com/django-secret-key-generator/, which is recommended for security reasons. The other lines are self-explanatory. </p>
138 138 <p>When you are done, be sure to restart apache for the changes to take effect. Note that because this Madrigal Django application runs in daemon mode, it will be necessary to restart the web server if you ever update the python code.</p>
139 139
140 140 <h3>Throttling Madrigal admin emails</h3>
141 141 <p>Sometimes Madrigal users write scripts that cause numerous admin emails, and in addition malicious users can also generate numerous admin emails.
142 142 If you would like to throttle the number of Madrigal admin emails you receive, see <a href="{% url 'docs' 'ad_other.html' %}#throttle">Throttling admin emails</a></p>
143 143 <h4>&nbsp;</h4>
144 144 <!-- InstanceEndEditable -->
145 145 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
146 146 <tr>
147 <td width="5%"><a href="{% url 'docs' 'ad_install.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
148 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
149 <td width="5%"><a href="{% url 'docs' 'ad_metadata.html' %}"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
147 <td width="5%"><a href="{% url 'docs' 'ad_install.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
148 <td width="5%"><a href="{% url 'docs' 'admin.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
149 <td width="5%"><a href="{% url 'docs' 'ad_metadata.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
150 150 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Upgrading or moving Madrigal <!-- InstanceEndEditable --></td>
151 151 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
152 152 <td width="18%"><a href="/">Madrigal home</a></td>
153 153 </tr>
154 154 </table>
155 155 <div class='online-navigation'>
156 156 <b class="navlabel">Previous:</b>
157 157 <a class="sectref" href="{% url 'docs' 'ad_install.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Installing Madrigal <!-- InstanceEndEditable --></A>
158 158 <b class="navlabel">&nbsp;&nbsp;Up:</b>
159 159 <a class="sectref" href="{% url 'docs' 'admin.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Madrigal admin guide <!-- InstanceEndEditable --></A>
160 160 <b class="navlabel">&nbsp;&nbsp;Next:</b>
161 161 <a class="sectref" href="{% url 'docs' 'ad_metadata.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Madrigal data model <!-- InstanceEndEditable --></A></div>
162 162 <hr/>
163 163 <p>&nbsp;</p>
164 164 </body>
165 165 <!-- InstanceEnd --></html>
@@ -1,75 +1,75
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Madrigal administrator's guide</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/madrigal/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="/madrigal{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="madContents.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_appropriate.html" --><!-- InstanceParam name="href_back_top" type="text" value="rr_fortran95.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="rr_fortran95.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="madContents.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_appropriate.html" --><!-- InstanceParam name="href_prev_top" type="text" value="rr_fortran95.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="madContents.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_appropriate.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="rr_fortran95.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="madContents.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_appropriate.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 22 <td width="5%"><a href="{% url 'docs' 'rr_fortran95.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 23 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 24 <td width="5%"><a href="{% url 'docs' 'ad_appropriate.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Madrigal administrator's guide<!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'rr_fortran95.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Fortran95 remote API reference <!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'madContents.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Doc home <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'ad_appropriate.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Is Madrigal appropriate?<!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">Madrigal administrator's guide</h1>
40 40 <p>This section of the Madrigal documentation is meant for people considering installing Madrigal to hold data from their instruments, or those who have already installed Madrigal and are responsible for administering or updating it. This guide describes how to determine whether Madrigal is right for your data, and how to install it if it is. It also discusses how to create Madrigal data files, and how to add them to Madrigal. </p>
41 41 <ul>
42 42 <li><a href="{% url 'docs' 'ad_appropriate.html' %}">Is Madrigal appropriate for my instrument(s)?</a></li>
43 43 <li><a href="{% url 'docs' 'ad_install.html' %}">Installing Madrigal for the first time </a></li>
44 44 <li><a href="{% url 'docs' 'ad_upgrade.html' %}">Upgrading Madrigal to the latest release</a></li>
45 45 <li><a href="{% url 'docs' 'ad_metadata.html' %}">The Madrigal data model and metadata files</a></li>
46 46 <li><a href="{% url 'docs' 'ad_experiments.html' %}">How Madrigal data is organized</a></li>
47 47 <li><a href="{% url 'docs' 'ad_createFiles.html' %}">Creating Madrigal data files</a></li>
48 48 <li><a href="{% url 'docs' 'ad_createExp.html' %}">Creating and updating Madrigal experiments</a></li>
49 49 <li><a href="{% url 'docs' 'ad_other.html' %}">Other administrative tasks</a></li>
50 50 <li><a href="{% url 'docs' 'ad_logging.html' %}">User access logging</a></li>
51 51 <li><a href="{% url 'docs' 'ad_links.html' %}">Creating direct links to experiments/files</a></li>
52 52 <li><a href="{% url 'docs' 'ad_isprint.html' %}">Using isprint for file quick looks</a></li>
53 53 </ul>
54 54 <!-- InstanceEndEditable -->
55 55 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
56 56 <tr>
57 57 <td width="5%"><a href="{% url 'docs' 'rr_fortran95.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
58 58 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
59 59 <td width="5%"><a href="{% url 'docs' 'ad_appropriate.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
60 60 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Madrigal administrator's guide<!-- InstanceEndEditable --></td>
61 61 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
62 62 <td width="18%"><a href="/">Madrigal home</a></td>
63 63 </tr>
64 64 </table>
65 65 <div class='online-navigation'>
66 66 <b class="navlabel">Previous:</b>
67 67 <a class="sectref" href="{% url 'docs' 'rr_fortran95.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Fortran95 remote API reference <!-- InstanceEndEditable --></A>
68 68 <b class="navlabel">&nbsp;&nbsp;Up:</b>
69 69 <a class="sectref" href="{% url 'docs' 'madContents.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Doc home <!-- InstanceEndEditable --></A>
70 70 <b class="navlabel">&nbsp;&nbsp;Next:</b>
71 71 <a class="sectref" href="{% url 'docs' 'ad_appropriate.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Is Madrigal appropriate? <!-- InstanceEndEditable --></A></div>
72 72 <hr/>
73 73 <p>&nbsp;</p>
74 74 </body>
75 75 <!-- InstanceEnd --></html>
@@ -1,87 +1,87
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Madrigal developer's guide</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 16 <!-- InstanceParam name="href_up_top" type="text" value="madContents.html" --><!-- InstanceParam name="href_next_top" type="text" value="madrigal/index.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="madContents.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="madrigal/index.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="madContents.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="madrigal/index.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="madContents.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="madrigal/index.html" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 22 <td width="5%"><a href="{% url 'docs' 'ad_isprint.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 23 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 24 <td width="5%"><a href="{% url 'docs' 'madrigal/index.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Madrigal developer's guide <!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'ad_isprint.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Using isprint<!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'madContents.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Doc home <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 36 <a class="sectref" href="{% url 'docs' 'madrigal/index.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->Internal python API<!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">Madrigal developer's guide</h1>
40 40 <p>This section of the Madrigal documentation is meant for developers working to extend or modify Madrigal. It is not meant for users of Madrigal or Madrigal administrators. </p>
41 41 <p>With the release of Madrigal 3.0, Madrigal has only a single python API. The C and Fortran code installed in Madrigal is purely scientific code used in the derivation engine, and is exposed only as a python extension, madrigal._derive.</p>
42 42 <p>The web interface is now a Django web application, and no direct cgi scripts remain. The django application is contained in MADROOT/source/madpy/djangoMad.</p>
43 43 <ul>
44 44 <li><a href="madrigal/index.html">Internal Madrigal Python API</a>
45 45 <ul>
46 46 <li><a href="{% url 'docs' 'madrigal/admin.m.html' %}">madrigal.admin</a></li>
47 47 <li><a href="{% url 'docs' 'madrigal/cedar.m.html' %}">madrigal.cedar</a></li>
48 48 <li><a href="{% url 'docs' 'madrigal/data.m.html' %}">madrigal.data</a></li>
49 49 <li><a href="{% url 'docs' 'madrigal/derivation.m.html' %}">madrigal.derivation</a></li>
50 50 <li><a href="{% url 'docs' 'madrigal/isprint.m.html' %}">madrigal.isprint</a></li>
51 51 <li><a href="{% url 'docs' 'madrigal/metadata.m.html' %}">madrigal.metadata</a></li>
52 52 <li><a href="{% url 'docs' 'madrigal/openmadrigal.m.html' %}">madrigal.openmadrigal</a></li>
53 53 <li><a href="{% url 'docs' 'madrigal/ui/index.html' %}">madrigal.ui</a>
54 54 <ul>
55 55 <li><a href="{% url 'docs' 'madrigal/ui/madrigalPlot.m.html' %}">madrigal.ui.madrigalPlot</a></li>
56 56 <li><a href="{% url 'docs' 'madrigal/ui/userData.m.html' %}">madrigal.ui.userData</a></li>
57 57 <li><a href="{% url 'docs' 'madrigal/ui/web.m.html' %}">madrigal.ui.web</a></li>
58 58 </ul>
59 59 </li>
60 60 </ul>
61 61 </li>
62 62 <li><a href="{% url 'docs' 'dev_derivation.html' %}">Madrigal derivation engine</a></li>
63 <li><a href="/static/CEDARMadrigalHdf5Format.pdf">CEDAR Madrigal Hdf5 file format</a></li>
64 <li><a href="/static/cedarFormat.pdf">Deprecated Cedar file format</a></li>
63 <li><a href="{% static 'CEDARMadrigalHdf5Format.pdf' %}">CEDAR Madrigal Hdf5 file format</a></li>
64 <li><a href="{% static 'cedarFormat.pdf' %}">Deprecated Cedar file format</a></li>
65 65 </ul>
66 66 <!-- InstanceEndEditable -->
67 67 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
68 68 <tr>
69 69 <td width="5%"><a href="{% url 'docs' 'ad_isprint.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
70 70 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
71 71 <td width="5%"><a href="{% url 'docs' 'madrigal/index.html' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
72 72 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Madrigal developer's guide<!-- InstanceEndEditable --></td>
73 73 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
74 74 <td width="18%"><a href="/">Madrigal home</a></td>
75 75 </tr>
76 76 </table>
77 77 <div class='online-navigation'>
78 78 <b class="navlabel">Previous:</b>
79 79 <a class="sectref" href="{% url 'docs' 'ad_isprint.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Using isprint <!-- InstanceEndEditable --></A>
80 80 <b class="navlabel">&nbsp;&nbsp;Up:</b>
81 81 <a class="sectref" href="{% url 'docs' 'madContents.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Doc home <!-- InstanceEndEditable --></A>
82 82 <b class="navlabel">&nbsp;&nbsp;Next:</b>
83 83 <a class="sectref" href="{% url 'docs' 'madrigal/index.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->Internal python API <!-- InstanceEndEditable --></A></div>
84 84 <hr/>
85 85 <p>&nbsp;</p>
86 86 </body>
87 87 <!-- InstanceEnd --></html>
@@ -1,95 +1,95
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Madrigal Derivation Engine</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
10 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
10 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
11 11 <style type="text/css">
12 12 html body {
13 13 background-color: {{bg_color}};
14 14 }
15 15 </style>
16 <!-- InstanceParam name="href_up_top" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_next_top" type="text" value="/static/CEDARMadrigalHdf5Format.pdf" --><!-- InstanceParam name="href_back_top" type="text" value="madrigal/ui/web.m.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="madrigal/ui/web.m.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="/static/CEDARMadrigalHdf5Format.pdf" --><!-- InstanceParam name="href_prev_top" type="text" value="madrigal/ui/web.m.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="/static/CEDARMadrigalHdf5Format.pdf" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="madrigal/ui/web.m.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="/static/CEDARMadrigalHdf5Format.pdf" -->
16 <!-- InstanceParam name="href_up_top" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_next_top" type="text" value="{% static 'CEDARMadrigalHdf5Format.pdf' %}" --><!-- InstanceParam name="href_back_top" type="text" value="madrigal/ui/web.m.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="madrigal/ui/web.m.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="{% static 'CEDARMadrigalHdf5Format.pdf' %}" --><!-- InstanceParam name="href_prev_top" type="text" value="madrigal/ui/web.m.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="{% static 'CEDARMadrigalHdf5Format.pdf' %}" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="madrigal/ui/web.m.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="dev_contents.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="{% static 'CEDARMadrigalHdf5Format.pdf' %}" -->
17 17 </head>
18 18
19 19 <body>
20 20 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
21 21 <tr>
22 <td width="5%"><a href="{% url 'docs' 'madrigal/ui/web.m.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'dev_contents.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="/static/CEDARMadrigalHdf5Format.pdf"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
22 <td width="5%"><a href="{% url 'docs' 'madrigal/ui/web.m.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'dev_contents.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% static 'CEDARMadrigalHdf5Format.pdf' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
25 25 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Madrigal Derivation Engine<!-- InstanceEndEditable --></td>
26 26 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
27 27 <td width="18%"><a href="/">Madrigal home</a></td>
28 28 </tr>
29 29 </table>
30 30 <div class='online-navigation'>
31 31 <b class="navlabel">Previous:</b>
32 32 <a class="sectref" href="{% url 'docs' 'madrigal/ui/web.m.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->madrigal.ui.web <!-- InstanceEndEditable --></A>
33 33 <b class="navlabel">&nbsp;&nbsp;Up:</b>
34 34 <a class="sectref" href="{% url 'docs' 'dev_contents.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Developer's toc <!-- InstanceEndEditable --></A>
35 35 <b class="navlabel">&nbsp;&nbsp;Next:</b>
36 <a class="sectref" href="/static/CEDARMadrigalHdf5Format.pdf"><!-- InstanceBeginEditable name="NextTitle" -->CEDAR Madrigal Hdf5 File Format<!-- InstanceEndEditable --></A></div>
36 <a class="sectref" href="{% static 'CEDARMadrigalHdf5Format.pdf' %}"><!-- InstanceBeginEditable name="NextTitle" -->CEDAR Madrigal Hdf5 File Format<!-- InstanceEndEditable --></A></div>
37 37 <hr/>
38 38 <!-- InstanceBeginEditable name="EditDoc" -->
39 39 <h1 align="center">Madrigal Derivation Engine</h1>
40 40 <p>The Madrigal derivation is defined in the python module madrigal.derivation. In particular, that module begins with a collections.OrderedDict dictionary called MadrigalDerivedMethods. To add a new derivation method, simply define the new method in MadrigalDerivedMethods, and then implement it in C or python. If you add a new C method, you will also need to update the file source/madpy/madrigal/_derive.c, which is done simply by running <em>$MADROOT/bin/python $MADROOT/source/madpy/scripts/bin/updateMadDerivations.py</em>. This page goes into the derivation engine in detail.</p>
41 41 <h4>MadrigalDerivedMethods</h4>
42 42 <p>MadrigalDerivedMethods is a collections.OrderDict in madrigal.derivation. The name of each derivation method is the key, and so must be unique. The value is a list with between two and four items.</p>
43 43 <ol>
44 44 <li>The first item is the input mnemonic(s).</li>
45 45 <li>The second item is the output mnemonic(s).</li>
46 46 <li>The optional third parameter is either 'python' or 'C'. If only two parameters, 'C' is assumed. This determines whether the method is implementated on C (or Fortran wrapped in C), or python.</li>
47 47 <li>The optional fourth parameter is a list of kinst values for which the derivation is valid (used in statistical models, etc). This feature requires 'python' to be the implementation method.</li>
48 48 </ol>
49 49 <p>The order of these derivation methods matter - they will be called in a single pass from first to last. The MadrigalDerivationPlan
50 50 determines which need to be called, and what parameters are derivable given the initial measured parameters.
51 51 Any parameter will be derived by the first available method that has that parameter as an output and
52 52 for which all input parameters are measured or themselves derivable.</p>
53 53
54 54 <p>For the C derivation methods, the methods are implemented in source/madc/madrec/madDeriveMethods.c. All methods must have a signature of the form:</p>
55 55 <pre>int methodName(int inCount,
56 56 double * inputArr,
57 57 int outCount,
58 58 double * outputArr,
59 59 FILE * errFile)</pre>
60 60 <p>where inCount is the number of input arguments, and inputArr is a double array of length inCount, with
61 61 values for each input variable. Likewise, outCount is the number of output arguments, and outputArr
62 62 is already allocated double array of length outCount, where the C method sets the values for each
63 63 output variable when it returns. If values cannot be calulated, that output value is set to nan.</p>
64 64 <p>When a new C derivation method is added, this method needs to be exposed to python. This is done through the file madpy/madrigal/_derive.c. However, you do not need to manually edit this file. Instead, cd $MADROOT/source/madpy/scripts/bin and then run:</p>
65 65 <pre>$MADROOT/bin/python $MADROOT/source/madpy/scripts/bin/updateMadDerivations.py</pre>
66 66 <p>This will create the file madpy/madrigal/_derive_new.c. Compare this new file with the existing file madpy/madrigal/_derive.c, and if the change looks reasonable, add it to source control.</p>
67 67 <p>For the python derivation methods, all methods are defined in madrigal.derivation.MadrigalDerivationMethods
68 68 in this module. Each method has two arguments - a double array of input values of length the number of input
69 69 variables, and the output array the length of the number of output variable. As in the C, the output
70 70 array is passed in to the derivation method preallocated.</p>
71 71
72 72
73 73 <P>
74 74 <!-- InstanceEndEditable -->
75 75 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
76 76 <tr>
77 <td width="5%"><a href="{% url 'docs' 'madrigal/ui/web.m.html' %}"><img src="/static/previous.png" alt="previous" width="32" height="32" /></a></td>
78 <td width="5%"><a href="{% url 'docs' 'dev_contents.html' %}"><img src="/static/up.png" alt="up" width="32" height="32" /></a></td>
79 <td width="5%"><a href="/static/CEDARMadrigalHdf5Format.pdf"><img src="/static/next.png" alt="next" width="32" height="32" /></a></td>
77 <td width="5%"><a href="{% url 'docs' 'madrigal/ui/web.m.html' %}"><img src="{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
78 <td width="5%"><a href="{% url 'docs' 'dev_contents.html' %}"><img src="{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
79 <td width="5%"><a href="{% static 'CEDARMadrigalHdf5Format.pdf' %}"><img src="{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
80 80 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Madrigal C API<!-- InstanceEndEditable --></td>
81 81 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
82 82 <td width="18%"><a href="/">Madrigal home</a></td>
83 83 </tr>
84 84 </table>
85 85 <div class='online-navigation'>
86 86 <b class="navlabel">Previous:</b>
87 87 <a class="sectref" href="{% url 'docs' 'madrigal/ui/web.m.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->madrigal.ui.web<!-- InstanceEndEditable --></A>
88 88 <b class="navlabel">&nbsp;&nbsp;Up:</b>
89 89 <a class="sectref" href="{% url 'docs' 'dev_contents.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Developer's toc<!-- InstanceEndEditable --></A>
90 90 <b class="navlabel">&nbsp;&nbsp;Next:</b>
91 <a class="sectref" href="/static/CEDARMadrigalHdf5Format.pdf"><!-- InstanceBeginEditable name="NextTitle2" -->CEDAR Madrigal Hdf5 File Format <!-- InstanceEndEditable --></A></div>
91 <a class="sectref" href="{% static 'CEDARMadrigalHdf5Format.pdf' %}"><!-- InstanceBeginEditable name="NextTitle2" -->CEDAR Madrigal Hdf5 File Format <!-- InstanceEndEditable --></A></div>
92 92 <hr/>
93 93 <p>&nbsp;</p>
94 94 </body>
95 95 <!-- InstanceEnd --></html>
@@ -1,87 +1,87
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <title>Isprint filters description</title>
8 <link href="/static/madrigal.css" rel="stylesheet" type="text/css" />
8 <link href="{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
9 9 <style type="text/css">
10 10 html body {
11 11 background-color: {{bg_color}};
12 12 }
13 13 </style>
14 14 <!-- InstanceParam name="href_up_top" type="text" value="admin.html" --><!-- InstanceParam name="href_next_top" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_back_top" type="text" value="ad_other.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="ad_other.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_prev_top" type="text" value="ad_other.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="ad_isprint.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="ad_other.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="admin.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="ad_isprint.html" -->
15 15 </head>
16 16
17 17 <body>
18 18
19 19 <h2>Isprint filter description</h2>
20 20
21 21 <center><h4>Creating filter strings for isprint</h4></center>
22 22
23 23 <p>Combine filters below into one string with spaces. Example:</p>
24 24
25 25
26 26 <pre>
27 27 "date1=12/01/2005 time1=12:00:00 date1=12/02/2005 time1=08:00:00 el=0,45 filter=ti,500,1000"
28 28 </pre>
29 29
30 30 <h4>Time range</h4>
31 31
32 32 <pre>
33 33 date1=mm/dd/yyyy - starting date to be examined. If time1 not given, defaults to 0 UT.
34 34 Example: date1=01/20/1998
35 35
36 36 time1=hh:mm:ss - starting UT time to be examined. If date1 given, is applied to date1. If not, applies on the first day of the experiment.
37 37 Example: time1=13:30:00
38 38
39 39 date2=mm/dd/yyyy - ending date to be examined. If time2 not given, defaults to 0 UT.
40 40 Example: date2=01/21/1998
41 41
42 42 time2=hh:mm:ss - ending UT time to be examined - If date2 not given, refers to date1. If date1 and date2 not given, refers to 1st day.
43 43 Example: time2=15:45:00
44 44 </pre>
45 45
46 46 <p>In the follow arguments ranges are used. If any range value is not given, it may be used to indicate no lower or upper limit (but the comma is always required). Ranges are inclusive of the end points.</p>
47 47
48 48 <h4>Geodetic altitude</h4>
49 49
50 50 <pre>
51 51 z=lower alt limit1, upper alt limit1 [or lower alt limit2 , upper alt limit2 ...] (km)
52 52 Example 1: z=100,500 This would limit the geodetic altitude to 100 to 500 km.
53 53 Example 2: z=100,200or300,400 This would limit the geodetic altitude to 100 to 200 km or 300 to 400 km.
54 54 Example 3: z=,200or300,400 Since the lower limit of the first range is missing, this would limit the geodetic altitude to anything below 200 km or from 300 to 400 km.
55 55 </pre>
56 56
57 57 <h4>Azimuth (from -180 to 180)</h4>
58 58
59 59 <pre>
60 60 az=lower az limit1, upper az limit1 [or lower az limit2 , upper az limit2 ...] (from -180 to 180 degrees)
61 61 Example 1: az=100,120 This would limit the azimuth to 100 to 120 degrees.
62 62 Example 2: az=-180,-90or90,180 This would limit the azimuth to between -180 and -90 degrees or to between 90 and 180 degrees. Note this allows a filter to go through 180 degrees.
63 63 </pre>
64 64
65 65 <h4>Elevation (from 0 to 90)</h4>
66 66
67 67 <pre>
68 68 el=lower el limit1, upper el limit1 [or lower el limit2 , upper el limit2 ...] (from 0 to 90)
69 69 Example 1: el=0,45 This would limit the elevation from 0 to 45 degrees.
70 70 </pre>
71 71
72 72 <h4>Pulse length (in seconds)</h4>
73 73
74 74 <pre>
75 75 plen=lower pl limit1, upper pl limit1 [or lower pl limit2 , upper pl limit2 ...] (pulse len in sec)
76 76 Example 1: plen=,5e-4 This would limit the pulse length to 5e-4 seconds or less.
77 77 </pre>
78 78
79 79 <h4>Free form filters</h4>
80 80
81 81 <pre>
82 82 filter=[mnemonic] or [mnemonic1,[+-*/]mnemonic2] , lower limit1 , upper limit1 [or lower limit2 , upper limit2 ...] (any number of filters may be added)
83 83 Example: filter=ti,500,1000or2000,3000 Limits the data to points where Ti is between 500 and 1000 degrees or between 2000 and 3000 degrees. Note that the units are always those of the Cedar standard.
84 84 Example: filter=gdalt,-,sdwht,0, This filter implies "gdalt - sdwht" must be greater than 0.0. Since sdwht is shadow height (the distance above any point on the earth where the sun is first visible), this filter implies that only data in direct sunlight will be displayed.
85 85 Example: filter=ti,/,Dti,100, Limits the data to points where the ratio Ti/dTi is more than 100.
86 86 </pre>
87 87
@@ -1,50 +1,50
1 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 2 <html xmlns="http://www.w3.org/1999/xhtml">
3 3 <head>
4 4 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
5 5 <title>Madrigal documentation - v3.0</title>
6 <link href="/madrigal/static/madrigal.css" rel="stylesheet" type="text/css" />
6 <link href="/madrigal{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
7 7 <style type="text/css">
8 8 html body {
9 9 background-color: {{bg_color}};
10 10 }
11 11 </style>
12 12 </head>
13 13
14 14 <body>
15 15 <center>
16 16 <h1>Madrigal Database v3.2.1 Documentation - Contents</h1>
17 17 <table width="100%" border="1">
18 18 <tr>
19 19 <td class="navigation"><a href="/">Home</a></td>
20 20 </tr>
21 21 </table>
22 22 </center>
23 23 <hr size="4" />
24 24 <ul>
25 25 <li><a href="{% url 'docs' 'madIntroduction.html' %}">1. Brief history of Madrigal</a></li>
26 26 </ul>
27 27 <ul>
28 28 <li><a href="{% url 'docs' 'whatsNew.html' %}">2. What's new in Madrigal 3.2.1</a></li>
29 29 </ul>
30 30 <ul>
31 31 <li><a href="{% url 'docs' 'wt_usersGuide.html' %}">3. Madrigal user's guide (How do I access Madrigal data?) </a>
32 32 <ul>
33 33 <li><a href="{% url 'docs' 'wt_contents.html' %}">2.1 Web interface tutorial </a></li>
34 34 <li><a href="{% url 'docs' 'rt_contents.html' %}">2.2 Remote data access programming tutorial</a></li>
35 35 <li><a href="{% url 'docs' 'rr_contents.html' %}">2.3 Remote data access programming reference guide</a></li>
36 36 </ul>
37 37 </li>
38 38 </ul>
39 39 <ul>
40 40 <li><a href="{% url 'docs' 'admin.html' %}">4. Madrigal Administrator's Guide</a></li>
41 41 </ul>
42 42 <ul>
43 43 <li><a href="{% url 'docs' 'dev_contents.html' %}">5. Madrigal Developer's Guide</a></li>
44 44 </ul>
45 45 <ul>
46 46 <li><a href="{{ siteSpecific }}">6. Site specific documentation</a></li>
47 47 </ul>
48 48 <p>&nbsp;</p>
49 49 </body>
50 50 </html>
@@ -1,71 +1,71
1 1 {% load static %}
2 2
3 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 4 <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/doc_template.dwt" codeOutsideHTMLIsLocked="false" -->
5 5 <head>
6 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 7 <!-- InstanceBeginEditable name="doctitle" -->
8 8 <title>Madrigal history</title>
9 9 <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" -->
10 10 <!-- InstanceEndEditable -->
11 <link href="/madrigal/static/madrigal.css" rel="stylesheet" type="text/css" />
11 <link href="/madrigal{% static 'madrigal.css' %}" rel="stylesheet" type="text/css" />
12 12 <style type="text/css">
13 13 html body {
14 14 background-color: {{bg_color}};
15 15 }
16 16 </style>
17 17 <!-- InstanceParam name="href_up_top" type="text" value="madContents.html" --><!-- InstanceParam name="href_next_top" type="text" value="whatsNew.html" --><!-- InstanceParam name="href_back_top" type="text" value="madContents.html" --><!-- InstanceParam name="href_back_bottom" type="text" value="madContents.html" --><!-- InstanceParam name="href_up_bottom" type="text" value="madContents.html" --><!-- InstanceParam name="href_next_bottom" type="text" value="whatsNew.html" --><!-- InstanceParam name="href_prev_top" type="text" value="madContents.html" --><!-- InstanceParam name="href_uptitle_top" type="text" value="madContents.html" --><!-- InstanceParam name="href_nexttitle_top" type="text" value="whatsNew.html" --><!-- InstanceParam name="href_prevtitle_bottom" type="text" value="madContents.html" --><!-- InstanceParam name="href_uptitle_bottom" type="text" value="madContents.html" --><!-- InstanceParam name="href_nexttitle_bottom" type="text" value="whatsNew.html" -->
18 18 </head>
19 19
20 20 <body>
21 21 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
22 22 <tr>
23 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="/madrigal/static/previous.png" alt="previous" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="/madrigal/static/up.png" alt="up" width="32" height="32" /></a></td>
25 <td width="5%"><a href="{% url 'docs' 'whatsNew.html' %}"><img src="/madrigal/static/next.png" alt="next" width="32" height="32" /></a></td>
23 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="/madrigal{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
24 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="/madrigal{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
25 <td width="5%"><a href="{% url 'docs' 'whatsNew.html' %}"><img src="/madrigal{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
26 26 <td width="54%"><!-- InstanceBeginEditable name="EditTitleTop" -->Brief history of Madrigal <!-- InstanceEndEditable --></td>
27 27 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
28 28 <td width="18%"><a href="/">Madrigal home</a></td>
29 29 </tr>
30 30 </table>
31 31 <div class='online-navigation'>
32 32 <b class="navlabel">Previous:</b>
33 33 <a class="sectref" href="{% url 'docs' 'madContents.html' %}"><!-- InstanceBeginEditable name="PreviousTitle" -->Doc home <!-- InstanceEndEditable --></A>
34 34 <b class="navlabel">&nbsp;&nbsp;Up:</b>
35 35 <a class="sectref" href="{% url 'docs' 'madContents.html' %}"><!-- InstanceBeginEditable name="UpTitle" -->Doc home <!-- InstanceEndEditable --></A>
36 36 <b class="navlabel">&nbsp;&nbsp;Next:</b>
37 37 <a class="sectref" href="{% url 'docs' 'whatsNew.html' %}"><!-- InstanceBeginEditable name="NextTitle" -->What's new in Madrigal 3.0? <!-- InstanceEndEditable --></A></div>
38 38 <hr/>
39 39 <!-- InstanceBeginEditable name="EditDoc" -->
40 40 <center>
41 41 <h1>Brief history of Madrigal </h1>
42 42 </center>
43 43 <p>Madrigal is a database of ground-based measurements and models of the Earth's upper atmosphere and ionosphere. It is the community database of the Coupling, Energetics and Dynamics of Atmospheric Regions (<a href="http://cedarweb.vsp.ucar.edu/wiki/index.php/Main_Page">CEDAR</a>) program, which is devoted to the characterization and understanding of the atmosphere above about 60 km, with emphasis on the various processes that determine the basic structure and composition of the atmosphere, and on the mechanisms that couple different atmospheric regions. Instruments developed or upgraded under CEDAR include interferometers, spectrometers, imagers, lidars and medium, high-frequency and incoherent scatter radars. The success of CEDAR has been due, in large measure, to its ability to encourage collaborative efforts coalescing observations, theory and modeling. The CEDAR community includes about 800 scientists and students from around the world.</p>
44 44 <p>From the inception of the CEDAR program in 1988, there has been a great concern among the members of the CEDAR community to make the data collected by the CEDAR instruments easily accessible for joint studies. Consequently, a high priority was placed on establishing a repository for CEDAR data and model results. An incoherent scatter radar database had been established at the National Center for Atmospheric Research (NCAR) in 1985, and this evolved into the CEDAR Database in 1989. By the end of 1997, it had grown to include data from 44 instruments and 16 models. Over 200 users have requested information from the Database. In 2012, the Madrigal database and the CEDAR database were combined into a single database system, the Madrigal CEDAR database, based at MIT Haystack Observatory.</p>
45 <p>A central element of the CEDAR Database is a standard data format. With Madrigal 3.0 the file format is now Hdf5, with a well-defined layout and parameters. This new CEDAR Hdf5 format is described <a href="/madrigal/static/CEDARMadrigalHdf5Format.pdf" target="_blank">here</a>. This format replaced the old <a href="/madrigal/static/cedarFormat.pdf">16 bit integer based format</a> that evolved from the format used by the earlier incoherent scatter database, which in turn evolved from an earlier version of Madrigal developed at the MIT Haystack Observatory in 1980. </p>
45 <p>A central element of the CEDAR Database is a standard data format. With Madrigal 3.0 the file format is now Hdf5, with a well-defined layout and parameters. This new CEDAR Hdf5 format is described <a href="/madrigal{% static 'CEDARMadrigalHdf5Format.pdf' %}" target="_blank">here</a>. This format replaced the old <a href="/madrigal{% static 'cedarFormat.pdf' %}">16 bit integer based format</a> that evolved from the format used by the earlier incoherent scatter database, which in turn evolved from an earlier version of Madrigal developed at the MIT Haystack Observatory in 1980. </p>
46 46 <p>Haystack maintains and develops the Madrigal CEDAR database as an open-source project with community contributions. With the Madrigal CEDAR database, the site owner stores only their own data, which they can add to or update at any time. However, because the Madrigal database shares its metadata with all other Madrigal sites, users browsing any Madrigal site can search for data at any other Madrigal site. In addition, a central archival Madrigal site (<a href="http://cedar.openmadrigal.org" target="_self">cedar.openmadrigal.org</a>) archives all Madrigal sites and stores data not stored at other Madrigal sites.</p>
47 47 <p>Madrigal data are arranged into &quot;experiments&quot;, which may contain data files, images, documentation, links, etc. A key feature of Madrigal is its seamless integration of archival and real-time data. A realtime file on Madrigal is accessed in exactly the same way as any archival file.</p>
48 48 <p>Madrigal has been installed at numerous locations in addition to Millstone Hill, including EISCAT, SRI International, and Jicamarca. The inventories of experiments available at each installation are available to the other installations through shared metadata. New Madrigal sites can be automatically added at any time.</p>
49 49 <p>Madrigal is an open source project with a central <a href="http://cedar.openmadrigal.org/openmadrigal">developer's web site</a> and a <a href="http://atlas.haystack.mit.edu/cgi-bin/millstone_viewvc.cgi/openmadrigal/" target="_self">central repository</a>. A complete Subversion archive of all Madrigal software, including software which is not included with the standard distribution, is available at the developer's web site. There is also an Open Madrigal mailing list and developer's forum. Any group wishing to install Madrigal to distribute their instrument's data is welcome to - see the http://cedar.openmadrigal.org/openmadrigal web site for details. The <a href="http://atlas.haystack.mit.edu/cgi-bin/millstone_viewvc.cgi/openmadrigal/" target="_self">central repository</a> link is a place where all data from all Madrigal sites is archived. It can also be used to access data, although accessing the local sites is preferred.</p>
50 50 <!-- InstanceEndEditable -->
51 51 <table width="100%" border="1" cellpadding="0" cellspacing="2" class="navigation">
52 52 <tr>
53 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="/madrigal/static/previous.png" alt="previous" width="32" height="32" /></a></td>
54 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="/madrigal/static/up.png" alt="up" width="32" height="32" /></a></td>
55 <td width="5%"><a href="{% url 'docs' 'whatsNew.html' %}"><img src="/madrigal/static/next.png" alt="next" width="32" height="32" /></a></td>
53 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="/madrigal{% static 'previous.png' %}" alt="previous" width="32" height="32" /></a></td>
54 <td width="5%"><a href="{% url 'docs' 'madContents.html' %}"><img src="/madrigal{% static 'up.png' %}" alt="up" width="32" height="32" /></a></td>
55 <td width="5%"><a href="{% url 'docs' 'whatsNew.html' %}"><img src="/madrigal{% static 'next.png' %}" alt="next" width="32" height="32" /></a></td>
56 56 <td width="54%"><!-- InstanceBeginEditable name="EditTitleBottom" -->Brief overview of Madrigal <!-- InstanceEndEditable --></td>
57 57 <td width="13%"><a href="{% url 'docs' 'madContents.html' %}">Doc home </a></td>
58 58 <td width="18%"><a href="/">Madrigal home</a></td>
59 59 </tr>
60 60 </table>
61 61 <div class='online-navigation'>
62 62 <b class="navlabel">Previous:</b>
63 63 <a class="sectref" href="{% url 'docs' 'madContents.html' %}"><!-- InstanceBeginEditable name="PreviousTitle2" -->Doc Home <!-- InstanceEndEditable --></A>
64 64 <b class="navlabel">&nbsp;&nbsp;Up:</b>
65 65 <a class="sectref" href="{% url 'docs' 'madContents.html' %}"><!-- InstanceBeginEditable name="UpTitle2" -->Doc home <!-- InstanceEndEditable --></A>
66 66 <b class="navlabel">&nbsp;&nbsp;Next:</b>
67 67 <a class="sectref" href="{% url 'docs' 'whatsNew.html' %}"><!-- InstanceBeginEditable name="NextTitle2" -->What's new in Madrigal 3.0? <!-- InstanceEndEditable --></A></div>
68 68 <hr/>
69 69 <p>&nbsp;</p>
70 70 </body>
71 71 <!-- InstanceEnd --></html>
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now