Exemplo n.º 1
0
    def _selectItemByClass(self, item, className):

        if not item.node.isRoot():

            data = item.node.pointer.get()
            self.toggleItemSelection(
                item, isinstance(data,
                                 Domain.getObjects()[className]))
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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())
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
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))
Exemplo n.º 6
0
    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:
Exemplo n.º 7
0
    """ 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']: