この記事シリーズの詳細については、こちらの記事をご覧ください。
Step 0. データ解析
まずは、論文執筆の前提となるデータ解析の例からです。
Quarto で執筆する論文に埋め込むことを前提に、解析結果を出力します。
データ解析をして、結果を .ini, .csv, 画像ファイルへ出力します。
今回の例では、以下のようなコードでデータ解析をしたとします。
解析内容は例として適当にやっているだけです。
コード
# %%
from sys import version
from pathlib import Path
from configparser import ConfigParser
import pandas as pd
import pingouin as pg
import seaborn as sns
# 出力先のファイルパスを指定
OUT_DIR = Path('result')
OUT_PATH_VAL_METHOD = OUT_DIR / 'method.ini'
OUT_PATH_TABLE_DESCRIPTIVE = OUT_DIR / 'table_descriptive.csv'
OUT_PATH_TABLE_CORRS = OUT_DIR / 'table_corrs.csv'
OUT_PATH_FIG = OUT_DIR / 'fig_scatter.png'
# Pingouinが提供するデータセットを読み込む
dataset = pg.read_dataset('pairwise_corr.csv').set_index('Subject')
dataset.columns = ['neuro', 'extra', 'open', 'agree', 'consc'] # 後の関数紹介のために、あえて変数名っぽい名前に変更
dataset.index.name = 'sub_id'
# %%
# 使用した統計ツールとバージョンを抽出(後で.iniファイルに保存する)
method_values = dict(misc=dict(), demographic=dict())
method_values['misc']['python_ver'] = '.'.join(version.split()[:1])
method_values['misc']['pingouin_ver'] = pg.__version__
# 被験者数を算出(後で.iniファイルに保存する)
method_values['demographic']['n_subjects'] = len(dataset)
print('Number of subjects:', method_values['demographic']['n_subjects'])
# %%
# 基礎統計量を表にまとめる(後で.csvファイルに保存する)
index = pd.MultiIndex.from_tuples([
('internal', 'neuro'),
('external', 'extra'),
('internal', 'open'),
('external', 'agree'),
('internal', 'consc')])
index.names = ['highlevel', 'lowlevel']
table_descriptive = (dataset.describe()
.T[['mean', 'std']]
.set_index(index)
.sort_index(level=0))
table_descriptive
# %%
# 相関係数を算出(後で.csvファイルに保存する)
table_corrs = (pg.pairwise_corr(dataset, columns=['neuro'], padjust='bonf')
.set_index('Y')
.loc[:, ['r', 'p-unc', 'p-corr']])
table_corrs
# %%
# Scatter plot (後で.pngファイルに保存する)
fig_corrs = sns.regplot(data=dataset, x='neuro', y='open')
# %%
# 結果等をファイルに出力
parser = ConfigParser()
parser.read_dict(method_values)
parser.write(OUT_PATH_VAL_METHOD.open('w'))
table_descriptive.to_csv(OUT_PATH_TABLE_DESCRIPTIVE)
table_corrs.to_csv(OUT_PATH_TABLE_CORRS)
fig_corrs.figure.savefig(OUT_PATH_FIG)
これにより、.ini, .csv, .png ファイルを生成しました。
.ini ファイル
[misc]
python_ver = 3.11.11
pingouin_ver = 0.5.4
[demographic]
n_subjects = 500
まず、method.ini
という .ini ファイルが出力されました。
Method に記載する情報をまとめているので method.ini
です。
使用した Python と pingouin パッケージのバージョンを、自動で出力しています。
また、プログラムによって被験者の人数を数えたところちょうど500人でしたので、それも記載しています。
このように、論文に埋め込むべき数値や文字列などのデータを .ini ファイル1にまとめます。
.csv ファイル
論文で報告する表は、.csv ファイルとして出力します。
↓まず、こういった形のマルチインデックスな表を出力しました。
↓もうひとつ、相関係数を示した表を出力しました。
体裁を整えたうえで、論文に埋め込みましょう。
画像ファイル
↓こんな画像を図として出力しました。
これも論文に埋め込みます。
ディレクトリ構造
出力したファイルたちは、すべて一つのディレクトリに保存します。
今のところ、以下のようなディレクトリ構成になっています。
project
├─ (解析に)
├─ (必要な
├─ (ファイルたち)
└─ result
├─ method.ini
├─ table_descriptive.csv
├─ table_corrs.csv
└─ fig_scatter.png
Step 1. Quarto のインストール
この記事では Visual Studio Code(VSCode)を介して Quarto を用います。
お好みに応じて RStudio などお使いください。
インストール方法については別の記事にお譲りします。
Step 2. 執筆環境の準備
ディレクトリの準備
論文の本文を書いていきます。
まずはディレクトリを用意しましょう。
publish/paper
というディレクトリを作りましょう。
project
├─ (解析に必要なファイルたち)
├─ result
└─ publish ←新規作成
└─ paper ←新規作成
Terminal(やコマンドプロンプトなど)で、publish/paper
に移動します。
ジャーナルテンプレートの準備
Quarto は、メジャーなジャーナル用のテンプレートをいくつか用意してくれています。
こちらに一覧があります。
ググってみると、Quarto 公式以外が作成・共有してくれたテンプレートもあるようです。
ここでは、elsevier のテンプレートを使うこととしてみましょう。
ちゃんと Terminal で、publish/paper
に移動しましたか?
そのまま Terminal にて、以下のコマンドです。
quarto use template quarto-journals/elsevier
Do you trust the authors of this template
と尋ねられるので、y
→ Enter
です。
Create a subdirectory for template?
と尋ねられますが、もうディレクトリは準備したので、n
→ Enter
です。
paper
以下に、いろいろなファイルやディレクトリが生成されます。
以下のファイル・ディレクトリは削除してしまって大丈夫です。
- placeholder.png
- style-guide/
- paper_files/
project
├─ (解析に必要なファイル)
├── result
└── publish
└── paper
├── _extensions ←Quartoが自動生成した
│ └── quarto-journals
│ └── elsevier
├── bibliography.bib ←Quartoが自動生成した
├── paper.qmd ←Quartoが自動生成した
├── paper_files ←Quartoが自動生成したけど消してOK
├── placeholder.png ←Quartoが自動生成したけど消してOK
└── style-guide ←Quartoが自動生成したけど消してOK
R パッケージのインストール
Quarto 内で使用する R に、パッケージを3つインストールします。
R を開いて、R コンソールに以下をペーストします。
install.packages(c("ini", "kableExtra", "english"))
コンソールの表示に従ってインストールを進めてください。
そのほかのツールを準備
Quarto を使うにあたって、いくつかのツールを作ってみました。
せっかくなのでこれらの使い方もこの記事でご紹介します。
こちらのリポジトリをまるっとダウンロードしてください。
中身を以下のように配置してください。
-
tools
をpaper/
下に移動 -
_extensions/jcletter
をpaper/_extensions/
下に移動 -
quarto-journal-cl.qmd
をpaper/
下に移動
これらの自作コードは、R や Lua 等に不慣れな筆者が頑張って作ったものです。
計算機等に不具合を与えるような要素はないとは思いますが、自己責任でご利用ください。
post-render.py
というツールを動かすために、_quarto.yaml
というファイルを作成してください。
場所は paper.qmd
と同じ場所です。
project
├─ (解析に必要なファイル)
├── result
└── publish
└── paper
├── _extensions
│ ├── jcletter ←DLして持ってくる
│ └── quarto-journals
├── bibliography.bib
├── paper.qmd
├── quarto-journal-cl.qmd ←DLして持ってくる
├── _quarto.yaml ←新規作成
└── tools ←DLして持ってくる
├── helper.R
├── insert_roles.lua
└── post-render.py
_quarto.yaml
には、以下のように記載します。
project:
post-render: tools/post-render.py
長くなりましたのでいったんここまでにします。
次回はメタデータ記入からデータ埋め込みまでです。
-
.ini ファイルは本来、設定を記述するためのファイル形式です。そのため結果を出力するには不適切とも思われます。しかし、より便利なファイル形式が見つからず、.ini を使っています。 ↩