Changeset 40
- Timestamp:
- May 19, 2008 2:34:17 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
1dwg/trunk/IgorPro/cansasXML.ipf
r39 r40 1 1 #pragma rtGlobals=1 // Use modern global access method. 2 #pragma version=1.0 62 #pragma version=1.07 3 3 4 4 // file: cansasXML.ipf 5 5 // author: Pete R. Jemian <jemian@anl.gov> 6 // date: 2008-05-1 86 // date: 2008-05-19 7 7 // purpose: implement an IgorPro file reader to read the canSAS 1-D reduced SAS data in XML files 8 8 // adheres to the cansas1d/1.0 standard … … 31 31 // -3: <SASroot> version is not 1.0 32 32 // -4: no <SASentry> elements 33 // -5: XOPutils needs upgrade 33 34 // 34 35 STRING fileName … … 68 69 ENDIF 69 70 71 // 72 // test to see if XOPutils has the needed upgrade 73 // 74 XMLlistXpath(fileID, "/*", "") 75 IF ( EXISTS( "M_listXPath" ) == 0 ) 76 XmlCloseFile(fileID,0) 77 errorMsg = "XOPutils needs an upgrade: http://www.igorexchange.com/project/XMLutils" 78 PRINT errorMsg 79 SetDataFolder $origFolder 80 RETURN(-5) // XOPutils needs an upgrade 81 ENDIF 82 WAVE/T M_listXPath 83 70 84 // check for canSAS namespace string, returns "" if not valid or not found 71 85 STRING/G ns = CS_getDefaultNamespace(fileID) 72 86 IF (strlen(ns) == 0 ) 87 XmlCloseFile(fileID,0) 73 88 errorMsg = "root element is not <SASroot> with valid canSAS namespace" 74 89 PRINT errorMsg … … 121 136 // but that call can be expensive (time) when there are lots of elements. 122 137 VARIABLE fileID 123 STRING ns = "", thisNS 124 STRING p = "cs" 138 STRING ns = "", thisLocation 125 139 VARIABLE i, item 126 140 MAKE/T/N=(1)/O nsList // list of all possible namespaces … … 128 142 129 143 FOR (item = 0; item < DimSize(nsList, 0); item += 1) // loop over all possible namespaces 130 XMLlistAttr(fileID, "/cs:SASroot", p+"="+nsList[item])144 XMLlistAttr(fileID, "/cs:SASroot", "cs="+nsList[item]) 131 145 WAVE/T M_listAttr 132 146 FOR (i = 0; i < DimSize(M_listAttr,0); i+=1) // loop over all available attributes 133 147 // Expect the required canSAS XML header (will fail if "schemalocation" is not found) 134 148 IF ( CmpStr( LowerStr(M_listAttr[i][1]), LowerStr("schemaLocation") ) == 0 ) 135 thisNS = StringFromList( 0, M_listAttr[i][2], " " ) // get the first string 136 IF ( strlen(thisNS) == strlen(M_listAttr[i][2]) ) // just in case tab-delimited 137 thisNS = StringFromList( 0, M_listAttr[i][2], "\t" ) // get the first string 138 ENDIF 139 IF ( CmpStr( TrimWS(thisNS), nsList[item] ) == 0 ) 149 thisLocation = TrimWS(M_listAttr[i][2]) 150 IF ( StringMatch(thisLocation, nsList[item] + "*") ) 140 151 ns = nsList[item] 141 152 BREAK // found it! … … 234 245 SVAR ns = root:Packages:CS_XMLreader:ns 235 246 CS_appendMetaData(fileID, "namespace", "", ns) 236 CS_appendMetaData(fileID, " title", "", Title)247 CS_appendMetaData(fileID, "Title", "", Title) 237 248 238 249 XmlListXpath(fileID, SASdataPath + "/..//cs:Run", nsStr) … … 260 271 SVAR nsStr = root:Packages:CS_XMLreader:nsStr 261 272 262 XmlWaveFmXpath(file,prefix+XML_name,nsStr,"") //this loads ALL the vector's nodes at the same time273 XmlWaveFmXpath(file,prefix+XML_name,nsStr,"") //this loads ALL the vector's nodes at the same time 263 274 WAVE/T M_xmlcontent 264 275 WAVE/T W_xmlContentNodes 265 IF (DimSize(M_xmlcontent, 0)) //this is a test to see if the nodes exist. this isn't strictly necessary if you know they're there276 IF (DimSize(M_xmlcontent, 0)) // test to see if the nodes exist. not strictly necessary if you know the nodes are there 266 277 IF (DimSize(M_xmlcontent,1)>DimSize(M_xmlcontent,0)) //if you're not in vector mode 267 278 MatrixTranspose M_xmlcontent … … 300 311 // find the names of all the data columns and load them as vectors 301 312 // this gets tricky if we want to avoid namespace references 302 // XmlListXpath(fileID, "//"+nsPre+":SASentry["+num2istr(i)+"]//"+nsPre+":Idata[1]/*", nsStr)303 313 XmlListXpath(fileID, SASdataPath+"//cs:Idata[1]/*", nsStr) 304 314 WAVE/T M_listXPath … … 306 316 STRING igorWave 307 317 VARIABLE j 308 FOR (j = 0; j < DimSize(M_listXPath, 0); j += 1) 318 FOR (j = 0; j < DimSize(M_listXPath, 0); j += 1) // loop over all columns in SASdata/Idata[1] 309 319 xmlElement = M_listXPath[j][1] 310 320 STRSWITCH(xmlElement) … … 336 346 VARIABLE i, j 337 347 WAVE/T metadata 338 STRING suffix = "" 348 STRING suffix = "", preMeta = "", preXpath = "" 339 349 STRING value, detailsPath, detectorPath, notePath 340 350 … … 346 356 347 357 // handle most <SASsample> fields 348 CS_appendMetaData(fileID, "sample/ID", sasEntryPath + "/cs:SASsample/cs:ID", "") 349 CS_appendMetaData(fileID, "sample/thickness", sasEntryPath + "/cs:SASsample/cs:thickness", "") 350 CS_appendMetaData(fileID, "sample/thickness/@unit", sasEntryPath + "/cs:SASsample/cs:thickness/@unit", "") 351 CS_appendMetaData(fileID, "sample/transmission", sasEntryPath + "/cs:SASsample/cs:transmission", "") 352 CS_appendMetaData(fileID, "sample/temperature", sasEntryPath + "/cs:SASsample/cs:temperature", "") 353 CS_appendMetaData(fileID, "sample/temperature/@unit", sasEntryPath + "/cs:SASsample/cs:temperature/@unit", "") 354 CS_appendMetaData(fileID, "sample/position/x", sasEntryPath + "/cs:SASsample/cs:position/cs:x", "") 355 CS_appendMetaData(fileID, "sample/position/x/@unit", sasEntryPath + "/cs:SASsample/cs:position/cs:x/@unit", "") 356 CS_appendMetaData(fileID, "sample/position/y", sasEntryPath + "/cs:SASsample/cs:position/cs:y", "") 357 CS_appendMetaData(fileID, "sample/position/y/@unit", sasEntryPath + "/cs:SASsample/cs:position/cs:y/@unit", "") 358 CS_appendMetaData(fileID, "sample/position/z", sasEntryPath + "/cs:SASsample/cs:position/cs:z", "") 359 CS_appendMetaData(fileID, "sample/position/z/@unit", sasEntryPath + "/cs:SASsample/cs:position/cs:z/@unit", "") 360 CS_appendMetaData(fileID, "sample/orientation/roll", sasEntryPath + "/cs:SASsample/cs:orientation/cs:roll", "") 361 CS_appendMetaData(fileID, "sample/orientation/roll/@unit", sasEntryPath + "/cs:SASsample/cs:orientation/cs:roll/@unit", "") 362 CS_appendMetaData(fileID, "sample/orientation/pitch", sasEntryPath + "/cs:SASsample/cs:orientation/cs:pitch", "") 363 CS_appendMetaData(fileID, "sample/orientation/pitch/@unit", sasEntryPath + "/cs:SASsample/cs:orientation/cs:pitch/@unit", "") 364 CS_appendMetaData(fileID, "sample/orientation/yaw", sasEntryPath + "/cs:SASsample/cs:orientation/cs:yaw", "") 365 CS_appendMetaData(fileID, "sample/orientation/yaw/@unit", sasEntryPath + "/cs:SASsample/cs:orientation/cs:yaw/@unit", "") 358 CS_appendMetaData(fileID, "SASsample/@name", sasEntryPath + "/cs:SASsample/@name", "") 359 CS_appendMetaData(fileID, "SASsample/ID", sasEntryPath + "/cs:SASsample/cs:ID", "") 360 CS_appendMetaData(fileID, "SASsample/thickness", sasEntryPath + "/cs:SASsample/cs:thickness", "") 361 CS_appendMetaData(fileID, "SASsample/thickness/@unit", sasEntryPath + "/cs:SASsample/cs:thickness/@unit", "") 362 CS_appendMetaData(fileID, "SASsample/transmission", sasEntryPath + "/cs:SASsample/cs:transmission", "") 363 CS_appendMetaData(fileID, "SASsample/temperature", sasEntryPath + "/cs:SASsample/cs:temperature", "") 364 CS_appendMetaData(fileID, "SASsample/temperature/@unit", sasEntryPath + "/cs:SASsample/cs:temperature/@unit", "") 365 CS_appendMetaData(fileID, "SASsample/position/x", sasEntryPath + "/cs:SASsample/cs:position/cs:x", "") 366 CS_appendMetaData(fileID, "SASsample/position/x/@unit", sasEntryPath + "/cs:SASsample/cs:position/cs:x/@unit", "") 367 CS_appendMetaData(fileID, "SASsample/position/y", sasEntryPath + "/cs:SASsample/cs:position/cs:y", "") 368 CS_appendMetaData(fileID, "SASsample/position/y/@unit", sasEntryPath + "/cs:SASsample/cs:position/cs:y/@unit", "") 369 CS_appendMetaData(fileID, "SASsample/position/z", sasEntryPath + "/cs:SASsample/cs:position/cs:z", "") 370 CS_appendMetaData(fileID, "SASsample/position/z/@unit", sasEntryPath + "/cs:SASsample/cs:position/cs:z/@unit", "") 371 CS_appendMetaData(fileID, "SASsample/orientation/roll", sasEntryPath + "/cs:SASsample/cs:orientation/cs:roll", "") 372 CS_appendMetaData(fileID, "SASsample/orientation/roll/@unit", sasEntryPath + "/cs:SASsample/cs:orientation/cs:roll/@unit", "") 373 CS_appendMetaData(fileID, "SASsample/orientation/pitch", sasEntryPath + "/cs:SASsample/cs:orientation/cs:pitch", "") 374 CS_appendMetaData(fileID, "SASsample/orientation/pitch/@unit", sasEntryPath + "/cs:SASsample/cs:orientation/cs:pitch/@unit", "") 375 CS_appendMetaData(fileID, "SASsample/orientation/yaw", sasEntryPath + "/cs:SASsample/cs:orientation/cs:yaw", "") 376 CS_appendMetaData(fileID, "SASsample/orientation/yaw/@unit", sasEntryPath + "/cs:SASsample/cs:orientation/cs:yaw/@unit", "") 366 377 // <SASsample><details> might appear multiple times, too! 367 378 XmlListXpath(fileID, sasEntryPath+"/cs:SASsample//cs:details", nsStr) //output: M_listXPath … … 374 385 ENDIF 375 386 detailsPath = detailsList[i][0] 376 CS_appendMetaData(fileID, " sample/details"+suffix+"/@name", detailsPath + "/@name", "")377 CS_appendMetaData(fileID, " sample/details"+suffix, detailsPath, "")387 CS_appendMetaData(fileID, "SASsample/details"+suffix+"/@name", detailsPath + "/@name", "") 388 CS_appendMetaData(fileID, "SASsample/details"+suffix, detailsPath, "") 378 389 ENDFOR 379 390 380 391 381 392 // <SASinstrument> 382 CS_appendMetaData(fileID, " Instrument/name", sasEntryPath + "/cs:SASinstrument/cs:name", "")383 CS_appendMetaData(fileID, " Instrument/@name", sasEntryPath + "/cs:SASinstrument/@name", "")393 CS_appendMetaData(fileID, "SASinstrument/name", sasEntryPath + "/cs:SASinstrument/cs:name", "") 394 CS_appendMetaData(fileID, "SASinstrument/@name", sasEntryPath + "/cs:SASinstrument/@name", "") 384 395 385 396 // <SASinstrument><SASsource> 386 CS_appendMetaData(fileID, "source/@name", sasEntryPath + "/cs:SASinstrument/cs:SASsource/@name", "") 387 CS_appendMetaData(fileID, "radiation", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:radiation", "") 388 CS_appendMetaData(fileID, "beam/size/@name", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:beam_size/@name", "") 389 CS_appendMetaData(fileID, "beam/size/x", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:beam_size/cs:x", "") 390 CS_appendMetaData(fileID, "beam/size/x@unit", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:beam_size/cs:x/@unit", "") 391 CS_appendMetaData(fileID, "beam/size/y", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:beam_size/cs:y", "") 392 CS_appendMetaData(fileID, "beam/size/y@unit", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:beam_size/cs:y/@unit", "") 393 CS_appendMetaData(fileID, "beam/size/z", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:beam_size/cs:z", "") 394 CS_appendMetaData(fileID, "beam/size/z@unit", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:beam_size/cs:z/@unit", "") 395 CS_appendMetaData(fileID, "beam/shape", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:beam_shape", "") 396 CS_appendMetaData(fileID, "wavelength", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:wavelength", "") 397 CS_appendMetaData(fileID, "wavelength/@unit", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:wavelength/@unit", "") 398 CS_appendMetaData(fileID, "wavelength_min", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:wavelength_min", "") 399 CS_appendMetaData(fileID, "wavelength_min/@unit", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:wavelength_min/@unit", "") 400 CS_appendMetaData(fileID, "wavelength_max", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:wavelength_max", "") 401 CS_appendMetaData(fileID, "wavelength_max/@unit", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:wavelength_max/@unit", "") 402 CS_appendMetaData(fileID, "wavelength_spread", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:wavelength_spread", "") 403 CS_appendMetaData(fileID, "wavelength_spread/@unit", sasEntryPath + "/cs:SASinstrument/cs:SASsource/cs:wavelength_spread/@unit", "") 397 preMeta = "SASinstrument/SASsource" 398 preXpath = sasEntryPath + "/cs:SASinstrument/cs:SASsource" 399 CS_appendMetaData(fileID, preMeta + "/@name", preXpath + "/@name", "") 400 CS_appendMetaData(fileID, preMeta + "/radiation", preXpath + "/cs:radiation", "") 401 CS_appendMetaData(fileID, preMeta + "/beam/size/@name", preXpath + "/cs:beam_size/@name", "") 402 CS_appendMetaData(fileID, preMeta + "/beam/size/x", preXpath + "/cs:beam_size/cs:x", "") 403 CS_appendMetaData(fileID, preMeta + "/beam/size/x@unit", preXpath + "/cs:beam_size/cs:x/@unit", "") 404 CS_appendMetaData(fileID, preMeta + "/beam/size/y", preXpath + "/cs:beam_size/cs:y", "") 405 CS_appendMetaData(fileID, preMeta + "/beam/size/y@unit", preXpath + "/cs:beam_size/cs:y/@unit", "") 406 CS_appendMetaData(fileID, preMeta + "/beam/size/z", preXpath + "/cs:beam_size/cs:z", "") 407 CS_appendMetaData(fileID, preMeta + "/beam/size/z@unit", preXpath + "/cs:beam_size/cs:z/@unit", "") 408 CS_appendMetaData(fileID, preMeta + "/beam/shape", preXpath + "/cs:beam_shape", "") 409 CS_appendMetaData(fileID, preMeta + "/wavelength", preXpath + "/cs:wavelength", "") 410 CS_appendMetaData(fileID, preMeta + "/wavelength/@unit", preXpath + "/cs:wavelength/@unit", "") 411 CS_appendMetaData(fileID, preMeta + "/wavelength_min", preXpath + "/cs:wavelength_min", "") 412 CS_appendMetaData(fileID, preMeta + "/wavelength_min/@unit", preXpath + "/cs:wavelength_min/@unit", "") 413 CS_appendMetaData(fileID, preMeta + "/wavelength_max", preXpath + "/cs:wavelength_max", "") 414 CS_appendMetaData(fileID, preMeta + "/wavelength_max/@unit", preXpath + "/cs:wavelength_max/@unit", "") 415 CS_appendMetaData(fileID, preMeta + "/wavelength_spread", preXpath + "/cs:wavelength_spread", "") 416 CS_appendMetaData(fileID, preMeta + "/wavelength_spread/@unit", preXpath + "/cs:wavelength_spread/@unit", "") 404 417 405 418 // <SASinstrument><SAScollimation> might appear multiple times … … 408 421 DUPLICATE/O/T M_listXPath, SAScollimationList 409 422 STRING collimationPath 410 suffix = ""411 423 FOR (i = 0; i < DimSize(SAScollimationList, 0); i += 1) 424 preMeta = "SASinstrument/SAScollimation" 412 425 IF (DimSize(SAScollimationList, 0) > 1) 413 suffix= "_" + num2str(i)426 preMeta += "_" + num2str(i) 414 427 ENDIF 415 428 collimationPath = SAScollimationList[i][0] 416 CS_appendMetaData(fileID, "collimation/@name"+suffix, collimationPath + "/@name", "") 417 CS_appendMetaData(fileID, "collimation/length"+suffix, collimationPath + "/cs:length", "") 418 CS_appendMetaData(fileID, "collimation/length_unit"+suffix, collimationPath + "/cs:length/@unit", "") 419 CS_appendMetaData(fileID, "collimation/aperture/@name"+suffix, collimationPath + "/cs:aperture/@name", "") 420 CS_appendMetaData(fileID, "collimation/aperture/type"+suffix, collimationPath + "/cs:aperture/cs:type", "") 421 CS_appendMetaData(fileID, "collimation/aperture/size/@name"+suffix, collimationPath + "/cs:aperture/cs:size/@name", "") 422 CS_appendMetaData(fileID, "collimation/aperture/size/x"+suffix, collimationPath + "/cs:aperture/cs:size/cs:x", "") 423 CS_appendMetaData(fileID, "collimation/aperture/size/x/@unit"+suffix, collimationPath + "/cs:aperture/cs:size/cs:x/@unit", "") 424 CS_appendMetaData(fileID, "collimation/aperture/size/y"+suffix, collimationPath + "/cs:aperture/cs:size/cs:y", "") 425 CS_appendMetaData(fileID, "collimation/aperture/size/y/@unit"+suffix, collimationPath + "/cs:aperture/cs:size/cs:y/@unit", "") 426 CS_appendMetaData(fileID, "collimation/aperture/size/z"+suffix, collimationPath + "/cs:aperture/cs:size/cs:z", "") 427 CS_appendMetaData(fileID, "collimation/aperture/size/z/@unit"+suffix, collimationPath + "/cs:aperture/cs:size/cs:z/@unit", "") 428 CS_appendMetaData(fileID, "collimation/aperture/distance"+suffix, collimationPath + "/cs:aperture/cs:distance", "") 429 CS_appendMetaData(fileID, "collimation/aperture/distance/@unit"+suffix, collimationPath + "/cs:aperture/cs:distance/@unit", "") 429 CS_appendMetaData(fileID, preMeta + "/@name", collimationPath + "/@name", "") 430 CS_appendMetaData(fileID, preMeta + "/length", collimationPath + "/cs:length", "") 431 CS_appendMetaData(fileID, preMeta + "/length_unit", collimationPath + "/cs:length/@unit", "") 432 FOR (j = 0; j < DimSize(M_listXPath, 0); j += 1) // aperture may be repeated! 433 IF (DimSize(M_listXPath, 0) == 1) 434 preMeta = "SASinstrument/SAScollimation/aperture" 435 ELSE 436 preMeta = "SASinstrument/SAScollimation/aperture_" + num2str(j) 437 ENDIF 438 preXpath = collimationPath + "/cs:aperture["+num2str(j+1)+"]" 439 CS_appendMetaData(fileID, preMeta + "/@name", preXpath + "/@name", "") 440 CS_appendMetaData(fileID, preMeta + "/type", preXpath + "/cs:type", "") 441 CS_appendMetaData(fileID, preMeta + "/size/@name", preXpath + "/cs:size/@name", "") 442 CS_appendMetaData(fileID, preMeta + "/size/x", preXpath + "/cs:size/cs:x", "") 443 CS_appendMetaData(fileID, preMeta + "/size/x/@unit", preXpath + "/cs:size/cs:x/@unit", "") 444 CS_appendMetaData(fileID, preMeta + "/size/y", preXpath + "/cs:size/cs:y", "") 445 CS_appendMetaData(fileID, preMeta + "/size/y/@unit", preXpath + "/cs:size/cs:y/@unit", "") 446 CS_appendMetaData(fileID, preMeta + "/size/z", preXpath + "/cs:size/cs:z", "") 447 CS_appendMetaData(fileID, preMeta + "/size/z/@unit", preXpath + "/cs:size/cs:z/@unit", "") 448 CS_appendMetaData(fileID, preMeta + "/distance", preXpath + "/cs:distance", "") 449 CS_appendMetaData(fileID, preMeta + "/distance/@unit", preXpath + "/cs:distance/@unit", "") 450 ENDFOR 430 451 ENDFOR 431 452 … … 434 455 WAVE/T M_listXPath 435 456 DUPLICATE/O/T M_listXPath, SASdetectorList 436 suffix = ""437 457 FOR (i = 0; i < DimSize(SASdetectorList, 0); i += 1) 458 preMeta = "SASinstrument/SASdetector" 438 459 IF (DimSize(SASdetectorList, 0) > 1) 439 suffix= "_" + num2str(i)460 preMeta += "_" + num2str(i) 440 461 ENDIF 441 462 detectorPath = SASdetectorList[i][0] 442 CS_appendMetaData(fileID, "detector/@name"+suffix,detectorPath + "/cs:name", "")443 CS_appendMetaData(fileID, "SDD"+suffix,detectorPath + "/cs:SDD", "")444 CS_appendMetaData(fileID, "SDD"+suffix+"/@unit",detectorPath + "/cs:SDD/@unit", "")445 CS_appendMetaData(fileID, "detector/offset/@name"+suffix,detectorPath + "/cs:offset/@name", "")446 CS_appendMetaData(fileID, "detector/offset/x"+suffix,detectorPath + "/cs:offset/cs:x", "")447 CS_appendMetaData(fileID, "detector/offset/x/@unit"+suffix,detectorPath + "/cs:offset/cs:x/@unit", "")448 CS_appendMetaData(fileID, "detector/offset/y"+suffix,detectorPath + "/cs:offset/cs:y", "")449 CS_appendMetaData(fileID, "detector/offset/y/@unit"+suffix,detectorPath + "/cs:offset/cs:y/@unit", "")450 CS_appendMetaData(fileID, "detector/offset/z"+suffix,detectorPath + "/cs:offset/cs:z", "")451 CS_appendMetaData(fileID, "detector/offset/z/@unit"+suffix,detectorPath + "/cs:offset/cs:z/@unit", "")452 453 CS_appendMetaData(fileID, "detector/orientation/@name"+suffix,detectorPath + "/cs:orientation/@name", "")454 CS_appendMetaData(fileID, "detector/orientation/roll"+suffix,detectorPath + "/cs:orientation/cs:roll", "")455 CS_appendMetaData(fileID, "detector/orientation/roll/@unit"+suffix,detectorPath + "/cs:orientation/cs:roll/@unit", "")456 CS_appendMetaData(fileID, "detector/orientation/pitch"+suffix,detectorPath + "/cs:orientation/cs:pitch", "")457 CS_appendMetaData(fileID, "detector/orientation/pitch/@unit"+suffix,detectorPath + "/cs:orientation/cs:pitch/@unit", "")458 CS_appendMetaData(fileID, "detector/orientation/yaw"+suffix,detectorPath + "/cs:orientation/cs:yaw", "")459 CS_appendMetaData(fileID, "detector/orientation/yaw/@unit"+suffix,detectorPath + "/cs:orientation/cs:yaw/@unit", "")460 461 CS_appendMetaData(fileID, "detector/beam_center/@name"+suffix,detectorPath + "/cs:beam_center/@name", "")462 CS_appendMetaData(fileID, "detector/beam_center/x"+suffix,detectorPath + "/cs:beam_center/cs:x", "")463 CS_appendMetaData(fileID, "detector/beam_center/x/@unit"+suffix,detectorPath + "/cs:beam_center/cs:x/@unit", "")464 CS_appendMetaData(fileID, "detector/beam_center/y"+suffix,detectorPath + "/cs:beam_center/cs:y", "")465 CS_appendMetaData(fileID, "detector/beam_center/y/@unit"+suffix,detectorPath + "/cs:beam_center/cs:y/@unit", "")466 CS_appendMetaData(fileID, "detector/beam_center/z"+suffix,detectorPath + "/cs:beam_center/cs:z", "")467 CS_appendMetaData(fileID, "detector/beam_center/z/@unit"+suffix,detectorPath + "/cs:beam_center/cs:z/@unit", "")468 469 CS_appendMetaData(fileID, "detector/pixel_size/@name"+suffix,detectorPath + "/cs:pixel_size/@name", "")470 CS_appendMetaData(fileID, "detector/pixel_size/x"+suffix,detectorPath + "/cs:pixel_size/cs:x", "")471 CS_appendMetaData(fileID, "detector/pixel_size/x/@unit"+suffix,detectorPath + "/cs:pixel_size/cs:x/@unit", "")472 CS_appendMetaData(fileID, "detector/pixel_size/y"+suffix,detectorPath + "/cs:pixel_size/cs:y", "")473 CS_appendMetaData(fileID, "detector/pixel_size/y/@unit"+suffix,detectorPath + "/cs:pixel_size/cs:y/@unit", "")474 CS_appendMetaData(fileID, "detector/pixel_size/z"+suffix,detectorPath + "/cs:pixel_size/cs:z", "")475 CS_appendMetaData(fileID, "detector/pixel_size/z/@unit"+suffix,detectorPath + "/cs:pixel_size/cs:z/@unit", "")476 477 CS_appendMetaData(fileID, "slit_length"+suffix,detectorPath + "/cs:slit_length", "")478 CS_appendMetaData(fileID, "slit_length"+suffix+"/@unit",detectorPath + "/cs:slit_length/@unit", "")463 CS_appendMetaData(fileID, preMeta + "/@name", detectorPath + "/cs:name", "") 464 CS_appendMetaData(fileID, preMeta + "/SDD", detectorPath + "/cs:SDD", "") 465 CS_appendMetaData(fileID, preMeta + "/SDD/@unit", detectorPath + "/cs:SDD/@unit", "") 466 CS_appendMetaData(fileID, preMeta + "/offset/@name", detectorPath + "/cs:offset/@name", "") 467 CS_appendMetaData(fileID, preMeta + "/offset/x", detectorPath + "/cs:offset/cs:x", "") 468 CS_appendMetaData(fileID, preMeta + "/offset/x/@unit", detectorPath + "/cs:offset/cs:x/@unit", "") 469 CS_appendMetaData(fileID, preMeta + "/offset/y", detectorPath + "/cs:offset/cs:y", "") 470 CS_appendMetaData(fileID, preMeta + "/offset/y/@unit", detectorPath + "/cs:offset/cs:y/@unit", "") 471 CS_appendMetaData(fileID, preMeta + "/offset/z", detectorPath + "/cs:offset/cs:z", "") 472 CS_appendMetaData(fileID, preMeta + "/offset/z/@unit", detectorPath + "/cs:offset/cs:z/@unit", "") 473 474 CS_appendMetaData(fileID, preMeta + "/orientation/@name", detectorPath + "/cs:orientation/@name", "") 475 CS_appendMetaData(fileID, preMeta + "/orientation/roll", detectorPath + "/cs:orientation/cs:roll", "") 476 CS_appendMetaData(fileID, preMeta + "/orientation/roll/@unit", detectorPath + "/cs:orientation/cs:roll/@unit", "") 477 CS_appendMetaData(fileID, preMeta + "/orientation/pitch", detectorPath + "/cs:orientation/cs:pitch", "") 478 CS_appendMetaData(fileID, preMeta + "/orientation/pitch/@unit", detectorPath + "/cs:orientation/cs:pitch/@unit", "") 479 CS_appendMetaData(fileID, preMeta + "/orientation/yaw", detectorPath + "/cs:orientation/cs:yaw", "") 480 CS_appendMetaData(fileID, preMeta + "/orientation/yaw/@unit", detectorPath + "/cs:orientation/cs:yaw/@unit", "") 481 482 CS_appendMetaData(fileID, preMeta + "/beam_center/@name", detectorPath + "/cs:beam_center/@name", "") 483 CS_appendMetaData(fileID, preMeta + "/beam_center/x", detectorPath + "/cs:beam_center/cs:x", "") 484 CS_appendMetaData(fileID, preMeta + "/beam_center/x/@unit", detectorPath + "/cs:beam_center/cs:x/@unit", "") 485 CS_appendMetaData(fileID, preMeta + "/beam_center/y", detectorPath + "/cs:beam_center/cs:y", "") 486 CS_appendMetaData(fileID, preMeta + "/beam_center/y/@unit", detectorPath + "/cs:beam_center/cs:y/@unit", "") 487 CS_appendMetaData(fileID, preMeta + "/beam_center/z", detectorPath + "/cs:beam_center/cs:z", "") 488 CS_appendMetaData(fileID, preMeta + "/beam_center/z/@unit", detectorPath + "/cs:beam_center/cs:z/@unit", "") 489 490 CS_appendMetaData(fileID, preMeta + "/pixel_size/@name", detectorPath + "/cs:pixel_size/@name", "") 491 CS_appendMetaData(fileID, preMeta + "/pixel_size/x", detectorPath + "/cs:pixel_size/cs:x", "") 492 CS_appendMetaData(fileID, preMeta + "/pixel_size/x/@unit", detectorPath + "/cs:pixel_size/cs:x/@unit", "") 493 CS_appendMetaData(fileID, preMeta + "/pixel_size/y", detectorPath + "/cs:pixel_size/cs:y", "") 494 CS_appendMetaData(fileID, preMeta + "/pixel_size/y/@unit", detectorPath + "/cs:pixel_size/cs:y/@unit", "") 495 CS_appendMetaData(fileID, preMeta + "/pixel_size/z", detectorPath + "/cs:pixel_size/cs:z", "") 496 CS_appendMetaData(fileID, preMeta + "/pixel_size/z/@unit", detectorPath + "/cs:pixel_size/cs:z/@unit", "") 497 498 CS_appendMetaData(fileID, preMeta + "/slit_length", detectorPath + "/cs:slit_length", "") 499 CS_appendMetaData(fileID, preMeta + "/slit_length/@unit", detectorPath + "/cs:slit_length/@unit", "") 479 500 ENDFOR 480 501 … … 484 505 DUPLICATE/O/T M_listXPath, SASprocessList 485 506 STRING SASprocessPath 486 suffix = ""487 507 FOR (i = 0; i < DimSize(SASprocessList, 0); i += 1) 508 preMeta = "SASprocess" 488 509 IF (DimSize(SASprocessList, 0) > 1) 489 suffix= "_" + num2str(i)510 preMeta += "_" + num2str(i) 490 511 ENDIF 491 512 SASprocessPath = SASprocessList[i][0] 492 CS_appendMetaData(fileID, "process"+suffix+"/@name",SASprocessPath + "/@name", "")493 CS_appendMetaData(fileID, "process"+suffix+"/name",SASprocessPath + "/cs:name", "")494 CS_appendMetaData(fileID, "process"+suffix+"/date",SASprocessPath + "/cs:date", "")495 CS_appendMetaData(fileID, "process"+suffix+"/description",SASprocessPath + "/cs:description", "")513 CS_appendMetaData(fileID, preMeta+"/@name", SASprocessPath + "/@name", "") 514 CS_appendMetaData(fileID, preMeta+"/name", SASprocessPath + "/cs:name", "") 515 CS_appendMetaData(fileID, preMeta+"/date", SASprocessPath + "/cs:date", "") 516 CS_appendMetaData(fileID, preMeta+"/description", SASprocessPath + "/cs:description", "") 496 517 XmlListXpath(fileID, SASprocessList[i][0]+"//cs:term", nsStr) 497 518 FOR (j = 0; j < DimSize(M_listXPath, 0); j += 1) 498 CS_appendMetaData(fileID, "process"+suffix+"/term_"+num2str(j)+"/@name",M_listXPath[j][0] + "/@name", "")499 CS_appendMetaData(fileID, "process"+suffix+"/term_"+num2str(j)+"/@unit",M_listXPath[j][0] + "/@unit", "")500 CS_appendMetaData(fileID, "process"+suffix+"/term_"+num2str(j),M_listXPath[j][0], "")519 CS_appendMetaData(fileID, preMeta+"/term_"+num2str(j)+"/@name", M_listXPath[j][0] + "/@name", "") 520 CS_appendMetaData(fileID, preMeta+"/term_"+num2str(j)+"/@unit", M_listXPath[j][0] + "/@unit", "") 521 CS_appendMetaData(fileID, preMeta+"/term_"+num2str(j), M_listXPath[j][0], "") 501 522 ENDFOR 523 // ignore <SASprocessnote> 502 524 ENDFOR 503 525 … … 506 528 WAVE/T M_listXPath 507 529 DUPLICATE/O/T M_listXPath, SASnoteList 508 suffix = ""509 530 FOR (i = 0; i < DimSize(SASnoteList, 0); i += 1) 531 preMeta = "SASnote" 510 532 IF (DimSize(SASnoteList, 0) > 1) 511 suffix= "_" + num2str(i)533 preMeta += "_" + num2str(i) 512 534 ENDIF 513 535 notePath = SASnoteList[i][0] 514 CS_appendMetaData(fileID, "SASnote"+suffix+"/@name", notePath + "/@name", "")515 CS_appendMetaData(fileID, "SASnote"+suffix, notePath, "")536 CS_appendMetaData(fileID, preMeta+"/@name", notePath + "/@name", "") 537 CS_appendMetaData(fileID, preMeta, notePath, "") 516 538 ENDFOR 517 539 … … 669 691 fList = AddListItem("does-not-exist-file.xml", fList, ";", Inf) // non-existent file 670 692 fList = AddListItem("cs_rr_polymers.xml", fList, ";", Inf) // Round Robin polymer samples from John Barnes @ NIST 671 fList = AddListItem("s81-polyurea.xml", fList, ";", Inf) // Round Robin polymer samples from John Barnes @ NIST693 fList = AddListItem("s81-polyurea.xml", fList, ";", Inf) // polyurea from APS/USAXS/Indra (with extra metadata) 672 694 673 695 // try to load each data set in the table … … 688 710 689 711 690 FUNCTION prjTest_writer(xmlFile)691 STRING xmlFile692 VARIABLE fileID693 STRING nsStr = "cansas1d/1.0", prefixStr = ""694 fileID = XMLcreateFile(xmlFile,"SASroot",nsStr,prefixStr)695 XMLsetAttr(fileID, "/SASroot", nsStr, "version", "1.0")696 XMLsetAttr(fileID, "/SASroot", nsStr, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")697 XMLsetAttr(fileID, "/SASroot", nsStr, "xsi:schemaLocation", "cansas1d/1.0 http://svn.smallangles.net/svn/canSAS/1dwg/trunk/cansas1d.xsd")698 XMLaddNode(fileID, "/SASroot", nsStr, "SASentry", "", 1)699 XMLsetAttr(fileID, "/SASroot/SASentry", nsStr, "name", "something")700 XMLaddNode(fileID, "/SASroot/SASentry", nsStr, "Title", "my very first title", 1)701 XMLaddNode(fileID, "/SASroot/SASentry", nsStr, "Run", "2008-03-19", 1)702 XMLsetAttr(fileID, "/SASroot/SASentry/Run", nsStr, "name", "actually is a date")703 XMLsaveFile(fileID)704 XMLcloseFile(fileID,0)705 END706 707 708 712 FUNCTION testCollette() 713 // !!!!!!!!!!!!!!!!! NOTE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 714 // THIS IS JUST AN EXAMPLE 709 715 710 716 // suggestions from ISIS users 711 // 3. Loading actual data from LOQ caused some problems. Data created by Colette names files with run number. When entering full path to load the data if you use " 712 \example\31531.X" Igor will read \3 as a character. A simple fix which has worked for this is to use / instead of \ e.g. " 717 // 3. Loading actual data from LOQ caused some problems. 718 // Data created by Colette names files with run number. 719 // When entering full path to load the data if you use " 720 \example\31531.X" Igor will read \3 as a character. 721 // A simple fix which has worked for this is to use / instead of \ e.g. " 713 722 \example/31531.X". 714 // I assume this will not be an issue once a proper pull down menu has been created.715 723 716 //4. Once data is loaded in Igor it is relatively easy to work with but would be nicer if the SASdata was loaded into root directory (named using run number rather than generically as it is at the moment) rather than another folder. 717 //This becomes more problematic when two samples are being loaded for comparison. Although still relatively easy to work with, changing the folders can lead to mistakes being made. 724 //4. Once data is loaded in Igor it is relatively easy to work with but would be nicer if the SASdata 725 // was loaded into root directory (named using run number rather than generically as it is at the moment) rather than another folder. 726 //This becomes more problematic when two samples are being loaded for comparison. 727 // Although still relatively easy to work with, changing the folders can lead to mistakes being made. 718 728 719 729 //Say, for Run=31531, then Qsas_31531 … … 727 737 importFolder = GetIndexedObjName(srcDir, 4, i) 728 738 SetDataFolder $importFolder 729 IF ( exists( "metadata" ) == 1 )739 IF ( EXISTS( "metadata" ) == 1 ) 730 740 // looks like a SAS data folder 731 741 WAVE/T metadata
Note: See TracChangeset
for help on using the changeset viewer.