Ejemplo n.º 1
0
    def load_paw(cls, **kwargs):
        '''
        py:method:: load_paw([family=None][, element=None][, symbol=None])
        Load PawData nodes from the databank. Use kwargs to filter.

        :return: a list of PawData instances
        :rtype: list
        :key str family: Filter by family
        :key str element: Filter by chemical symbol
        :key str symbol: Filter by PAW symbol (example: As vs. As_d)
        :raises ValueError: if no PAWs are found
        '''
        usage_msg = 'use import_family or from_folder to import PAWs'
        error_msg = 'no PAWs found for the given kwargs!\n'+usage_msg
        group = kwargs.pop('group', None)
        family = kwargs.pop('family', None)
        silent = kwargs.pop('silent', None)
        if not (group or family):
            q = QueryTool()
            q.set_class(cls)
            for k, v in kwargs.iteritems():
                q.add_attr_filter(k, '=', v)
            res = list(q.run_query())
        else:
            if family:
                group, created = cls.get_or_create_famgroup(family)
            elif group:
                created = not group._is_stored
            try:
                paw_filter = cls._node_filter(**kwargs)
                res = filter(paw_filter, group.nodes)
            except ValueError as e:
                if silent:
                    res = []
                elif created:
                    raise NotExistent('No family with that name exists')
                else:
                    raise e

        if not res and not silent:
            raise ValueError(error_msg)
        return res
Ejemplo n.º 2
0
    calc.use_structure(struct)
    calc.use_parameters(parameters)

    from aiida.orm.querytool import QueryTool
    for e in elements:
        fname = None
        for name in sssp_names:
            if name.lower().startswith("{}.".format(e.lower())):
                fname = name
            if name.lower().startswith("{}_".format(e.lower())):
                fname = name

        q = QueryTool()
        q.set_class(UpfData)
        q.add_attr_filter('filename', 'exact', fname)
        upf = q.run_query().next()
        calc.use_pseudo(upf, kind=e)

    calc.use_kpoints(kpoints)

    if settings is not None:
        calc.use_settings(settings)

    from aiida.common.exceptions import InputValidationError

    try:
        if submit_test:
            subfolder, script_filename = calc.submit_test()
            print "Test_submit for calculation (uuid='{}')".format(
                calc.uuid)
Ejemplo n.º 3
0
def get_cifs_with_name(filename):
    q = QueryTool()
    q.set_class(DataFactory('cif'))
    q.add_attr_filter('filename', '=', filename)
    return q.run_query()
Ejemplo n.º 4
0
 def load_paw(cls, **kwargs):
     q = QueryTool()
     q.set_class(cls)
     for k, v in kwargs.iteritems():
         q.add_attr_filter(k, '=', v)
     return list(q.run_query())