-
Notifications
You must be signed in to change notification settings - Fork 3
/
TODO
49 lines (35 loc) · 2.14 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Finish writing tests for Interaction Mediator
In order to prevent writing before the chkfile index is set, need to wait to initialize densities, or not save to chkfile when initializing densities.
Add the external methods for at least molpro
Be sure to account for saving densities properly and loading the saved densities for each supersystem separately.
Todo For 1.0 Release
1.0 Release is for closed-shell only.
1. Finalize Code
a. Optimize algorithms and remove redundancy
- Ensure proper polymorphism with periodic systems and open shell matrices.
- Ensure follows SOLID design principles.
- Potentially implement the following OOP Design patterns: Adapter (interface for 3rd party packages), Command (Supersystem to subsystem), Strategy (For polymorphism), Template(for running an overall embedding calculation).
b. Ensure proper variable names
c. Ensure proper OO principles (https://javarevisited.blogspot.com/2018/07/10-object-oriented-design-principles.html).
d. Decide on module structure and class names.
e. Squish bugs
f. Finish timing decorator method
2. Write Documentation -- Following Google Docstrings format (https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)
a. Document all modules and classes properly.
b. Add quick guide on how to use the software.
c. Write several examples.
d. Use Sphinx?
3. Write Tests -- Tests using unittest module.
a. Ensure all methods and variations are tested.
b. Write some tests designed to fail.
c. Write automatic test runner method. Code should be able to be called using: qsome.verify() or something along those lines.
4. Package for release.
a. Update the Pypy packager (specify prerequisites)
b. Write installation instructions and trouble shooting.
c. Release on GitHub
d. Decide on License
e. Add CHANGELOG
Stretch Goals
1. Add unrestricted open shell calculation.
2. Add restricted open shell calculation.
3. Interface with other codes (Bagel, OpenMolcas, Molpro, etc.)