ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/pymsxml/pymsxml.py
(Generate patch)
# Line 18 | Line 18
18          self.name_ = "PyMsXML"
19          self.majorVer = 0
20          self.minorVer = 5
21 <        self.revVer = 0
21 >        self.revVer = 2
22      def version(self):
23          return "%d.%d.%d"%(self.majorVer,self.minorVer,self.revVer)
24      def name(self):
# Line 518 | Line 518
518              prevSpec = s
519  
520          outStr = ""
521 <        for m in xrange(0,msLevel):
521 >        for m in xrange(0,len(ancestors)+1):
522              outStr += "</scan>\n"
523  
524          self.writeString(xmlFile,outStr)
# Line 1083 | Line 1083
1083          # print >>sys.stderr, ">>",self.context
1084          # sys.stderr.flush()
1085          if self.context.endswith(':msRun'):
1086 <            self.md['startTime'] = float(attrs['startTime'][2:-1])
1087 <            self.md['endTime'] = float(attrs['endTime'][2:-1])
1086 >            if attrs.has_key('startTime'):
1087 >                self.md['startTime'] = float(attrs['startTime'][2:-1])
1088 >            if attrs.has_key('endTime'):
1089 >                self.md['endTime'] = float(attrs['endTime'][2:-1])
1090          elif self.context.endswith(':parentFile'):
1091 <            self.md['fileName'] = unquote(attrs['fileName'])
1092 <            self.md['fileType'] = attrs['fileType']
1093 <            self.md['fileSha1'] = attrs['fileSha1']
1091 >            if not self.md.has_key('parentFile'):
1092 >                self.md['parentFile'] = []
1093 >            self.md['parentFile'].append((unquote(attrs['fileName']),attrs['fileType'],attrs['fileSha1']))
1094          elif self.context.endswith(':instrument'):
1095              self.md['msManufacturer'] = attrs['manufacturer']
1096              self.md['msModel'] = attrs['model']
# Line 1143 | Line 1145
1145              self.scannum = int(attrs['num'])
1146              if attrs.has_key('retentionTime'):
1147                  self.rt = float(attrs['retentionTime'][2:-1])
1148 <            self.endMz = float(attrs['endMz'])
1149 <            self.startMz = float(attrs['startMz'])
1148 >            if attrs.has_key('endMz'):
1149 >                self.endMz = float(attrs['endMz'])
1150 >            if attrs.has_key('startMz'):
1151 >                self.startMz = float(attrs['startMz'])
1152              self.polarity = attrs.get('polarity',None)
1153              for (k,v) in attrs.items():
1154                  self.scanmd[k] = v
# Line 1156 | Line 1160
1160              self.context = ':msRun'
1161          elif name == 'scanOrigin':
1162              self.scanmd['scanOrigin'] = attrs
1163 +        elif self.context.endswith(':scan:nameValue'):
1164 +            self.scanmd['nameValue.%s:%%s'%attrs['name']] = attrs['value']
1165              
1166      def characters(self, content):
1167          if self.scancount >= self.scanstart:
# Line 1167 | Line 1173
1173          if self.scancount >= self.scanstart:
1174              if self.context.endswith('scan:peaks'):
1175                  
1176 <                spec = array('f')
1176 >                self.spec = array('f')
1177                  # print >>sys.stderr, len(self.content), len(b64decode(self.content)), self.content
1178 <                spec.fromstring(b64decode(self.content))
1178 >                self.spec.fromstring(b64decode(self.content))
1179                  if sys.byteorder != 'big':
1180 <                    spec.byteswap()
1180 >                    self.spec.byteswap()
1181 >            elif self.context.endswith(':scan'):
1182                  d = {'msLevel':self.scanlevel}
1183                  # Optional ('scan.' and prefixformat spec. needed)
1184 <                d.update({
1185 <                    'scan.retentionTime:PT%fS':self.rt,
1186 <                    'scan.startMz:%f':self.startMz,
1187 <                    'scan.endMz:%f':self.endMz
1188 <                    })
1184 >                if hasattr(self,'rt'):
1185 >                    d.update({'scan.retentionTime:PT%fS':self.rt})
1186 >                if hasattr(self,'startMz'):
1187 >                    d.update({'scan.startMz:%f':self.startMz})
1188 >                if hasattr(self,'endMz'):
1189 >                    d.update({'scan.endMz:%f':self.endMz})
1190                  if self.polarity != None:
1191                      d.update({'scan.polarity:%s':self.polarity})
1192                  if self.scanlevel == 2:
1193                      d.update({'precursorMz':self.precursorMz})
1194                  if self.scanmd.has_key('scanOrigin'):
1195                      d.update({'scanOrigin.parentFileID:%s': self.scanmd['scanOrigin']['parentFileID'],
1196 <                              'scanOrigin.num:%d': self.scanmd['scanOrigin']['num']})
1196 >                              'scanOrigin.num:%d': int(self.scanmd['scanOrigin']['num'])})
1197                  for (k,v) in self.scanmd.items():
1198                      if not d.has_key(k):
1199                          d[k] = v
1200 <                self.spectra.append((spec,d))
1200 >                self.spectra.append((self.spec,d))
1201                  if len(self.spectra) >= self.scanmax:
1202                      self.scanstart = self.scancount+1
1203                      raise SAXException("Early termination")
# Line 1274 | Line 1282
1282  
1283      def getMsRunMetaData(self):
1284          self.open()
1285 <        d = {'startTime:PT%fS':self.md['startTime'],
1286 <             'endTime:PT%fS':self.md['endTime']
1287 <             }
1285 >        d = {}
1286 >        if self.md.has_key('startTime'):
1287 >            d.update({'startTime:PT%fS':self.md['startTime']})
1288 >        if self.md.has_key('endTime'):
1289 >            d.update({'endTime:PT%fS':self.md['endTime']})
1290          return d
1291  
1292      def getFilenames(self):
1293 <        return [ (self.md['fileName'],self.md['fileType'],self.md['fileSha1']) ]
1293 >        return self.md['parentFile']
1294 >
1295 >    def msInstrumentID(self):
1296 >        return "1"
1297 >
1298 >    def peakDetect(self,level):
1299 >        return False
1300  
1301      def msManufacturer(self):
1302          return self.md.get('msManufacturer','')
# Line 1421 | Line 1437
1437              self.deapp = Dispatch('DataExplorer.Application',
1438                                    resultCLSID='{3FED40F1-D409-11D1-8B56-0060971CB54B}')
1439              self.delib = gencache.EnsureModule('{06972F50-13F6-11D3-A5CB-0060971CB54B}',0,4,2)
1440 <            self.deapp.AutomatedProcessing = 1
1441 <            self.deapp.Visible             = 0
1440 >            try:
1441 >                self.deapp.AutomatedProcessing = 1
1442 >            except AttributeError:
1443 >                pass
1444 >            try:
1445 >                self.deapp.Visible = 0
1446 >            except AttributeError:
1447 >                pass
1448 >            
1449  
1450      def close(self):
1451  
# Line 1466 | Line 1489
1489              doc = self.deapp.Documents.Item(0)
1490              sv = doc.SpecView
1491  
1492 +            if i > sv.TotalSpectrum:
1493 +                prevfile = f
1494 +                continue
1495 +            
1496              sv.SetSpectrumAt(i-1)
1497  
1498              (tf,fixedMass) = doc.InstrumentSettings.GetSetting(self.delib.constants.dePreCursorIon,i-1,None)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines