source: 1dwg/trunk/doc/cansas1d_binding_IgorPro.xml @ 100

Last change on this file since 100 was 100, checked in by prjemian, 12 years ago

revisions, refs #19

  • Property svn:keywords set to Date Revision Author HeadURL Id
File size: 30.0 KB
1<?xml version="1.0" encoding="UTF-8"?>
2<?oxygen RNGSchema="" type="xml"?>
4    ########### SVN repository information ###################
5    # $Date$
6    # $Author$
7    # $Revision$
8    # $HeadURL$
9    # $Id$
10    ########### SVN repository information ###################
12<!-- from: -->
13<section xml:id="cansas1d_documentation-binding-IgorPro" xmlns=""
14    version="5.0" xmlns:xlink="">
15    <title>IgorPro binding</title>
16    <para>An import tool (binding) for IgorPro has been created (cansasXML.ipf). You can check out
17    the IgorPro working directory from the SVN server (see instructions below). </para>
18    <note><para>Note that this tool is not a true
19        <link xlink:href="">binding</link>
20        in that the structure of the
21        XML file is not replicated in IgorPro data structures.
22        This tool reads the vectors of 1-D SAS data (Q, I, ...)
23        into IgorPro waves (Qsas, Isas, ...). The tool also reads
24        most of the metadata into an IgorPro textWave for use by other
25        support in IgorPro.</para></note>
26    <para>To use the canSASxml.ipf procedure, you must have the XMLutils XOP IGOR plugin installed.
27        See the Usage Notes below. </para>
28    <para>Note that the code described here is <emphasis>not a complete user interface</emphasis>.
29        (See further comments below.) It is expected that this code will be called by a graphical
30        user interface routine and that routine will handle the work of copying the loaded SAS data
31        in IgorPro from the root:Packages:CS_XMLreader data folder to the destination of choice
32        (including any renaming of waves as desired).
33        <table>
34            <title>Current status of IgorPro support</title>
35            <tgroup cols="2">
36                <tbody>
37                    <row>
38                        <entry> file </entry>
39                        <entry>
40                            <link
41                                xlink:href=""
42                                    ><citetitle>cansasXML.ipf</citetitle></link>
43                        </entry>
44                    </row>
45                    <row>
46                        <entry> author </entry>
47                        <entry> Pete R. Jemian &lt;;
48                        </entry>
49                    </row>
50                    <row>
51                        <entry> date </entry>
52                        <entry>2009-09-02</entry>
53                    </row>
54                    <row>
55                        <entry> version </entry>
56                        <entry> 1.11 (<emphasis role="bold">requires</emphasis> latest XMLutils XOP
57                            -- see below) </entry>
58                    </row>
59                    <row>
60                        <entry> purpose </entry>
61                        <entry> implement an IgorPro file reader to read the canSAS 1-D reduced SAS
62                            data in XML files adheres to the cansas1d/1.0 standard:
64                        </entry>
65                    </row>
66                    <row>
67                        <entry> URL </entry>
68                        <entry> TRAC:
70                            SVN:
72                        </entry>
73                    </row>
74                    <row>
75                        <entry> requires </entry>
76                        <entry> IgorPro: XMLutils - XOP:
77                   (IGOR.5.04.x-1.x-dev,
78                            2008-Aug-22) </entry>
79                    </row>
80                </tbody>
81            </tgroup>
82        </table></para>
83    <section>
84        <title>Checkout of support code in Subversion</title>
85        <para> Subversion ( is a program formanaging software
86            versions. There are command line and GUI clientsfor a variety of operating systems. We
87            won't recommend any herebut will show the command lines necessary. </para>
88        <section>
89            <title>XMLutils XOP</title>
90            <para> The XMLutils XOP, written by Andrew Nelson (ANSTO), is hosted on the IgorExchange
91                ( </para>
92            <para> One good location to place the checked out XMLutils directoryis in the
93                Wavemetrics directory, next to the Igor Pro
94                Folder<programlisting>svn:// XMLutils</programlisting></para>
95            <para> In the future, to retrieve an updated version of this support, go intothe
96                XMLutils directory (created above) and type the
97                command<programlisting>svn update</programlisting>This will check the repository and
98                update files as needed.If the installer program was updated, you;ll need to run the
99                newinstaller program. It is not necessary to uninstall first. </para>
100            <para> The installer executables contained in the download will do all the installation
101                for you. They will place the XOP in the folder <emphasis>/User
102                    Procedures/motofit/XMLutils</emphasis>, and create a shortcut/alias to the
103                plugin in /Igor Extensions.Packages from other facilities should place the XOP there
104                as well. </para>
105        </section>
106        <section>
107            <title>cansasXML.ipf</title>
108            <para> Check out the canSAS 1d SAS XML reader from the subversion
109                repository:<programlisting>svn checkout cansas-1dwg</programlisting></para>
110            <para> This will download lots of extra files. The file of interest is in the
111                IgorProdirectory and is called cansasXML.ipf </para>
112            <para> In the future, to retrieve an updated version of this support, go intothe
113                cansas-1dwg directory (created above) and type the
114                command<programlisting>svn update</programlisting>This will check the repository and
115                update files as needed. </para>
116        </section>
117    </section>
118    <section>
119        <title>Installation</title>
120        <orderedlist numeration="arabic">
121            <listitem>
122                <para> License and Install IgorPro (should have already been done by now) </para>
123            </listitem>
124            <listitem>
125                <para> Quit IgorPro if it is running </para>
126            </listitem>
127            <listitem>
128                <para> Download XMLutils XOP. Either checkout from subversion (see above) or, with a
129                    web browser, go to
130                </para>
131            </listitem>
132            <listitem>
133                <para> Install XMLutils XOP by double-clicking the installer for you operating
134                    system. </para>
135            </listitem>
136            <listitem>
137                <para> Download cansasXML.ipf. Either checkout from subversion (see above) or, with
138                    a web browser, copy cansasXML.ipf from on-line subversion repository:
139           </para>
140            </listitem>
141            <listitem>
142                <para> Copy cansasXML.ipf file to ...WavemetricsIgor Pro FolderUser Procedures (or
143                    file system equivalent) </para>
144            </listitem>
145            <listitem>
146                <para> Then, you should be able to restart IgorPro and progress from there </para>
147            </listitem>
148        </orderedlist>
149    </section>
150    <section>
151        <title>Usage Notes</title>
152        <para> To use the canSASxml.ipf procedure, you must have the XMLutils XOP IGOR plugin
153            installed. This may be downloaded from the IgorExchange Project site. There are
154            installer executables contained in the download that will do all the installation for
155            you. Each installer will place the XOP in the folder ...WavemetricsIgor Pro FolderUser
156            ProceduresmotofitXMLutils, and create a shortcut/alias to the plugin in
157            ...WavemetricsIgor Pro FolderIgor Extensions. </para>
158    </section>
159    <section>
160        <title>What it does</title>
161        <para> Given an XML file, <emphasis role="bold">CS_XmlReader(fileName)</emphasis> attempts
162            to open the fileand read its contents as if it conformed to the canSAS XML standard
163            forreduced 1-D SAS data (cansas1d/1.0, also known as SASXML). If the file is found to be
164            non-conforming, then <emphasis role="bold">CS_XmlReader(fileName)</emphasis> returns
165            with anerror code (show below), otherwise it returns <emphasis role="bold">0</emphasis>
166            that indicates <emphasis>no error</emphasis>.All data read by this code is left in the
167            IgorPro data folder <emphasis role="bold"
168                    ><emphasis>root:Packages:CS_XMLreader</emphasis></emphasis> for pickup by the
169            calling routine.(Two examples are provided to show how a routine might retrieve the
170            data.) </para>
171        <para> After opening the XML file (with a file identifier <emphasis>fileID</emphasis>),
172            control is passed to <emphasis role="bold">CS_1i_parseXml(fileID)</emphasis> which then
173            walks through the XMLelements. For each <emphasis role="bold">SASentry</emphasis> in the
174            file, a new data folder is createdwith the name derived from the Title element (or best
175            effort determination).Efforts are taken to avoid duplication of data folder names (using
176            standard IgorPro routines). For <emphasis role="bold">SASentry</emphasis> elements that
177            contain more than one SASdataelement, a <emphasis role="bold">SASdata</emphasis> folder
178            is created for each and the corresponding <emphasis>I(Q)</emphasis> is placed in that
179            subfolder. When only one <emphasis role="bold">SASdata</emphasis> is found, the
180                <emphasis>I(Q)</emphasis>data is placed in the main <emphasis>Title</emphasis>
181            folder. </para>
182        <section>
183            <title>data columns</title>
184            <para> Each column of data in the <emphasis role="bold">SASdata/Idata/*</emphasis> table
185                is placed into a singleIgorPro wave. At present, the code does not check for
186                non-standard data columns.(The capability is built into the code but is deactivated
187                at present). </para>
188        </section>
189        <section>
190            <title>metadata</title>
191            <para> Additional metadata is collected into a single text wave
192                    (<emphasis>metadata</emphasis>) where the first columnis an identifier (or
193                    <emphasis>key</emphasis>) and the second identifier is the
194                    <emphasis>value</emphasis>. Onlythose keys with non-empty values are retained in
195                the metadata table.<emphasis role="bold">CAUTION:</emphasis> The
196                    <emphasis>values</emphasis> are not checked for characters that may cause
197                trouble whenplaced in a wave note. This will be the responsibility of the calling
198                routineto <emphasis>clean these up</emphasis> if the need arises. </para>
199            <para> The code checks for most metadata elements and will check for repeated
200                elementswhere the standard permits. </para>
201            <para> Here is an example of the metadata for the ''cs_collagen_full.xml'' case study: <table>
202                    <title>metadata for the ''cs_collagen_full.xml'' case study</title>
203                    <tgroup cols="3">
204                        <tbody>
205                            <row>
206                                <entry><emphasis>i</emphasis> (<emphasis>row</emphasis>)</entry>
207                                <entry>metadata[<emphasis>i</emphasis>][0]
208                                    (<emphasis>key</emphasis>)</entry>
209                                <entry>metadata[<emphasis>i</emphasis>][1]
210                                        (<emphasis>value</emphasis>)</entry>
211                            </row>
212                            <row>
213                                <entry> 0</entry>
214                                <entry> xmlFile</entry>
215                                <entry> cs_collagen_full.xml</entry>
216                            </row>
217                            <row>
218                                <entry> 1</entry>
219                                <entry> namespace</entry>
220                                <entry> cansas1d/1.0</entry>
221                            </row>
222                            <row>
223                                <entry> 2</entry>
224                                <entry> Title</entry>
225                                <entry> dry chick collagen, d = 673 A, 6531 eV, X6B</entry>
226                            </row>
227                            <row>
228                                <entry> 3</entry>
229                                <entry> Run</entry>
230                                <entry> Sep 19 1994 01:41:02 am</entry>
231                            </row>
232                            <row>
233                                <entry> 4</entry>
234                                <entry> SASsample/ID</entry>
235                                <entry> dry chick collagen, d = 673 A, 6531 eV, X6B</entry>
236                            </row>
237                            <row>
238                                <entry> 5</entry>
239                                <entry> SASinstrument/name</entry>
240                                <entry> X6B, NSLS, BNL</entry>
241                            </row>
242                            <row>
243                                <entry> 6</entry>
244                                <entry> SASinstrument/SASsource/radiation</entry>
245                                <entry> X-ray synchrotron</entry>
246                            </row>
247                            <row>
248                                <entry> 7</entry>
249                                <entry> SASinstrument/SASsource/wavelength</entry>
250                                <entry> 1.898</entry>
251                            </row>
252                            <row>
253                                <entry> 8</entry>
254                                <entry> SASinstrument/SASsource/wavelength/@unit</entry>
255                                <entry> A</entry>
256                            </row>
257                            <row>
258                                <entry> 9</entry>
259                                <entry> SASinstrument/SASdetector/@name</entry>
260                                <entry> X6B PSD</entry>
261                            </row>
262                            <row>
263                                <entry> 10</entry>
264                                <entry> SASnote</entry>
265                                <entry>
266<programlisting>Sep 19 1994     01:41:02 am     Elt: 00090 Seconds
267ID: No spectrum identifier defined
268Memory Size: 8192 Chls  Conversion Gain: 1024  Adc Offset: 0000 Chls
270dry chick collagen, d = 673 A
2716531 eV, X6B</programlisting>
272                                </entry>
273                            </row>
274                        </tbody>
275                    </tgroup>
276            </table>
277            </para>
278        </section>
279        <section>
280            <title>XML foreign namespace elements</title>
281            <para> These are ignored at this time. </para>
282        </section>
283        <section>
284            <title>XML namespace and header</title>
285            <para> The routine does a <emphasis>best-efforts</emphasis> check to ensure that the
286                givenXML file conforms to the [[cansas1d_documentation#Required_XML_file_header
287                |required XML file header]]. If you take a minimalist view
288                    (<emphasis>a.k.a.</emphasis> a shortcut),it is likely that your file may be
289                refused by this and other readers. Pay particular attention to UPPER/lower case in
290                the text <emphasis role="bold">cansas1d/1.0</emphasis> as this is a <emphasis
291                    role="bold">key component</emphasis> used toindex through the XML file. </para>
292        </section>
293        <section>
294            <title>XML stylesheet processing-instruction is not generated</title>
295            <para> The <link xlink:href=""
296                        ><citetitle>'''XMLutils'''</citetitle></link> package does not provide a
297                method to insert the prescribed XML stylesheet processing-instruction into the XML
298                data
299                file.<programlisting>?xml-stylesheet type=text/xsl href=example.xsl ?</programlisting>If
300                this processing-instruction is desired, it must be added to each XML data file by
301                other methods such as use of a text editor or application of an XSLT transformation.
302            </para>
303        </section>
304    </section>
305    <section>
306        <title>List of Functions</title>
307        <para> These are (most of) the FUNCTIONS in the cansasXML.ipf code.The only functions of
308            interest are <emphasis role="bold">CS_XmlReader(fileName)</emphasis>which reads the
309            named XML file and and loads SAS data and the two demonstrationfunctions <emphasis
310                role="bold">prj_grabMyXmlData()</emphasis> and <emphasis role="bold"
311                >prjTest_cansas1d()</emphasis>that together show a usage example. </para>
312        <itemizedlist mark="opencircle">
313            <listitem>
314                <para>
315                    <emphasis role="bold">CS_XmlReader(fileName)</emphasis> : open a canSAS 1-D
316                    reduced SAS XML data file </para>
317            </listitem>
318        </itemizedlist>
319        <itemizedlist mark="opencircle">
320            <listitem>
321                <para> input: <emphasis>fileName</emphasis> (string) name of canSAS XML file (can
322                    include file system path name to file) </para>
323            </listitem>
324            <listitem>
325                <para> returns: </para>
326                <itemizedlist mark="opencircle">
327                    <listitem>
328                        <para> 0 successful </para>
329                    </listitem>
330                    <listitem>
331                        <para> -1: XML file not found </para>
332                    </listitem>
333                    <listitem>
334                        <para> -2: root element is not SASroot with valid canSAS namespace </para>
335                    </listitem>
336                    <listitem>
337                        <para> -3: SASroot version is not 1.0 </para>
338                    </listitem>
339                    <listitem>
340                        <para> -4: no SASentry elements (NOT USED NOW) </para>
341                    </listitem>
342                    <listitem>
343                        <para> -5: XOPutils needs upgrade </para>
344                    </listitem>
345                </itemizedlist>
346            </listitem>
347        </itemizedlist>
348        <itemizedlist mark="opencircle">
349            <listitem>
350                <para> CS_1i_parseXml(fileID) : <emphasis role="bold">This is what guides the
351                        work</emphasis>, given a file ID returned from <emphasis role="bold"
352                        >XMLOpenFile()</emphasis>, parses that file for SAS data and metadata (1i in
353                    the function name signifies this is a function that supports INPUT from version
354                    1.0 XML files) </para>
355            </listitem>
356            <listitem>
357                <para> CS_1i_getOneSASdata(fileID, Title, SASdataPath) : harvest the data and
358                    metadata in the specific SASdata element </para>
359            </listitem>
360            <listitem>
361                <para> CS_1i_getOneVector(file,prefix,XML_name,Igor_name) : harvest just one column
362                    (vector) of data </para>
363            </listitem>
364            <listitem>
365                <para> CS_1i_GetReducedSASdata(fileID, SASdataPath) : grab the data and put it in
366                    the working data folder </para>
367            </listitem>
368            <listitem>
369                <para> CS_1i_locateTitle(fileID, SASentryPath) : determine the title for this
370                    experiment </para>
371            </listitem>
372            <listitem>
373                <para> CS_appendMetaData(fileID, key, xpath, value) : queries XML file for <emphasis
374                        role="bold">xpath</emphasis>. If <emphasis role="bold">value</emphasis> is
375                    not empty, appends it to <emphasis role="bold">metadata</emphasis> where
376                        <emphasis>last</emphasis> is the new last row: metadata[last][0]=key;
377                    metadata[last][1]=value </para>
378            </listitem>
379            <listitem>
380                <para> CS_buildXpathStr(prefix, value) : this function can be used only with very
381                    simple XPath constructions </para>
382            </listitem>
383            <listitem>
384                <para> CS_cleanFolderName(proposal) : given a proposal string, returns a candidate
385                    folder name for immediate use </para>
386            </listitem>
387            <listitem>
388                <para> CS_findElementIndex(matchStr) : looks for element index in structure
389                        <emphasis>W_ElementList</emphasis> returned from call to <emphasis
390                        role="bold">XmlElemList(fileID)</emphasis>
391                </para>
392            </listitem>
393            <listitem>
394                <para> CS_getDefaultNamespace(fileID) : returns the string containing the default
395                    namespace for the XML file </para>
396            </listitem>
397            <listitem>
398                <para> CS_registerNameSpaces() : Builds a table of all namespaces used in the XML
399                    file and appends <emphasis role="bold">W_ElementList</emphasis> with full
400                    namespace-xpath string for each element. </para>
401            </listitem>
402            <listitem>
403                <para> CS_simpleXmlListXpath(fileID, prefix, value) : Calls <emphasis role="bold"
404                        >XMLlistXpath()</emphasis> with proper namespace prefix attached. </para>
405            </listitem>
406            <listitem>
407                <para> CS_simpleXmlWaveFmXpath(fileID, prefix, value) : Calls <emphasis role="bold"
408                        >XMLwaveFmXpath()</emphasis> with proper namespace prefix attached. </para>
409            </listitem>
410            <listitem>
411                <para> CS_updateWaveNote(wavName, key, value) : adds (or replaces) definition of
412                        <emphasis>key</emphasis>=<emphasis>value</emphasis> in the wave note of
413                        <emphasis>wavName</emphasis>
414                </para>
415            </listitem>
416            <listitem>
417                <para> CS_XmlStrFmXpath(fileID, prefix, value) : Calls <emphasis role="bold"
418                        >XmlStrFmXpath()</emphasis> with proper namespace prefix attached. Trims the
419                    result string. </para>
420            </listitem>
421            <listitem>
422                <para> CS_XPath_NS(simpleStr) : this function adds namespace info as necessary to
423                    simpleStr (an XPath) </para>
424            </listitem>
425            <listitem>
426                <para> TrimWS(str) : Calls <emphasis role="bold">TrimWSL(TrimWSR(str))</emphasis>
427                </para>
428            </listitem>
429            <listitem>
430                <para> TrimWSL(str) : Trims white space from left (leading) end of <emphasis
431                        role="bold">str</emphasis>
432                </para>
433            </listitem>
434            <listitem>
435                <para> TrimWSR(str) : Trims white space from right (trailing) end of <emphasis
436                        role="bold">str</emphasis>
437                </para>
438            </listitem>
439            <listitem>
440                <para> prjTest_cansas1d() : Demonstration function that calls <emphasis role="bold"
441                        >CS_XmlReader(fileName)</emphasis> for many of the test data sets. </para>
442            </listitem>
443            <listitem>
444                <para> prj_grabMyXmlData() : Demonstration function that moves loaded data from
445                    root:Packages:CS_XMLreader to a user's data folder. (In this
446                        <emphasis>example</emphasis>, that folder is root:PRJ_canSAS.) </para>
447            </listitem>
448            <listitem>
449                <para> testCollette() : Demonstration function that reads an ISIS/LOQ file and
450                    copies the data to the root folder a la COLLETE </para>
451            </listitem>
452        </itemizedlist>
453    </section>
454    <section>
455        <title>Example test case</title>
456        <para> Here is an example running the test routine <emphasis role="bold"
457                >prjTest_cansas1d()</emphasis>.
458            <programlisting>
460XMLopenfile: File(path) to open doesn't exist, or file can't be opened
461elmo.xml either not found or cannot be opened for reading
462    Completed in 0.00669666 seconds
463XMLopenfile: XML file was not parseable
464cansasXML.ipf: failed to parse XML
465    Completed in 0.0133704 seconds
466root element is not SASroot with valid canSAS namespace
467    Completed in 0.0134224 seconds
468bimodal-test1.xml                identified as: cansas1d/1.0 XML file
469    Title: SAS bimodal test1
470    Completed in 0.068654 seconds
471root element is not SASroot with valid canSAS namespace
472    Completed in 0.0172572 seconds
473root element is not SASroot with valid canSAS namespace
474    Completed in 0.0123102 seconds
475root element is not SASroot with valid canSAS namespace
476    Completed in 0.00930118 seconds
477ISIS_SANS_Example.xml            identified as: cansas1d/1.0 XML file
478    Title: standard can 12mm SANS
479    Completed in 0.0410387 seconds
480W1W2.xml                 identified as: cansas1d/1.0 XML file
481    Title: standard can 12mm SANS
482    Title: TK49 standard 12mm SANS
483    Completed in 0.0669074 seconds
484ill_sasxml_example.xml           identified as: cansas1d/1.0 XML file
485    Title: ILL-D22 example: 7D1 2mm
486    Completed in 0.0332752 seconds
487isis_sasxml_example.xml                  identified as: cansas1d/1.0 XML file
488    Title: LOQ TK49 Standard 12mm C9
489    Completed in 0.0388868 seconds
490r586.xml                 identified as: cansas1d/1.0 XML file
491    Title: ILL-D11 example1: 2A 5mM 0%D2O
492    Completed in 0.0213737 seconds
493r597.xml                 identified as: cansas1d/1.0 XML file
494    Title: ILL-D11 example2: 2A 5mM 0%D2O
495    Completed in 0.0221894 seconds
496xg009036_001.xml                 identified as: cansas1d/1.0 XML file
497    Title: det corrn 5m
498    Completed in 0.0286721 seconds
499cs_collagen.xml                  identified as: cansas1d/1.0 XML file
500    Title: dry chick collagen, d = 673 A, 6531 eV, X6B
501    Completed in 0.0296247 seconds
502cs_collagen_full.xml             identified as: cansas1d/1.0 XML file
503    Title: dry chick collagen, d = 673 A, 6531 eV, X6B
504    Completed in 0.0751836 seconds
505cs_af1410.xml            identified as: cansas1d/1.0 XML file
506    Title: AF1410-10 (AF1410 steel aged 10 h)
507    Title: AF1410-8h (AF1410 steel aged 8 h)
508    Title: AF1410-qu (AF1410 steel aged 0.25 h)
509    Title: AF1410-cc (AF1410 steel aged 100 h)
510    Title: AF1410-2h (AF1410 steel aged 2 h)
511    Title: AF1410-50 (AF1410 steel aged 50 h)
512    Title: AF1410-20 (AF1410 steel aged 20 h)
513    Title: AF1410-5h (AF1410 steel aged 5 h)
514    Title: AF1410-1h (AF1410 steel aged 1 h)
515    Title: AF1410-hf (AF1410 steel aged 0.5 h)
516    Completed in 0.338425 seconds
517XMLopenfile: File(path) to open doesn't exist, or file can't be opened
518cansas1d-template.xml either not found or cannot be opened for reading
519    Completed in 0.00892823 seconds
5201998spheres.xml                  identified as: cansas1d/1.0 XML file
521    Title: 255 nm PS spheres
522    Title: 460 nm PS spheres
523    Completed in 2.87649 seconds
524XMLopenfile: File(path) to open doesn't exist, or file can't be opened
525does-not-exist-file.xml either not found or cannot be opened for reading
526    Completed in 0.00404549 seconds
527cs_rr_polymers.xml               identified as: cansas1d/1.0 XML file
528    Title: Round Robin Polymer A
529    Title: Round Robin Polymer B
530    Title: Round Robin Polymer C
531    Title: Round Robin Polymer D
532    Completed in 0.0943477 seconds
533s81-polyurea.xml                 identified as: cansas1d/1.0 XML file
534    Title: S7 Neat Polyurea
535    Completed in 0.0361616 seconds
536            </programlisting></para>
537    </section>
538    <section>
539        <title>Graphical User Interface</title>
540        <para> At least two groups are working on graphical user interfaces that use the canSAS 1-D
541            SAS XML format binding to IgorPro. The GUIs are intended to be used with their suites of
542            SAS analysis tools (and hide the detailsof using this support code from the user). </para>
543        <para> NOTE: There is no support yet for writing the data back into the canSAS format.
544            Several details need to be described, and theseare being collected on the discussion
545            page for the XML format </para>
546        <section>
547            <title>Irena tool suite</title>
548            <para> Jan Ilavsky's <emphasis role="bold">Irena</emphasis> tool suite
549                ( for IgorPro has a GUI to
550                load the data found in the XML file. Refer to the WWW site for more details. </para>
551        </section>
552    </section>
Note: See TracBrowser for help on using the repository browser.