Giter VIP home page Giter VIP logo

carmm's People

Contributors

akashhiregange avatar debbielt avatar gabrielbram avatar garylzw avatar hthomas0 avatar ikowalec avatar jackwarren23 avatar kush2803 avatar larakabalan avatar logsdail avatar oscarvanvuren avatar owainbeynon avatar pavelstishenko avatar richardsa18 avatar robinsonmt1 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

carmm's Issues

GAWPP - Generalised Adsorption Workflow Placeholder Project (Name pending)

GAWPP - Generalised Adsorption Workflow Placeholder Project

The intention of this program is to generate a general workflow for exploring configurational space from a large number of candidate structures, whittling down the number of structures with less expensive methods, then using the most stable structures to carry out more sophisticated electronic structure calculations.

The intention of this software is to generate stable candidate structures for the time being (ie., placing an adsorbate on a sensible positions). However, the platform should be as extensible, allowing the user to select calculators, or easily letting developers add their own contributions to each stage of the processes below. Furthermore, allowing the user to define their own configurational space should open the software to a greater variety of applications, and enable future development.

However, the goal at present will be to accomplish something pretty simple - find the most stable adsorption site and run a DFT geometry optimization on it.


Code structure

The early work of this project is centred around making making a generalisable inputs and outputs of each stage of this process. At present this can be mapped out into roughly 4 stage:

  1. Top level Input: at the very basic level, reads in the adsorbate and adsorbate site. During development (where some features may not automate certain capabilities), the user (and developer) can input desired parameters for selecting the configurational space they wish to explore (ie., the atoms and positions to adsorb to, the range of angles the adsorbate should vary etc.), and whittle down the potential number of criteria to search over.

Input: Structure of adsorbate, structure of adsorbate site, user input configurational space vectors.
Output: Ditto to Stage 2).

  1. Configurational space define: defines the configurational space for the adsorption of molecule at a certain site. The configurational space vector includes the potential atoms which can be adsorbed to (ie., positions on the surface), angle with respect to the adsorption site. There are probably a lot of ways to structure this, but for now, I believe this should take the form of an overall Configurational Space object, containing other objects pertaining to other types of criteria (ie., angles, positions, species changes etc.), or one big messy object.

At first, this should probably accept some rigid user input (ie., the software is told a list of positions corresponding to the most stable sites known to the user) and crude automation procedures (ie., a big sweep over all the possible angles around a rotation point). However, methods can be added for specific structures which are commonly encountered, such as zeolites or metallic facets, where easily definable adsorption sites may be identified and incorporated in to the configurational space automatically.

Input: Structure, user input configurational space vectors and their desired scope.
Output: Complete list of configurational space and associated candidate structures.

  1. Filtering: A set of Filter objects designed to parse down the configurational space will be applied - these will take the form of simple heuristics (ie. hard sphere potentials which exclude overlap), to MM force-field simulations, or even GGA DFT. The Filter object should include the desired ASE Calculator (or internal calculator) and remaining candidate structures, where the least feasible configurations are excluded by cruder methods, and the more difficult to evaluate sections of the potential energy landscape are explored with more sophisticated techniques.

A further filter may be introduced based on 'similarity criteria' - which excludes certain structures which are provably identical of very similar to the point where they would converge to the same structural minima in a geometry optimisation calculation. Possibility of symmetry filters or distance methods.

Input: The filter accepts the current list of candidate structures and the configuration space.
Output: The filter should then output a set of energies (if available) and the accepted candidate structures (which may be accepted or rejected for further calculations with a certain set of criteria).

3a) Analysis: Outputs plots and energetic analysis of the landscape. Shows which stage certain configurations were rejected and allows the PES of different calculators to be compared. Enables later validation of the method by comparing cruder EMT/MM methods against DFT - ensures that the software isn't filtering out good guesses or including garbage.

  1. Final, high quality calculations: Using a desired calculator object, perform whatever calculation the user wants to perform (single-point/geometry optimization etc.) and outputs.

Scope

By having a rather stripped down core set of functionalities, the internal workflow should be fairly straightforward to implement. For the time being, this software should act as a platform to pass data from one part to another, while more complex automation should be handled by auxiliary functions to wrap around this routine. In particular, this applies to the definition of the desired configurational space for a given structure, and filters based on a set of system specific criteria. This will hopefully make it easy to extend the code, avoid breaking core functionality when new features are added, and make the initial implementation simpler.

