Exemple #1
0
        public MolDescriptor(OBMol mol)
        {
            var newMol = new OBMol(mol);

            newMol.DeleteHydrogens();
            this._mol = new OBMolExtended(newMol);
        }
Exemple #2
0
        /// <summary>
        /// Проверка соответствия молекулы паттерну.
        /// </summary>
        /// <param name="Mol"></param>
        /// <param name="DB_Mol"></param>
        /// <returns></returns>
        private bool CheckMol(string Mol, string DB_Mol)
        {
            DataBase.Log($"Получены молекула {DB_Mol} и паттерн {Mol}");
            DataBase.Log($"Формирование объектов для сравнения");
            // Создаём объекты OpenBabel
            OBSmartsPattern SP     = null;
            OBConversion    obconv = null;
            OBMol           mol    = null;

            try
            {
                SP     = new OBSmartsPattern();
                obconv = new OBConversion();
                obconv.SetInFormat("smi");
                mol = new OBMol();
                obconv.ReadString(mol, Mol);
                obconv.SetOutFormat("smi");
                DataBase.Log($"Объекты сформированы");
            }
            catch (Exception e)
            {
                DataBase.Log($"Объекты не сформированы: причина {e.Message}");
            }


            string Temp = obconv.WriteString(mol);

            DataBase.Log($"Обработанный паттерн {Temp}");
            if (!mol.DeleteHydrogens())
            {
                Console.WriteLine("DeleteHidrogens() failed!");
            }
            ;                                                                                 //Убираем все водороды
            DataBase.Log($"Водороды убраны");

            string SubMol = System.Text.RegularExpressions.Regex.Replace(obconv.WriteString(mol), "[Hh ]", ""); //Убираем все водороды

            SP.Init(SubMol);                                                                                    //Задаём структуру поиска в SMARTS
            DataBase.Log($"Инициализация поиска по паттерну {SubMol}");

            obconv.SetInFormat("smi");
            obconv.ReadString(mol, DB_Mol); //Добавляем структуру из БД
            SP.Match(mol);                  //Сравниваем
            DataBase.Log($"Сравнение прошло");
            VectorVecInt Vec = SP.GetUMapList();

            DataBase.Log($"Число совпадений {Vec.Count}");
            if (Vec.Count > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            };                                                          //Возвращаем результат
        }
Exemple #3
0
    public void readMol(string file)
    {
        bool   hideHydrogens  = PlayerPrefs.GetString("hideHydrogens") == "True";
        bool   polarHydrogens = PlayerPrefs.GetString("polarHydrogens") == "True";
        string ff             = PlayerPrefs.GetString("forceField");

        OpenBabel.OBConversion obconv = new OBConversion();

        extension = file.Split('.')[1];
        if (extension == "pdb")
        {
            obconv.SetInFormat("PDB");
        }
        else if (extension == "sdf")
        {
            obconv.SetInFormat("SDF");
        }
        else if (extension == "mol2")
        {
            obconv.SetInFormat("MOL2");
        }

        mol = new OBMol();
        obconv.ReadFile(mol, file);

        if (hideHydrogens)
        {
            mol.DeleteHydrogens();
        }
        else
        {
            mol.AddHydrogens();
        }

        if (polarHydrogens)
        {
            mol.DeleteNonPolarHydrogens();
        }

        if (ff != "")           //a force field is selected

        // Ghemical, MMFF94, UFF
        {
            OBForceField forceField = OBForceField.FindForceField(ff);

            forceField.Setup(mol);
            forceField.ConjugateGradients(1000);
        }
    }
Exemple #4
0
        /// <summary>
        /// Читает молекулу из файла
        /// </summary>
        /// <param name="FileName">Имя файла</param>
        /// <returns></returns>
        public static OBMol ReadMoleculeFromFile(string FileName)
        {
            OBConversion obconv = new OBConversion();
            OBFormat     OBF    = OBConversion.FormatFromExt(FileName);

            if (OBF == null)
            {
                MessageBox.Show("Неподдерживаемый формат данных", "Ошибка открытия файла");
                return(null);
            }
            obconv.SetInFormat(OBF); //Читаем ChemDraw файл (Потом расширить список)
            OBMol mol = new OBMol();

            obconv.ReadFile(mol, FileName);  //Читаем из файла
            mol.SetTitle("");
            mol.DeleteHydrogens();

            return(mol);
        }
        /// <summary>
        /// Проверка соответствия молекулы паттерну.
        /// </summary>
        /// <param name="Mol"></param>
        /// <param name="DB_Mol"></param>
        /// <returns></returns>
        private bool CheckMol(string Mol, string DB_Mol)
        {
            // Создаём объекты OpenBabel
            OBSmartsPattern SP     = new OBSmartsPattern();
            OBConversion    obconv = new OBConversion();

            obconv.SetInFormat("smi");
            OBMol mol = new OBMol();

            obconv.ReadString(mol, Mol);
            obconv.SetOutFormat("smi");

            string Temp = obconv.WriteString(mol);

            if (!mol.DeleteHydrogens())
            {
                Console.WriteLine("DeleteHidrogens() failed!");
            }
            ;                                                                                                   //Убираем все водороды

            string SubMol = System.Text.RegularExpressions.Regex.Replace(obconv.WriteString(mol), "[Hh ]", ""); //Убираем все водороды

            SP.Init(SubMol);                                                                                    //Задаём структуру поиска в SMARTS

            obconv.SetInFormat("smi");
            obconv.ReadString(mol, DB_Mol); //Добавляем структуру из БД
            SP.Match(mol);                  //Сравниваем
            VectorVecInt Vec = SP.GetUMapList();

            if (Vec.Count > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            };                                                          //Возвращаем результат
        }