トンボの羽の網目
トンボの羽の脈は、左右の羽で同じ場所にある一次脈と、羽ごとに違う二次脈でできている。Hoffmann ほか(2018)は、二次脈は一次脈で囲まれた区画の中に等間隔に置いた抑制の中心のボロノイでできると考えた。公開された 525 枚の羽の分割データで数えると、実物の区画はその重心のボロノイと IoU 0.798 で重なり、重心をボロノイの重心へ 1 手動かしても平均間隔の 7% しか動かなかった。抑制の場の谷線も、場の幅が隣の中心までの距離の 4 割までは同じ区画を切り、5 割で崩れた。
なにか
トンボやイトトンボの羽には、数百の小さな区画を作る脈が走っている。Hoffmann・Donoughe・Li・Salcedo・Rycroft(2018)は、羽の写真と出版された図から 468 枚・232 種の羽の脈を機械で読み取り、区画ごとの面積と円形度を数えた。円形度は、区画の面積を、同じ周長の円の面積で割った値(4πA/P²)である。同じ個体の左右の羽でも二次脈の並びは一対一に対応しないと、原典は図 1A で示している。
原典の模型は 4 段からなる。一次脈の位置が先に決まり、一次脈で囲まれた領域の中に等間隔の抑制の中心ができ、二次脈は抑制の信号の極小に生じ、それはボロノイ細胞でよく近似でき、そのあと羽が異方的に成長する。原典は領域ごとに実物と同じ数の中心を乱数で置き、Voronoi iteration で等間隔にして二次脈を作った。成長を入れない模型は円形度を系統的に過大評価する、とも書いている。
原典が GitHub に置いた分割データは、羽の画素ごとに区画の番号を書いたもので、525 枚(トンボ 331・イトトンボ 194・244 種・16 科・区画 193,485)ある。ここでは、このデータの区画がどこまでボロノイか、中心はどれだけ等間隔か、中心を乱数から置いた模型が実物の形の分布をどこまで出すかを数えた。一次脈と二次脈の区別はデータに無いので、原典の模型をそのまま組むのではなく、区別を使わずに確かめられる所だけを見た。
区画は、その重心のボロノイと 8 割重なる
経路 A は、実物の区画の重心を中心にして、羽の画素を最も近い中心で区切るボロノイである。実物の区画と、その重心の区画がどれだけ重なるかを、重なりを合わせた面積で割った IoU で区画ごとに出した。羽ごとの中央値は、トンボ 331 枚で 0.819、イトトンボ 194 枚で 0.762 だった。羽ごとの中央値の 1 割目と 9 割目は 0.732 と 0.844 である。
見立ての 1 つ目は、IoU の中央値がトンボもイトトンボも 0.80 以上、だった。トンボは入ったが、イトトンボは 0.762 で届かず、外れである。区画の 8 割ほどは、中心からの距離だけで切れる形をしている。
経路 B は、原典の「抑制の信号の極小」の側から組んだ。中心ごとにガウス関数を置いて足した場を作り、場の高い画素から順に流す分水嶺で区切る。ガウス関数の幅は、中心ごとに最近傍の中心までの距離の k 倍にした。k = 0.2 では、B の区画は A と同じ画素が 92%、実物との IoU は 0.800 で、A との差は 0.007 だった(525 枚の中央値)。
見立ての 2 つ目は、k が 0.3 以下ならボロノイと同じ画素が 9 割以上で IoU も A と 0.02 以内、k = 0.5 では中心の半分以上が場の極大でなくなって IoU は 0.5 を切る、だった。例の羽(Dromogomphus spinosus の後翅)で k を 0.1・0.15・0.2・0.25・0.3・0.35・0.4・0.5 と振ると、同じ画素は 94%・94%・94%・94%・93%・93%・92%・50%、場の極大になっている中心は 100%・100%・100%・99%・93%・73%・39%・5%、実物との IoU は 0.84・0.84・0.84・0.84・0.84・0.82・0.80・0.23 だった。見立てどおりである。幅の等しい 2 つのガウス関数は、中心の間隔が幅の 2 倍より広いときにだけ、あいだに谷ができる。k = 0.5 はちょうどその境で、谷が消えると 1 つの区画に 2 つの中心が入る。周りの中心の裾も重なるので、極大でなくなる中心は k = 0.35 から増えるが、分水嶺は中心から流し始めるので、区画は 0.4 までボロノイとほぼ同じに切れた。原典の「極小はボロノイでよく近似できる」は、場の幅が隣までの距離の半分より狭いときの話である。
場の計算では、幅の何倍より外を 0 にするかを決めている。k を振るときは 30 倍にした(ほかの所は 6 倍で、例の羽の k = 0.2 で場が 0 の画素は羽の 0.3%)。6 倍のまま k = 0.1 にすると、羽の 18% で場が 0 になって流す順が決まらず、同じ画素は 86% に落ちた。最初はこの値で見立てを判定していた。
中心は等間隔に近い
等間隔かどうかは、ボロノイの重心へ中心を動かす Lloyd の 1 手で測った。等間隔なら、中心はすでにその区画の重心にあるので、ほとんど動かない。実物の区画の重心を中心にして 1 手動かすと、動く距離は平均間隔(羽の面積を区画の数で割った平方根)の 7% だった(羽ごとの平均の中央値・9 割目でも 11%)。同じ数の点を乱数で置くと 24% 動く(1 割目でも 23%)。
見立ての 3 つ目は、実物は 10% 未満、乱数は 20% 超、だった。見立てどおりである。実物の中心は、乱数の点の 3.6 分の 1 しか動かない。
中心を乱数から置いても、形の分布は戻る
次に、中心を実物から取らずに置いた。模型 M0 は、実物と同じ数の点を羽の中に一様な乱数で置き、Lloyd を 10 手回したものである。模型 M1 は、実物の区画の大きさ(隣との平均)の −2 乗を密度にして、密度に比例する確率で初期位置を引き、重みつきの Lloyd を同じ手数回した。密度 ρ の重心ボロノイは区画の大きさが ρ の −1/2 乗に比例するので、M1 は実物の大きさの分布を持つ等間隔の中心になる。原典の「領域ごとに実物と同じ数の中心を置く」の、領域の境界を使わない形である。
見立ての 4 つ目は、M0 の円形度の中央値は実物より 0.15 以上高く、面積の変動係数は実物の半分以下、M1 でも円形度は実物より高い、だった。円形度の中央値は実物 0.796・M0 0.847・M1 0.842 で、差は M0 が 0.051、M1 が 0.046 だった。面積の変動係数は実物 0.61・M0 0.20・M1 0.49 で、M0 は実物の 0.32 倍、M1 は 0.81 倍である。円形度の差が 0.15 に届かず、外れである。実物の重心にある M1 の区画の面積は、実物の面積と対数で相関 0.78 だった。
見立ての 5 つ目は、隣の数の最頻は実物も模型も 6 で、実物で隣が 4 の区画の割合は M1 の 1.3 倍以上、だった。実物は 3 が 9%・4 が 17%・5 が 19%・6 が 37%・7 が 15%、M1 は 4 が 18%・5 が 22%・6 が 37%・7 が 14% で、最頻はどちらも 6 である。隣が 4 の割合は実物が M1 の 0.99 倍だった。実物のほうがむしろ少なく、外れである。原典は、近い平行な一次脈のあいだには矩形ができると書いている。密度を実物に合わせると、矩形の割合は一次脈を入れない模型でも実物と同じだけ出る。トンボでは実物 15%・M1 14%、イトトンボでは実物 21%・M1 25% である。
外れるのは、縁と付け根と大きさの勾配
見立ての 6 つ目は、羽の縁に接する区画の IoU は内側より 0.03 以上低い、だった。縁に接する区画の IoU の中央値は 0.790、内側は 0.806 で、差の中央値は 0.010 だった。縁のほうが低い羽は 61% ある。差は 0.03 に届かず、外れである。ただし分けて見ると、トンボでは差が −0.004 で縁が低い羽は 40%、イトトンボでは差が 0.057 で縁が低い羽は 96% だった。縁で外れるのはイトトンボで、細長い羽では縁の区画の片側が輪郭で切られ、中心からの距離では形が決まらない。
原典は、模型が合わないのは区画の大きさに強い勾配がある領域と、二次脈が一直線に並ぶ領域だと書いている。羽を付け根から先まで 21 の区間に分け、隣の区間との面積の比で勾配を 3 段に分けると、IoU の平均は勾配が小さい区間で 0.765、中で 0.686、大きい区間で 0.683 だった(区間の数 6,593・2,120・693)。勾配が大きいほど低く、原典の記述と同じ向きである。例の羽では、付け根の大きな区画が最も低い(帳簿の 2 番目の図で赤みの濃い所)。これらは一次脈で囲まれた区画で、原典の模型でも二次脈の模型の外に置かれている。
原典は、同じ個体の左右の羽でも二次脈の並びは一致しないと書いている。公開データは右の羽だけなので、左右は比べられない。代わりに、同じ羽に M1 を初期位置の乱数だけ変えて 2 回置くと、網目は一致しなかった(帳簿の 4 番目の図)。等間隔の中心の模型は、密度が同じでも中心の位置を 1 つに決めないので、羽ごとに違う網目が出る。
トンボとイトトンボ
見立ての 7 つ目は、イトトンボの円形度の中央値はトンボより 0.03 以上低い、だった。羽ごとの中央値の中央値は、トンボ 0.815、イトトンボ 0.719 で、差は 0.096 だった。見立てどおりである。区画の数の中央値はトンボ 418、イトトンボ 150 で、隣が 4 の割合はトンボ 15%、イトトンボ 21% である。
円形度は、境界の読み方で動く
分割データの境界は画素の階段なので、周長をどう読むかで円形度が変わる。Douglas-Peucker の許容を 0.5・1・1.5・2 画素と振ると、円形度の中央値は 0.388・0.579・0.684・0.784 まで動いた(22 枚)。半径 20 画素の円を同じ道具で測ると 0.68・0.95・0.96・0.95 になる。見立ての 8 つ目は、許容を振っても 1 つ目・3 つ目・7 つ目の判定は変わらず、円は 0.93〜0.99 に入る、だった。IoU と Lloyd は多角形を使わないので、1 つ目と 3 つ目は許容に依らない。7 つ目は、許容ごとにトンボ 14 枚とイトトンボ 8 枚に分けると、差は 0.057・0.056・0.084・0.073 で、どの許容でもイトトンボが低い。判定は動かなかったが、許容 0.5 画素では円が 0.68 になり、外れである。
本文の円形度は、許容を持たない取り方で出した。区画の境界で 3 つ以上の区画が集まる角を分岐点とし、分岐点だけを頂点にした多角形で面積と周長を取る。羽の外も 1 つの区画として数えるので、縁に接する区画では、縁の曲線が分岐点のあいだの弦に置き換わる。これは原典の「分割した画像から多角形の表現を作った」に当たる。頂点の数の平均は 5.67 で、円形度の中央値は 0.796 である。模型の区画も同じ取り方で測った。
長い脈は取り出せたが、領域は閉じなかった
一次脈の代わりに、分岐点でまっすぐ続く脈の区間をつないで長い脈を探した。向きの変化が 40° 以内で、次の候補と 15° 以上差がある対だけをつなぐと、いちばん長い鎖は羽の長さの 61%、羽の長さの 2 割以上の鎖は 13 本だった(525 枚の中央値)。分岐点のうち、2 本がほぼ一直線(15° 以内)に続く所は 11% である。例の羽では長い鎖が前縁に沿う主な脈をたどったが、途中で切れ、羽を閉じた領域には分けなかった。原典のように一次脈で領域を作る模型は、この鎖では組めなかった。
機械で分かる範囲と、目でしか分からない範囲
機械で確かめたのは、多角形の道具が半径 20 画素の円と 15 × 10 の長方形で期待の値を出すこと、4 × 4 の格子の母点のボロノイが 25 × 25 の正方形になり、分岐点の多角形が 12 個で 4 頂点、外との角が分岐点にならない隅の 4 個で 3 頂点の直角三角形になること、幅を狭くした経路 B がそのボロノイと全画素で一致すること、同じ区画どうしの IoU が 1 になることである。見立ての判定は、羽ごとの値の中央値で機械が出した。例の羽のどの区画が一次脈で囲まれているかは、帳簿の図を目で見た判断で、数えてはいない。
どう作ったか
生成器は generators/wingvein.js、ラスタの道具は generators/wingvein-lib.js、脈の網と鎖は generators/wingvein-veins.js、絵は generators/wingvein-draw.js である。分割データは GitHub のリポジトリから tar.gz 4 本を取り、画素ごとの番号を読んで連結成分で区画にした。区画の面積と重心は画素から、多角形は画素の縁をたどった輪郭から取った。ボロノイと分水嶺と Lloyd はすべて画素の上で計算し、多角形は使っていない。525 枚の解析には時間がかかるので、羽ごとの集計(wings.json)と例の羽の多角形(example.json)だけを git に入れ、生データは入れていない。
確かめていないこと。原典の補足資料(SI Appendix)は PMC・Europe PMC・PNAS のどの URL でも開けなかったので、抑制の場の式と領域の分け方は原典のものではなく、ここで組んだものである。公開データには左の羽が無いので、左右の一致は原典の記述を引いただけで測っていない。一次脈と二次脈の区別はデータに無く、模型 M1 は一次脈も成長も入れていない。羽の実寸(mm)はデータに無いので、原典の面積と区画の数の関係は再現していない。525 枚のうち 46 組は同じ種の同じ羽を北米の本と新世界の本の図から読んだもので、両方を数えた。データのリポジトリには LICENSE ファイルが無く、ここでは数を出すために使い、画素のデータは再配布していない。原典の多角形の作り方と、ここで使った分岐点の多角形が同じかは確かめていない。
出典
- 羽の脈の模型とデータ
- J. Hoffmann, S. Donoughe, K. Li, M. K. Salcedo, C. H. Rycroft「A simple developmental model recapitulates complex insect wing venation patterns」PNAS 115(40), 9905–9910(2018)。PMC6176563 の本文を 2026 年 10 月 25 日に開いた。要旨、結果の円形度の定義と模型の 4 段、模型の手順と成長を入れない場合の記述、合わないところ、方法のデータの置き場を読んだ。補足資料は開けなかった
- 分割データ
- github.com/hoffmannjordan/insect-wing-venation-patterns の Dragonfly_NA・Dragonfly_NewWorld・Damselfly_NA・Damselfly_NewWorld の WingSegmentation.tar.gz(2026 年 10 月 25 日に取得・計 35 MB・CSV 525 枚)。README は分割の元になった図の出典として Garrison ほか 2006・2010、Needham ほか 2014、Westfall・May 1996 の 4 冊を挙げている
- 数理
- ボロノイ、分水嶺、Lloyd、重みつきの重心ボロノイ、分岐点の多角形、長い脈の鎖は自分で組み、円と長方形で検算した
- 親戚
- ボロノイ図・距離を変えたボロノイ・双曲ボロノイ・ボロノイ×Hat
- 生成
- generators/wingvein.js(wingvein.svg 表紙・wingvein-book.svg 帳簿)と wingvein-lib.js・wingvein-veins.js・wingvein-draw.js。数値は generators/data/wingvein/facts.json、羽ごとの集計は wings.json、例の羽は example.json に書き出した