peawagon / kaplan Goto Github PK
View Code? Open in Web Editor NEWConformer searching package.
License: MIT License
Conformer searching package.
License: MIT License
@PeaWagon
In the FT1-Test 3: Test Output Generation, “Initial State: an optimized input molecule versus an unoptimized input molecule.” I am not sure this state could be considered as Initial state. Please correct me if I am wrong.
Your ProblemStatement.tex file will be improved for diffs if you use 80 characters per line. Your editor should support hard wrapping at 80 characters.
Please see commit 6d2e04c
Crossover is implemented in mutations module.
@PeaWagon In some tests you mentioned to the "numpy.testing.assert" to perform test, I did not make sense of it, It should be better include a blurb to explain of it.
Hello @PeaWagon
I apologize for the lateness of my issues. Perhaps they can be useful for the final submission at this point.
9.4.4 Access Routine Semantics: get fitness(xyz coords, method, basis, fit form, coef energy, coef rmsd, charge, multip): why is the transition: None? and exception: None?
Shouldn't there be at least be an exception as calc fitness has?
[MIS.pdf]
(https://github.com/PeaWagon/Kaplan/blob/master/docs/Design/MIS/MIS.pdf)
Hi Jenn,
I am not sure if UC3 is needed. If the goal changes, then its not the same software anymore. Can you please elaborate if you see a change in the goal?
Malavika
@PeaWagon In the section SRS Verification Plan, there are a lot of the information and questions in your mind relating to the Likely Changes. I think in this section these questions are not required because for me as a reviewer these questions led a considerable confusion.
Hello @PeaWagon
I apologize for the lateness of my issues. Perhaps they can be useful for the final submission at this point.
The \tableofcontents doesn't have the references listed. Also you might be missing some references listed.
[MIS.pdf]
(https://github.com/PeaWagon/Kaplan/blob/master/docs/Design/MIS/MIS.pdf)
Some traceability information is missing from the SRS:
Being able to write the molecule in z-matrix format is not enough to identify rotatable bonds. In a ring compound, there are "missing dihedrals" in the rings. Derrick's software will automatically generate all dihedrals if you like. The number of rotatable bonds is very often (much!) different from the number of dihedrals in the z matrix -- it can be bigger but also can be (much) smaller. E.g., in a linear hydrocarbon C_{n} H_{2n+2} you have n-1 rotatable bonds but 3n dihedrals in the z-matrix. For a branched isomer of the same hydrocarbon the mismatch can be even worse.
If you keep a list of dihedral angles, then for molecules without symmetry, different lists of dihedrals are different conformers. For molecules with symmetry you could label "equivalent dihedrals" either automatically (hard) or manually (easy) or us the RMSD trick to find two conformers that are equivalent by symmetry.
Page 3. As before, your list of dihedrals from a z-matrix will not be adequate. Certainly different atom permutations gives different (and terrible!) dihedrals in a z-matrix. But that's irrelevant....you just can't make a dihedral angle list in this way. Derrick has an automated way to do this though.....based on the (standard) approach for finding (redundant) internal coordinates in Dalton and Gaussian.
4.4 Can link to cardbordlint (or whatever it is called now) repo.
5.1.1.2 For a lot of the Dunning (cc-pVXZ) basis sets K is missing. So that makes this "basis set missing test" easy. There is not only the Basis Set Exchange but a (nicer) porcelain available through MolSSI.
5.1.1.2 With very bad geometries a conformer may still be findable, even the best. If the rotatable bonds are located correctly things should still work....no matter how bad it is. On the other hand, if you enter cubane (no rotatable bonds) when you want a different isomer, then all hell will break loose....
Probably for these tests should give very specific molecules/molecular geometries to test on. It won't be too hard, I think.....
Overall the issue I see is algorithmic and specificity. Simple tests using (substituted) hydrocarbons or small di/tri-peptides would suffice. For amino acids, actually, we have an exhaustive list of conformers (and their relative stability) in hand (work with Chunying, Farnaz, Ramon, etc.).
The following is a list of typos and other minor consistency issues with the current draft of the SRS:
@PeaWagon, I suggest that you add `.DS_Store' files to your .gitignore file.
@PeaWagon
In “Test Input Geometry” It should be considered geometry values as you think purposefully bad or invalid. The example is not sufficient and you should specify a set of inputs as well as the output which is expected regarding to the given input.
The ring module should have the following update rule:
After reading the SRS, I'm not entirely sure about the purpose of Kaplan. I understand that it finds a set of conformers for a molecule, but what makes one potential set of conformers a "better fit" than another? My best guess is that the "best fit" set of conformers are the conformers that are most likely to actually occur in nature. If this is correct, it should be explicitly stated, and I think the Problem Description section 5.1 is the place to do that.
It may also be that if I had all of the characteristics of the intended reader, I would have understood this even without it being explicitly mentioned, in which case it might not be necessary to add anything (though I still think it couldn't hurt).
... by interesting, I mean it doesn't write the correct output. May have to find a bug in Kaplan or Vetee.
What happened:
When the output was directed to the kaplan_output directory of the git repository, the file was overwritten (in the sense that the time stamp was changed), but the new molecule was not added to the xyz file (it was still butane and not ethanol).
What is puzzling:
This problem doesn't occur when running outside of the github repository. Perhaps that is the problem (if version control doesn't allow for the update to run).
Hello @PeaWagon
I apologize for the lateness of my issues. Perhaps they can be useful for the final submission at this point.
calc fitness(fit form, sum energy, coef energy, sum rmsd, coef rmsd):
Shouldn't there be a transition instead of None, based off what the Exported Access Programs table shows?
[MIS.pdf]
(https://github.com/PeaWagon/Kaplan/blob/master/docs/Design/MIS/MIS.pdf)
My problem statement document is located in docs/ProblemStatement/ProblemStatement.pdf (or tex). Please let me know if I should be raising this issue on the cas741 gitlab webpage instead. Instructions state to chose the group's repository. I wasn't quite sure if that was the course repo or not (no one else seems to have made an issue there for their problem statements).
Thanks,
Jen
With regards to the Goal Statements, I have the following questions/comments:
I noticed some symbols and acronyms that were used in the body of the SRS but not defined in the Table of Symbols or Table of Acronyms.
Missing from Table of Symbols
Missing from Table of Acronyms
I also found a couple entries that were not necessary in these tables:
See commit 104d150
👍
@PeaWagon, AC8 made me a bit curious, if the programming language is a likely change, this impacts most of the modules I assume, if not all, which contradicts this statement in the screenshot below or maybe I am wrong.
I am looking at this from my own project point of view as well and want to understand more...how changing the programming language impacts the design and should this be in the AC list?
Maybe @smiths has some opinion about this.
@PeaWagon
Please remove this text from title page:
@PeaWagon In the three tests which you mentioned in section FT1 please consider the following item:
For the Requirements section, I have the following comments/questions:
Thank you for your patience with me finishing this. I anticipate that there will be some muddlement with how the math is presented - please let me know if I need to fix it. 867af31
@PeaWagon Regarding with that you have used the file name in the table tests , it should be referenced to exact path “src” folder on your project in the github in the related place such as section 5 or 5.1.
Hi Jenn,
This is my last issue. :)
It's a well done document.
In the services for M2, you say that M2 `communicates ... to M3'. From your description, I think M3 uses M2 and you don't have to mention it in the reverse way (M2 communicates to M3). Just for clarity, Can you please rewrite this sentence ?
Malavika
@PeaWagon (mostly minor issue) Please remove the Dr.smith ‘s comments from your document as Dr.smith has put them in the blank template just to explain of the each section.
@PeaWagon As the figure I have attached, In the section 5.1.6 Crossover & Mutation Module, you mentioned to the RNS. I did not make sense of that if it has an effect on the test, if Yes should not to be considered as input or initial state ?
@PeaWagon In the section 4.1 - Verification and Validation Team, It must use written English language not French;). Please change it.
@PeaWagon Please list the tables which you used in the document like the template. Besides, Please to more clarification please specify a caption for each table.
please see fbc9633
Your pdf will look better without the underline.
@PeaWagon
1- In the “FT1 - Data Input and Output in the input” you mentioned “Initial State: empty, no molecule input”, if you mean “NA”, please use the same term for the same condition as you mentioned in the “Test Input Geometry” as "NA"
2- In the “FT1 - Data Input and Output in the input” part it should be refer to the Table 1 as input values.
3- To describe the test please complete the sentences which clarify the purpose of the test. Besides it would be better be specified who inputs the values? It is a bit confusing (I know user must input the values according to prior sections, However it is a bit ambiguous in this part as test description).
@PeaWagon In the test "FitG" in “test sum energies” you have the output, however you did not consider any derivation. Please include a blurb there to explain test derivation. Besides, in some modules such as tournament module you do not have the
The Global minimum is almost always meaningless because it is not a conformational isomer but a true isomer (where bonds are broken). So we want to restrict our conformational search to rotations around bonds. (One could go further, including things like H-atom transfers across hydrogen bonds and other similar low-barrier processes, but that would make things significantly more complicated.)
You can be a bit more clear about what you are doing. You are searching for the best choice of bond torsions/dihedral angles. (Of course there will be small changes in bond angles/lengths associated with these changes, but they are induced by the torsions.) Realistically, you may wish to construct the whole ensemble (all the thermally accessible structures) not just the lowest-energy conformer. That may be beyond the mandate of the program, but need not be....usually you will find many (if not all) of the other low-energy conformers in the process of seeking the lowest-energy conformer.
Is it essential that the user specify (guess) the number of conformers? Can this be guessed by some heuristic? I would think that the number of rotatable bonds could be identified, and then multiplied by ~3, to get an upper bound on the number of conformers. (The number of low-energy conformers will, in general, be much smaller than this....something of the order of N_atoms or N_atoms^2 I would guess, except (again always an exception) in painfully "glassy" molecules (e.g., long floppy polymers) where the problem is more-or-less intractable (and uninteresting as many conformers are chemically equivalent) also.
5.1 The RMSD is tricky. Sometimes there are, due to symmetry, several equivalent conformers. I am not sure it is practical (it might be very hard) but technically while only one of these conformers needs to be stored, the "degeneracy" (number of equivalent instances of this conformer) should be also stored, so that one can compute thermodynamic properties. Again, this is if the mandate is to allow thermal averages over conformers (in which case the degeneracy of each conformer is needed) to compute thermodynamic quantities. If the goal is merely to identify the lowest-energy conformer(s) for subsequent studies (qualitative reactivity and/or quantitative electronic/mechanical properties studies) then this is not essential. It isn't clear to me exactly what the mandate is....just find some low-energy conformers that are inequivalent? Is the temperature just a screening criterion or is it intended to be used to guide thermal averaging later? The Procrustes package (Fanwang) has RMSD and a lot of other things like that already there, though the RMSD between molecules is pretty straightforward as long as you don't worry about matching atom types (and only atomic positions).
Conformational isomer. Rotations around triple and quintuple bonds are also free; basically all rotations around bonds where there are an even number of occupied pi and/or delta orbitals. That mostly happens in transition-metal compounds, though, as conformations around triple (or higher) bonds require atoms that form at least 5 bonds. Still, what you say isn't quite precisely correct... It is probably better to merely say that single bonds are rotatable and then the user can specify (by hand) other bonds they wish to consider rotatable, because there are cases where there are (weak) double bonds that are also rotatable.
I'm not sure I trust A8. Usually you need to converge the bond lengths/angles at least loosely. You may not need to do this in the very early stages but, for example, the rotational barrier in simple hydrocarbons (especially if there are bulky-ish substituents) is quite far off if you freeze bond lengths and angles. Something similar would be true of chair/boat/twisted-boat/etc. geometries for ring compounds. Probably it is safe to do initial screening without optimization and after that a coarse optimization with early stopping once you have converged the geometry to an energy that is small enough (say 1/2 of the conformer energy gap you are trying to assess) is adequate.
Page 9. The nuclei are much more massive than the electrons. They aren't much larger...if fact they are about 100,000 times smaller (in terms of the spatial extent of their wavefunctions).
The AOs are pretty muddled. You normally write something like cexp(-ar^{2})*r^(some power)*spherical harmonic. (Obviously not r^{2} in the exponential for Slater orbitals.) Slater orbitals do not diverge at the nucleus (no -> infinity) but they have a derivative discontinuity/cusp at the nucleus, which is "correct" if we assume that the nucleus is a point charge. You are right that it is easier to do the integrals for Gaussian orbitals and that while the near-nucleus and far-from-nucleus behavior of Gaussians is generally poorer than for Slaters, taking a linear combination of Gaussians to approximate a Slater type function is a pragmatic compromise. In practice, doing the integrals should not (but this is not always true) be the bottleneck in your code anyway.....
Page 11. The RMSD cannot be computed until the optimal alignment (align centers of mass of the two conformers and then rotate the conformers to minimize the RMSD; that is the thing that Fanwang's code does though again you can safely implement it in situ) is constructed. So the formula you give is a RMSD but not what we normally mean by the RMSD between two molecules/conformers.
During the process of the exploration S_{RMSD} should be reduced. Early in the optimization it is favorable to force yourself to explore very diverse structures. Later on you want to take the best...even if they are not very far from each other. Alternatively make the RMSD criterion nonlinear, something like (1-exp(-RMSD^2)) so that as soon as two structures are "different enough" they contributed a "big enough" amount to the diversity criterion.
Appendix. Misspelled "Planck" and also should maybe (not clear to me from the text what you intend here) include the nuclear-nuclear repulsion energy in the Hamiltonian.
Overall: Looks very good. As a specification I like it, though I'm not sure algorithmically....achieving the specification may be tricky.
Allow user to provide a ring structure as input (if continuing to run a conformer search). Right now, the ring is saved after a job has completed, but there is no ability to use it as input.
Hi Jenn,
Your AC6 says that the software can be changed into a library by incorporating into other software packages. In AC7, you mention that using it on through the phone. I can see a connection between them but, I think it is better to mention that it may be a `mobile application '.
Malavika
The following (mostly minor issues) were missing from the SRS:
@PeaWagon In the section 4.3 Design Verification Plan, as regards classmates ‘s feedback and Dr.Smith, you should mention the feedback to verify your design.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.