endaaman.com

2024-11-05

Tips

WineでHamamatsu NDP.view2を使う

NDP.view2

Digital pathologyで特に重要なバーチャルスライド技術のうち、大きなシェアを占めるのが浜松ホトニクスの Nano Zoomerシリーズである。LinuxではQuPathがあり高度な拡張性を備えるものの、.ndpiファイルを閲覧するだけに限っては謹製のHamamatsu NDP.view2のほうが動作が軽快で操作感に優れる。Hamamatsu NDP.view2をLinuxでWindowsと遜色なく動作するためのTipsを共有する。

ss.png NDP.view2 on Linux

NDP.view2をダウンロード・インストール

NDP.view2 画像閲覧ソフトウエア U12388-01 | 浜松ホトニクス から Windows版をダウンロードし、Wineで実行する。

$ wine NDP.view\ 2.9.29\ RUO\ Setup.exe 

フォントの設定

デフォルトでは文字が表示されないのでフォントをWineプレフィクスにインストールする。

$ winetricks -q allfonts

時間はかかるがこれで日本語もまるっと表示できるようになる。

Windowsからフォントを持ってくる

Winetricksで持ってくるのが説明的にもシンプルだが、要は、$WINEPREFIX/drive_c/windows/Fonts.ttfファイル等を並べれば読み取ってくれる。

自分はWindowsから持ってきたフォントをSyncthingで持ち歩いているので、

$ rm -r ~/.wine/drive_c/windows/Fonts
$ ln -s ~/Sync/Fonts/msfonts_win11 ~/.wine/drive_c/windows/Fonts  

もとのフォントのディレクトリを消して(デフォルトでは空なので)、シンボリックリンクを貼っている。

起動スクリプトを作る

引数に .ndpi を与えたら、それを開くようにスクリプトを作成する。パスは /path/to/bin/NDPView2 と想定する。

#!/usr/bin/bash

export WINEARCH=win64
export WINEPREFIX="PATH TO YOUR PREFIX"

# 以下はお好みで
export LANG=ja_JP.utf-8
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd32.json

if [ -n "$1" ]; then
  p=$(winepath -w $1)
else
  p=""
fi
wine $WINEPREFIX/drive_c/Program\ Files/Hamamatsu/NDP.view\ 2/NDPView2.exe $p

ただパスを与えるだけではファイルの場所によって開けないことがある。なので、Wine内部のドライブレターを考慮したパスに変換してからEXEに与えるようにする。

winepath でLinuxとWineのパスを相互に変換できるので、これを使っている。デフォルトでは Wine→Linuxで、 -w を指定すると Linux→Wineの変換となる。

// ホーム以下
$ winepath -w ~/Documents
Z:\home\user\Documents

// Wineプレフィクスは C:\に対応する
$ winepath -w ~/.wine
C:\

// 外部メディアはD:\など別デバイスとしてドライブレターが与えられる
// デフォルトだとここのマッピングが不正になりファイルを開けなくなる
$ winepath -w /run/media/user/USB/
D:\

外部メディアはC:\ではなく、D:\などWineの中からは別ドライブとして開かないと行けないので、この変換が必要になる。 $WINEPREFIX/drive_c 配下は C:\ としたり、外部メディアのドライブレターを補ったりしてくれる。バーチャルスライドデータは外付けHDDなどで輸送することが多いので必須の操作である。

デスクトップエントリを作成する

Linuxネイティブアプリと同じような振る舞いになるようにする。~/.local/share/applications/NDPView2.desktop のようなファイルを作り以下のようにする。

[Desktop Entry]
Name=NDP.view 2(Wine)
Exec=env WINEPREFIX="/home/ken/Games/ndp" /home/ken/.bin/NDPView2 %f
Type=Application
StartupNotify=true
Icon=53E8_NDPView2.0
StartupWMClass=ndpview2.exe
MimeType=application/x-ndpi;
Categories=Graphics;Viewer;

ファイルを開く操作だと、 %fにLinuxのパスが入ってくる。直接アプリを起動するときには何も入ってこない。Iconは適宜のWineから自動生成されたファイルをなどを参考にしたり、/home/ken/.local/share/icons/hicolor の中から探すといい。

.ndpiとの関連付け

~/.local/share/mime/packages/x-ndpi.xml を作って

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="application/x-ndpi">
        <comment>NanoZoomer Digital Pathology Image</comment>
        <glob pattern="*.ndpi"/>
    </mime-type>
</mime-info>

以下を実行する。

$ update-mime-database ~/.local/share/mime
$ $update-desktop-database ~/.local/share/applications

これで.ndpiをNDP.view2でちゃんと開けるようになる。

デフォルトの`.ndpi`ファイルとの関連付け

デフォルトで .ndpi ファイルに関連したものとし、wine-extension-ndpi.desktop というようなファイルが生成されるが、実行するコマンドは

Exec=env WINEPREFIX="/home/[user name]/.wine" wine start /ProgIDOpen Hamamatsu.NDP.view\\ 2.ndpi %f

のようにパス変換を行っていないので、外部HDDなどから開こうとすると失敗する。 なので、前述のようにスクリプトを書いて自分でデスクトップエントリを用意したほうが良いとなるわけである。

注意!:DXVKを使うとCPU使用率が高くなる

注意点として、よかれと思ってDXVKをWineプレフィクスにインストールすると、動作時に特定のsingle CPUの使用率が100%に張り付いてしまう。おそらくシェーダーのコンパイルなどをしてるのだろうが、無くても動作環境は全く変わらないので導入しないことを推奨する。


©2024 endaaman.com