韜晦日記

韜晦日記

Rietveldよりもプログラミングメインになりつつある

Rietveld解析初心者による備忘録とつぶやき

Plotlyをオンラインで使う方法 | Plotly徹底解説

オンラインプロット

PlotlyではFreeアカウントを取得することでオンライン上で作成したグラフの編集、保存が可能になります。 オンラインプロットでは自分のアカウント上にグラフを保存するため、アカウント登録が必要です。
そしてグラフをプロットするにはAPIキーというのを取得する必要があります。非常に簡単に出来るので心配ありません。
Freeアカウントでは公開状態でグラフが保存されますが、年会費を支払うことでプライベート保存が可能になります。
詳細は次の料金プランについての説明を見てください。

APIキーの取得

オンライン上にプロットする為にはAPIキーを取得する必要があります。
APIキーはAPI Keyページから設定できるはずです。

f:id:tanisuke_str:20181110185434j:plain:w600
APIキーの表示画面
正しくリンクが飛ばない場合は、自分のアカウントからSettings > API Keysとクリックしてください。
初めてAPIを設定する方は API Keyの下にある部分のRegenerate Keyをクリックして保存します。
生成されたAPIキーは念のため人に見られない安全な場所に保存しておいてください。
一度登録してしまえばあとはあまり使うことはありません。

APIキーの登録

APIキーはPythonを使ってコマンドラインから設定できます。
あるいはAPIキー登録ようのpythonファイルを作成して実行してもいいかもしれません。

$ python
>>> import plotly
>>> plotly.tools.set_credentials_file(username='DemoAccount', api_key='lr1c37zw81')

usernameのDemoAccountapi_keyのlr1c37zw81を自分のものと置き換えます。 また、.credentialsファイルの設定からも行なえます。

  1. Finedrを開き > 移動 > フォルダへ移動(⬆︎⌘G)とメニューバーから選択。
  2. ~/.plotly/と入力
  3. .credentialsファイルを開き、usernameとapi_keyの部分に記入
  4. 保存して閉じる。

pythonAPIキーを登録した場合は、こちらのファイルが書き換えられているはずです。
APIキーに問題がありそうな場合はこちらのファイルを見直すか、新たにAPIキーを発行して登録し直すといいかもしれません。

オンラインプロットの公開範囲

プロットするデータが第三者などに閲覧されては困る場合、公開範囲に気を使わなければなりません。
Plotlyでは3つの公開範囲が用意されています。

種類 説明
Public 誰でもグラフを閲覧することが可能です。あなたのアカウントプロフィール上に、そして検索エンジンの結果にも表示されます。そしてPlotlyにログインすることなく閲覧が可能です。
Private あなただけがグラフを閲覧できます。この設定によってPlotlyのフィード上、あなたのアカウントプロフィール上、そして検索エンジンの検索結果に表示されなくなります。
このグラフを閲覧するにはあなたがPlotlyアカウントにログインする必要があります。また、他のPlotlyユーザーに対して個人的に公開も可能ですが、相手もログインする必要があります。
Secret 与えられたシークレットリンクを持つ人は誰でもグラフを見れます。WebページやIPython notebookに埋め込んだ場合も誰でも見ることができます。また閲覧にログインは不要です。しかしながらPrivateと同様に検索結果などには表示されません。

公開範囲を設定する場合はPython上で以下のように実行します。

import plotly
plotly.tools.set_config_file(world_readable=False, sharing='private')
#↓はデフォルトの設定
plotly.tools.set_config_file(world_readable=True, sharing='public')

また、公開範囲はプロット時に指定することもできます。
plot()のなかでsharing='private'と入力するだけです。

import plotly.plotly as py
import plotly.graph_objs as go

pass # プロットのための処理
# 系列データの設定
data = [trace0, trace1]

#グラフのプロット
# sharingで公開範囲の設定をする。
py.plot(data, filename = 'basic-line' \
  , auto_open=True, sharing='private')

オンラインプロットで描画

グラフのオンラインプロットにはplotly.plotlyの中のメソッドを用います。
公式ドキュメントではimport plotly.plotly as pyとして利用しています。
そしてオンラインプロットにはpy.plotpy.iplotの2つのメソッドが用意されています。
違いは以下のようになります。

  • py.plot : 任意のURLを返し、オプションで指定することでブラウザ上にグラフを表示します。
  • py.iplot : エディタ上に直接プロットすることができます。

