お知らせ+活動記録+たわごと

HP と Twitter を補完するとともに、互いの密接な連携を図るため、本ブログを開設した。三位一体を目指す。情報提供、広報活動、教育・啓蒙活動の一環として、肩の力を抜き、冗長性を廃し、簡にして要を得た文章を書くよう心がける。
<< March 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
 
MOBILE
qrcode
PROFILE
無料ブログ作成サービス JUGEM
 
GNU sed 4.4 の公開
Mac 用 RIETAN-FP・VENUS システム用のシェルスクリプトでは、文字列の置換や行の抽出・削除などにストリーム・エディター sed を使いまくっている。grep や awk よりも利用頻度がはるかに高い。

E2J.command では、英語 → 日本語置換のためにパイプ経由で sed を繰り返し実行することにより、LaTeX 文書の「和訳」を実現した。パイプによる並列処理はきわめて高速で、E2J における律速段階は pLaTeX による組版の方だ。反射リストからデータを抽出して CIF を作成するシェルスクリプト refln.command では、反射リストと数値の抽出に sed を使用する。極め付けは逐次リートベルト解析用スクリプトsda.commandで、ユーザーが正規表現対応の置換エンジンとして sed コマンドを自分で入力する仕組みとなっている。

それほどお世話になっている sed が最近 v4.3 にバージョンアップしたことを知り、小躍りしたのは言うまでもない。その直後に早くも v4.4 にマイナー・アップデートされた。v4.3以降では、正規表現マッチング速度が約10倍高速化したそうだ。

v4.4は次の手続きに従ってビルドできる。
  1. GNU sed の Web サイトから sed-4.4.tar.xz をダウンロードする。
  2. sed-4.4.tar.xz をダブルクリックして解凍すると、sed-4.4 フォルダーが生成する。
  3. sed-4.4/INSTALL(テキストファイル)に記載されている手続きに従ってビルドする。
  4. 実行可能プログラム sed-4.4/sed/sed が生成する。
Mac 用 RIETAN-FP・VENUS 統合支援環境のシェルスクリプトはすべて sed 4.4 を使うよう変更した。今後も積極的に sed を活用していく所存である。
Gnuplot で pdfcairo ターミナルを使うための手続き
最近購入した "Gnuplot in Action", 2nd ed. を流し読みしていたとき、
A major breakthrough is the development of a family of terminals that are all based on a single set of contemporary libraries for graphics and text rendering. Because these terminals all share the same back end, you can now create bitmaps (PNG), vector images (PDF), and graphs for interactive viewing (wxWidgets) with consistent appearance across all formats. Gnuplot takes advantage of the cotemporary features of the underlying libraries to produce high-quality graphs through the use of over-sampling, anti-aliasing, and so on.
.....
In the past, gnuplot's support for PDF was relatively weak, particularly in comparison to the very full-featureed PostScript terminal. This situation has now been reversed, and the Cairo-based PDF terminal is probably to be preferred over the classic PostScript terminal.
という指摘(14ページ)が目に付いた。213, 214, 220ページでも 2D グラフィックス・ライブラリー cairo に基づくターミナルに言及している。その的確な現状認識に触発され、RIETAN-FP v2.81 に至るまで長く出力先に指定してきた gnuplot の postscript ターミナルを pdfcairo ターミナルに切り換えようと決意した。グラフの枠と目盛りの線幅を同一にできないという postscript ターミナルの欠陥には我慢がならなかった。古くからあるターミナルだが、未だに枯れきっていないのである。PDF ファイルへの変換に余計な時間がかかるのも気になっていた。pdfcairo なら直接 PDF ファイルが生成する。

以前 pdfcairo の利用を検討した際には、Homebrew を通じて macOS 上で gnuplot と cairo とを連携させる方法が突き止められず、あえなく挫折した。今回は不退転の覚悟で臨み、徹底的に調査した。その結果、習い覚えたノウハウとテクニックを以下に報告する。

macOS 用 gnuplot は、次の手続きに従ってインストールすることを推奨する:
  1. すでに gnuplot をインストール済みだったら、必ずアンインストールする。たとえば Homebrew でインストールした場合は、ターミナルで "brew uninstall gnuplot" と入力してアンインストールする。
  2. 古いバージョンの gnuplot が残っている場合は削除用コマンドが指示されるので、その通り入力する。
  3. Gnuplot の Web サイトの contributed executables for OSX でインストーラー gnuplot-5.0.5-quartz.pkg をダウンロードする。
  4. gnuplot-5.0.5-quartz.pkg をダブルクリックして gnuplot 5.0.5 をインストールする。
  5. Applications フォルダーに gnuplot(実体は Gnuplot.app パッケージ)が生成したことを確認する。
