2024年3月17日日曜日

ケヤキ - 樹皮上のいろいろ

地衣類を見始めて、樹皮に付く種類を見付けやすいのがケヤキ・サクラ辺りだと判ったのだが、同時に地衣類以外もいろいろ集まりやすい木のようだ。 そのいろいろを集めて見せてくれるページがないか探してみたが見当たらなかったので、試しにやってみようと思う。

蘚類はヒナノハイゴケ・コゴメゴケなどが多いらしい。上は多分ヒナノハイゴケで、下は不明。

藻類は「ケヤキの場合は Interfilum paradoxum が優占する群落が見られる。」と http://sourui.org/publications/phycology21/materials/file_list_21_pdf/25Airborne-algae.pdf に書いてあった。 それかどうかはともかく。

地衣類(レプラゴケ、ロウソクゴケ、コフキメダルチイ、ハクテンゴケ)。他のウメノキゴケ類、モジゴケ類、フタゴウオノメゴケやヒメスミイボゴケなども。

不明。これは結局何?

昆虫(ヨコヅナサシガメ)。夏場にはオオミズアオが飛んでくるしもちろん蝉も、蟻はよく見る。外来種のヒロヘリアオイラガの繭もよく付いている。

2024年3月12日火曜日

トロピカル多項式

トロピカル幾何学で扱われる"トロピカル多項式"の話をしたい。 引用符を付けたのは、特別な多項式があるわけではなくただの実数係数多項式だ、と言いたいからだ。 もちろん、代入操作がトロピカル代数を使った評価になる。

以前(多項式環はモノイド環)、次のように書いた。

多項式環をモノイド環として見ると、「代入」によって冪乗や係数との積が取られることは全く自明ではなくなるが、説明付けることは可能だ。 いま可換環\(R\)と\(R\)代数\(S\)がある状況を考えよう。 \(R[\mathbb{N}^n]\)の元\(f\)に\(s\in S^n\)を代入するとは、 \(\mathbb{N}^n\) から \(s\) で \(S\) の積により生成されるモノイド \(\langle s \rangle\) への準同型で \(R[\mathbb{N}^n]\) を \(R[\langle s \rangle]\) に写した上で、 \(\langle s \rangle\) の元を \(S\) の元と考え、係数を \(R\) の作用と考え、形式和を \(S\) の和に読み替えて、全てを \(S\) の中で評価した結果を得ることを言う、ということになるだろう。

トロピカル代数にこれを当てはめてみたい。 と、その前にトロピカル代数を定義しておこう(一般論はよく知らないので、よく出てくる min-plus 代数というやつだけ考える)。 \(\mathbb{R}\) を実数体とし、\(\overline{\mathbb{R}}=\mathbb{R}\cup\{\infty\}\) とする。 \(\overline{\mathbb{R}}\)に次のように演算を定義する。 積\(\otimes\)を\(\mathbb{R}\)の和(もちろん\(\infty\)に何を足しても\(\infty\))とし、 和\(\oplus\)を\(\min\)とする。 積の単位元は\(0\)、和の単位元は\(\infty\)となる。 和が逆元を持たないので通常の意味で環ではないが、この点だけを除けば大体環みたいなので半環と呼ばれる。

\(\mathbb{R}\)の\(\overline{\mathbb{R}}\)への作用は普通に\(\overline{\mathbb{R}}\)の積として入れることができる。 ということで、「可換環\(R\)と\(R\)代数\(S\)」の代わりに「可換環\(\mathbb{R}\)と\(\mathbb{R}\)の作用を持つ半環\(\overline{\mathbb{R}}\)」が用意できた。 後は\(\mathbb{R}\)係数の多項式(\(R[\mathbb{N}^n]\)の元)に\(\overline{\mathbb{R}}^n\)の元を代入する手続きで、これは引用した説明と同じだ。 くどいかも知れないが念のためなぞっておくと、\(f\in\mathbb{R}[\mathbb{N}^n]\)に\(s\in\overline{\mathbb{R}}^n\)を代入した\(f(s)\)は、次のように計算される。 \(\mathbb{N}^n\) から \(s\) で \(\overline{\mathbb{R}}\) の積により生成されるモノイド \(\langle s \rangle\) への準同型で \(\mathbb{R}[\mathbb{N}^n]\) を \(\mathbb{R}[\langle s \rangle]\) に写した上で、 \(\langle s \rangle\) の元を \(\overline{\mathbb{R}}\) の元と考え、係数を \(\mathbb{R}\) の作用(\(\overline{\mathbb{R}}\)の積すなわち\(\mathbb{R}\)の和)と考え、形式和を \(\mathbb{R}\) の和(すなわち\(\mathbb{R}\)の\(\min\))に読み替えて、全てを \(\overline{\mathbb{R}}\) の中で評価した結果を得る。

