- ベストアンサー
官能基の数を数える方法とは?
- 質問者は、特定の官能基の有無だけでなく、その数も知りたいという疑問を持っています。
- 例えば、与えられた化合物から[OH]が2つ以上含まれているかを判別することは可能なのでしょうか?
- OpenBabelなどのソフトウェアを使用することで、官能基の数を数えることができます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
OpenBabelGUIを使う(あまりスマートではないけどとりあえず思いついた)やり方。 Add hydrogens (make explicit) と Output explicit hydrogens as such に チェックを入れて、質問文のデータをコンバートすると [CH3]Oc1c([cH][cH]c([cH]1)[CH2][CH]=[CH2])[OH] [CH3]C(=O)[NH]c1[cH][cH]c([cH][cH]1)[CH2]C(=O)[OH] [CH3][CH2]Oc1[cH]c2c(c3c([cH]c([cH][cH]3)[NH2])nc2[cH][cH]1)[NH2] [CH2]([CH]([CH]1C(=O)C(=C(O1)[OH])[OH])[OH])[OH] [CH3]C(=O)Oc1[cH][cH][cH][cH]c1C(=O)[OH] [CH3]C(=O)[NH]c1nnc(s1)S(=O)(=O)[NH2] [cH]1nc2c([nH]1)c(n[cH]n2)[NH2] [cH]1nc2c(c(n1)[NH2])n[cH]n2[CH]1[CH]([CH]([CH](O1)[CH2][OH])[OH])[OH] のように変換されますから、あとはPerlなどを使って各データの[OH]を数えればいいんじゃないかと思います。 ただし、このやり方だとカルボキシ基CO2Hやスルホ基SO3Hなどもヒドロキシ基OHとしてカウントされますので注意してください。
その他の回答 (4)
- Tacosan
- ベストアンサー率23% (3656/15482)
すみません, 当然わかると思いますがヒドロキシルアミンは SMILES式だと NO ですね.
- Tacosan
- ベストアンサー率23% (3656/15482)
とりあえず突っ込むだけだとアレなので本題もちょっと考えてみる (苦笑). もとの SMILES式だけから調べようとすると, 「どのような構造が欲しいのか」をちゃんと考えないといけないし, 調べかたもその構造に依存するような感じがします. 例えばヒドロキシ基 1つをとっても, 「何がヒドロキシ基なのか」は意外と難しかったりします. 例えば NNO (ヒドロキシルアミン) の OH がヒドロキシ基か? って言われると微妙だし, ClO (次亜塩素酸) だともっと困る. まあヒドロキシ基は単純なので, 「構造が正しいかどうかは無視」「アルコールかフェノールかは気にしない」「互変異性は違うものとみなす」などいくつかの条件を付ければそれなりにできそうです. まず, 潜在的なヒドロキシ基に含まれる酸素を見付けます. これは「先頭の O で O(...)なんか という形でないもの」か「最後の O」か「O)」です. ここからその酸素につながる元素, さらにそこに隣接する元素を調べてチェックすれば多分 OK. 本質的にはアミンも同じことになります. アミドもできるといえばできるけどちょっと面倒な感じ. そろそろ「SMILES式からきちんと構造を作りあげる」必要がありそうです. ちなみに OpenBabel GUI で遊んでみた感じでは蟻酸がちょっといやなことになったような.
- 101325
- ベストアンサー率80% (495/617)
> Add hydrogens (make explicit) と > Output explicit hydrogens as such の処理は何を施しているのでしょうか。 #2さんの仰るとおり、見たまま字のままだと思います。よく分からなかったら、 CO [CH3]O C[OH] [CH3][OH] を入力データにして、チェックを入れたり外したりしたときに出力がどうなるかを試してみて下さい。 > アミドやアミンの場合はどのような文字列で表示されるのでしょうか。 結合の手が1本しかない1級アミド C(=O)[NH2] や1級アミン [NH2](ただし1級アミドも含まれる)を文字列で表すのは簡単です。しかし、結合の手が2本,3本になると、Perlなどの正規表現を使ったとしても、ひとつの文字列で表すのは無理なんじゃないかなと思います(少なくとも私には無理です、ごめんなさい)。 Daylightのページにあるように、SMARTS を使えば アミドは [NX3][CX3](=[OX1])[#6] アミン(一級または二級,アミドを含まない)は [NX3;H2,H1;!$(NC=O)] のように簡単に表すことができるのですが。 http://www.daylight.com/dayhtml_tutorials/languages/smarts/smarts_examples.html つきなみなアドバイスで申し訳ありませんが、ひとつの文字列で表すのにこだわらずに、SMARTSでやるところ、正規表現でやるところ、プログラムを組んでやるところ、手作業でやるところに適当に分けて、問題に取り組んだらいいんじゃないでしょうか。
- Tacosan
- ベストアンサー率23% (3656/15482)
Add hydrogens (make explicit) とか Output explicit hydrogens as such とかを日本語に直せば分かるのでは? あるいは, 入力と出力を比較しても分かるはず. アミドやアミンは例の中にありますね.
お礼
ありがとうございます。 [OH]の数を数えることはプログラム組めばできそうですね。 ちなみにカルボキシル基の場合はC(=O)[OH] スルホ基の場合は、S(=O)(=O)[OH], アミドやアミンの場合はどのような文字列で表示されるのでしょうか。 そもそも Add hydrogens (make explicit) と Output explicit hydrogens as such の処理は何を施しているのでしょうか。