Thank you Wim. I shall post-process the SDF as you suggested.
Ling

Wim Dehaen <wimdeh...@gmail.com> 於 2023年9月25日週一 下午5:11寫道:

> Why there is a counter between parentheses there, I don't know, but in
> case there's no option to remove it, you might just manually remove it
> using a regex to remove anything between parentheses on a line that starts
> with >
> for example:
>
> from rdkit import Chem
> import re
> from io import StringIO
> m = Chem.MolFromSmiles("CCC")
> m.SetProp("pKa","3.3")
> sio = StringIO()
> with Chem.SDWriter(sio) as o:
>     o.write(m)
> sio.seek(0)
> with open("temp3.sdf", "w") as f:
>     for line in sio.readlines():
>         f.write(re.sub(r'^>(.*?)\((.*?)\)', r'>\1', line))
>
> best wishes
> wim
>
> On Tue, Sep 26, 2023 at 1:20 AM Ling Chan <lingtrek...@gmail.com> wrote:
>
>> Dear Colleagues,
>>
>> I noticed that when writing out molecules using SDWriter() , the
>> properties fields are followed by something like "(1)" , "(2)". I mean, the
>> sdf looks like:
>>
>> propane
>>      RDKit          3D
>>
>>   3  2  0  0  0  0  0  0  0  0999 V2000
>>     0.0000    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
>>     1.4280    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
>>     1.9040    1.3000   -0.3480 C   0  0  0  0  0  0  0  0  0  0  0  0
>>   1  2  1  0
>>   2  3  1  0
>> M  END
>> >  <pKa>  (1)
>> 4.0999999
>>
>> >  <logP>  (1)
>> 2
>>
>> $$$$
>>
>> Just wonder what was the rationale behind this extra "(1)" on the
>> property field lines (pKa and logP in the above example)?
>>
>> And is there a way to get rid of these? I am not sure if this extra "(1)"
>> is part of the standard sd format.
>>
>> Thank you!
>>
>> Regards,
>> Ling
>>
>>
>> ---------------------------------------------------------------------------------------------------
>>
>> To create an sdf, you can do something like:
>>
>> >>> from rdkit import Chem
>> >>> m = Chem.MolFromSmiles("CCC")
>> >>> m.SetProp("pKa","3.3")
>> >>> with Chem.SDWriter("temp3.sdf") as o:
>> ...   o.write(m)
>>
>> Or use Chem.SDMolSupplier() to get mols from another sdf.
>>
>>
>>
>>
>> _______________________________________________
>> Rdkit-discuss mailing list
>> Rdkit-discuss@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
>>
>
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to