def get_structure(self, *args): if len(args) == 2: pdbId, fileName = args elif len(args) == 1: fileName = args[0] pdbId, fileName = str(fileName), fileName else: raise ValueError( "Error, input should be (id, fileName) or (fileName))") if re.match("http(s?)://", fileName): r = requests.get(fileName) if r.ok: fileName = StringIO(r.text) else: raise Exception("Error downloading pdb") try: if not isinstance(fileName, str) or not fileName.endswith(".gz"): structure = PDBParser.get_structure(self, pdbId, fileName) else: with gzip.open(fileName) as f: structure = PDBParser.get_structure(self, pdbId, f) except Exception as e: print(e) structure = MMCIFParser.get_structure(self, pdbId, fileName) if self.removeHeteroDuplicated: structure = self.filterOutDuplicated(structure) return structure
def __str__(self): self.parse() contents = StringIO() for (line_type, components) in self._contents: if line_type == 'blank': contents.write("%s\n" % (components[0])) elif line_type == 'all_comment': contents.write("%s\n" % (components[0])) elif line_type == 'hostname': (hostname, tail) = components contents.write("%s%s\n" % (hostname, tail)) # Ensure trailing newline contents = contents.getvalue() if not contents.endswith("\n"): contents += "\n" return contents
def test_from_python_output(): import logging, sys if sys.version_info[0] < 3: from StringIO import StringIO else: from io import StringIO # create an artificial logger using the logging module logger = logging.getLogger("XXX.YYY") # add handlers out, err = StringIO(), StringIO() _warn_err = logging.StreamHandler(err) _warn_err.setLevel(logging.WARNING) logger.addHandler(_warn_err) _debug_info = logging.StreamHandler(out) _debug_info.setLevel(logging.DEBUG) _debug_info.addFilter(bob.core.log._InfoFilter()) logger.addHandler(_debug_info) # now, set up the logger logger = bob.core.log.setup("XXX.YYY") # send log messages bob.core.log.set_verbosity_level(logger, 2) logger.debug("This is a test debug message") logger.info("This is a test info message") bob.core.log.set_verbosity_level(logger, 0) logger.warn("This is a test warn message") logger.error("This is a test error message") out = out.getvalue().rstrip() err = err.getvalue().rstrip() assert out.startswith("XXX.YYY") assert "INFO" in out assert out.endswith("This is a test info message") assert err.startswith("XXX.YYY") assert "ERROR" in err assert err.endswith("This is a test error message")
def test_from_python_output(): import logging, sys if sys.version_info[0] < 3: from StringIO import StringIO else: from io import StringIO # create an artificial logger using the logging module logger = logging.getLogger("XXX.YYY") # add handlers out, err = StringIO(), StringIO() _warn_err = logging.StreamHandler(err) _warn_err.setLevel(logging.WARNING) logger.addHandler(_warn_err) _debug_info = logging.StreamHandler(out) _debug_info.setLevel(logging.DEBUG) _debug_info.addFilter(bob.extension.log._InfoFilter()) logger.addHandler(_debug_info) # now, set up the logger logger = bob.core.log.setup("XXX.YYY") # send log messages bob.core.log.set_verbosity_level(logger, 2) logger.debug("This is a test debug message") logger.info("This is a test info message") bob.core.log.set_verbosity_level(logger, 0) logger.warn("This is a test warn message") logger.error("This is a test error message") out = out.getvalue().rstrip() err = err.getvalue().rstrip() assert out.startswith("XXX.YYY") assert "INFO" in out assert out.endswith("This is a test info message") assert err.startswith("XXX.YYY") assert "ERROR" in err assert err.endswith("This is a test error message")
def expand_macro(self, formatter, name, content): (args, kwargs) = parse_args(content, False) page_name = self.MACRO_PAGES + name page = WikiPage(self.env, page_name) if not page.exists: raise RuntimeError(u'Can\'t find page', page_name) for i, arg in enumerate(args): kwargs[unicode(i+1)] = arg text = RelaxedIdTemplate(page.text).safe_substitute(kwargs) out = StringIO() Formatter(self.env, formatter.context).format(text, out) out = out.getvalue().strip() if out.startswith(u'<p>'): out = out[3:] if out.endswith(u'</p>'): out = out[:-4] return out