どちらで実行してもPlotlyアカウント上に保存されます。

ということで、とりあえず考えなしに以下のコードを実行して見てください。

import plotly.plotly as py
import plotly.graph_objs as go

# 各系列のデータを設定
trace0 = go.Scatter(
x=[1, 2, 3, 4],
y=[10, 15, 13, 17]
)
trace1 = go.Scatter(
x=[1, 2, 3, 4],
y=[16, 5, 11, 9]
)
data = [trace0, trace1]

py.plot(data, filename = 'basic-line', auto_open=True)

自分のアカウントが開き、以下のようなグラフが表示されるかと思います。

因みに、py.plotメソッドではプロット時の設定をオプションで与えることができます。
上ではfilenameで保存するファイル名、auto_openでグラフの表示・非表示の設定を行なっています。
auto_openではTrueの時は自動的にブラウザを起動しグラフを表示しますが、Falseだとグラフを保存したURLを返してくれます。

,またAPIキーの設定などが済んでいないとエラーが生じるので注意してください。 エラーは以下のような内容で出るかと思います。

#APIキーが指定されていない時
Make sure that you're logged in as ユーザー名.
Need help? Please try searching Plotly's <a href='http://stackoverflow.com/questions/tagged/plotly'>Stack Over
flow channel</a>.

#APIキーとユーザー名が指定されていない時
Aw, snap! We didn't get a username with your request.
Don't have an account? https://plot.ly/api_signup
Questions? accounts@plot.ly

といった感じ今回は簡単な使い方説明に留めておきました。
Plotlyではかなり凝ったレイアウトにすることができるのでそちらも紹介していきます。
レイアウトの参考にはデモ記事を参照してください。
tanisukestr.hatenablog.com

Plotlyをオフラインで使う方法 | Plotly徹底解説

ここではオフラインで描画する方法について説明します。
オフラインモードでは以下の2つのやり方でグラフを描画できます。

  • ファイルを実行し、ブラウザ上に表示
  • エディタであるAtomやjupyterの画面上に表示

またオフラインでプロットする場合、Plotlyのアカウント取得やAPIキーの設定はする必要はありません。
しかし、のちにオンライン上でグラブ編集したり保存するためにはアカウントが必要になるので登録(無料)することをお勧めします。

ではやって行きます。

普通にプロットする

オフラインで描画するために以下の2つをインポートします。

# import plotly.plotly as py <- オンライン用
import plotly.offline as offline # <- オフライン用
import plotly.graph_objs as go

プロットする場合は

offline.plot(data, filename = 'basic-line', auto_open=True)

となります。以下のプログラムをコピペして実行してみてください。

# 以下の2つをインポート
import plotly.offline as offline
import plotly.graph_objs as go

trace0 = go.Scatter(
x=[1, 2, 3, 4],
y=[10, 15, 13, 17]
)
trace1 = go.Scatter(
x=[1, 2, 3, 4],
y=[16, 5, 11, 10]
)
data = [trace0, trace1]

# オフラインでプロット
offline.plot(data, filename = 'basic-line', auto_open=True)

ここで、offline.plotの引数にあるauto_openTrueとすると、作成したグラフを自動的にブラウザで表示してくれます。
auto_open=Falseとするとグラフは表示されず生成したファイルのパスを返します。
何れにしてもHTMLファイルが生成され、再度表示することが可能になります。
デフォルトの設定はTrueとなっています。

Atom, jupyter notebookで描画する

基本的には前節で説明したやり方と変わりありませんが、4点ほど違いがあります。

  • import文の後ろにoffline.init_notebook_mode()を追加
  • offline.plot()ではなくoffline.iplot()を使う
  • HTMLファイルは出力されない。
  • auto_openは使えない。(エディタ上で直接見るので当然ですね。)

その他は基本的に同じはずです。

offline.init_notebook_mode()について*1

これはデフォルトでoffline.init_notebook_mode(connected=False)となり、ブラウザに必要なライブラリ(plotly.js)を読み込みます。
常にオフラインで実行する場合はoffline.init_notebook_mode()とします。
しかし、この方法だとファイルにplotly.jsを直接読み込むことになるのでファイルサイズが数メガバイト増加します。