gnuplot をダブルクリックし、"gnuplot> set terminal" と入力すると利用できるターミナルが出力されるが、その中に pdfcairo, epscairo, pngcairo, wxt といった cairo と pango ライブラリーを使うターミナルも含まれている。

readme.text に明記されているように、こうしてインストールした gnuplot は cairo に加え多言語テキスト配置・レンダリング用ライブラリー pango も包含しており、pdfcairo を出力先とする RIETAN-FP v2.82 以降と互換性がある。macOS 版 RIETAN-FP の出力する hoge.plt における文字のシフトやマージンはこの gnuplot 用に最適化されている。シェルスクリプト中では
/Applications/Gnuplot.app/Contents/Resources/bin/gnuplot-run.sh
を gnuplot コマンドとして使えばよい。gnuplot-run.sh 中で11個の環境変数が定義された後、同じフォルダー内の(環境変数を設定できない)実行形式ファイル gnuplot が起動する。/usr/local/bin/gnuplot が存在しなければ、起動可能な /usr/local/bin/gnuplot が置かれるが、以前インストールした gnuplot が残っていると、それが実行されてしまう。したがって絶対パス付きの gnuplot-run.sh を実行する方が安全・確実である。Gnuplot スクリプトファイル *.plt は cat コマンドでテキストデータに変えた後、パイプを通じて gnuplot-run.sh に渡すか、gnuplot-run.sh の引数にすればよい。

Windows 用インストーラーは SourceForge からダウンロードできる。Windows 用 RIETAN-FP・VENUS システムに同梱している gnuplot は、インストーラーの実行によって生成した gnuplot フォルダーを RIETAN_VENUS フォルダーの下にコピーしたものに他ならない。ありがたいことに、その gnuplot では cairo + pango、ひいては pdfcairo が標準で使える。ただし、fontscale と offset の最適値は macOS 用と微妙に異なる。

出力先として pdfcairo を指定したとき、gnuplot スクリプトファイル中でギリシャ文字や記号などをどのように記述すればいいのかについては、"Gnuplot in Action" の10.2.3を参照されたい。RIETAN-FP v2.82 以降が出力する *.plt も恰好の手本となる。その際の手間を減らすために、RIETAN-FP・VENUS システムのマクロが出力する *.plt ファイル中の8進コード(\+3桁の8進数の繰り返し)を以下に列挙しておく:
\316\261: α
\316\262: β
\316\270: θ
\316\273: λ
\316\274: μ
\302\260: ° (度)
\303\205: Å
\342\210\222: −(マイナス; UNICODE: U+2212)
\342\200\262: ′ (プライム)
\342\200\262: ̋ (ダブルプライム)
特定文字の8進コードを知るには、二つの Web ページ「UTF8エンコードをデコードする」「文字コード変換」で変換するとよい。その際には「Unicode 対応 文字コード表」も役立つ。イタリックの書体にするには、たとえば θ の場合 "{/:Italic \316\270}" と入力する。

一般にグラフ中のラベルや数値には sans-serif 系のフォントが適している。terminal pdfcairo のデフォールトは sans である。"Gnuplot in Action" の215ページには
If a sans-serif font is selected as the default font for a terminal, then the font subsystem will attempt to find sans-serif glyphs for all requested characters even for special symbols.
と書かれている。実際、デフォールト・フォントのまま8進コードを書くと、ギリシャ文字なども sans-serif 書体となる。ただし Windows 10 ではたとえば
set terminal pdfcairo ..... font "Arial" fontscale 0.5
というように sans-serif 系フォントを明示するべきである。デフォールトのフォントが斜体のフォントスタイルを含んでいないと、標準文字が出力されてしまうためだ。C:¥Windows¥Fonts フォルダー内の Arial を見ればわかるように、標準、極太、斜体、太字、太字・斜体の TrueType フォントが使える。Arial を指定した場合もギリシャ文字などが sans-serif 書体で出力されることに変わりはない。なお、fontscale のデフォールトは0.5だが、これの変更により実質的なフォント・サイズを一挙に変えられる。

イタリックでない文字は、たとえば
{/Symbol \260}: ° (度)
{/Symbol \242}: ′ (プライム)
というように PostScript 文字コードを書いてもよい。ただし sans-serif 書体にはならない。

上述の8進コードや PostScript 文字コード (Symbol) は macOS、Windows を問わずに通用する。Unicode のテキストファイルを出力できない高級言語でビルドしたプログラムで gnuplot スクリプトファイルを出力する場合に役立つ。一方、テキストエディターでスクリプトファイルを編集するのであれば、「RIETAN vs. Z-Rietveld」に例示したように "set encoding utf8" という行を挿入し、それ以降にギリシャ文字、記号、かな漢字などを直接書いて、UTF-8エンコーディングでファイルを保存する方がはるかに楽だ。

Gnuplot 5.0.4以前の pdfcairo には major tics(主目盛)に対する数値が負のとき、数字の前にマイナスでなくハイフンが付いてしまうという欠陥があった。Gnuplot 5.0.5からは "set minussign" コマンドによりハイフンでなくマイナス (UNICODE: U+2212) を出力できるようになった。ただし、UTF-8 エンコーディングを有効にするために "set encoding utf8" と宣言せねばならない。すなわち Shift_JIS エンコーティングでは無効である。

ターミナル pdfcairo はフォントを指定しなければ、英数字はもとよりギリシャ文字や記号などもグラフに最適の sans-serif 書体に統一して出力するという利点を持つ。terminal pdfcairo には crop オプションがなく、pdfcairo へのグラフ出力ではデフォールトで余白が切り取られることも、利便性の高さと処理時間の短縮に寄与する。タイトルやラベルの一部が隠れてしまうようだったら、
set margins <left>, <right>, <bottom>, <top>
という命令で余白を微調整すればよい。負の値だと gnuplot が決めたマージンが使われる。

ターミナル pdfcairo への出力で得られた PDF ファイルは LaTeX, Microsoft Word, Keynote などの文書に直接挿入できる。今後は pdfcairo をフル活用していく。

なお、"Gnuplot in Action" 中の一節(213〜214ページ)、
Because an entire family of terminals(注: pngcairo, pdfcairo, epscairo, wxt のこと)shares a common back end, it's now possible to generate bitmap (PNG), vector (PDF and EPS), and interactive (wxWidgets) versions of the same graph, with only minor differences between them.
では cairo・pango ライブラリーを使うターミナルの互換性の高さが強調されているが、そう簡単にターミナルを変更できる訳ではない。グラフの見かけ、とりわけラベルや数値の offset を最適化するには、十分時間をかけて試行錯誤する必要がある。
FINDSTR 実行後の ERRORLEVEL に応じた条件分岐
Windows に標準で備わっているコマンドプロンプトはシェルに比べると非力だが、UNIX 系コマンドさえ導入すれば、そこそこ便利に使える。バッチファイルにおいて、文字列がテキストファイル中に存在するか否かで後続処理を変えるとき重宝する構文をここで紹介したい。

コマンドプロンプト用文字列検索コマンド FINDSTR は UNIX 標準の grep/egrep の機能を劣化させたようなコマンドであり、単純な正規表現しか使えない。FINDSTR は文字列を含む行を出力するとともに、文字列が見つかったら ERRORLEVEL=0、見つからなかったら ERRORLEVEL=1 という復帰コードを返す。しかし文字列が存在しようがしまいがエラーとは言い難く、文字列の有無を知るために %ERRORLEVEL% の値を調べるのには心理的抵抗がある。たとえば RETURNCODE とすべきではないか。いずれにせよ、長くて鬱陶しい復帰コード名だ。

FINDSTR と &&(論理積)または ||(論理和)とを組み合わせると、IF, ELSE, ELSE IF, %ERRORLEVEL% が不要となり、バッチファイル中の検索・条件分岐部分が実にすっきりする。たとえば、test.txt というテキストファイル中に
  1. 正規表現 (Regular expression) の文字列 reg_string1 が存在する、
  2. さもなければ正規表現の文字列 reg_string2 が存在する、
  3. いずれも存在しない、
という三通りの検索結果に応じて後続処理を切り換えるには、次のようにブロック化する:

FINDSTR /R /C:"reg_string1" test.txt >NUL 2>&1 && (
  .....
) || FINDSTR /R /C:"reg_string2" test.txt >NUL 2>&1 && (
  .....
) || (
  .....
)

/R は正規表現の文字列を探索するオプションである。FINDSTR は簡易正規表現しか扱えないという手抜き仕様に留まっているが、通常の目的には十分だろう。/C: は文字列中の空白が文字列同士の区切り文字とみなされないようにするオプションであり、">NUL 2>&1" はコマンドプロンプト窓が散らかるのを防ぐための呪文である。&& に続く (.....) ブロック内には検索に成功した場合 (ERRORLEVEL = 0)、|| に続く (.....) ブロック内にはヒットしなかった場合 (ERRORLEVEL = 1) の処理を記述する。ブロックの始まりと終わりを意味する "(" と ")" は必ずペアになっていなければならない。

