read_pod_csv() は、 2段ヘッダ構造を持つ CSV ファイル(POD × 条件)を解析用の tidy-ish な long 形式に変換する関数である。
本関数は、Excel 等で作成された「人間には見やすいが解析には不向きな表形式データ」を、 後段の統計解析・可視化・モデリングに耐える形に正規化することを目的としている。
本関数は、入力 CSV が以下の構造を持つことを前提とする。
- 1行目:POD(例:POD0, POD4, POD7, …)
- 2行目:条件(例:CONTROL, CELL, HD, Cell+HD, …)
- 1列目:サンプル ID
- 3行目以降:測定値
- 1ファイル=1遺伝子
このような 2 段ヘッダ構造は、Excel では自然だが CSV / tidy データとしては扱いづらいため、 本関数ではヘッダ行を 列メタデータとして分離 し、long 形式に変換する。
関数内部では、以下の処理を行っている。
- CSV をヘッダなしで読み込む
- 1行目から POD 情報、2行目から条件情報を抽出
- 実データ部分のみを数値として整形
- pivot_longer() により縦持ちデータに変換
- 列順を用いて POD / 条件を安全に対応付け
- 引数で与えられた遺伝子名(gene)を列として付与
この設計により、 列名や Excel 特有の挙動に依存しない、再現性の高い変換が可能になっている。
出力は以下のカラムを持つデータフレームである。
- gene:遺伝子名(引数で指定)
- sample:サンプル ID
- POD:POD(時点)
- condition:実験条件
- value:測定値
この形式は、dplyr / ggplot2 / 線形モデル / 混合効果モデルなどで そのまま利用可能な構造になっている。
- POD と条件を列名に結合せず、独立したカラムとして保持している → 後段の集計・モデリングが容易
- Excel 形式は入力時のみ使用し、 正規化後は CSV を正本(source of truth)とする設計を想定
- 列番号のオフセットずれを避けるため、 列順そのものを用いた対応付けを行っている
- 遺伝子ごとの時系列 × 条件比較
- 複数遺伝子 CSV を統合した解析
- 再現性を重視した解析パイプライン(targets / drake 等)