Abstract#

Cytoscapeプラグインに不具合があり、原因究明に数時間を要したため、記録に残します。

Topics#

不具合の内容#

  • 現象
depthの数字が増えていけばNodeの数も増えるはずなのに減る場合がある。

depthNumber of Nodes
222
3126
4190
5176
6181
1029910はむっちゃ時間がかかる
total314
  • データ分析
    • depth 4の時にMajor Leagueがないのはおかしい。
    • Major Leagueは、アメリカから呼び出されている。
    • アメリカは、KM_TOPから呼び出されている。
    • 4の時アメリカから3つしか伸びてない。
    • リンクはあるが、リンク先のノードがない。
    • 同じようにAndrew Air showもUS Election2008などもおかしい
    • アメリカは、KM_TOPからの呼び出しをチェックする際は、すでにノードが追加されていた。
    • Countriesから呼び出されているときにチェックされてる。
    • Countriesは、KM_TOP、Networking、InternationalStudentHouse、Japan Night、アメリカから呼び出されている。アメリカはないとして、それ以外の4つのどこから最初に呼び出されるか?Networkingっぽい
  • 原因
Networking-Countries経由で呼び出されたときの”アメリカ”はKM_TOPから数えて4階層目にある。とするとそれ以上下の層にあるUS Election2008などのノードは調べないことになる。しかしあとで”アメリカ”はKM_TOPからも2階層目として呼び出される。その際はすでに1度呼び出されたあとなので、調べないことになる。ここがアルゴリズム上間違い。

リカーシブなメソッドを使っており、アルゴリズム上、全体を徐々に潜っていくのではなく、最初から行けるところまで潜る。これを考慮する必要があった。

  • 対策
まだ呼び出されていないかどうか、(NodeSetに登録されていないかどうか)は、そのノードを調べる条件にせず、NodeSetに追加するための条件とする。