Package: aiida-aimall
!This README and all documentation is a work in progress!Copyright noticeThis repository contains modified versions of the calculations and parsers presented inAiida-Gaussian. Copyright (c) 2020 Kristjan Eimre. The modifications basically amount to adding the wfx file to the retrieved nodes and adding some groups/extras to calculation output.Also, the (incomplete) testing framework is heavily influenced by the infrastructure presented inaiida-quantumespresso.  Copyright (c), 2015-2020, ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE
(Theory and Simulation of Materials (THEOS) and National Centre for
Computational Design and Discovery of Novel Materials (NCCR MARVEL))aiida-aimallA plugin to interface AIMAll with AiiDARepository contents.github/:Github Actionsconfigurationworkflows/ci.yml: runs tests, checks test coverage and builds documentation at every new commitpublish-on-pypi.yml: automatically deploy git tags to PyPI - just generate aPyPI API tokenfor your PyPI account and add it to thepypi_tokensecret of your github repositoryconfig/config files for testing/docs environmentcode-aim.yamlconfig file for building precommit and test envscode-gwfx.yamlconfig file for building precommit and test envsprofile.yamlconfig file for aiida profileprofile.yamlconfig file for localhost computerprofile.yamlsetup file for localhost computeraiida_aimall/: The main source code of the plugin packagedata/: A newAimqbParametersdata class, used as input to theAimqbCalculationCalcJobclasscalculations.py: A newAimqbCalculationCalcJobclass, andGaussianWFXCalculation, a modified version ofGaussianCalculationfromAiiDA Gaussianparsers.py: A newParserfor theAimqbCalculation, andGaussianWFXParser, a modified version ofGaussianBaseParserfromAiiDA Gaussianworkchains.py: NewWorkChains.MultiFragmentWorkChainto fragment molecules using cml files from the Retrievium database and submit Gaussian calculations for the fragments using functions infrag_functionsfromsubproptools GithubG16OptWorkchainto take output fromMultiFragmentWorkChainand submit Gaussian optimization calculationsAimAllReorWorkChainto runAimqbCalculationon output fromGaussianWFXCalculations, then reorient to coordinate systems defined insubreorfromsubproptools Githubcontrollers.py: Workflow controllers to limit number of running jobs on localhost computers.AimReorSubmissionControllerto controlAimReorWorkChains. These useparent_group_labelfor the wavefunction file nodes fromGaussianWFXCalculationsAimAllSubmissionControllerto controlAimqbCalculations``. These useparent_group_labelfor the wavefunction file nodes fromGaussianWFXCalculation`sGaussianSubmissionControllerto controlGaussianWFXCalculations. This is mostly intended to have a arbitrarily large number of max concurrents and scan for output structures ofAimReorWorkchains to submit to a remote clusterdocs/: Source code of documentation forRead the Docsexamples/: An example of how to link the four controllers in an overall workflowtests/: Basic regression tests using thepytestframework (submitting a calculation, ...). Installpip install -e .[testing]and runpytest.conftest.py: Configuration of fixtures forpytest.gitignore: Telling git which files to ignore.pre-commit-config.yaml: Configuration ofpre-commit hooksthat sanitize coding style and check for syntax errors. Enable viapip install -e .[pre-commit] && pre-commit install.readthedocs.yml: Configuration of documentation build forRead the Docs.isort.cfg: Configuration to make isort and black precommit actions compatibleLICENSE: License for your pluginREADME.md: This filepyproject.toml: Python package metadata for registration onPyPIand theAiiDA plugin registry(including entry points)FeaturesFeature specificityMany of the workflows provided are specific to my field of study, but the calculations and parsers should be widely useful. Again, as many things designed here were specific to my usage, there are some quirks that must be used at this time, but as I progress with this, I'll endeavour to replace them as optional parts.Many calculations and parsers store results in groups. I have used this, due to my usage of the FromGroupSubmissionController from aiida-submission-controller. I wrote for wfx files to be stored in a group in a Gaussian calculation because then a submission controller looks for wfx files in that group.What this means for the general user is that currently, some nodes are going to be stored in groups, and some group labels are to be provided to certain CalcJobsFor similar reasons as above, many Parsers/CalcJobs add extras to the node, typically SMILES in my caseSome calculations then, require an extra label (frag_label or fragment_label) to be provided as input to tag the outputFeature ListAimqbParameters Data class to validate command line parameters used to run AIMAll calculationsAimqbParameters=DataFactory('aimall.aimqb')aim_params=AimqbParameters(parameter_dict={"naat":2,"nproc":2,"atlaprhocps":True})will check for instance, that the value supplied for naat (number of atoms at a time) is an integer.Most of the options provided atAIMQB Command Lineare defined and validatedRun an AIMQB calculation using a valid starting file format (WFN/WFX/FCHK as SinglefileData)AimqbCalculation=CalculationFactory('aimall.aimqb')builder=AimqbCalculation.get_builder()builder.parameters=aim_paramsbuilder.file=SinglefileData('/absolute/path/to/file')# Alternatively, if you have file stored as a string:# builder.file = SinglefileData(io.BytesIO(wfx_file_string.encode()))submit(builder)InstallationThe aiida-dataframe dependency tables requires h5 headers on your system. You may already have this, or not. One easy way that allows installation of the headers using the h5py package(conda-env)condainstallh5py(conda-env)pipinstallaiida-aimall
verdiquicksetup# better to set up a new profileverdipluginlistaiida.calculations# should now show your calclulation pluginsUsageHere goes a complete example of how to submit a test calculation using this plugin.A quick demo of how to submit a calculation:verdidaemonstart# make sure the daemon is runningcdexamples
./example_01.py# run test calculationverdiprocesslist-a# check record of calculationDevelopmentgitclonehttps://github.com/kmlefran/aiida-aimall.cdaiida-aimall
pipinstall--upgradepip
pipinstall-e.[pre-commit,testing]# install extra dependenciespre-commitinstall# install pre-commit hookspytest-v# discover and run all testsSee thedeveloper guidefor more information.LicenseMITContactkgagnon@lakeheadu.ca