The concept of pseudo potential families in AiiDA is purely a tool
to make working with pseudos easier, but they are in no way
required.
Many calculations require a pseudopotential file for each element in
the structure, and traditionally, since often a PP is represented by
a single file, each PP is passed as an individual node to an AiiDA
process.
If we take the example of the `PwCalculation` plugin of
`aiida-quantumespresso`, it expects `UpfData` nodes in the `pseudos`
namespace for each element in the structure in the structure.
A `UpfData` can be created by passing the filepath of the
pseudopotential to the constructor and so you can build the inputs,
for example for SiGe, as follows:
inputs = {
'pseudos': {
'Si': UpfData('/path/to/Si.upf'),
'Ge': UpfData('/path/to/Ge.upf'),
},
....
}
The concept of a pseudopotential family is just something on top to
make this process easier.
Not only does it prevent that you create the same `UpfData`
everytime, but simply reuse it if it already exists in the database,
it also makes it easy to retrieve them from the database.
A family is nothing more than an AiiDA `Group` that contains 1
pseudopotential node for each element.
This allows you to do something like:
pseudos =
family.get_pseudos(('Si', 'Ge'))
which would return the dictionary as shown in the previous example.
In `aiida-pseudo` we have extended this concept by making the family
even more powerful and also allow to provide recommended cutoffs
(which is useful for plane-wave based codes like QE).
For example, it allows you to get the recommended cutoffs as:
family.get_recommended_cutoffs(('Si',
'Ge'))
In addition, as you noticed, we also added functionality that can
automate the creation of certain families with all the PP nodes and
the associated cutoffs for the SSSP and Pseudo-dojo.
This works well for these pseudo libraries because they have
well-defined families with stable URLs to download the
pseudopotential files and metadata.
However, this is not required to create individual pseudopotential
nodes or even families.
I would refer you
to
the documentation [1] for more details on how to create your
own custom families.
What calculations are you running?
Are you using a public plugin package, or did you write your own?
If the pseudopotential files are also represented by a single file,
you may just use the `SinglefileData` data plugin that comes with
`aiida-core`.
If your calculation plugin accepts this you don't need anything more
specific, but of course if there is additional functionality that
you want to add on the pseudo node, you can make your own plugin.
I have not worked with basis sets myself, but I know that they can
be used with
SIESTA
and
CP2K which both
have well established plugins.
So maybe you look there to see how they deal with this.
There is also
this
open issue [2] on `aiida-pseudo` on this very question of
maybe integrating support for basis sets.