試しに以下のコードを使ってjupyter notebookのファイルサイズの変化をみてみます。

# 以下の2つをインポート
import plotly.offline as offline
import plotly.graph_objs as go

offline.init_notebook_mode(connected=False)

trace0 = go.Scatter(
x=[1, 2, 3, 4],
y=[10, 15, 13, 17]
)
trace1 = go.Scatter(
x=[1, 2, 3, 4],
y=[16, 5, 11, 10]
)
data = [trace0, trace1]

# オフラインでプロット
offline.iplot(data, filename = 'basic-line')

このコードでconnected=Falseconnected=Trueを切り替えると

  • Trueの時  : 5 KB
  • Falseの時 : 5.9 MB

と、ファイルサイズが増加することがわかります。 一時的にでもインターネットに接続できる場合や、ファイルサイズを小さくしたい場合にはTrueを選べば良いと思います。

描画ライブラリPlotlyの使い方を徹底解説 | Python

Pythonでもっとぐりぐりグラフを弄ってみたり描画しながら編集したいとは思いませんか?
今回はそんな方にオススメのグラフ描画ライブラリのPlotlyについてできる限り詳細に解説したいと思います。

Plotlyとは

PlotlyはPython, R, JavaScript, MATLABに提供されているオープンソースのグラフ作成ライブラリです。インタラクティブなグラフを簡単に作ることができ、グラフをグリグリ動かして見たい時には非常に便利なライブラリです。

Plotlyはインタラクティブな操作が可能な上に3Dプロットを含む30種類以上のグラフスタイルに対応しています。
では、インタラクティブな操作って何よ?と思う方向けにデモとグラフの操作方法についての説明をいくつか用意しました。

またPythonでグラフを一度生成すれば、オンライン上で直接レイアウトを編集できるようになります。
そのほかにもPlotlyで作成したグラフを使ってプレゼンテーションを作成するためのソフトや、Powerpointへの埋め込みを行う為のプラグインも提供されています。
Powerpointでグラフがグリグリ動かして見ることができるのは画期的ですよね。