Stage 3 can be skipped quite easily, and the raw set of the structures may be input into a calculator. This may be useful if a cheap method is being used to iterate over a large configurational space. This will also make testing significantly easier.


Plan

I will set up a branch and set-up the core modules. People can take up whatever they want, and feel free to get in touch! I know @PavelStishenko and @JackWarren23 were keen to contribute.

312893453_492829059436685_2249646250695668003_n
312903435_953237535637611_398049762134285629_n

Accepting Multiple "Output" Options in React.py

As the 'output' key word is a dictionary key, it only maps to one value. However, this option can be invoked several times.. ASE has a separate optional argument for 'output' for the Aims calculator object, so implementing this option similarly would likely resolve this.

Dihedrals?

Integrate ability to assess dihedral angles into bond length/angle analysis.

radial_distribution_function does NOT behave correctly for tall thin cells

The supercell for the rdf function doesn't work correctly with long tall cells, as used in the regression tests. Currently for a bulk material it returns only 22 interactions, but this seems very small (!) within a 10 angstrom radius so needs double-checking.

@owainbeynon I think it is because the cell for cutouts is only a 2x2x2 - does this need to be checked against the radius requested? @ikowalec the alternative is cutout_sphere checks the cell size against the incoming radius requests, and increments the cell size if inappropriately small? Thoughts?

Restarting wrapper for ASE calculators

The problem

Several ASE workflows are overly optimistic about capabilities of calculators to converge for any geometry. So when a calculators fails to converge for some geometry generated by Dynamics, Optimization, or NEB algorithms, there is no way to recover and the whole calculation fails.

Suggestion

It looks possible to implement a Calculator class that would wrap another Calculator. The wrapper should be capable to catch exceptions raised by the wrapped calculator, and to recreate it with slightly tuned parameters, that should give better chance for convergence. Possible targets for parameters tuning are initial spins, mixer parameters, initial density matrix, etc.

Wrapper implementation details

Wrapper constructor arguments

The Wrapper Calculator should be created using two parameters: a list of tuned parameters for restarts and a function (or callable object) that creates an instance of the wrapped calculator with tuned parameters.

nanoparticle construction

This probably needs to go into ASE, where old scripts can be ported for generic structure creation. Can this also be coupled with Wulff construction with bulk models?

Automated Calculation Submission Protocol

This protocol seeks to automate the transfer and submission of calculations from local machines to the desired HPC. The long term aim of this subproject is to enable users to submit and run calculations entirely from a local Python interface, and call back the files for analysis. This should enable the simple generation of systematic and high-throughput without some of the more fiddly aspects of transferring files and parameters through the terminal.

I currently have a crude version in Jupyter Notebook which just about works. This version simply calls bash commands from the IPython shell. Furthermore, an interface is implemented to automatically generate the submission script, with function calls to change appropriate parameters. Sensible defaults for the most commonly used packages will be added in future. The intended calculation (in the form of a Python script) is transferred from the Notebook to a .py script, which in turn is copied to the desired file and transferred via. SCP. The submission can then be invoked by a call function, which submits the calculation via. SSH. In future, a suite of functions designed to recall files to the local machine will be implemented, which should make data analysis and backing up data more convenient.

However, this version is not as automated as desired - setting a range of calculations which require subtly different inputs but different initialisations still involves manually changing the parameters rather than something more sophisticated (like looping through a list of options). Furthermore, the code needs to be outfitted with appropriate warnings and crashes, and I imagine there are a substantial number of pitfalls one can fall into without them.

Furthermore, where initial structures need reorienting (especially relevant for adsorption studies), there is still the rather laborious process of manipulating the structure to give an appropriate starting guess. As such, structures still need to be supplied on an individual basis if they cannot be generated through ASE or other Python interfaces. Automating this is beyond the scope of this subproject, but this may be remedied by future work in adsorbate rotator, or another tool I am not yet aware of.

Hydrating/solvating a model explicitly?

Can we automate the procedure of solvating a molecule/system, say e.g. whole system is space available (molecule) or maybe just around an adsorbate (surface, zeolite)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.