reg_string1 が test.txt 中に存在しないときは、単に

FINDSTR /R /C:"reg_string1" test.txt >NUL 2>&1 || (
  .....
)

とするだけで済む。

通常の文字列 "string" を探索する際には、/R の代わりに /L を指定するか、

FIND "string" test.txt

を使う。オプション不要なところがありがたい。

コマンド実行後の && と || による条件分岐は広く認知されているとは言い難く、ネット情報はほとんど見かけない。頻用されてしかるべき便利な表現である。

なお FINDSTR と FIND では原則として Shift_JIS コードのファイルを処理するためのコマンドだが、ASCII 文字の検索に限定するならば、EUC や UTF-8 コードのファイルも扱えるようだ。

Windows 用 RIETAN-FP・VENUS 統合支援環境には、テキストファイル中に特定の文字列が含まれているか否かを調べてから後続処理を条件分岐するバッチファイルがいくつか含まれている。従来は FOR 文の実行結果を環境変数に代入し、その値を IF 文で参照するという、ややこしい手続きを踏んでいた。遅延展開せざるを得ない可能性がある環境変数の増加はできるだけ控えたい。

たとえば RIETAN.bat 中では、あらかじめ "MEP = 1" が hoge.lst 中に存在するか否かを

FOR /F "TOKENS=3 USEBACKQ" %%T IN (`FINDSTR /R /C:"^ *MEP = 1$" "%SAMPLE%.lst"`) DO SET MEP=%%T

という長い FOR 文を通じて変数 MEP に代入した後、

IF "%MEP%"=="1" (
  .....
)

という IF ブロックを実行するかどうかを判定していた。意味が理解しにくい上、冗長だ。同等の条件分岐を

FINDSTR /R /C:"^ *MEP = 1$" %SAMPLE%.lst >NUL 2>&1 && (
  .....
)

という簡潔な命令で実行できるのは感動的ですらある。次期配付ファイルでは、FINDSTR または FIBD コマンドでストレートに場合分けするよう全面的に書き換える予定である。
OS X・Windows 用 TeX Live のインストール
最近、結晶構造解析の結果を文書化するための CIF・TeX 関連ユーティリティー cif2pdf, E2J, refln を実行するための Jedit X秀丸用のマクロを作成した。 いずれ公開する予定だが、cif2pdf と E2J を実行するには、TeX Live が必要不可欠である。ここで OS X と Windows 上で TeX 文書をタイプセットする環境を整えるための情報を提供しておく。

OS X 用 TeX Live は MacTeX の Web ページから MacTeX.pkg をダウンロードし、それをダブルクリックしてインストールする。OS X El Capitan の場合 /Library/TeX/texbin にパスを通せば、TeX 関連プログラムが使えるようになる。パッケージの更新法や TeXShop の設定については、「Mac 用 TeX による英文・和文のタイプセット」を参照されたい。

Windows 用 TeX Live は CTAN から install-tl-windows.exe をダウンロードし、右クリックしてから「管理者権限として実行」を選べば、perl.exe が裏で動いてインストールされる。TeX Live YYYY("YYYY" は "2016" のような年号を表す)の場合、システム変数 Path に C:¥texlive¥YYYY¥bin¥win32 が追加される。TeX 関連実行形式プログラムはそのフォルダーに入っている。同フォルダー中の tlmgr-gui.exe をダブルクリックし、[導入済みのものをすべて更新] をクリックすればすべてのパッケージを更新できる。
Bond valence sum を用いてペロブスカイトの構造安定性を予測するプログラム SPuDS
SPuDS (Structure Prediction Diagnostic Software) [1–3] はMichael W. Lufaso 博士(北フロリダ大学)によって開発された Fortran 77 プログラムである。彼の Web サイト で Windows 版が無償公開されている。
  1. M. W. Lufaso and P. M. Woodward "Prediction of the crystal structures of perovskites using the software program SPuDS," Acta Crystallogr., Sect. B: Struct. Sci., 57, 725 (2001).
  2. M. W. Lufaso and P. M. Woodward, "Structure and Bonding," Vol. 158 (2013), pp. 59–90.
  3. 遠山武範, 齊藤高志, 島川祐一, "機能性酸化物材料の設計・合成・構造物性評価・電子構造解析:新規 A サイト秩序型ペロブスカイト酸化物", 粉体および粉末冶金, 57, 779 (2010).
  4. 島川祐一, "機能性遷移金属酸化物の新しい設計手法", 化学, 71, 39 (2016).
