From: Jiao, D. <dj...@in...> - 2007-04-26 17:41:47
|
Hi, In the isSubgraph method in UniversalIsomorphismTest, the last line says return (getSubgraphMap(g1, g2) != null); This is causing some errors. For example, when matching a queryatomcontainer representing "C*C" to an atomcontainer representing "CCN", the getSubgraphMap method seems to return a list of two items. I guess it means the first two atoms matches. But C*C shouldn't be a subgraph of CCN. I think this line can be changed to (when the subgraphmap has identical number of atoms with the query atom container) return (getSubgraphMap(g1, g2).size() == g2.getAtomCount()); Is this correct? Thanks, David |
From: Kai H. <Kai.Hartmann@Uni-Koeln.De> - 2007-04-26 17:53:35
|
Hi Jiao, the UniversalIsomorphismTester is matching bonds, not atoms. The method getSubgraphMap() will return a list of matching subgraph bonds. If the QueryAtomContainer has been initialized correctly, it should return null in your case. Please verify that both the AtomContainer g1 and the QueryAtomContainer g2 are what they are supposed to be and add a junit test for it. I will have a look at it. Kai Jiao, Dazhi schrieb: > Hi, > > In the isSubgraph method in UniversalIsomorphismTest, the last line says > > return (getSubgraphMap(g1, g2) != null); > > This is causing some errors. > > For example, when matching a queryatomcontainer representing "C*C" to an > atomcontainer representing "CCN", the getSubgraphMap method seems to > return a list of two items. I guess it means the first two atoms matches. > > But C*C shouldn't be a subgraph of CCN. > > I think this line can be changed to (when the subgraphmap has identical > number of atoms with the query atom container) > > return (getSubgraphMap(g1, g2).size() == g2.getAtomCount()); > > Is this correct? > > Thanks, > > David > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Cdk-devel mailing list > Cdk...@li... > https://lists.sourceforge.net/lists/listinfo/cdk-devel |
From: Jiao, D. <dj...@in...> - 2007-04-26 18:26:00
|
Hi, Kai, I added a unit test in org.openscience.cdk.test.isomorphism.UniversalIsomorphismTesterTest, method testIsSubgraph_IAtomContainer_IAtomContainer. The code I added start from line 91. Please take a look. I manually build a queryatomcontainer to make sure the number of atoms and bonds are correct. Thanks! David -----Original Message----- From: Kai Hartmann [mailto:Kai.Hartmann@Uni-Koeln.De]=20 Sent: Thursday, April 26, 2007 1:53 PM To: Jiao, Dazhi Cc: CDK Developers List Subject: Re: [Cdk-devel] UniversalIsomorphismTester.isSubgraph Hi Jiao, the UniversalIsomorphismTester is matching bonds, not atoms. The method getSubgraphMap() will return a list of matching subgraph bonds. If the QueryAtomContainer has been initialized correctly, it should return null in your case. Please verify that both the AtomContainer g1 and the QueryAtomContainer g2 are what they are supposed to be and add a junit test for it. I will have a look at it. Kai Jiao, Dazhi schrieb: > Hi, >=20 > In the isSubgraph method in UniversalIsomorphismTest, the last line says >=20 > return (getSubgraphMap(g1, g2) !=3D null); >=20 > This is causing some errors. >=20 > For example, when matching a queryatomcontainer representing "C*C" to an=20 > atomcontainer representing "CCN", the getSubgraphMap method seems to=20 > return a list of two items. I guess it means the first two atoms matches. >=20 > But C*C shouldn't be a subgraph of CCN. >=20 > I think this line can be changed to (when the subgraphmap has identical=20 > number of atoms with the query atom container) >=20 > return (getSubgraphMap(g1, g2).size() =3D=3D g2.getAtomCount()); >=20 > Is this correct? >=20 > Thanks, >=20 > David >=20 > ------------------------------------------------------------------------ - > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Cdk-devel mailing list > Cdk...@li... > https://lists.sourceforge.net/lists/listinfo/cdk-devel |
From: Kai H. <Kai.Hartmann@Uni-Koeln.De> - 2007-04-26 19:46:27
|
Hi Jiao, I had a look, but could not find a solution quickly. However, I think we should go to the bottom of this and don't use quick fixes. This seems to be a bug in UniversalIsomorphismTester. A bug report has been filed. Kai Jiao, Dazhi schrieb: > Hi, Kai, > > I added a unit test in > org.openscience.cdk.test.isomorphism.UniversalIsomorphismTesterTest, > method testIsSubgraph_IAtomContainer_IAtomContainer. The code I added > start from line 91. Please take a look. I manually build a > queryatomcontainer to make sure the number of atoms and bonds are > correct. > > Thanks! > > David > > -----Original Message----- > From: Kai Hartmann [mailto:Kai.Hartmann@Uni-Koeln.De] > Sent: Thursday, April 26, 2007 1:53 PM > To: Jiao, Dazhi > Cc: CDK Developers List > Subject: Re: [Cdk-devel] UniversalIsomorphismTester.isSubgraph > > Hi Jiao, > > the UniversalIsomorphismTester is matching bonds, not atoms. The method > getSubgraphMap() will return a list of matching subgraph bonds. If the > QueryAtomContainer has been initialized correctly, it should return null > in your case. > > Please verify that both the AtomContainer g1 and the QueryAtomContainer > g2 are what they are supposed to be and add a junit test for it. I will > have a look at it. > > Kai > > Jiao, Dazhi schrieb: >> Hi, >> >> In the isSubgraph method in UniversalIsomorphismTest, the last line > says >> return (getSubgraphMap(g1, g2) != null); >> >> This is causing some errors. >> >> For example, when matching a queryatomcontainer representing "C*C" to > an >> atomcontainer representing "CCN", the getSubgraphMap method seems to >> return a list of two items. I guess it means the first two atoms > matches. >> But C*C shouldn't be a subgraph of CCN. >> >> I think this line can be changed to (when the subgraphmap has > identical >> number of atoms with the query atom container) >> >> return (getSubgraphMap(g1, g2).size() == g2.getAtomCount()); >> >> Is this correct? >> >> Thanks, >> >> David >> >> > ------------------------------------------------------------------------ > - >> This SF.net email is sponsored by DB2 Express >> Download DB2 Express C - the FREE version of DB2 express and take >> control of your XML. No limits. Just data. Click to get it now. >> http://sourceforge.net/powerbar/db2/ >> _______________________________________________ >> Cdk-devel mailing list >> Cdk...@li... >> https://lists.sourceforge.net/lists/listinfo/cdk-devel > |