Changeset 927


Ignore:
Timestamp:
Apr 18, 2020 6:14:19 PM (2 years ago)
Author:
ilavsky
Message:

NXcanSAS fixes - it is still broken, but reads basic Nika exported file. Needs more testing and fixing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/User Procedures/Nika/NI1_FileLoaders.ipf

    r925 r927  
    40284028                        Redimension/S AnglesWave
    40294029                        Wave CCDImageToConvert
    4030                         Wave UnbinnedQxW
    4031                         Wave UnbinnedQyW
    4032                         Wave CCDImageToConvert_Errs
     4030                        Wave/Z UnbinnedQxW
     4031                        Wave/Z UnbinnedQyW
     4032                        Wave/Z CCDImageToConvert_Errs
    40334033//                      //now need to check, if the data are not rebinned...
    40344034                        if(UnbinnedQx && UnbinnedQy&&ReverseBinnedData)
     
    41544154        HDF5ListGroup /F /R /TYPE=1  /Z fileID , "/"
    41554155        ListOfGroups = S_HDF5ListGroup
     4156        string GroupName, SignalNameAtrr, QNamesAtrr, tempGroupName
    41564157        For (i=0;i<ItemsInList(ListOfGroups);i+=1)
    41574158                AttribList = NI1_HdfReadAllAttributes(fileID, stringfromlist(i,ListOfGroups),0)
     4159                GroupName = stringfromlist(i,ListOfGroups)
    41584160                //version 0.1 of the standard...
    4159                 if(stringMatch(StringByKey("NX_class", AttribList),"NXdata") && stringMatch(StringByKey("canSAS_class", AttribList),"SASdata") && stringMatch(StringByKey("canSAS_version", AttribList),"0.1"))
     4161                if(stringMatch(StringByKey("NX_class", AttribList),"NXdata") && stringMatch(StringByKey("canSAS_class", AttribList),"SASdata"))                                 // skip version check and hope for best. && stringMatch(StringByKey("canSAS_version", AttribList),"0.1"))
    41604162                        PathToData = stringfromlist(i,ListOfGroups)
    41614163                        //print "Found location of data : " + PathToData
     4164                        //print AttribList
     4165                        //   Found location of data : /GC_SRM3600_0125/_2DCalibrated
     4166                        //  NX_class:NXdata;canSAS_class:SASdata;canSAS_version:1.0;signal:I;canSAS_name:GC_SRM3600_0125;Q_indices:0,1;I_axes:Q,Q;
    41624167                        HDF5ListGroup /F /TYPE=2  /Z fileID , PathToData
    41634168                        ListOfDataSets = S_HDF5ListGroup
    4164                         For(j=0;j<ItemsInList(ListOfDataSets);j+=1)
    4165                                 tempStr = NI1_HdfReadAllAttributes(fileID, stringfromlist(j,ListOfDataSets),1)
    4166                                 if(numberByKey("signal", tempStr)       )
    4167                                         TempDataPath = stringfromlist(j,ListOfDataSets)
    4168                                         tempStr2 = stringByKey("axes", tempStr)
    4169                                         if(stringmatch(tempStr2,"Q"))
    4170                                                 TempQPath = TempDataPath[0,strlen(TempDataPath)-2]+"Q"
    4171                                         elseif(stringmatch(tempStr2,"Qx,Qy"))
    4172                                                 TempQPath = TempDataPath[0,strlen(TempDataPath)-2]+"Qx"+";"
    4173                                                 TempQPath += TempDataPath[0,strlen(TempDataPath)-2]+"Qy"
    4174                                         else
    4175                                                 abort "Problem identifying Q axes"
    4176                                         endif
    4177                                         if(StringMatch(ListOfDataSets,"*Mask*"))
    4178                                                 TempMaskPath = TempDataPath[0,strlen(TempDataPath)-2]+"Mask"
    4179                                         endif
    4180                                         if(StringMatch(ListOfDataSets,"*Idev*"))
    4181                                                 TempIdevPath = TempDataPath[0,strlen(TempDataPath)-2]+"Idev"
    4182                                         endif
    4183                                         if(StringMatch(ListOfDataSets,"*AzimAngles*"))
    4184                                                 TempAzAPath = TempDataPath[0,strlen(TempDataPath)-2]+"AzimAngles"
    4185                                         endif
    4186                                         if(StringMatch(ListOfDataSets,"*UnbinnedQx*"))
    4187                                                 OrigQxPath = TempDataPath[0,strlen(TempDataPath)-2]+"UnbinnedQx"
    4188                                         endif
    4189                                         if(StringMatch(ListOfDataSets,"*UnbinnedQy*"))
    4190                                                 OrigQyPath = TempDataPath[0,strlen(TempDataPath)-2]+"UnbinnedQy"
    4191                                         endif
    4192                                         DataIdentification = "DataWv:"+TempDataPath+","+"QWv:"+TempQPath+","+"IdevWv:"+TempIdevPath+","
    4193                                         DataIdentification += "MaskWv:"+TempMaskPath+","+"AzimAngles:"+TempAzAPath+","
    4194                                         DataIdentification += "UnbinnedQx:"+OrigQxPath+","+"UnbinnedQy:"+OrigQyPath+","
    4195                                 endif                   
    4196                         endfor
    4197                 endif
    4198                 //this is generic NXcanSAS as avilable on https://github.com/canSAS-org/NXcanSAS_examples April 2020
    4199                 if(stringMatch(StringByKey("NX_class", AttribList),"NXdata") && (stringMatch(StringByKey("canSAS_class", AttribList),"SASdata") || stringMatch(StringByKey("SAS_class", AttribList),"SASdata")))
    4200                          // data : NXdata                               minimum content here...
    4201                             //  @NX_class = "NXdata"
    4202                             //  @canSAS_class = "SASdata"
    4203                             //  @signal = "I"
    4204                             //  @I_axes = "<see the documentation>"
    4205                             //  @Q_indices : NX_INT = <see the documentation>
    4206                             //  I : NX_NUMBER
    4207                             //     @units = <see the documentation>
    4208                             //  Q : NX_NUMBER
    4209                             //     @units = NX_PER_LENGTH
    4210                         PathToData = stringfromlist(i,ListOfGroups)
    4211                         //print "Found location of data : " + PathToData
    4212                         HDF5ListGroup /F /TYPE=2  /Z fileID , PathToData
    4213                         ListOfDataSets = S_HDF5ListGroup
    4214                         For(j=0;j<ItemsInList(ListOfDataSets);j+=1)
    4215                                 tempStr = NI1_HdfReadAllAttributes(fileID, stringfromlist(j,ListOfDataSets),1)
    4216                                 if(stringmatch(stringByKey("signal", AttribList),"I"))                                                                  //the group has signal=I attribute
    4217                                         TempDataPath = stringfromlist(j,ListOfDataSets)
    4218                                         tempStr2 = stringByKey("I_axes", AttribList)
    4219                                         if(stringmatch(tempStr2,"Q"))
    4220                                                 TempQPath = TempDataPath[0,strlen(TempDataPath)-2]+"Q"
    4221                                         elseif(stringmatch(tempStr2,"Qx,Qy"))
    4222                                                 TempQPath = TempDataPath[0,strlen(TempDataPath)-2]+"Qx"+";"
    4223                                                 TempQPath += TempDataPath[0,strlen(TempDataPath)-2]+"Qy"
    4224                                         else
    4225                                                 abort "Problem identifying Q axes"
    4226                                         endif
    4227                                         if(StringMatch(ListOfDataSets,"*Mask*"))
    4228                                                 TempMaskPath = TempDataPath[0,strlen(TempDataPath)-2]+"Mask"
    4229                                         endif
    4230                                         if(StringMatch(ListOfDataSets,"*Idev*"))
    4231                                                 TempIdevPath = TempDataPath[0,strlen(TempDataPath)-2]+"Idev"
    4232                                         endif
    4233                                         if(StringMatch(ListOfDataSets,"*AzimAngles*"))
    4234                                                 TempAzAPath = TempDataPath[0,strlen(TempDataPath)-2]+"AzimAngles"
    4235                                         endif
    4236                                         if(StringMatch(ListOfDataSets,"*UnbinnedQx*"))
    4237                                                 OrigQxPath = TempDataPath[0,strlen(TempDataPath)-2]+"UnbinnedQx"
    4238                                         endif
    4239                                         if(StringMatch(ListOfDataSets,"*UnbinnedQy*"))
    4240                                                 OrigQyPath = TempDataPath[0,strlen(TempDataPath)-2]+"UnbinnedQy"
    4241                                         endif
    4242                                         DataIdentification = "DataWv:"+TempDataPath+","+"QWv:"+TempQPath+","+"IdevWv:"+TempIdevPath+","
    4243                                         DataIdentification += "MaskWv:"+TempMaskPath+","+"AzimAngles:"+TempAzAPath+","
    4244                                         DataIdentification += "UnbinnedQx:"+OrigQxPath+","+"UnbinnedQy:"+OrigQyPath+","
    4245 
    4246                                 endif                   
    4247                         endfor
    4248                 endif
     4169                        SignalNameAtrr=stringByKey("signal",AttribList)
     4170                        QNamesAtrr=stringByKey("I_axes",AttribList)
     4171                        print ListOfDataSets
     4172                        TempDataPath = RemoveEnding(GrepList(ListOfDataSets, "I$",0,";"), ";")
     4173                        if(StringMatch(QNamesAtrr, "Q,Q" ))
     4174                                TempQPath = RemoveEnding(GrepList(ListOfDataSets, "Q$",0,";"), ";")
     4175                        endif
     4176                        TempAzAPath  =   RemoveEnding(GrepList(ListOfDataSets, "AzimAngles",0,";"), ";")
     4177                        TempMaskPath =   RemoveEnding(GrepList(ListOfDataSets, "Mask",0,";"), ";")
     4178                        TempIdevPath =   RemoveEnding(GrepList(ListOfDataSets, "Idev",0,";"), ";")
     4179
     4180                        DataIdentification = "DataWv:"+TempDataPath+","+"QWv:"+TempQPath+","+"IdevWv:"+TempIdevPath+","
     4181                        DataIdentification += "MaskWv:"+TempMaskPath+","+"AzimAngles:"+TempAzAPath+","
     4182                        //DataIdentification += "UnbinnedQx:"+OrigQxPath+","+"UnbinnedQy:"+OrigQyPath+","
     4183                        break
     4184//                      For(j=0;j<ItemsInList(ListOfDataSets);j+=1)
     4185//                              tempGroupName = stringfromlist(j,ListOfDataSets)
     4186//                              tempStr = NI1_HdfReadAllAttributes(fileID, stringfromlist(j,ListOfDataSets),1)
     4187//                              if(stringmatch(stringByKey("signal",AttribList),"I"))                   //I is intensity data
     4188//                                      TempDataPath = stringfromlist(j,ListOfDataSets)
     4189//                                      tempStr2 = stringByKey("axes", tempStr)
     4190//                                      if(stringmatch(tempStr2,"Q"))
     4191//                                              TempQPath = TempDataPath[0,strlen(TempDataPath)-2]+"Q"
     4192//                                      elseif(stringmatch(tempStr2,"Qx,Qy"))
     4193//                                              TempQPath = TempDataPath[0,strlen(TempDataPath)-2]+"Qx"+";"
     4194//                                              TempQPath += TempDataPath[0,strlen(TempDataPath)-2]+"Qy"
     4195//                                      else
     4196//                                              abort "Problem identifying Q axes"
     4197//                                      endif
     4198//                                      if(StringMatch(ListOfDataSets,"*Mask*"))
     4199//                                              TempMaskPath = TempDataPath[0,strlen(TempDataPath)-2]+"Mask"
     4200//                                      endif
     4201//                                      if(StringMatch(ListOfDataSets,"*Idev*"))
     4202//                                              TempIdevPath = TempDataPath[0,strlen(TempDataPath)-2]+"Idev"
     4203//                                      endif
     4204//                                      if(StringMatch(ListOfDataSets,"*AzimAngles*"))
     4205//                                              TempAzAPath = TempDataPath[0,strlen(TempDataPath)-2]+"AzimAngles"
     4206//                                      endif
     4207//                                      if(StringMatch(ListOfDataSets,"*UnbinnedQx*"))
     4208//                                              OrigQxPath = TempDataPath[0,strlen(TempDataPath)-2]+"UnbinnedQx"
     4209//                                      endif
     4210//                                      if(StringMatch(ListOfDataSets,"*UnbinnedQy*"))
     4211//                                              OrigQyPath = TempDataPath[0,strlen(TempDataPath)-2]+"UnbinnedQy"
     4212//                                      endif
     4213//                                      DataIdentification = "DataWv:"+TempDataPath+","+"QWv:"+TempQPath+","+"IdevWv:"+TempIdevPath+","
     4214//                                      DataIdentification += "MaskWv:"+TempMaskPath+","+"AzimAngles:"+TempAzAPath+","
     4215//                                      DataIdentification += "UnbinnedQx:"+OrigQxPath+","+"UnbinnedQy:"+OrigQyPath+","
     4216//                              endif                   
     4217//                      endfor
     4218                endif
     4219                //this is generic NXcanSAS as available on https://github.com/canSAS-org/NXcanSAS_examples April 2020
     4220//              if(stringMatch(StringByKey("NX_class", AttribList),"NXdata") && (stringMatch(StringByKey("canSAS_class", AttribList),"SASdata") || stringMatch(StringByKey("SAS_class", AttribList),"SASdata")))
     4221//                       // data : NXdata                               minimum content here...
     4222//                          //  @NX_class = "NXdata"
     4223//                          //  @canSAS_class = "SASdata"
     4224//                          //  @signal = "I"
     4225//                          //  @I_axes = "<see the documentation>"
     4226//                          //  @Q_indices : NX_INT = <see the documentation>
     4227//                          //  I : NX_NUMBER
     4228//                          //     @units = <see the documentation>
     4229//                          //  Q : NX_NUMBER
     4230//                          //     @units = NX_PER_LENGTH
     4231//                      PathToData = stringfromlist(i,ListOfGroups)
     4232//                      //print "Found location of data : " + PathToData
     4233//                      HDF5ListGroup /F /TYPE=2  /Z fileID , PathToData
     4234//                      ListOfDataSets = S_HDF5ListGroup
     4235//                      string IdataSetname=stringByKey("signal", AttribList)
     4236//                      string QdataSetname=stringByKey("I_axes", AttribList)
     4237//                      //this simply does not work, examples do not match standard.
     4238//                      For(j=0;j<ItemsInList(ListOfDataSets);j+=1)
     4239//                              tempStr = NI1_HdfReadAllAttributes(fileID, stringfromlist(j,ListOfDataSets),1)
     4240//                              if(stringmatch(stringByKey("signal", AttribList),"I"))                                                                  //the group has signal=I attribute
     4241//                                      TempDataPath = stringfromlist(j,ListOfDataSets)
     4242//                                      tempStr2 = stringByKey("I_axes", AttribList)
     4243//                                      if(stringmatch(tempStr2,"Q"))
     4244//                                              TempQPath = TempDataPath[0,strlen(TempDataPath)-2]+"Q"
     4245//                                      elseif(stringmatch(tempStr2,"Qx,Qy"))
     4246//                                              TempQPath = TempDataPath[0,strlen(TempDataPath)-2]+"Qx"+";"
     4247//                                              TempQPath += TempDataPath[0,strlen(TempDataPath)-2]+"Qy"
     4248//                                      else
     4249//                                              abort "Problem identifying Q axes"
     4250//                                      endif
     4251//                                      if(StringMatch(ListOfDataSets,"*Mask*"))
     4252//                                              TempMaskPath = TempDataPath[0,strlen(TempDataPath)-2]+"Mask"
     4253//                                      endif
     4254//                                      if(StringMatch(ListOfDataSets,"*Idev*"))
     4255//                                              TempIdevPath = TempDataPath[0,strlen(TempDataPath)-2]+"Idev"
     4256//                                      endif
     4257//                                      if(StringMatch(ListOfDataSets,"*AzimAngles*"))
     4258//                                              TempAzAPath = TempDataPath[0,strlen(TempDataPath)-2]+"AzimAngles"
     4259//                                      endif
     4260//                                      if(StringMatch(ListOfDataSets,"*UnbinnedQx*"))
     4261//                                              OrigQxPath = TempDataPath[0,strlen(TempDataPath)-2]+"UnbinnedQx"
     4262//                                      endif
     4263//                                      if(StringMatch(ListOfDataSets,"*UnbinnedQy*"))
     4264//                                              OrigQyPath = TempDataPath[0,strlen(TempDataPath)-2]+"UnbinnedQy"
     4265//                                      endif
     4266//                                      DataIdentification = "DataWv:"+TempDataPath+","+"QWv:"+TempQPath+","+"IdevWv:"+TempIdevPath+","
     4267//                                      DataIdentification += "MaskWv:"+TempMaskPath+","+"AzimAngles:"+TempAzAPath+","
     4268//                                      DataIdentification += "UnbinnedQx:"+OrigQxPath+","+"UnbinnedQy:"+OrigQyPath+","
     4269//
     4270//                              endif                   
     4271//                      endfor
     4272//              endif
    42494273
    42504274        endfor
Note: See TracChangeset for help on using the changeset viewer.