I'm trying to generate fingerprints for a database of sdf files. I use
generatemd c in.sdf -k CF -o out.sdf -SI
but can't understand the output - I get 32 positive and negative integers under <CF> heading in my sdf file. e.g.
-681085131 1355961114 -1185883784 1552907635 1275972413 1572261944 -21933111 -1012494592 1608908285 -618988177 -1416929418 1136442875 -1916325891 1378672275 1594586247 -1531982300 128219050 -2109408995 909463155 -79417425 -29422979 -820622371 947641993 1833426562 -343951789 -2053341300 2000399123 -419893257 -1499057379 1607657127 -366202981 1402837040
I was expecting a binary string that I can use in a Tanimoto similarity saerch.
Any help appreciated,
If you import the SDF into a JChem database, the database similarity search will use chemical hashed fingerprints with Tanimoto formula. This case, you don't have to bother handling the fingerprints yourself.
A colleague of mine will soon answer your question regarding the usage of command-line tools.
you can use these decimal values in similarity calculation. Decimal values represent the same fingerprint as binary values but in a more compact way that is easier to process. What you see in the SDfile under the <CF> tag is still a binary fingerprint, though it is not written in binary form.
If - for any reason - you really need binary values printed, then you should specify the -2 flag in the command line. However, generatemd does not support binary strings in SDF, thus you need to store your zero/one string data in a separate file.
Does this help at all?
Thank you for the information.
So the bainary fingerprint string is encoded in the integers listed under <CF>. I would like to score fingerprint similarity. If I had a binary output then this is a simple matter of scoring coincidences. How does one score similarity with the 32 integers?
Hi, use screenmd. It can process the SDfile output of generatemd. screenmd can calculate Tanimoto among many other metrics.
If your input SDF is small (i.e. < 10,000 structures) then there is no need to generate and store the fingerprint in a preprocessing step, as screenmd can genereate them on the fly when Tanimoto coefficients are calculated.
However, if your file contains more than 10,000 structures then it's better to store the fingerprint in a file and process that file with screenmd.
If screenmd is not suitable for your needs, and you really want binary strings then feel free to use the -2 option of generatemd: your output will contain the bit strings, one chemical fingerprint per each line.