背景: 最近、トロピカル代数の話って付値の話に似てると思って何本か YouTube でトロピカル幾何学の動画を見ていたらやっぱり付値の説明なんかが出てきたのですっきりした、という流れでそこで扱われている多項式についてちょっと考えたことを書き留めてみた。

追記: うーん、違うな。これだと多項式関数として役に立っていない。

2024年2月25日日曜日

100均のマクロレンズ - 続ダイダイゴケ

去年だったか100均でスマホにクリップで付ける簡単なマクロレンズを買っていた、のを思い出したので使ってみる。

コウロコダイダイゴケ Squamulea aff. subsoluta

ツブダイダイゴケ Gyalolechia flavovirescens

不明種。前回「生え方が厚みがある気がする」とか言っていたが、拡大したら子器だらけで、上の二つとは別種ということでいいいと思う。 地衣体がほぼ無い種類として Athallia という属があるらしいので、その仲間だろうか、とか想像してみたり。

2024-03-10追記: 3枚目の写真だが、いろいろ観察してきた結果コウロコダイダイゴケだと判ってきた。 どういう環境だとこうなるのかまでは不明だが、コウロコダイダイゴケのコロニーを見ていると時々こうした子器だらけの領域が現れる。 この写真の場所もきっと端の方まで観察すれば普通のコウロコダイダイゴケっぽい領域に続いていると思う。

2024年2月20日火曜日

ダイダイゴケ

ここ数週間地衣類を見るのにはまっている。 きっかけは何となく読んでみた本からなのだが、今まで意識に上っていなかったそこらで目にするあれもこれも地衣類だということに気付いてしまったら、もう見逃すことができなくなってしまった。 種類をちゃんと知るためにはルーペで細かい部分まで見る必要があって、種を同定するというレベルだと特有の分泌物質を検出することが必要になるらしいのだが、そこまでは無理。ルーペは買うべきかも知れないが。 ざっくり見分けるレベルだったら、図鑑と見比べるぐらいで何とかなるだろうと、最新の安価な図鑑を買った。「街なかの地衣類ハンドブック」というやつだ。

最初のうちは、ダイダイゴケ、モジゴケ、ウメノキゴケのように目や科のレベルで認識するので手一杯だったが、そのうちよく見掛けるダイダイゴケの中にたまに雰囲気の違うような気がするものがあるような気がしてきた。 もう一度ハンドブックに戻ると、コウロコダイダイゴケとツブダイダイゴケが載っている。よく見るのはコウロコダイダイゴケの方だ。これは本当に住宅街には遍在していると言っても良いほどそこら中に生え散らかしている。 雰囲気の違う物がツブダイダイゴケの記述に当てはまるか、と言われると、それも違う気がする。 ということで他の資料を見たいのだが、そもそも日本語の地衣類図鑑は大昔のものを除くと、あとは(自費出版か何かの類いなのか)携帯版と称するもので5000円ぐらいするやつしかない(後に、図書館で実物を見たがフルカラーで値段的には妥当かもしれないがいきなりは手を出しにくい)。 ということでネットの大海に乗り出すために、ハンドブックで学名を確認する。 コウロコダイダイゴケ Squamulea aff. subsoluta。ツブダイダイゴケ Gyalolechia flavovirescens。 aff?

【aff. affinis】○○△△に類似の意味。特定の種または亜種に類似するが、重要な分類形質の一部が明らかに一致しないことから、未記載種の可能性の高い場合に、属名と種小名の間に挿入する用語。○○ sp. aff. △△というように用いる(○○は属名、△△は種小名)

Ⅶ 用語解説

つまり学名が確定していない! こんなにそこら中にある普通種の学名が確定していない状態で安閑としていられるものなのか? サザエがずっと別種と取り違えられていて最近新種と判った、などという話もあるし研究者は普通種に興味が無いものなのかもしれない。

一方、Squamulea や Gyalolechia という属が設けられたのは長い博物学の歴史からすると極最近のわずか10年前のことで、分子生物学的なつまり DNA の系統分析の波が押し寄せて今まで巨大な分類群だった Caloplaca がバラバラになり、その後も一部は別の分類群に移動したり、とダイダイゴケ類(を含め地衣類)の分類は今激動期のようだ。 ツブダイダイゴケを web で探すと以前の Caloplaca flavovirescens としているページの方が多く出てくる。 そして、より新しくは Laundonia flavovirescens のようだ。

