0

編集:私はそれを理解しました。ただ表記が分からなかった。

こんにちは、

バイオインフォマティクス ツールボックスのクラスターグラムに詳しい方がいらっしゃることを願っています。関数のグラフィカルな側面 (デンドログラム/ヒート マップ) に興味がありますが、Matlab の cluster() 関数を使用する必要があるため、現在障害があります。個人的なアルゴリズムを使用してクラスター化し、Matlab でこれを視覚化できるようにしたいと考えています。

私はコードを検索しましたが、オブジェクト指向プログラミング全般、特に Matlab のバージョンについてはひどく無知です。したがって、私が知っているのは、関数が「obj = obj.getclusters」という行を呼び出すことだけですが、Matlab の代わりに独自のクラスタリング アルゴリズムを使用するようにこれを編集する方法がわかりません。

どんな助けでも大歓迎です!

編集:私は特に新しいアルゴリズムに取り組んでいるため、pdist やリンケージが必要ないのはなぜですか。デンドログラムは clustergram 関数の外部で計算されます。デンドログラム/ヒートマップを作成するために使用しているのは、クラスターグラム関数だけです。私のバイオインフォマティクスツールボックスはバージョン 3.3 です

本当に、ここで探しているのは、「obj = obj.getclusters;」が何をするかだけです。行う?私はプログラマーではないので、OO には詳しくありません。私には、関数呼び出しがないので、魔法のようにクラスターがあるように見えます。これは clustergram() の 304 行目です。

4

1 に答える 1

0

まず、Bioinformatics Toolbox の新しいバージョン (3.4 以降) を使用していますが、これらのバージョンのclustergram.mファイルには次の行がありません。obj = obj.getclusters;

クラスでCLUSTERGRAMを覚えておいてください(古いバージョンだったので機能しません)。実行するclustergram(data,...)と、実際にこのクラスのコンストラクター メソッドを実行してクラスターグラム オブジェクトを作成します。このオブジェクトはobj変数です。したがって、実行すると、オブジェクトを更新する clustergram クラスのメソッドobj = obj.getclusters;を実際に実行します。getclustersobj

メソッドが実行している詳細を取得するにはgetclusters、メソッド ブロックで次の行を探します。

    function obj = getcluster(obj)

最新バージョンでは、次のようにcomputeClusters定義されたメソッドがあります

    function computeClusters(obj)

このメソッドは、行と列の両方のデンドログラムを計算し、オブジェクトを更新します。もちろん、この関数を直接変更することもできますが、お勧めしません。距離メトリックとリンケージ用に別々の関数を開発し、それらの関数を使用して clustergram オブジェクトを構築する方がはるかに優れています。

アルゴリズムが距離とリンケージを使用しない場合、デンドログラムを構築する方法を説明してください。LINKAGE関数の出力と同じリンケージ マトリックスを作成しますか? そのような行列がなければ、視覚化だけでもクラスターグラムを使用できないと思います。クラスターグラムがどのように見えるべきかの例はありますか? IMAGEIMAGESCなどの他の単純な関数の Heatmap クラスを使用できる場合があります。

于 2010-10-21T20:02:41.643 に答える