ecrl / padelpy

A Python wrapper for PaDEL-Descriptor software
MIT License
185 stars 35 forks source link

KlekotaRoth descriptor run is not finishing #31

Closed brendaferrari closed 2 years ago

brendaferrari commented 3 years ago

When I run the KlekotaRoth descriptor the run is not finishing, even though I get the results normally.

Interrupting the run I get this log:

KeyboardInterrupt
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-5-fb2777cce1fe> in <module>
      1 from functions.fingerprint_functions import KlekotaRoth
      2 
----> 3 KlekotaRoth(mol_dir)

c:\Users\Brenda\OneDrive\Documentos\Doutorado\QSAR\03.descriptor_preparation\functions\fingerprint_functions.py in KlekotaRoth(mol_dir)
    322     fingerprint_descriptortypes = fp[fingerprint]
    323 
--> 324     padeldescriptor(mol_dir='dataset.smi', 
    325                     d_file=fingerprint_output_file,
    326                     descriptortypes= fingerprint_descriptortypes,

~\AppData\Local\Programs\Python\Python38\lib\site-packages\padelpy\wrapper.py in padeldescriptor(maxruntime, waitingjobs, threads, d_2d, d_3d, config, convert3d, descriptortypes, detectaromaticity, mol_dir, d_file, fingerprints, log, maxcpdperfile, removesalt, retain3d, retainorder, standardizenitro, standardizetautomers, tautomerlist, usefilenameasmolname, sp_timeout, headless)
    149         command += ' -usefilenameasmolname'
    150 
--> 151     _, err = _popen_timeout(command, sp_timeout)
    152     if err != b'':
    153         raise RuntimeError('PaDEL-Descriptor encountered an error: {}'.format(

~\AppData\Local\Programs\Python\Python38\lib\site-packages\padelpy\wrapper.py in _popen_timeout(command, timeout)
     43         return (-1, b'PaDEL-Descriptor timed out during subprocess call')
     44     else:
---> 45         return p.communicate()
     46 
     47 

~\AppData\Local\Programs\Python\Python38\lib\subprocess.py in communicate(self, input, timeout)
   1022 
   1023             try:
-> 1024                 stdout, stderr = self._communicate(input, endtime, timeout)
   1025             except KeyboardInterrupt:
   1026                 # https://bugs.python.org/issue25942

~\AppData\Local\Programs\Python\Python38\lib\subprocess.py in _communicate(self, input, endtime, orig_timeout)
   1393             # calls communicate again.
   1394             if self.stdout is not None:
-> 1395                 self.stdout_thread.join(self._remaining_time(endtime))
   1396                 if self.stdout_thread.is_alive():
   1397                     raise TimeoutExpired(self.args, orig_timeout)

~\AppData\Local\Programs\Python\Python38\lib\threading.py in join(self, timeout)
   1009 
   1010         if timeout is None:
-> 1011             self._wait_for_tstate_lock()
   1012         else:
   1013             # the behavior of a negative timeout isn't documented, but

~\AppData\Local\Programs\Python\Python38\lib\threading.py in _wait_for_tstate_lock(self, block, timeout)
   1025         if lock is None:  # already determined that the C code is done
   1026             assert self._is_stopped
-> 1027         elif lock.acquire(block, timeout):
   1028             lock.release()
   1029             self._stop()

KeyboardInterrupt: 

Thank you in advance.

tjkessler commented 2 years ago

Hi @brendaferrari,

Consider using the "maxruntime" argument in the "padeldescriptor" wrapper function (the argument is also available in the provided higher-level functions)!

Best, Travis