Homebrew による OS X 用フリーソフトウェアのインストールと更新
OS X 用 RIETAN-FP で gnuplot によるグラフ作成機能を利用するには、ソフトウェアの導入を容易にするパッケージ管理システム Homebrew により gnuplot を自分でインストールしなければならない。参考までに Homebrew の基本操作を以下に説明しておく。

まず、Homebrew の HP に記されている通り、ターミナルに
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
をコピー&ペーストして Homebrew をインストールする。Homebrew ではパッケージのことを formula と呼ぶ。以下、formula_name を gnuplot に置き換えて入力すればよい。gsed の formula name は gnu-sed である。

各 formula をインストールするには、ターミナルで
brew install formula_name
と入力する。複数の formula_name をスペースで区切って並べてもよい。/usr/local/bin フォルダに実行形式プログラムのエイリアスが置かれるため、/usr/local/bin フォルダに実行形式プログラムのエイリアスがにバスが通っていれば、コマンド名だけで起動できる。

たとえば Gnuplot 5.0.1の場合、/usr/local/Cellar/gnuplot/5.0.1/bin ディレクトリーの下に gnuplot が生成する。なんらかの理由で /usr/local/bin フォルダにエイリアスが生成しない場合は、ターミナルで
ln -s /usr/local/Cellar/gnuplot/5.0.1/bin/gnuplot /usr/local/bin/gnuplot
と入力すればよい。

ターミナルで入力すべき他の主要コマンドは次の通り。
バージョン番号を表示: formula_name --version
インストール済みの formula を表示: brew list
Formula の削除: brew remove formula_name
古い formula を表示: brew outdated
brew 自身のアップデート: brew update
'brew update' に引き続き formula のアップグレード: brew upgrade
Homebrew のアンインストールについては、このブログエントリーを参照されたい。
RIETAN vs. Z-Rietveld
1. Gnuplot による年次被引用数のグラフ化

今月、大学と企業で一回ずつ講演する機会があり、RIETAN-2000/FP に関する論文2報 (Izumi & Ikeda, 2000; Izumi & Momma, 2007) の被引用数の年次推移を表す棒グラフを gnuplot で作成し、プレゼンテーションに使用した(2013年分は後日再調査して修正。ちなみに2014年には 61 + 152 = 213 という過去最高の被引用数を達成した)。


ちなみに、グラフ化に用いた gnuplot スクリプトファイル RIETAN.plt は次の通り。
set t pdfcairo lw 1.2 size 21cm, 13cm font ", 16" fontscale 0.65
set o "RIETAN.pdf"
set border lw 1.2
set tics scale 1.4, 0.8

set encoding utf8 # 漢字を出力

set xtics nomirror offset 0.0, 0.3
set xlabel "年" offset 0, 0.1 font ", 18"

set ytics mirror offset 0.5, 0.18 0, 50, 240
set mytics 5
set ylabel "被引用数" offset 0.65, 0 font ", 18"

set style fill solid bo lc rgb "black"
set boxwidth 0.7 relative

set key left top spacing 1.3 width 0 height 1

# Margins measured in character widths or heights (a negative value: automatic)
set margins 8.5, 2, 4, 1.1 # , , ,

plot [:] [0:240] "RIETAN.dat" u 0:($2+$3) w boxes lw 1 lc rgb "light-pink" t 'Izumi \& Momma (201-07)',\
"" u 0:($2):xtic(1) w boxes lc rgb "light-cyan t 'Izumi \& Ikeda (2000)'
ご覧のように、terminal pdfcairo で PDF ファイルを直接出力するようにした。このスクリプトファイルは漢字を含むため、UTF-8 フォーマットで保存しなければならない。文字列中の '&' が単一引用符で囲まれているときは、バックスラッシュでエスケープすることに注意してほしい。数値データは RIETAN.dat というテキストファイルに保存されている:
2000      1      0
2001    23      0
2002    85      0
2003  108      0
2004  136      0
2005  151      0
2006  202      0
2007  206      3
2008  173    17
2009  172    33
2010  159    46
2011  113    96
2012    93  108
2013    61  144

2. RIETAN-2000/FP の波及効果

上の棒グラフから一目でわかるのは、2006年以降の被引用数が約200/年でほぼ定常状態となっており、賞味期限切れの RIETAN-2000が意外にしぶとく生き残っていることだ。約200の被引用数を8年連続で達成しているのは、瞠目すべき実績である。本ブログに投稿されたカテゴリー「ソフトウェア」に属するエントリーを眺めれば、RIETAN-2000/FP がいかに多くの論文に貢献しているかが自ずと感じられよう。

