Changeset 3e41f43 in sasview for prview/perspectives/pr/inversion_state.py
- Timestamp:
- Jan 10, 2011 10:42:27 AM (14 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 3658abed
- Parents:
- d65a00a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
prview/perspectives/pr/inversion_state.py
rb35d3d1 r3e41f43 11 11 12 12 13 import time, os, sys 13 import time 14 import os 15 import sys 14 16 import logging 15 import DataLoader16 17 from xml.dom.minidom import parse 17 18 from lxml import etree 18 19 import DataLoader 19 20 from DataLoader.readers.cansas_reader import Reader as CansasReader 20 21 from DataLoader.readers.cansas_reader import get_content … … 136 137 Compatible with standalone writing, or appending to an 137 138 already existing XML document. In that case, the XML document 138 is required. An optional entry node in the XML document may also be given. 139 is required. An optional entry node in the XML document 140 may also be given. 139 141 140 142 :param file: file to write to … … 188 190 for item in in_list: 189 191 element = newdoc.createElement(item[0]) 190 exec "element.appendChild(newdoc.createTextNode(str(self.%s)))" % item[1] 192 cmd = "element.appendChild(newdoc.createTextNode(str(self.%s)))" 193 exec cmd % item[1] 191 194 inputs.appendChild(element) 192 195 … … 197 200 for item in out_list: 198 201 element = newdoc.createElement(item[0]) 199 exec "element.appendChild(newdoc.createTextNode(str(self.%s)))" % item[1] 202 cmd = "element.appendChild(newdoc.createTextNode(str(self.%s)))" 203 exec cmd % item[1] 200 204 outputs.appendChild(element) 201 205 … … 226 230 """ 227 231 if file is not None: 228 raise RuntimeError, "InversionState no longer supports non-CanSAS format for P(r) files" 229 230 if node.get('version')\ 231 and node.get('version') == '1.0': 232 msg = "InversionState no longer supports non-CanSAS" 233 msg += " format for P(r) files" 234 raise RuntimeError, msg 235 236 if node.get('version') and node.get('version') == '1.0': 232 237 233 238 # Get file name … … 242 247 self.timestamp = float(entry.get('epoch')) 243 248 except: 244 logging.error("InversionState.fromXML: Could not read timestamp\n %s" % sys.exc_value) 249 msg = "InversionState.fromXML: Could not read " 250 msg += "timestamp\n %s" % sys.exc_value 251 logging.error(msg) 245 252 246 253 # Parse inversion inputs … … 251 258 if input_field is not None: 252 259 try: 253 exec 'self.%s = float(input_field.text.strip())' % item[1] 260 cmd = 'self.%s = float(input_field.text.strip())' 261 exec cmd % item[1] 254 262 except: 255 263 exec 'self.%s = None' % item[1] … … 269 277 if input_field is not None: 270 278 try: 271 exec 'self.%s = float(input_field.text.strip())' % item[1] 279 cmd = 'self.%s = float(input_field.text.strip())' 280 exec cmd % item[1] 272 281 except: 273 282 exec 'self.%s = None' % item[1] … … 292 301 # Sanity check 293 302 if not len(self.coefficients) == self.nfunc: 294 # Inconsistent number of coefficients. Don't keep the data. 295 err_msg = "InversionState.fromXML: inconsistant number of coefficients: " 296 err_msg += "%d %d" % (len(self.coefficients), self.nfunc) 303 # Inconsistent number of coefficients. 304 # Don't keep the data. 305 err_msg = "InversionState.fromXML: inconsistant " 306 err_msg += "number of coefficients: " 307 err_msg += "%d %d" % (len(self.coefficients), 308 self.nfunc) 297 309 logging.error(err_msg) 298 310 self.coefficients = None … … 328 340 # Inconsistent dimensions of the covariance matrix. 329 341 # Don't keep the data. 330 err_msg = "InversionState.fromXML: inconsistant dimensions of the covariance matrix: " 342 err_msg = "InversionState.fromXML: " 343 err_msg += "inconsistant dimensions of the " 344 err_msg += " covariance matrix: " 331 345 err_msg += "%d %d" % (len(self.covariance), self.nfunc) 332 346 logging.error(err_msg) … … 344 358 "SANSView files (*.svs)|*.svs"] 345 359 ## List of allowed extensions 346 ext =['.prv', '.PRV', '.svs', '.SVS']360 ext = ['.prv', '.PRV', '.svs', '.SVS'] 347 361 348 362 def __init__(self, call_back, cansas=True): … … 406 420 # Locate the P(r) node 407 421 try: 408 nodes = entry.xpath('ns:%s' % PRNODE_NAME, namespaces={'ns': CANSAS_NS}) 422 nodes = entry.xpath('ns:%s' % PRNODE_NAME, 423 namespaces={'ns': CANSAS_NS}) 409 424 if nodes !=[]: 410 425 # Create an empty state … … 412 427 state.fromXML(node=nodes[0]) 413 428 except: 414 logging.info("XML document does not contain P(r) information.\n %s" % sys.exc_value) 429 msg = "XML document does not contain P(r) " 430 msg += "information.\n %s" % sys.exc_value 431 logging.info(msg) 415 432 416 433 return state … … 437 454 #TODO: eventually remove the check for .xml once 438 455 # the P(r) writer/reader is truly complete. 439 if extension.lower() in self.ext or \ 440 extension.lower() == '.xml': 456 if extension.lower() in self.ext or extension.lower() == '.xml': 441 457 442 458 tree = etree.parse(path, parser=etree.ETCompatXMLParser()) 443 459 # Check the format version number 444 # Specifying the namespace will take care of the file format version 460 # Specifying the namespace will take care of the file 461 #format version 445 462 root = tree.getroot() 446 463 447 entry_list = root.xpath('/ns:SASroot/ns:SASentry', namespaces={'ns': CANSAS_NS}) 464 entry_list = root.xpath('/ns:SASroot/ns:SASentry', 465 namespaces={'ns': CANSAS_NS}) 448 466 449 467 for entry in entry_list: … … 460 478 461 479 # Return output consistent with the loader's api 462 if len(output) ==0:480 if len(output) == 0: 463 481 return None 464 elif len(output) ==1:482 elif len(output) == 1: 465 483 # Call back to post the new state 466 484 self.call_back(output[0].meta_data['prstate'], datainfo = output[0]) … … 498 516 datainfo = DataLoader.data_info.Data1D(x=[], y=[]) 499 517 elif not issubclass(datainfo.__class__, DataLoader.data_info.Data1D): 500 raise RuntimeError, "The cansas writer expects a Data1D instance: %s" % str(datainfo.__class__.__name__) 518 msg = "The cansas writer expects a Data1D " 519 msg += "instance: %s" % str(datainfo.__class__.__name__) 520 raise RuntimeError, msg 501 521 502 522 # Create basic XML document
Note: See TracChangeset
for help on using the changeset viewer.