Chris, I'm finally picking up the thread with the reactions. A quick question for you - my first attempt to follow through on your example got me a seg fault - OBReaction does not seem to have a destructor, so when react goes out of scope my program crashes.
I was able to work around this by allocating react on the heap and never deleting it but this is ugly and likely to lead to memory leaks. There is got to be a better way?! Igor On Tue, 2011-07-19 at 16:03 -0400, Chris Morley wrote: > On 19/07/2011 17:17, Igor Filippov wrote: > > Chris, > > > > Thank you. Simple approach - just pointers to OBMol's for reactans and > > products is just fine for now. I looked at OBReaction and it seems > > reasonably clear. > > > > At the moment I'm focusing on writing out reactions from assembled > > OBMols into a file or string and not on the reading of reactions or any > > fancy manipulation. How do I write out RSMI from OBReaction - do I use > > OBConversion the same way as I do for regular file formats? Perhaps you > > have a three line example? > > Yes it is entirely analogous: > > OBConversion conv; > conv.SetInAndOutFormats("rsmi","rsmi"); > OBReaction react; > conv.ReadFile(&react, "example.rsmi"); > conv.Write(&react, &cout); > > Chris > > > Best regards, > > Igor > > > > On Tue, 2011-07-19 at 12:01 -0400, Chris Morley wrote: > >> Igor > >> > >> OpenBabel supports formats like, CMLreact, RXN Reaction SMILES, ChemKin, > >> which specify reactions. The internal structure is OBReaction which for > >> reaction formats is handled in the conversion routines like OBMol is for > >> molecule formats. Reading a file containing > >> c1ccccc1>>Nc1ccccc1 > >> with rmsi format will make an OBReaction. OBReaction is fairly simple > >> and is really just a container to hold shared_ptrs to the molecules > >> which are the reactants, products, etc. OB doesn't have much for > >> constructing or modifying reactions. > >> > >> I've written a version of chemdrawCDX.cpp which reads reactions as well > >> as molecules. The code contains the construction of an OBReaction and > >> its transfer to OB's conversion system. The email describing it that I > >> sent to Abe Heifets (who may be who Geoff is referring to) is below. The > >> files are at: > >> http://gaseq.co.uk/OB/benzene-to-aniline-reaction.cdx > >> http://gaseq.co.uk/OB/chemdrawcdx.h > >> http://gaseq.co.uk/OB/chemdrawcdx.cpp > >> > >> This is stalled at the moment because of the need to add code to parse a > >> geometric layout and derive which molecules are reactants, products, > >> etc. I guess this is what you are doing, so I would be interested if you > >> have a method already. > >> > >> Chris > >> > >> > >> > >> > >> Abe > >> You might be interested in this OpenBabel format for reading CDX files. > >> It reads reactions as well as molecules, but only if they are single > >> reactions and completely described. The attached example works but most > >> of the examples from patents you sent me don't. The code needs some > >> extra heuristics to find incompletely described reactions, but I haven't > >> yet managed to write it in the past six months. > >> > >> The format generates OBReaction objects when it can, which can be output > >> by rsmi, rxn, etc. Excess molecules are output as OBMol objects as > >> normal. The option -am generates only molecules. Actually most molecule > >> output formats will output the reactants and products if given an > >> OBReaction. > >> > >> The parsing is separated from the interpretation to a greater extent > >> than before, which should make it easier to do an XML version. > >> > >> It is also possible (-ad) to output the CDX tree, in a similar way to > >> CDXHexDumper, except that it contains human-readable names. > >> > >> The attached file should replace the existing one, and I hope will > >> compile ok. A copy of chemdrawcdx.h should be put in the /data directory > >> so it can be parsed for the names. > >> > >> > >> > >> On 18/07/2011 16:33, Geoffrey Hutchison wrote: > >>> Dear Igor, > >>> > >>> Open Babel supports CML (react) and MDL Rxn formats for reactions. I'm > >>> not sure if there's great support for polymers, but that would definitely > >>> be a nice addition. I know someone who's working on ChemDraw reaction > >>> support as well. > >>> > >>> Chris Morley should have an example of a reaction file example -- I'm not > >>> seeing anything at the moment in the OBReaction documentation. If Chris > >>> doesn't respond today, I'll dig around tomorrow. > >>> > >>> Thanks and best regards, > >>> -Geoff > >>> > >>> On Jul 18, 2011, at 11:25 AM, Igor Filippov [Contr] wrote: > >>> > >>>> Dear Geoff, > >>>> > >>>> Re: reaction recognition in OSRA - > >>>> Is there any format or formats which OpenBabel can write that have > >>>> support for reactions and/or polymers (brackets)? It doesn't have to be > >>>> the same format for both. > >>>> How would I go about creating a reaction file or a polymer in C++? > >>>> > >>>> Igor > >>>> > >> > >> > > > > > > > > > ------------------------------------------------------------------------------ > Magic Quadrant for Content-Aware Data Loss Prevention > Research study explores the data loss prevention market. Includes in-depth > analysis on the changes within the DLP market, and the criteria used to > evaluate the strengths and weaknesses of these DLP solutions. > http://www.accelacomm.com/jaw/sfnl/114/51385063/ > _______________________________________________ > OpenBabel-Devel mailing list > OpenBabel-Devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/openbabel-devel ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ OpenBabel-Devel mailing list OpenBabel-Devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbabel-devel