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

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

IgorPro? documentation, refs #19

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