科学技術ソフトウェアが時代遅れになり、なおかつ将来性が危ぶまれると、利用者はふつう漸減していく。粉末回折のマーケットが飽和しているにもかかわらず RIETAN の人気が衰える兆しを一向に見せていないのは、
  1. 枯れたプログラム RIETAN-FP がすこぶる安定に動いている。
  2. 数多くの既存ユーザーを抱えブランド化を達成している上、一度習得したプログラムを惰性で使い続ける人が多い。
  3. プログラム中で使用している数式や入出力ファイルの内容などを網羅した英文マニュアルが提供されている。
  4. 世界的に広く普及している三次元可視化システム VESTA との緊密な連携を享受できる。
  5. ネット、書籍、レビューなどから多くの日本語情報が入手できる。
  6. RIETAN-FP・VENUS 統合支援環境がありきたりの GUI プログラムより俊敏で、なおかつ使い勝手が良い。
  7. 私が依然として拡張・改良と教育・啓蒙・宣伝活動に励んでいる (「RIETAN-2000と RIETAN-FP」参照)。
という事実により容易に説明できる。Gnuplot によるグラフ作成機能の実装(「RIETAN-FP への Gnuplot の導入」参照)は No. 5 に分類される。私と社会をつなぐパイプは自作プログラムのみだ。健康を害したりしない限り、ボケ防止も兼ね今後も RIETAN-FP のバージョンアップとメンテナンスを続けていく。

近日中に公開する RIETAN-FP v2.3のマニュアル RIETAN-FP_manual.pdf は261ページにも達している。これほど豊富な情報を提供している国産無償科学技術ソフトのマニュアルは、ごく希だ。マニュアルには PC の操作だけ記すのでなく、プログラム中で使用している重要な数式やアルゴリズムをすべて記述せねばならない。その点、RIETAN-FP_manual.pdf には百点満点を与えることができる。

3. それにひきかえ Z-Rietveld は・・・

200/年という被引用数の多寡を客観評価するため、J-PARC で測定した TOF 粉末中性子回折データ用のリートベルト解析プログラム Z-Rietveld に関する論文(Oishi et al., 2009)の被引用数と比較してみた。

そういう不毛の行為に踏み切ったきっかけは、最近、私が Z-Rietveld の作成に関与していると誤解している人に出会したことである。Z-Rietveld では KENS の TOF 粉末中性子回折装置 VEGA の背面バンク用に RIETAN-2001T に実装した分割プロファイル関数や部分プロファイル緩和(プライオリティーを尊重せず primary → global、secondary → local と用語を故意に変えてオリジナリティーの無さを隠蔽している)を猿真似しているので、そう思い込むのも無理はないが、迷惑至極だ。私は Z-Rietveld の製作には一切コミットしていない。Z-Rietveldに限らず、いわゆる Z-code の大半は外部ソフトウェアハウスへのアウトソーシングで製作したものであろう。言い換えれば、知識と能力と時間を(税)金で買ったということだ。

件の分割プロファイル関数は20年弱前に KENS 中性子源の粉末回折装置 VEGA の背面バンクで測定した TOF 中性子回折データ用に最適化し、RIETAN に組み込んだ複雑な関数である。精密化するプロファイル・パラメーターの数が多く、結果としてパラメーター間の相関が非常に強く、微分係数を使う非線形最小二乗解法では収束しにくい。物理的な意味をまったく持たないため、異方的プロファイル・ブロードニングを適切に近似できない。こんなプロファイル関数は、疾うに賞味期限切れといって過言でない。そもそも新たな中性子源+粉末回折装置を用いる以上、厳密には装置・バンクごとに一次プロファイルパラメーターの d 依存性の式を最適化し直さなければならないのだが、装置グループのメンバーのスキルと指導力の欠如から、そっくりそのまま流用してお茶を濁したのだろう。彼らは筆頭著者の論文を量産する能力とアイデアを持ち合わせておらず、研究者というよりはテクニシャンに近いのだから、無理もないが・・・ これ以外のプロファイル関数もことごとく物理的に意味がなく、観測プロファイルにフィットしにくいので、オリジナルのプロファイル関数の考案が急務である。

