1(* Mathematica Routines
for SDDS *)
3editsdds:=Run[
"emacs sdds.m"]
8 "SDDSRead[filename_String] returns an SDDS structure from a file.";
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.";
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.";
26 "SDDSGetData[sdds_,n_:1] returns the data matrix from the nth table.";
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.";
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.";
37 "SDDSGetNArrays[sdds_] returns the number of arrays.";
38SDDSGetNAssociates::usage=
39 "SDDSGetNAssociates[sdds_] returns the number of associates.";
41 "SDDSGetNTables[sdds_] returns the number of tables.";
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.";
55SDDSRead[filename_String]:=(
58 If[sdds == $Failed,Print["SDDSRead failed on ",filename]];
63SDDSWrite[sdds_,filename_String]:=(
65 strm=OpenWrite[filename];
71SDDSGetColumnDefinitions[sdds_]:=(
72 Module[{description,coldef,pardef,arraydef,associates,tables},
73 {description,coldef,pardef,arraydef,associates,tables}=sdds;
78SDDSGetParameterDefinitions[sdds_]:=(
79 Module[{description,coldef,pardef,arraydef,associates,tables},
80 {description,coldef,pardef,arraydef,associates,tables}=sdds;
85SDDSGetArrayDefinitions[sdds_]:=(
86 Module[{description,coldef,pardef,arraydef,associates,tables},
87 {description,coldef,pardef,arraydef,associates,tables}=sdds;
92SDDSGetAssociates[sdds_]:=(
93 Module[{description,coldef,pardef,arraydef,associates,tables},
94 {description,coldef,pardef,arraydef,associates,tables}=sdds;
99SDDSGetTable[sdds_,n_:1]:=(
100 Module[{description,coldef,pardef,arraydef,associates,tables},
101 {description,coldef,pardef,arraydef,associates,tables}=sdds;
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]]];
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];
121 While[parnames[[ip]] != p,ip++];
122 Return[SDDSGetParameters[sdds,n][[ip]]];
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]]];
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];
141 While[colnames[[ic]] != c,ic++];
142 Return[SDDSGetColumn[sdds,ic,ntable]];
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]]];
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]]];
160SDDSGetNColumns[sdds_]:=(
161 Module[{description,coldef,pardef,arraydef,associates,tables},
162 {description,coldef,pardef,arraydef,associates,tables}=sdds;
163 Return[Length[coldef]];
167SDDSGetNParameters[sdds_]:=(
168 Module[{description,coldef,pardef,arraydef,associates,tables},
169 {description,coldef,pardef,arraydef,associates,tables}=sdds;
170 Return[Length[pardef]];
174SDDSGetNArrays[sdds_]:=(
175 Module[{description,coldef,pardef,arraydef,associates,tables},
176 {description,coldef,pardef,arraydef,associates,tables}=sdds;
177 Return[Length[arraydef]];
181SDDSGetNAssociates[sdds_]:=(
182 Module[{description,coldef,pardef,arraydef,associates,tables},
183 {description,coldef,pardef,arraydef,associates,tables}=sdds;
184 Return[Length[associates]];
188SDDSGetNTables[sdds_]:=(
189 Module[{description,coldef,pardef,arraydef,associates,tables},
190 {description,coldef,pardef,arraydef,associates,tables}=sdds;
191 Return[Length[tables]];
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]]]];
202SDDSGetColumnNames[sdds_]:=(
203 Module[{description,coldef,pardef,arraydef,associates,tables,n},
204 {description,coldef,pardef,arraydef,associates,tables}=sdds;
207 Return[Table[coldef[[i,1]],{i,1,n}]];
213SDDSGetParameterNames[sdds_]:=(
214 Module[{description,coldef,pardef,arraydef,associates,tables,n},
215 {description,coldef,pardef,arraydef,associates,tables}=sdds;
218 Return[Table[pardef[[i,1]],{i,1,n}]],
224SDDSGetArrayNames[sdds_]:=(
225 Module[{description,coldef,pardef,arraydef,associates,tables,n},
226 {description,coldef,pardef,arraydef,associates,tables}=sdds;
229 Return[Table[arraydef[[i,1]],{i,1,n}]],
235SDDSGetAssociateNames[sdds_]:=(
236 Module[{description,coldef,pardef,arraydef,associates,tables,n},
237 {description,coldef,pardef,arraydef,associates,tables}=sdds;
238 n=Length[associates];
240 Return[Table[associates[[i,2]],{i,1,n}]],
250(* Emacs editing sequences follow: *)
251(* Local Variables: *)
253(* tab-stop-list: (0 4 8 12 16 20 24 28 32 36 40 44 48 52 56) *)
254(* indent-tabs-mode: nil *)