Giter Site home page Giter Site logo

Comments (7)

jhjensen2 avatar jhjensen2 commented on August 28, 2024

Glad you're finding xyz2mol useful!

Molecules with many nitro and phosphate groups will take long and there isn't really a general way to speed it up without changing the entire approach.

One could make some hacks that identify these specific groups and deal with them differently but I am reluctant to put that in the official version of the code. Let me know if you want to implement it locally and I can give you some tips.

I also note that xyz2mol didn't identify the bonding correctly on the second molecule. Maybe removing the Huckel option will fix it. In general it's a good idea to use both and visually inspect those where they differ as a sanity check.

from xyz2mol.

NiklasGebauer avatar NiklasGebauer commented on August 28, 2024

Alright, thanks a lot!

I think it should be fine for now since only very few structures seem to be effected.
I will try to use the script to analyze 3d structures generated with a generative model. There shouldn't be too many nitro and phosphate groups as they are also rare in the training data. But if the process slows down too much I will get back to you and think about implementing the hacks.

Also, I will keep the sanity check with and without Huckel option in mind, thanks for the hint!
In general, I do not require the script to obtain the correct bonding in all cases as long as it detects the bonding correctly in the vast majority of the cases (and it seems to accomplish that on the training data, we'll see how it performs on generated structures which can be more inaccurate).

from xyz2mol.

NiklasGebauer avatar NiklasGebauer commented on August 28, 2024

I just tried the second example without Huckel and it finished in less than a second and obtained the correct bonding (however, the first example also takes a long time without Huckel).

Is there a general rule which of the two approaches is faster/more reliable or does it strongly depend on the structure?
It would be nice to decide for either one of them without manually checking the results if they differ, but this would of course only make sense if one approach is superior (on average) in obtaining the correct bonding.

from xyz2mol.

jhjensen2 avatar jhjensen2 commented on August 28, 2024

In my experience, the Huckel option is more reliable. In fact, I was really surprised to see that it failed for molecule 2. Molecules with many nitro groups will always take a long time, but it's hard to predict in general.

Anyway, just be aware that xyz2mol will occasionally screw up and it's hard to predict if and when it happens.

from xyz2mol.

NiklasGebauer avatar NiklasGebauer commented on August 28, 2024

Thanks again!

Is it always the same lines of code where molecules get stuck when it takes so long, e.g. a loop?
I am thinking about implementing a kill switch that raises a timeout error if the calculations take longer than e.g. 5 minutes.

from xyz2mol.

jhjensen2 avatar jhjensen2 commented on August 28, 2024

it is the loop over valences in AC2BO that can take a long time.

from xyz2mol.

NiklasGebauer avatar NiklasGebauer commented on August 28, 2024

Okay, I should be fine with handling these special cases then.
Keep up the good work!

from xyz2mol.

Related Issues (20)

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.