閑話休題、J-PARC は最新の高強度パルス中性子源であり、TOF 粉末中性子回折データを測定できる装置は数台建設済みである。その上、粉末中性子回折はパルス中性子源の稼ぎ頭なので、さぞかし成果が挙がっているに違いない。J-PARC は中性子産業利用推進協議会まで立ち上げて産業利用を推進しようと躍起になっているのだから、民間企業も積極的に利用しているはずだ。最後発ソフトは古参ソフトの秀逸な機能を模倣しやすい。さらに、Z-Rietveld は粉末X線回折データも解析できるので、使い勝手やパフォーマンスさえ優れていれば、RIETAN-2000/FP からユーザーを奪う可能性は大いにある。私情を交えず客観的に過去数年の業績を予想すると、こんな所に落ち着くだろう。

ところが Web of Science の検索結果は暗澹たるものだった。2009〜2013年の間の Z-Rietveld に関する国際誌論文の被引用数はわずか23に過ぎなかったのだ。RIETAN なら40日余りで達成する程度の悲惨極まりない値である。RIETAN-2000/FP に関する論文は同じ期間に997回引用されているので、Z-Rietveld/RIETAN 比はわずか2.3 %ということになる。被引用数比だからこの程度ですむものの、粉末回折装置の台数で割り、巨額の建設・維持費、人件費、電気料金、宣伝活動経費を消費する施設に特有の費用対効果の低さまで考慮したら、無視できるほど小さい数字になり果てるだろう。Z-code 自身、アウトソーシングに相当な予算を費やしているに違いない。「成果に貢献してなんぼ」の科学技術ソフトとしては、実績があまりにも貧弱であり、ひいては存在感が希薄すぎる。

2年前に「PRIMA vs. ENIGMA」というエントリーを投稿したが、MEM 解析プログラム ENIGMA は PRIMA には惨敗したものの、ENIGMA/PRIMA 比は46 %(現時点では44 %)であり、それなりに健闘していた。そもそも Z-Rietveld がその価値を認められ、大いに利用され続けていたならば、RIETAN-2000/FP に関する論文の被引用数はここ数年、単調に減少してきたに違いない。J-PARC における TOF 粉末中性子回折が一向に盛り上がっていないのは明白だ。

おまけに、民間企業に所属する研究者が筆頭著者の論文はなんとゼロ(!)だった。茨城県が建設・維持している iMATERIA は大半のビームタイムを民間企業に割り当てるのが原則のはずだ。測定したデータがいくら多くても、国際誌に掲載される成果が皆無なのでは話にならない。この事実は J-PARC における産業利用の低調さ、企業研究者の実力不足、施設サイドの支援態勢の不備を如実に反映している。論より証拠、茨城県産業利用課題の成果報告書をざっと眺めると、量・質ともに貧弱なことが見て取れる。課題番号2012BM0015の報告書には、
Z-Rietveld を用いて3相解析を行おうとしたが、ソフトの動作がやや遅く、解析が進みづらい状態に陥った。そこで GSAS を用いて Rietveld 解析を進めていくことにした。
という実態が記されている。わずか3相で解析がデッドロックに乗りあげるという鈍重さには驚きを禁じ得ない。

企業研究者が中心となって発表した論文が皆無という事実は、パルス中性子が企業活動(利益の獲得)に直接役立つという幻想を植え付けようとする企てが今のところ奏功していないことを赤裸々に明示している。一方、SPring-8の企業ユーザーは国際誌に研究成果をそれなりに発表しているはずである。恐らく、中性子散乱はマンパワーと経済力に余裕のある大企業が手を出す道楽とみなされているのだろう。絶えず生存競争に励み、時にはリストラで苦境を乗り切っている企業は、そう甘くない。

たとえ中性子散乱が金食い虫である割にニッチな研究手段であり、そのマーケットがごく小さいことを考慮しても、被引用数至上主義者(「非引用地獄」参照)としては Z-Rietveld の生産性の低さに失望の念を禁じ得ない。少なからぬ税金を費消しているにもかかわらず、これほど貧弱極まりないアウトプットにしか貢献していないのは情けない限りだ。第一、英語論文を執筆できるレベルのパワーユーザーを十分獲得できていないようでは、プログラムがなかなか枯れないだろう。ユーザー数がごく少ないX線回折データの解析部分はとりわけリスクが高い。