コウロコダイダイゴケのように、ダイダイゴケ類でコンクリートの上に生えてる種類、みたいなものを探してみる。たとえば Xanthocarpia crenulatellaFungi of Great Britain and Ireland の生息地の説明を見ると "On flat concrete such as drain covers and disused airfield runways, rarely on inland limestone." などとあり、写真も割と似たものに見える。 ただし、いろいろな物が混ざっているので再考が必要("According to Vondrák et al. (2011) the species is polyphyletic, and the status of GBI material needs further research.")、みたいな注意もあり分類の難しさが判る。

話を戻して、「雰囲気の違うやつ」に関しては、生え方が厚みがある気がするのでその方向で何か探せないかと思うのだが、いかんせん写真頼りで調べるのは限界がある。 学術的な記述で探し出すのってどうやるんだろう。 そもそも論文にアクセスするのも大変そう(大学などの機関に属しているわけではないので)。 何か進展があればまた書くかも知れないが、一瞬の熱狂で終わる可能性も…。

2024年1月9日火曜日

pipenv の zsh 補完

Django の開発中の不満の一つが pipenv run の補完だ。 zsh は補完が凄いと聞いていたのに bash から移行してストレスが増えた。 bash はとりあえずファイルがそこにあればいつでも補完が効く。 pipenv run python と打った後にはカレントの manage.py が補完できる。 それに対して、zsh の補完はもっと inteligent で文脈を理解するのだが、何の指定もない文脈では何も補完できない。 本当に使えない。 まあお気づきかと思うが、zsh が使えないというより設定ファイルが酷い、という話、のはずだ。

調査

まずは状況を確認しよう。 Mac の homebrew で pipenv を入れていて、シェルは zsh。 .zshrc で補完の設定は最低限のものだけ。

autoload -Uz compinit && compinit
zstyle ':completion:*' completer _complete _ignored _files
.zshrc

pipenv の補完設定は /usr/local/share/zsh/site-functions/_pipenv にあるが、これは /usr/local/Cellar/pipenv/2023.11.15/share/zsh/site-functions/_pipenv へのシンボリックリンクだ。 homebrew がこの設定ファイルをどこから持ってきているかというと、pipenv.rb の中で次の補助関数で生成している。

generate_completions_from_executable(libexec/"bin/pipenv", shells:                 [:fish, :zsh],
                                                           shell_parameter_format: :click)
pipenv.rb

generate_completions_from_executable は、formula.rb に定義がある。 shell_parameter_format を :click にして shell に :zsh を渡すと最終的に env _PIPENV_COMPLETE=zsh_source pipenv というような呼び出しが行われる。 pipenv のドキュメントにある eval "$(_PIPENV_COMPLETE=zsh_source pipenv)" にたどり着くのだ。 つまり、pipenv 側が用意した設定だと言って良い。

click とは何ぞや?

Click is a Python package for creating beautiful command line interfaces in a composable way with as little code as necessary. It’s the “Command Line Interface Creation Kit”. It’s highly configurable but comes with sensible defaults out of the box.

Welcome to Click

Python で CLI を作るときのツールキットらしい。 シェルの補完設定も作れる(Shell Completion)。 つまり、pipenv はこれを利用して作られている、と。 コードを確認してみよう。

@cli.command(
    short_help="Spawns a command installed into the virtualenv.",
    context_settings=subcommand_context_no_interspersion,
)
@common_options
@argument("command")
@argument("args", nargs=-1)
@pass_state
def run(state, command, args):
    """Spawns a command installed into the virtualenv."""
    from pipenv.routines.shell import do_run

    do_run(
        state.project,
        command=command,
        args=args,
        python=state.python,
        pypi_mirror=state.pypi_mirror,
    )
pipenv/cli/command.py

このデコレーターたちが click のもので、デコレーターの引数によって補完の挙動が変わるようだ(詳細は把握していない)。 ざっとドキュメントを見た感じ、残りはただのコマンドラインみたいな指定ができる方法が見当たらない。 ということでこの仕組みのまま直す方法は無さそう…。

解決

pipenv に手を入れて解決するのは難しそうなので、zsh の補完で pipenv run にだけ適用するパターンを作りたい。 遠い昔に買った「zshの本」に nice などに適用される方法が載っていたのでそれを参考にする。

#compdef -p pipenv

local cur in_run
cur=$CURRENT
in_run=0
while (( cur - 2 )) do
    if [[ $words[$(( $cur - 1 ))] == "run" ]]; then
        in_run=1
        break
    fi
    (( cur-- ))