以下にPlotlyの特徴として良い点とあまり良くない点を纏めておきます。

  • Plotlyの良い点

    • グラフの軸移動や拡大縮小、系列の表示・非表示が自由自在
    • 作成したグラフをWeb上に保存できる。
    • Web上にグラフが保存されているので、ブログなどへの埋め込みも非常にシンプル。(埋め込み用の短いURLが生成される。)
    • インタラクティブに動かせるグラフをそのままHTML化して人に渡すことができる。
    • 作成したグラフはPowerpointにも埋め込める ←これマジですごい。
    • Excel上でもExcelのグラフの代わりにPlotlyのグラフを使える。 ←これも凄い
    • Plotly専用のパワポ的ツールがある。 ← まだ最低限の機能しかなく発展途上感がある。
      Githubの更新は2年前のver0.1.4で止まっているので今後どうなるかはわからない。
    • タイトルやキャプションがLatexで記述できる。(Matplotlibでもできるけど)
    • とにかく綺麗にプロットできる。
    • 軸ラベルやタイトルもその場で変更可能 (https://plot.ly/python/configuration-options/#)
  • あまり良くない点

    • 一部の機能が有料。そしてそれが高い。
    • オンライン版の表示が少し重い。オフライン版はかなり軽量。 ←複雑で無ければ気になりません。
    • ドキュメントの説明が不十分という噂をちらほら聞く。

正直他のライブラリを多用しないので悪い点があまり思いつきません。。。
でも確かに、たまにドキュメントを参照しても書いておらず、Plotlyのライブラリを読み込んでhelp( )コマンドで参照しないと解決しないなんてこともあります。
そこで今回自分自身がPlotlyを使う中で知ったことを改めてし整理したいと思います。
と言っても、当然ですが、Plotlyの公式ドキュメントに書いてあることがほとんどです。
手っ取り早くみたい方はそちらで十分かも知れません。英語ですが難しくはありません。

あと、私の実行環境は以下の通りです。  

  • Python 3.7.0  
  • Plotly 3.4.0

インストール・各種環境の準備

インストール

インストールはpipを使って通常通り行います。
大抵の場合、Pythonをインストールした時点でpipが入っているはずなのでpipの説明は割愛します。

$ pip install plotly
# あるいは
$ sudo pip install plotly
#condaを使う場合は
$ conda install -c plotly
# PlotlyのGithubではバージョンを明示的に指定してインストールしています。
$ pip install plotly==3.4.0

アップデート

アップデートは以下のコマンドで実行します。pipの基本的な操作と変わりありません。

$ pip install plotly --upgrade

Jupyter notebookを使ってグラフを描く準備

Jupyter notebook上でもPlotlyを使ってインタラクティブなグラフを描画することができます。
ということでまずJupyterのインストール。
正直な話、自分がどうやってJupyterの環境を構築したのか忘れましたので各自調べてください。
公式のインストール方法では以下のように指定されています。 またGoogle ChromeやFierFoxを既定のブラウザに指定し、IEの仕様は避けた方が良いそうです。

$ pip install --upgrade pip
$ pip install jupyter

# 起動する場合は
$ jupyter notebook

hydrogenを使ってAtom上でグラフを描く準備

Atomというエディタがありますが、hydrogenというパッケージを導入することでAtomの画面上でコードの実行とグラフを描画が可能になります。 特にステップインでコードの実行ができるのは便利です。
Atomでhydrogenを使用するためにはjupyter notebookがインストールされている必要があります。
jupyter notebookをインストールして動作することを確認したらAtomを開きます。
Atom設定 > インストール > hydrogenで検索 > 出てきたパッケージをインストール
これで終わりです。

オンラインでプロットする方法

オフラインでプロットする方法

掲載 詳細な図などを入れた解説はまた後ほど

無料アカウントの制限と有料アカウントの料金について

後日掲載

各種メソッドの説明

後日掲載

レイアウトの指定

後日掲載

go.Scatterの設定

後日掲載

Configの設定

後日掲載

画像を出力

後日掲載

スライド作成 (プレゼンテーション作成)

Powerpointへの埋め込み

後日掲載

Plotly専用ソフト【Spectacle Editor】

後日掲載

Web・ブログへの貼り付け

後日掲載

困ったときは

後日掲載

グラフの画像やPDFが出力できない。

Chart Studioで画像を出力する際に大量のデータ点を扱っている場合、以下のようなエラーが吐かれて出力できません。
opps there was an error exporting your plot.
他の方法で画像を出力させるとエラーは吐かれずいダウンロードエラーが生じます。
この問題はGoogleの画像出力システムが50,000点以上の出力をサポートしていないためだと説明されています。

Unable to export - Chart Studio - Plotly Forum

質問者さんめっちゃ怒っているように見えますね 笑
コミュニティ上でも明確な解決法が提案されておらず、これは最早あきらめるしかなさそうです。
解決法としてはAPIで直接画像を出力させる方法が考えられますが、私自身未確認ですので実際に試した方がいれば教えてください。
私はめんどくさいのでスクショで済ませました。

Plotlyのグラフ描画デモ 【plotly demo】

Plotlyのデモをいくつか用意しました。
グラフ上での操作方法についても軽く触れているので参考にしてください。
スマホだと表示がうまくいっていないかも知れません。
plotlyが悪いのではなく僕が適当にレイアウトしたから。。。

二次元プロット

二次元プロットの公式デモはこちら。
plot.ly

二次元プロットの操作方法

操作 やり方
視点移動 右上の十字矢印を押してマウスを使う。
拡大 範囲選択して拡大, 任意軸のみ拡大する時は
ドラックを拡大軸に対して水平に行う。
縮小 グラフ上でダブルクリック
軸の移動 軸上でクリックしながらマウスを移動。
軸の端では軸の拡大縮小も可能
グラフの表示・非表示 表示・非表示にしたい反例をクリック
最初の表示に戻す 右上の家マークをクリック

普通の折れ線グラフ

下のスライドバーで自由に横軸の範囲を変更できたりもする(オプション設定)。
表示されている文字は全て注釈で、良い感じに配置することも簡単にできる。※凡例とは違います。

棒グラフ

右横に表示されているのが凡例。 凡例をクリックすると表示・非表示を変更できる。非表示にすると自動で軸を変更してくれる。

エラーバーの表示

グラフ in グラフも可能(グラブの中にグラフを表示させる)

おしゃれなグラフ

<出展: HOW MUCH DOES ONE LEGO PIECE COST? by WIRED>
How Much Does One Lego Piece Cost? | WIRED

シリコンのバンド構造の計算結果

VASPで計算した結果になります。
軸ラベルはLatexで表記しています。

三次元プロット

3Dプロットの公式デモはこちら。
plot.ly

3Dプロットの操作方法

操作 やり方
視点移動 グラフ上でクリックしてマウスを動かす
拡大縮小 マウスホイールを使う。
グラフの回転 2本指で左右に動かす(トラックパッド)。
最初の表示に戻す 右上の家マークをクリック

メビウスの輪, 多面体表示

折れ線グラフの3Dプロット

こんなレイアウトもボタン一つで出来ちゃうレイアウトのプリセットも用意されている。

脳のCTスキャン

Playボタンを押すことでパラパラ漫画のように再生できるようになります。

なんか綺麗な等密度面

面心立方構造のフェルミ面みたいですね。

地図の表示なんかもOK

アニメーション

材料系の人は歓喜の三元系プロット

各メニューバーの意味

あとで追加します。

RIETAN-FPにて発生するエラーとその対処法

後で書きます

RIETAN-FPでのエラー

RIETAN-FPの計算では何かしらの問題が発生すると計算を中断してエラーログを出力したうえで終了します。 エラーの大部分は以下のような内容になるかと思います。

  • パラメータや変数の入力が間違っている。
  • 計算が発散した
  • 必要なファイルが存在しない
  • 何らかの理由で計算ができない

これらのエラーに関して、エラー表示を基に対処法を書いていこうと思います。

An error occurred during reading *.int. The end-of-line code may be incorrect.

エラーログ

An error occurred during reading *.int. The end-of-line code may be incorrect.

intファイルが作成されていない場合やinsファイルの中身が間違っている場合に起きるようです。

対処法

  • intファイルをinsファイルと同じフォルダ内に作成しているか確認
  • insファイルの中身が正しいか確認

Intensity data will be input from *.int.

エラーログ

Intensity data will be input from *.int. Error during reading intensity data.

これはintファイルが正しく作成されていない場合に起きるエラーです。 特に私の場合はintファイルの改行コードが正しくない場合に生じました。

対処法

  • intファイルの改行コードが正しいか(windows版ではCRLF以外は受け付けないようです。

Check the above values of NVOXA, NVOXB, and NVOXC. If necessary, set them at zero temporarily.

エラーログ

Check the above values of NVOXA, NVOXB, and NVOXC. If necessary, set them at zero temporarily.

これはvoxelsの値が誤っている場合に発生するようです。特にinsファイルを流用した際に変更し忘れてるとおきます。

対処法

MEM解析を行わないのであれば、基本的に0で大丈夫です。

   NVOXA = 0: Number of voxels along the a axis.
   NVOXB = 0: Number of voxels along the b axis.
   NVOXC = 0: Number of voxels along the c axis.

としましょう。

Check decay parameters

エラーログ

Check decay parameters

対処法

プロファイルパラメータにある減衰パラメータの値がおかしい場合などに生じるエラー # Decay parameters, eta_L0, eta_L1, eta_H0, and eta_H1.以下のパラメータを直せばよい。Fapatiteなどのテンプレートファイルからコピペするとよい。

NPRFN=1, 2, 3の時に減衰パラメータが必要になるのでどうしても直らない場合はNPRFN=0を試すのもひとつの手。

The number of linear constraints is smaller than that expected from the ID values of parameters

エラーログ

The number of linear constraints is smaller than that expected from the ID values of parameters これは線形制約条件が構造パラメータのIDでしている数より、少ない場合に生じます。 例えば

Al1/Al  1.0  0.5  0.5  0.5 1.0 20000
Fe1/Fe  1.0  0.5  0.5  0.5 1.0 10000

Al2/Al  1.0  0.5  0.0  0.5 1.0 20000
Fe2/Fe  1.0  0.5  0.0  0.5 1.0 10000

と構造パラメータでは2つの線形制約条件を課しているにもかかわらず

A(Al1, g) = 1 - (Fe1, g)

と1つしか線形制約条件を記入していないときなど。

対処法

線形制約条件を正しく指定してあげれば大丈夫なはずです。 ここで線形制約条件の式は左辺のIDが2、右辺のIDが1となることにも注意します。

A zero intensity has been found. Delete it!

エラーログ

Intensity data will be input from *.int.
Intensity data recorded in *.int:
Zero intensity at   5.000 degrees -->   0.00000    
Zero intensity at   5.010 degrees -->   0.00000    
Zero intensity at   5.020 degrees -->  0.466467    
Zero intensity at   5.030 degrees -->   1.02623    
Zero intensity at   5.050 degrees -->   5.85135    
Zero intensity at   5.080 degrees -->   5.89882  

A zero intensity has been found. Delete it!

回折強度に0が含まれていると生じる。

対処法

0にならないようにする。データがバックグラウンドを差し引いたデータを使っていないか確認する

原因不明のエラー

エラーログ

forrtl: severe (59): list-directed I/O syntax error, unit 4, file C:\Users\ユーザー名\AppData\Local\Temp\FOREC5E.tmp
Image              PC                Routine            Line        Source
rietan.exe         00007FF6DBF6E26A  Unknown               Unknown  Unknown
rietan.exe         00007FF6DBF6BDA8  Unknown               Unknown  Unknown
rietan.exe         00007FF6DBE658FE  Unknown               Unknown  Unknown
rietan.exe         00007FF6DC019216  Unknown               Unknown  Unknown
rietan.exe         00007FF6DBFF6DEF  Unknown               Unknown  Unknown
KERNEL32.DLL       00007FFB135D81F4  Unknown               Unknown  Unknown
ntdll.dll          00007FFB147CA251  Unknown               Unknown  Unknown

であったり、

      forrtl: 致命的なエラー (29): ファイルが見つかりません。ユニット 31、ファイル
    Image              PC        Routine            Line        Source
    RIETAN.exe         00D49DE9  Unknown               Unknown  Unknown
    RIETAN.exe         00D12142  Unknown               Unknown  Unknown
    RIETAN.exe         00C6218D  Unknown               Unknown  Unknown
    RIETAN.exe         00D6A037  Unknown               Unknown  Unknown
    RIETAN.exe         00D37C9A  Unknown               Unknown  Unknown

こんなエラーを吐かれてRIETANが全く実行できない問題にぶち当たったことがある。
このエラーはコンソール上に吐かれて実際には.lst上には記録されない。
なのでちゃんとコンソールを見ていないと見逃してしまうでしょう。
さて、このエラーが何者かについては依然として分かってはいません。
現状分かっている原因は2つあります。

  • 記入すべき位置にパラメータが書かれていない。
  • Windowsマシン自体の問題

前者は比較的問題解決は簡単です。以前に解析して成功していた場合はそちらのファイルを使って実行可能か確かめます。
そしてファイルを比較して誤っている個所を探すのみです。
実際に私は線形条件を入力すべき場所ではない部分に入力していたためエラーが生じていました。
これはあくまで推測なのですが、実行時に値がないことで変数内がnullなど空の値を保持した結果実行エラーを生じたものだと考えています。

そして問題なのが後者です。
私の場合は講習会に参加した際に泉先生の配布したプログラマム、データを用いて実行しようとしましたが上記のエラーにより計算が正常に終了しません。
どんな方法を試してもダメで、会場内でただ一人私だけがRIETANを動かすことが出来ませんでした。
周囲の人や、泉先生ご本人にも原因を追究してもらいましたが結局分からず仕舞いでした。
ワタシの当時わたしのWindowは8.1でした。そこでまず内部の個人データなどは保持したままでOSを再インストールしましたが結果は変わりません。
仕方ないのでWindows10をクリーンインストールしました。PCのデータを全消去するのでかなり大掛かりな作業になりましたが、その結果RIETANは正常に実行できるようになりました。
結局原因はわかりませんが、PC内部の潜在的な問題が潜んでいたのでしょう。
同じような症状に陥った場合はOSのクリーンインストールを検討することも視野に入れた方がよさそうです。
またこのエラーログを確認するためには、cmdを起動して直接コマンドを入力してRIETANを実行します。
その辺のやり方は別記事に書きたいと思います。

Plot出来ない。

対処法

OFFSETの値が0になっていないか確認する

その他注意したい点

テンプレートファイルの流用

基本的にRIETAN-FPのファイルはテンプレートファイルを流用します。
その方が入力のミスも少なく、また簡単に入力ファイルを作成することが出来ます。 単相解析の場合はFapatite.ins、多相解析の場合はCu3Fe4P6.insを使うといいでしょう。 しかしこれらを流用する際に見落としがちな注意点があるので書いておきます。

Fapatite.insの場合

  • NVOXA, NVOXB, NVOXCを0にする
    MEM解析を行わない場合は基本的にvoxelsの値は0で大丈夫です。ここを変更し忘れていると大体エラーを吐かれます。
  • NUPDTを確認する
    NUPDTが0になっているのでここの変更を忘れているといくら解析をしても値が更新されません。無駄にプログラムを回し続けることになります。

Cu3Fe4P6.insの場合

  • R12 = 0.5に変更する
    この実験では単色化された線源を用いているようです。そのためR12 = 0.0となっています。
    通常の実験系で測定した場合はKa2線も入っているはずなのでR12 = 0.5に変更します。
  • NUPDTを確認する
    Fapatiteと同じです。
  • NPHASE@ = 3を任意の値に変更する
    ここでは多相解析する相の数を入力します。 ここを間違えるとエラーが吐かれてしまいます。
    合わせて# Effective radii (micrometers) for NPHASE@ phases.のところも変更しておきます。
# Effective radii (micrometers) for NPHASE@ phases.
# Enter '/' when neglecting microabsorption.
5.0  5.0  5.0   ←相の数と合わせる。
  • NINT = 1にする
    XRDデータ(intファイル)の形式がRIETANfromatになっているのでx-y形式に変更する。RIETANformatを使う人はそのままでいいけど。x-y形式の方が主流な気がします。
  • OFFSET1, OFFSET2, ....OFFSETn(n相解析)の値を変更する
    スペクトル描画の軸のサイズを変更するのは当然だが、忘れがちなのがOFFSET
    多相解析では各相の回折線を個別で描画できるため、その位置を指定しなくてはならない。OFFSETの数は解析する相に合わせる

Mendeley Desktopでの問題(クラッシュなど)の解決法

文献管理ソフトMendeley

Mendeleyは論文を管理するためのソフトです。Windows, Mac, iPhone, Androidの各OSで提供されており同期が可能なため複数のPCやタブレットを使用する私にとっては有難い存在です。
Mendeleyを使うと"Microsoft Word"で資料を書く際の文献管理、参考文献の挿入も自動でできるようになります。
また、MendeleyがElserverに買収されたことにより文献データベース「Science Direct」と連携が可能になり更に使いやすくなったかと思います。*1

そんなMendeleyですが、MaciOS版ではクラッシュやバグに悩まされることがたまにあります。

今回はバグが発生した時の対処法について書いて行きたいと思います。

Mac版 Mendeley Desktop

起動時にクラッシュする。

Mendeley desktopは起動時の同期読み込み中にクラッシュすることがあります。一度クラッシュを起こしてしまうとその後何度起動しても途中でクラッシュしてしまうのでウンザリです。。。

ターミナルからMendeleyを実行するとログが出力されるのでログを観察して原因を探ります。

  1. ターミナルを開きMendeleyの実行ファイルのディレクトリに移動
    以下を入力してretrun(あるいは以下のディレクトリに移動してcommafnd + T)
cd /Applications/Mendeley Desktop.app/Contents/MacOS/<br>
  1. ターミナルからMendeleyを実行
    Mendeley Desktopは名前の間にスペースがあるため ” ” で囲む
./"Mendeley Desktop"
  1. ログが出力されるのでクラッシュした時のログから問題になっているファイルを削除してみる。

私の場合はWordとの連携に問題があったようで、一度Word上のプラグインを削除し、Mendeleyを再起動したところ直りました。
※ネットでクラッシュの問題を検索してみると基本的にはMendeleyを再インストールすると直るようなバグが多いようです。

ウィンドウの最大化が直らない。最小化ボタンなどが消える。

MendeleyのMac版では起動時に最大化・最小化ボタンが表示されず、画面の大きさも変更できない問題が生じるようです。
僕自身で原因を調べてみたところ、Mendeleyの画面を最大化している状態で [command + Q]を押してアプリケーションを終了すると、次回起動すると最大化・最小化ボタンが消えさるようです。再現性は取れていました。以下の写真がその症状です。

f:id:tanisuke_str:20181019170624p:plainf:id:tanisuke_str:20181019170615p:plain
1枚目(左):最大化・最小化ボタンが消えた場合, 2枚目(右):正常な状態

対処法

  1. Mendeleyを終了
  2. Finder > [移動] > [フォルダへ移動]
  3. ~/Library/Preferences と入力
  4. [ com.mendeley.Mendeley Desktop.plist ]というファイルを探して削除
  5. 再度Mendeley起動

これで直っているはずです。
直らない場合は、もう1つ同じフォルダにmendeleyの名前が含まれた.plistファイルが生成されていると思うので探して消して見るといいと思います。

iOS版Mendeley

iOS版のMendeleyでは起動しようとすると即座にクラッシュする症状がみられました。
iOS版ではファルの操作などはiPhone上で行えないので、基本的にはアンインストール > 再インストールとするしかないです。
私の場合はそれで直りました。
再インストールして下さいって感じの投げやりな解決策はあまり好きではないんですが、これしか方法がありませんでした。
何か根本的な解決策が明らかになったらまた更新します。

Gitでプログラムも論文もバージョン管理する

もはや何番煎じかわからないくらいのGit解説記事。需要は皆無だろうけど備忘録としてまた世の中に無駄な記事を増やします。

はじめに

大学院の生活にも慣れ、何故かあるテスト期間も終わり、実験し放題の夏です。 かくいう僕は合間を縫って兼ねてから計画していたソフトウェア開発に着手している訳ですが、ここで気になってくるのがバージョン管理の問題です。 新たな機能の追加やプログラムの分岐に役立つのがGitです。 このGitの操作方法について忘れないように簡単に記します。

Gitとは

Gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムです。(by Wiki) プログラムではないですが、私の卒論の作成時にはこんな感じにファイルが増殖していました。

f:id:tanisuke_str:20180811131457j:plain:w640
大量に増殖したファイルたち。
これは最高にダサい。Gitを使えば見かけ上のファイルを1つのままにバージョンの管理が容易にできるようになります。そして変更履歴を保存しているのでいつでも過去の状態に戻すことができます。 変更中に戻したくなったが間違って上書きしてた!!死! なんて悲劇は起きなるでしょう。

Gitの操作

git init →リポジトリの初期化

Gitの操作ではまず始めにリポジトリを初期化します。 リポジトリは変更履歴を保存する倉庫のようなものと思っています。 まずは最初にGit管理するフォルダを作成し、git initコマンドを使用してリポジトリの初期化を行います。 対象となるディレクトリをcdしてそこでgit initします。

$ mkdir git-tutorial
$ cd git-tutorial
$ git init
Initialized empty Git repository in /Users/abekeishi/Public/Programing/git-tutorial/.git/

すると.gitという65kB程度の隠しフォルダが生成されます。 Gitではgit-tutorialフォルダをワークツリーを呼び、ここでファイルの編集を行います。 そして生成されたリポジトリで変更履歴の管理を行います。

git status → リポジトリの状態を確認

Gitリポジトリの状態を表示するためにはgit statusコマンドを使用します。 その前にREADMe.mdファイルを作成して見ます。

$ touch READMe.md
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .DS_Store
        touch READMe.md
nothing added to commit but untracked files present (use "git add" to track)

On branch masterと表示され、現在はmasterブランチにいることがわかります。 またUntracked files.DS_Storetouch READMe.mdが表示されています。 これはまだリポジトリに追加されていないファイルを示しています。

git add →ステージ領域へフィルを追加

先ほどの操作でもわかりますが、ファイルを作成しただけではリポジトリには追加されません。 リポジトリへの追加はgit addを叩きます。

$ git add READMe.md
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   READMe.md

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .DS_Store

こうすることによって変更が適用されます。

git commit →リポジトリの履歴を記録

git commitコマンドは、ステージ領域に登録されている時点のファイル群を実際にリポジトリの履歴として記録します。 この履歴を元にワーキングツリーに復元したり更新したりすることができます。

git commit -m "First commit" →一行のコミットメッセージを記述

$ git commit -m "First commit"
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 READMe.md
 create mode 100644 test.txt

取り敢えず今日はこの辺にします。