発展途上の Z-Rietveld が敬遠され、実績のある枯れた外国製プログラム(たとえば GSAS と FullProf)を選択するユーザーが多いという訳でもなさそうだ。横軸が飛行時間 (t/μs) なのに怖じ気づく人が意外に多いという可能性はある。実際、自分も初めて TOF 中性子回折用の RIETAN を作成したときは、大分戸惑った。マルチバンクで測定した強度データの同時解析は角度分散型回折データの解析に比べ、相当面倒なのも事実である。また以前「ムラ社会の掟」で痛烈に批判したように、磁性原子を含む材料を扱うチャンスがかなり多いのに、ごく単純な強磁性磁気構造すら解析できないという体たらくなのは致命傷に近い。磁気構造解析機能の必要性については6年も前に装置管理者に面と向かって指摘した(2006年7月4日の掲示板参照)ので、専門知識不足と職務怠慢の誹りは免れない。これまで強磁性体の磁気散乱を無視した解析結果がいくつも発表されたのではなかろうか。しかし、成果不足の現状はそれらだけでは説明し切れない。

Z-Rietveld の諸機能、パフォーマンス、安定性、使い勝手の良さ、マニュアル(そもそも「マニュアル」と称するに値するドキュメントは存在するのか?)を精査すれば答えが出るはずだが、不人気ひいては成果不足の原因を究明し対策を講じるべきなのは、もちろん中性子ムラの住民である(「ムラ社会の掟」参照)。本エントリーでは冷厳な事実だけを率直に記述し、更なるコメントは控えておく。装置グループの方々は上記のような「不都合な真実」を突きつけられたことに発憤して Z-Rietveld の改善と補強(とくに、タイムフォーカシングに伴う誤差の伝播の正確な評価。物理的な意味のあるプロファイル関数、あらゆる種類の磁気構造の解析、VESTA に匹敵する強力な統合可視化システムの開発、熱散漫散乱の補正、英語・日本語での詳細なドキュメンテーション)に粉骨砕身し、能う限り多くの研究成果を世に送り出すよう努めてもらいたい。「車輪の再発明」的な最後発ソフトなのに手抜きばかりが目に付く劣化コピー状態に安住するならば、存在意義が疑われる。

なお本エントリー中に誤解や認識不足に起因する事実誤認が見つかったならば、実名で私に直接ご指摘いただければ幸甚である。不適切な記述は修正するにやぶさかでない。逆に言えば、なんらレスポンスがないならば事実として認めたということになる。
Sumatra PDF のインストールと設定
Windows 版 RIETAN-FP v2.3に追加した gnuplot (+Ghostscript) によるグラフ作成機能を利用するには、PDF ファイルを表示するためのブラウザが必要不可欠だ。PDF の本家である Adobe 製の閲覧ソフト Adobe Reader には使い勝手を悪化する制限がある。 PDF ファイルをロックするため、表示中のファイルを閉じないと新たなファイルを表示してくれないのだ。これでは面倒だし、やや重いのも気にかかる。

Mac では OS X に備わっているプレビュー (Preview.app) を使えば、この問題は生じない。Windows 用には、たとえば Sumatra PDF を推奨する。軽快に動く無料ソフトであり、すでに愛用されている方も多いだろう。

Sumatra PDFで PDF ファイルを閲覧中に同名の PDF ファイルを開く場合、別な Sumatra PDF が立ち上がるのでなく、単一の Sumatra PDF が表示を切り換えるよう設定する方がメモリー効率が良くなる。バッチファイル中で SumatraPDF コマンドのオプションに
-reuse-instance
を加えれば、そうなる。しかし、当該オプションは秀丸マクロとの相性が悪く Plot.mac を中断するのかと毎回問われるのが煩わしい。そこで、Sumatra PDF の設定メニューで [詳細設定] を選び、エディターあるいはメモ帳で開かれた設定ファイル SumatraPDF-setting.txt 中の5行目、
ReuseInstance = false

ReuseInstance = true
と書き換え、設定ファイルを保存する。

さらに、拡張子 pdf をアプリケーション Sumatra PDF に関連付ける。任意の PDF ファイルをマウスで右クリックし、最下部の[プロパティ]を選ぶ。そして、プロパティ・ダイアログの [全般] で[変更]ボタンをクリックして、SumatraPDF.exe を指定する。64ビット Windows の場合、SumatraPDF.exe は C:¥Program Files (x86)¥SumatraPDF フォルダに入っている。

これだけで、Sumatra PDF が PDF ファイルを閲覧するための標準アプリケーションに指定され、RIETAN-FP・VENUS 支援環境でパターンフィッティング終了後に [Plot] ボタンをクリックすれば、Sumatra PDF がグラフを自動表示するようになる。以後、拡大・縮小と表示領域の移動は自由自在である。

Sumatra PDFがすべての PDF ファイルの閲覧やプレゼンテーションに使えるのは言うまでもない。本家の Adobe Reader より動作が俊敏なので、古い PC ではとりわけ重宝するだろう。

(C) 2017 ブログ JUGEM Some Rights Reserved.