-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Need to add timeout #90
Comments
pqcxms is just the bash script, on a multi CPU computer this would be useful. But on a cluster, pqcxms would not be used, so if possible this should be implemented on a lower base. Clusters also have timeout controls (slurm default job time or time limits, same for many other schedulers). So this would be interesting to discuss at which level to implement. |
Maybe relevant: https://www.baeldung.com/linux/bash-timeouts (just a random link explaining timeouts in bash) |
Thanks @tobigithub. I have just learned that the authors are working on a completely different method for simulating MS/MS (https://www.stc2024.de/boa.pdf page 131). Also found a paper detailing poor qcxms performance (https://chemrxiv.org/engage/chemrxiv/article-details/65fd8fc09138d2316107fbb6). I doubt this would get implemented (or even be relevant) come near future. |
It depends on what your aim is. First of all, the performance of the new method has to be validated. While based on an entire new approach, there will probably be also issues with "plug-and-play" kind of implementations. Second, the "poor performance" of the program has to be set into perspective. The authors of this paper clearly disregard that experimental references in MS are often as poorly reproducible (depending on the machine that is used for reference), so that settings have to be optimized for the machine the references were created on (Orbitrap GC-MS/MS), which was clearly not done. If a real evaluation is not done, I can't understand how someone (@tornikeo) comes along this repo, asks for help for this free-to-use software and then speaks of "not implementing" this in their software anyways. This underlines that AI people really don't understand physics based approaches and are just out for quick solutions (which running QCxMS is not). Nobody asked you to implement this approach into your code, and with this kind of attitude, I doubt that the authors will be helping you with any issues moving on forward (also for the next level of the program). |
I apologize for my earlier comments, @JayTheDog. I didn’t mean to disrespect your work. I’m amazed that such an approach is even conceivable, let alone made available for free. I’m learning from it to apply to my own work. No disrespect was intended. That said, with all due respect, the "the AI people" remark does come across as disrespectful. This is the first time I’ve heard someone use that as an insult. For the record, my work with this repository has nothing to do with AI. Assigning simple labels like “poor performance” or “the AI people” seems to be human nature, I suppose. Your comments about that paper are intriguing. I’ll do my best to see if I can still salvage my master’s thesis from this. FWIW, I’ve run the default CID example on Oxane from the repository, and unfortunately, the results with all defaults aren’t looking great. Additionally, there’s a small PR (#88) awaiting your approval—it addresses a trivial memory bug. I had hoped we’d meet under better circumstances, @JayTheDog. I actually have an email drafted for you, for your opinion on my master’s thesis. If done properly, the thesis would've ported some critical parts of MD simulation to a GPU, potentially accelerating the method. I’m unsure if this is feasible, and that’s what I wanted to ask. Let me know if you’re open to providing some advice on this. If not, I understand and wish you all the best. |
Okay, thanks for setting it into perspective and for the apology. Tbh, it's not the first time that there is a misconception of the work so forgive me for snapping. It's just that often people just blindly use this tool without understanding the mechanics behind it and then complain that it's not what they expected it to be. And unfortunately it's often the same community that has this issue, and often misunderstand the complexity behind it. As your profil description goes in the same way @tornikeo I felt the need to set this record straight, but I clearly overstepped. So my apologies as well. Finding a default setting that works for most structures is actually not really possible, as there is more going on in the experiment than even experimentalists often expect (I know that from intense conversations and feedback of companies and producers of those machines, in years of discussion). So for your calculation of Oxane, you probably have to increase the impact energy. |
We have run thousands of QCEIMS experiments (the predecessor) and several thousand QCxMS calculations and have published a number of papers on it [1, 2, 3, 4, 5] but yeah, mostly on workstations (32 to 128 CPU cores) and the majority on HPC with 400-1200 CPU cores. Because it is ab initio-MD (AIMD) the workload is quite substantial and not feasible on a general PC, except for small (<300 Da) molecules. Even with marginally faster AIMD methods (semiempirical and DFT level) you still would need hundreds of CPU cores or 50-100 GPUs to crunch through a larger number of molecules (n>1000). Right now QCxMS and other tools are more fitted for deep-dive investigations of a few molecules, basically investigating individual trajectories and reaction pathways. But we know from many simulations and comparisons against experimental mass spectra (EI and CID), that there are processes that we do not understand yet, can not explain yet, and can not simulate (yet) even with advanced tools like QCxMS, which I consider the gold standard in ab-initio generation of EI and CID mass spectra. So yes, QCxMS2 or "Quantum chemical calculation of mass spectra via automated transition state search" from @gorges97 will be an exciting step forward, but I assume that individual transition state calculations across many potential energy surfaces (PES) still will be computationally expensive, because it still requires stochastic sampling. But I could be mistaken. The new approach opens up interesting new horizons, like hybrids of TS search and AIMD. But such quantum chemistry methods will never be faster than machine learning (ML) based methods as Jeroen pointed out, plus ML methods always need training spectra, so no "ab initio" and no "first principles" by design. Very fast GPU based DFT codes from tools like TeraChem probably would improve speed massively, because most CPU based DFT methods are extremely slow compared to novel GPU based implementations. (Blanket statement, unless I see new benchmarks). There are many other tools like Promethium by QC Ware and GPU4PySCF [Ref]. But interesting times lay ahead. Regarding your timeout question, here is a modified pqcxms-timeout bash script, it runs 4 jobs with 2 threads each, basically a 8 core CPU (16 threads) and timeout is set to one minute (-m 1). You can create a new script called "pqcxms-timeout" and then use "chmod +x pqcxms-timeout" to make it executable and run it. So every single trajectory will be interrupted after a certain timeout. This should be based on benchmarks otherwise, no trajectory will ever finish. If no timeout parameter is set, it just runs with standard conditions and no timeout.
The pqcxms-timeout bash script (needs to be set executable with "chmod +x pqcxms-timeout". The change is the actual sub process which is extended by adding a timeout "$((timeout_min * 60))" in front of it.
Be aware that this will create a process killed (SIGTERM) error for qcxms basically that is what you see in the qcxms.out file. But overall it works fine, tested on Ubuntu, you might want to control the qcxms.in parameters like number of trajectories or number of collisions accordingly. Also do not oversubscribe the number of CPU cores, everything will be slower. In this case the computation stopped after one minute for each of the trajectories. Also timeout has multiple options "timeout --signal=SIGINT 10" and so on.
|
I need an option for per-process timeout in pqxms.
The last 2 runs of the 350 productions runs on example tetrahydrofuran take more than half the time the first 348 took. We need a timeout argument here.
This could be as simple as adding
timeout $timeout
somewhere in pqcxms.The text was updated successfully, but these errors were encountered: