ecrl / padelpy

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

Convert to 3D is broken? #34

Open naeemmrz opened 2 years ago

naeemmrz commented 2 years ago

Hello,

I'm trying to generate the PaDEL 3D descriptors for a small dataset; I've set the as the code snip below and prepared an XML file the 3D descriptors set to True and left the rest as False however the out files are all empty values. Is there something wrong with my approach or are the 3D descriptors broken? PS: I'm calculating it from smiles supplied as a smi file, the 2D descriptors work fine with the same input. padeldescriptor(mol_dir='temp.smi', d_file='PaDEL_3D.csv', descriptortypes= '3D.xml', detectaromaticity=True, standardizenitro=True, convert3d=True, d_2d=False, d_3d=True, standardizetautomers=True, threads=2, removesalt=True, log=False, retainorder=True, fingerprints=False)

shenglisa commented 2 years ago

excuseme, have you solved this problem?

tjkessler commented 2 years ago

Hi @naeemmrz,

Not sure what's going on here... the arguments for generating 3D descriptors and converting to 3D should be passed via the command line to PaDEL, with:

if headless:
    command = 'java -Djava.awt.headless=true -jar {}'.format(_PADEL_PATH)
else:
    command = 'java -jar {}'.format(_PADEL_PATH)
command += ' -maxruntime {}'.format(maxruntime)
command += ' -waitingjobs {}'.format(waitingjobs)
command += ' -threads {}'.format(threads)
command += ' -maxcpdperfile {}'.format(maxcpdperfile)
"""
...
"""
if d_3d is True:
    command += ' -3d'
"""
...
"""
if convert3d is True:
    command += ' -convert3d'
"""
...
"""
p = Popen(command.split(), stdout=PIPE, stderr=PIPE)

Not sure if there are any strange interactions between arguments - I'll keep this issue open, maybe someone with more familiarity with the PaDEL-Descriptor source code can chime in.

Best, Travis