done
if [[ $in_run == 1 ]]; then
    while (( cur - 1 )) do
        shift words
        (( CURRENT-- ))
        (( cur-- ))
    done
    _normal
else
    _pipenv
fi

大雑把に説明すると、pipenv の引数に run が入っている場合に、それより前の(グローバルオプションなども含む)部分を無視した文脈で補完し直す、という方針になる。

注意点1:「pipenv run にだけ適用」を zsh 側で書けなかったので、pipenv に適用する補完関数として、run が入ってなければ _pipenv での補完に戻る、という書き方をしている。

注意点2: 先頭行の「#compdef -p pipenv」は、"#compdef pipenv" と書いたら pipenv に対する補完の定義、ということになると思うのだが、既に _pipenv が定義されていて二つめは受け付けてもらえないようだったので、ファイルパターン(glob パターン)で指定した。

あとはこのファイルを /some/where/_pipenv_run としておいて、compinit の前で fpath に /some/where を追加したら、起動時に読み込んでもらえる。

もう少し効率よく書けたらいいと思うのだが、ひとまずはこれで良しとしよう。

2024年1月2日火曜日

2023年の読書

読書メーターの記録によるとマンガを入れて78冊。 まあ去年と大差ない。

印象に残っているのは 「紋章学入門」「神田神保町書肆街考」という厚めのちくま学芸文庫、 「運動しても痩せないのはなぜか」 辺り。 数学では「グレブナー基底と代数多様体入門」は良い本だった。表現論の本には手を出して挫折、を繰り返していた感じ。 マンガでは継続して読んでいた「プリニウス」「重版出来」「ダンジョン飯」が完結したし、「フットボールネーション」や「アルテ」はそろそろ終わりそうな雰囲気になってきたので、この先は読む量がだんだん減りそう…いや「ぼっち・ざ・ろっく!」とか読み始めてしまったし、そんなことはないか。 YouTube きっかけは「冬虫夏草ハンドブック」があった。うごめ紀という生物系のチャンネルで紹介されていたもの。

2023年10月21日土曜日

今年の夏に見たクモ

今年の夏はクモに目が行くことが多かったような気がする。 きっかけは植木の間に巣を作ったクモの種類を調べたところからだった。 [写真1] 垂直円網に体長5ミリほどのクモが頭を上にしている。 一般的に蜘蛛の巣というと垂直円網を思い浮かべるが本当は案外少数派である、というようなことは去年クモの糸についての本を読んで知っていたので、それが手がかりになるはずということで図書館に行ってクモの図鑑「原色日本クモ類図鑑」を開く。垂直円網で調べるとコガネグモ科ということが判って、頭を上に向けて止まる種類はほとんど無く、ギンメッキゴミグモかギンナガゴミグモというところまでは絞れる。模様を図版と見比べて、ギンナガゴミグモかなあというのが最初の判断だったが、体型が長細くは感じず確信が持てなかったので、ほかの図鑑類も見てみることにした。 ギンナガゴミグモについて「ネイチャーガイド日本のクモ」曰く"本州中部以北の記録はほとんどクマダギンナガゴミグモと思われる"と新たな種の示唆が。 「クモの巣ハンドブック」を開くと、ギンナガゴミグモの巣には白い帯があることが判った。 巣の全体はこの写真には入っていないが、白い帯はなかったので、ギンメッキゴミグモの方らしい、という結論になった。 その後も時々見てみると、だんだん腹部全体が白っぽく光っているように見えてきたので、あるいは模様は成長と共に消えるようなものだったのかも知れない。

家の中で、近年はアダンソンハエトリ[写真2]しか見掛けない、と思っていたが、2種類ほどよく判らないクモにも遭遇した。大きさはアダンソンハエトリと大体同じ。 [写真3] 木目調の壁にいるから青っぽく見えているだけでただの灰色なのかも知れないが、ぱっと見青いクモがいると思った。 [写真4] こちらは床にいた。ハエトリグモの仲間かと思って「ハエトリグモハンドブック」を眺めてみたが、よく判らなかった。

[写真5] 近所の塀にいたクモは多分ネコハエトリのメス。ハンドブックには"草地の草本や低木の上に見られる"と書いてあったが。

他にも、空中に巣を張っている小さいクモを撮ろうとしたことがあったけど、iPhone がどうしても背景にピントを合わせてしまって上手くいかなかった。 普段から植物と虫の写真しか撮っていないが、今年はクモの写真が多いなと思ってまとめてみた。

写真1
写真2
写真3
写真4
写真5