示例#1
0
        public static List <int> FindTetrahedralChiralCenters(Molecule molecule)
        {
            List <int>        chiralCenterIndices = new List <int>();
            MoleculeSignature molSig           = new MoleculeSignature(molecule);
            List <string>     signatureStrings = molSig.GetVertexSignatureStrings();

            for (int i = 0; i < molecule.GetAtomCount(); i++)
            {
                int[] connected = molecule.GetConnected(i);
                if (connected.Length < 4)
                {
                    continue;
                }
                else
                {
                    string s0 = signatureStrings[connected[0]];
                    string s1 = signatureStrings[connected[1]];
                    string s2 = signatureStrings[connected[2]];
                    string s3 = signatureStrings[connected[3]];
                    if (string.Equals(s0, s1, StringComparison.Ordinal) ||
                        string.Equals(s0, s2, StringComparison.Ordinal) ||
                        string.Equals(s0, s3, StringComparison.Ordinal) ||
                        string.Equals(s1, s2, StringComparison.Ordinal) ||
                        string.Equals(s1, s3, StringComparison.Ordinal) ||
                        string.Equals(s2, s3, StringComparison.Ordinal))
                    {
                        continue;
                    }
                    else
                    {
                        chiralCenterIndices.Add(i);
                    }
                }
            }

            return(chiralCenterIndices);
        }