def _selectItemByClass(self, item, className): if not item.node.isRoot(): data = item.node.pointer.get() self.toggleItemSelection( item, isinstance(data, Domain.getObjects()[className]))
def _loadSet(self, dbName, dbPreffix): from pyworkflow.mapper.sqlite import SqliteFlatDb db = SqliteFlatDb(dbName=dbName, tablePrefix=dbPreffix) if dbPreffix: setClassName = "SetOf%ss" % db.getSelfClassName() else: setClassName = db.getProperty('self') # get the set class name # FIXME: Check why the import is here from pyworkflow.em import Domain setObj = Domain.getObjects()[setClassName](filename=dbName, prefix=dbPreffix) return setObj
def checkPlugins(): """ Discover all plugins and print some info. """ plugins = Domain.getPlugins() env = createEnvironment() print("Plugins:") for k, plugin in plugins.iteritems(): print("-", plugin.__name__) plugin.Plugin.defineBinaries(env) print("\nDefined binaries: ") print(env.printHelp()) if args.verbosity > 0: print("Objects") pwutils.prettyDict(Domain.getObjects()) print("Protocols") pwutils.prettyDict(Domain.getProtocols()) print("Viewers") pwutils.prettyDict(Domain.getViewers())
def evalParamCondition(self, paramName): """Evaluate if a condition is True for a give param with the values of a particular Protocol""" param = self.getParam(paramName) if not param.hasCondition(): return True condStr = param.condition.get() localDict = {} globalDict = dict(globals()) # FIXME: Check why this import is here from pyworkflow.em import Domain globalDict.update(Domain.getObjects()) for t in param._conditionParams: if self.hasParam(t) or self._protocol.hasAttribute(t): localDict[t] = self._protocol.getAttributeValue(t) return eval(condStr, globalDict, localDict)
def printPluginInfo(pluginName, verbosity): """ Print info about a given plugin """ showBase = verbosity > 0 subclasses = {} emCategories = [('Imports', em.ProtImport), ('Micrographs', em.ProtMicrographs), ('Particles', em.ProtParticles), ('2D', em.Prot2D), ('3D', em.Prot3D)] plugin = Domain.getPlugin(pluginName) version = PluginInfo('scipion-em-%s' % pluginName).pipVersion print("Plugin name: %s, version: %s\n" % (pluginName, version)) print("Plugin binaries: ") env = createEnvironment() plugin.Plugin.defineBinaries(env) print(env.printHelp()) # print bibtex bib, error2 = getSubmodule(pluginName, 'bibtex') if bib is None: if error2 is None: msg = " missing bibtex" else: msg = " error -> %s" % error2 else: print("Plugin references:") bibtex = pwutils.parseBibTex(bib.__doc__) for citeStr in bibtex: text = Protocol()._getCiteText(bibtex[citeStr]) print(text) # print protocols sub, error = getSubmodule(pluginName, 'protocols') if sub is None: if error is None: msg = " missing protocols" else: msg = " error -> %s" % error else: for name in dir(sub): attr = getattr(sub, name) if inspect.isclass(attr) and issubclass(attr, Protocol): # Set this special property used by Scipion attr._package = plugin subclasses[name] = attr print("Plugin protocols:\n") print("%-35s %-35s %-10s %-s" % ('NAME', 'LABEL', 'CATEGORY', 'DESCRIPTION')) prots = OrderedDict(sorted(subclasses.items())) for prot in prots: label = prots[prot].getClassLabel() desc = getFirstLine(prots[prot].__doc__) cat = 'None' for c in emCategories: if issubclass(prots[prot], c[1]): cat = c[0] if prots[prot].isBase(): cat = 'Base prot' # skip Base protocols if not requested if prots[prot].isBase() and not showBase: continue else: print("%-35s %-35s %-10s %-s" % (prot, label, cat, desc))
help="Show plugin summary (protocols, citations, etc). " "If verbosity > 0, base protocol classes will be shown. ") add("--install", nargs='+', help="Specify a binary version to install. " "If you pass a second argument, it should a path to the installation" "and a link will be created. ") add("-v", "--verbosity", action="count", default=0) args = parser.parse_args() pluginName = args.plugin if not pluginName: # List all plugins checkPlugins() else: plugin = Domain.getPlugin(pluginName) print("Plugin: %s" % pluginName) if args.install: if len(args.install) > 2: print("ERROR: --install option should have one or two arguments. ") installBinary(plugin, target=args.install[0]) if len(args.install) > 1: print( "TODO: Installation via a symbolic link is not yet implemented. " ) else: if args.check: checkPlugin(pluginName) if args.info:
""" Get the first non empty line from doc. """ if doc: for lines in doc.split('\n'): l = lines.strip() if l: return l return '' n = len(sys.argv) if n > 4: usage("Incorrect number of input parameters") if n == 1: # List all plugins plugins = Domain.getPlugins() print("Plugins:") for k, v in iteritems(plugins): print("-", k) print("Objects") pwutils.prettyDict(Domain.getObjects()) print("Protocols") pwutils.prettyDict(Domain.getProtocols()) print("Viewers") pwutils.prettyDict(Domain.getViewers()) elif n == 2: if sys.argv[1] in ['-h', '--help', 'help']: