Python 2.7 の mac osx で ghmm python モジュールを使用しようとしています。すべてをインストールすることができ、Python 環境で ghmm をインポートできますが、これを (ghmm の「チュートリアル」から) 実行するとエラーが発生します (UnfairCasino はhttp://ghmm.sourceforge.netにあります)。 /UnfairCasino.py ):
from ghmm import *
from UnfairCasino import test_seq
sigma = IntegerRange(1,7)
A = [[0.9, 0.1], [0.3, 0.7]]
efair = [1.0 / 6] * 6
eloaded = [3.0 / 13, 3.0 / 13, 2.0 / 13, 2.0 / 13, 2.0 / 13, 1.0 / 13]
B = [efair, eloaded]
pi = [0.5] * 2
m = HMMFromMatrices(sigma, DiscreteDistribution(sigma), A, B, pi)
v = m.viterbi(test_seq)
具体的には、次のエラーが発生します。
GHMM ghmm.py:148 - sequence.c:ghmm_dseq_free(1199): NULL ポインターで m_free を試みました。悪いプログラム、悪い!あなたのためのクッキーはありません。python(52313,0x7fff70940cc0) malloc: * オブジェクト 0x74706d6574744120 のエラー: 解放中のポインターが割り当てられませんでした * malloc_error_break にブレークポイントを設定してデバッグ中止トラップ
ghmm.py ロガーを「DEBUG」に設定すると、ログは直前に次のように出力します。
GHMM ghmm.py:2333 - HMM.viterbi() -- 開始
GHMM ghmm.py:849 - EmissionSequence.asSequenceSet() -- 開始 >
GHMM ghmm.py:862 - EmissionSequence.asSequenceSet() -- 終了 >
トレースバック (最新の呼び出しが最後):
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py」、行 842、エミット
msg = self.format(レコード)
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py」、行 719、形式
fmt.format(レコード) を返す
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py」、464行目、形式
record.message = record.getMessage()
ファイル "/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py"、328行目、getMessage
msg = msg % self.args
TypeError: 文字列のフォーマット中にすべての引数が変換されるわけではありません
ファイルghmm.pyの1159行目から記録
トレースバック (最新の呼び出しが最後):
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py」、行 842、エミット
msg = self.format(レコード)
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py」、行 719、形式
fmt.format(レコード) を返す
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py」、464行目、形式
record.message = record.getMessage()
ファイル "/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py"、328行目、getMessage
msg = msg % self.args
TypeError: 文字列のフォーマット中にすべての引数が変換されるわけではありません
ファイル ghmm.py の 949 行目から記録
GHMM ghmm.py:2354 - HMM.viterbi() -- 終了
GHMM ghmm.py:1167 - del SequenceSubSet >
したがって、Viterbi 関数が完了するとシーケンスが削除される方法と関係があると思われますが、これが Python コード、C コードを変更する必要があることを意味するのか、それとも ghmm をコンパイルする必要があるのか どうかはわかりません。ラッパーが異なります。過去 4 日間、このライブラリを機能させようとしてきたので、どんな助けや提案も大歓迎です。