SDDSlib
Loading...
Searching...
No Matches
SDDS.m
1(* Mathematica Routines for SDDS *)
2
3editsdds:=Run["emacs sdds.m"]
4
5BeginPackage["SDDS`"]
6
7SDDSRead::usage=
8 "SDDSRead[filename_String] returns an SDDS structure from a file.";
9SDDSWrite::usage=
10 "SDDSWrite[sdds_,filename_String] writes an SDDS structure to a file.";
11SDDSGetColumnDefinitions::usage=
12 "SDDSGetColumnDefinitions[sdds_] returns the list of column definitions.";
13SDDSGetParameterDefinitions::usage=
14 "SDDSGetParameterDefinitions[sdds_] returns the list of parameter definitions.";
15SDDSGetArrayDefinitions::usage=
16 "SDDSGetArrayDefinitions[sdds_] returns the list of array definitions.";
17SDDSGetAssociates::usage=
18 "SDDSGetAssociates[sdds_] returns the list of associates.";
19SDDSGetTable::usage=
20 "SDDSGetTable[sdds_,n_:1] returns the nth table {parameters,data}.";
21SDDSGetParameters::usage=
22 "SDDSGetParameters[sdds_,n_:1] returns the parameters from the nth table.";
23SDDSGetParameter::usage=
24 "SDDSGetParameter[sdds_,p_String,n_:1] returns the value of parameter p from the nth table.";
25SDDSGetData::usage=
26 "SDDSGetData[sdds_,n_:1] returns the data matrix from the nth table.";
27SDDSGetColumn::usage=
28 "SDDSGetColumn[sdds_,c_String,n_:1] returns the column named c from the nth table.\n"<>
29 "SDDSGetColumn[sdds_,m_,n_:1] returns the mth column from the nth table.";
30SDDSGetRow::usage=
31 "SDDSGetRow[sdds_,m_,n_:1] returns the mth row from the nth table.";
32SDDSGetNColumns::usage=
33 "SDDSGetNColumns[sdds_] returns the number of columns.";
34SDDSGetNParameters::usage=
35 "SDDSGetNParameters[sdds_] returns the number of parameters.";
36SDDSGetNArrays::usage=
37 "SDDSGetNArrays[sdds_] returns the number of arrays.";
38SDDSGetNAssociates::usage=
39 "SDDSGetNAssociates[sdds_] returns the number of associates.";
40SDDSGetNTables::usage=
41 "SDDSGetNTables[sdds_] returns the number of tables.";
42SDDSGetNRows::usage=
43 "SDDSGetNRows[sdds_,n_:1] returns the number of rows in the nth table.";
44SDDSGetColumnNames::usage=
45 "SDDSGetColumnNames[sdds_] returns the list of column names.";
46SDDSGetParameterNames::usage=
47 "SDDSGetParameterNames[sdds_] returns the list of parameter names.";
48SDDSGetArrayNames::usage=
49 "SDDSGetArrayNames[sdds_] returns the list of array names.";
50SDDSGetAssociateNames::usage=
51 "SDDSGetAssociateNames[sdds_] returns the list of associate names.";
52
53Begin["Private`"]
54
55SDDSRead[filename_String]:=(
56 Module[{sdds},
57 sdds=Get[filename];
58 If[sdds == $Failed,Print["SDDSRead failed on ",filename]];
59 Return[sdds];
60 ];
61)
62
63SDDSWrite[sdds_,filename_String]:=(
64 Module[{strm},
65 strm=OpenWrite[filename];
66 Write[strm,sdds];
67 Close[strm];
68 ];
69)
70
71SDDSGetColumnDefinitions[sdds_]:=(
72 Module[{description,coldef,pardef,arraydef,associates,tables},
73 {description,coldef,pardef,arraydef,associates,tables}=sdds;
74 Return[coldef];
75 ]
76)
77
78SDDSGetParameterDefinitions[sdds_]:=(
79 Module[{description,coldef,pardef,arraydef,associates,tables},
80 {description,coldef,pardef,arraydef,associates,tables}=sdds;
81 Return[pardef];
82 ]
83)
84
85SDDSGetArrayDefinitions[sdds_]:=(
86 Module[{description,coldef,pardef,arraydef,associates,tables},
87 {description,coldef,pardef,arraydef,associates,tables}=sdds;
88 Return[arraydef];
89 ]
90)
91
92SDDSGetAssociates[sdds_]:=(
93 Module[{description,coldef,pardef,arraydef,associates,tables},
94 {description,coldef,pardef,arraydef,associates,tables}=sdds;
95 Return[associates];
96 ]
97)
98
99SDDSGetTable[sdds_,n_:1]:=(
100 Module[{description,coldef,pardef,arraydef,associates,tables},
101 {description,coldef,pardef,arraydef,associates,tables}=sdds;
102 Return[tables[[n]]];
103 ]
104)
105
106SDDSGetParameters[sdds_,n_:1]:=(
107 Module[{description,coldef,pardef,arraydef,associates,tables},
108 {description,coldef,pardef,arraydef,associates,tables}=sdds;
109 Return[tables[[n,1]]];
110 ]
111)
112
113SDDSGetParameter[sdds_,p_,n_:1]:=(
114 Module[{parnames,ip},
115 parnames=SDDSGetParameterNames[sdds];
116 If[!MemberQ[parnames,p],
117 Print["There is no parameter named ",p];
118 Return[$Failed]
119 ];
120 ip=1;
121 While[parnames[[ip]] != p,ip++];
122 Return[SDDSGetParameters[sdds,n][[ip]]];
123 ]
124)
125
126SDDSGetData[sdds_,n_:1]:=(
127 Module[{description,coldef,pardef,arraydef,associates,tables},
128 {description,coldef,pardef,arraydef,associates,tables}=sdds;
129 Return[tables[[n,2]]];
130 ]
131)
132
133SDDSGetColumn[sdds_,c_String,ntable_:1]:=(
134 Module[{colnames,ic},
135 colnames=SDDSGetColumnNames[sdds];
136 If[!MemberQ[colnames,c],
137 Print["There is no column named ",c];
138 Return[$Failed]
139 ];
140 ic=1;
141 While[colnames[[ic]] != c,ic++];
142 Return[SDDSGetColumn[sdds,ic,ntable]];
143 ]
144)
145
146SDDSGetColumn[sdds_,ncol_,ntable_:1]:=(
147 Module[{description,coldef,pardef,arraydef,associates,tables},
148 {description,coldef,pardef,arraydef,associates,tables}=sdds;
149 Return[Transpose[tables[[ntable,2]]][[ncol]]];
150 ]
151)
152
153SDDSGetRow[sdds_,nrow_,ntable_:1]:=(
154 Module[{description,coldef,pardef,arraydef,associates,tables},
155 {description,coldef,pardef,arraydef,associates,tables}=sdds;
156 Return[tables[[ntable,2]][[nrow]]];
157 ]
158)
159
160SDDSGetNColumns[sdds_]:=(
161 Module[{description,coldef,pardef,arraydef,associates,tables},
162 {description,coldef,pardef,arraydef,associates,tables}=sdds;
163 Return[Length[coldef]];
164 ]
165)
166
167SDDSGetNParameters[sdds_]:=(
168 Module[{description,coldef,pardef,arraydef,associates,tables},
169 {description,coldef,pardef,arraydef,associates,tables}=sdds;
170 Return[Length[pardef]];
171 ]
172)
173
174SDDSGetNArrays[sdds_]:=(
175 Module[{description,coldef,pardef,arraydef,associates,tables},
176 {description,coldef,pardef,arraydef,associates,tables}=sdds;
177 Return[Length[arraydef]];
178 ]
179)
180
181SDDSGetNAssociates[sdds_]:=(
182 Module[{description,coldef,pardef,arraydef,associates,tables},
183 {description,coldef,pardef,arraydef,associates,tables}=sdds;
184 Return[Length[associates]];
185 ]
186)
187
188SDDSGetNTables[sdds_]:=(
189 Module[{description,coldef,pardef,arraydef,associates,tables},
190 {description,coldef,pardef,arraydef,associates,tables}=sdds;
191 Return[Length[tables]];
192 ]
193)
194
195SDDSGetNRows[sdds_,n_:1]:=(
196 Module[{description,coldef,pardef,arraydef,associates,tables},
197 {description,coldef,pardef,arraydef,associates,tables}=sdds;
198 Return[Length[tables[[n,2]]]];
199 ]
200)
201
202SDDSGetColumnNames[sdds_]:=(
203 Module[{description,coldef,pardef,arraydef,associates,tables,n},
204 {description,coldef,pardef,arraydef,associates,tables}=sdds;
205 n=Length[coldef];
206 If[n > 0,
207 Return[Table[coldef[[i,1]],{i,1,n}]];
208 Return[{}]
209 ];
210 ]
211)
212
213SDDSGetParameterNames[sdds_]:=(
214 Module[{description,coldef,pardef,arraydef,associates,tables,n},
215 {description,coldef,pardef,arraydef,associates,tables}=sdds;
216 n=Length[pardef];
217 If[n > 0,
218 Return[Table[pardef[[i,1]],{i,1,n}]],
219 Return[{}]
220 ];
221 ]
222)
223
224SDDSGetArrayNames[sdds_]:=(
225 Module[{description,coldef,pardef,arraydef,associates,tables,n},
226 {description,coldef,pardef,arraydef,associates,tables}=sdds;
227 n=Length[arraydef];
228 If[n > 0,
229 Return[Table[arraydef[[i,1]],{i,1,n}]],
230 Return[{}]
231 ];
232 ]
233)
234
235SDDSGetAssociateNames[sdds_]:=(
236 Module[{description,coldef,pardef,arraydef,associates,tables,n},
237 {description,coldef,pardef,arraydef,associates,tables}=sdds;
238 n=Length[associates];
239 If[n > 0,
240 Return[Table[associates[[i,2]],{i,1,n}]],
241 Return[{}]
242 ];
243 ]
244)
245
246End[]
247
248EndPackage[]
249
250(* Emacs editing sequences follow: *)
251(* Local Variables: *)
252(* mode: text *)
253(* tab-stop-list: (0 4 8 12 16 20 24 28 32 36 40 44 48 52 56) *)
254(* indent-tabs-mode: nil *)
255(* End: *)