Note of Pediatric Surgery

腸内細菌、R、ときどき小児外科

JMPファイルを何とかRに取り込もうとする…も撃沈する

0. はじめに

少し前から大学病院でJMP ( ジャンプ ) という統計ソフトの包括ライセンス契約を結んでいるらしく、JMPを使って解析をしたという話をよく聞くようになった。どうやら初学者にも使いやすくて好評らしい。聞いたことなかったので、なんだその怪しいソフトは、と内心バカにしていたのだが ( スミマセン ) どうやら泣く子も黙るSASの別バージョン ( ? ) らしい。

先日、共同研究先の先生から、jmpファイルで被験者情報のファイルをいただいたのだが、手元にRしか存在しないため上手く読み込めなくて悪戦苦闘してしまった。Excelに変換してもらう、というオチになってしまったが、その奮闘記を何かの役に立てればと思い書いてみる。

1. なぜExcelに変換してはいけないのか?

誰もが思うExcelにexportしてもらえばいいじゃん、ということ。当然僕も思いましたし、最終的にここに落ち着いてしまいましたが、

  • カテゴリー変数のラベル情報が消去されてしまう

という致命的な問題があるようです。

2. JMPファイルをRで読み込むのは難しい

ネットで.jmpからRに取り込む手段を検索するもなかなかヒットしない。

JMP®による解析アプリケーションの開発

どうやらRとJMPを同じマシンにインストールしておけばいろいろと連携させることができるようです。しかしそんなことがしたいわけではない。困ったのでFacebookのRのグループのメンバーにお伺いを立ててみた。すると、JMPでSASのファイルに変換すれば上手く読み込めるという情報をいただいた。コチラにも同様の情報がある。その名も、SAS移送ファイルで拡張子は.xpt。

3. .sas7bdat

3-1. {sas7bdat}を試してみる

というわけで、.xptに変換してもらうように先方に依頼したところ、.sas7bdatという形式で送られてきた。明らかにこれもSASのファイルなので、Rで開けるだろうと判断していろいろと調べてみるとRのPackage ‘sas7bdat’で開けることがわかった。

install.packages("sas7bdat")
library("sas7bdat")
Data <- read.sas7bdat("export.sas7bdat",debug=FALSE)

と入力すると

Error in read.sas7bdat("export.sas7bdat", debug = FALSE) : 
  magic number mismatch please report bugs to maintainer

と返ってくる。エラーメッセージをgoogleにかけても有効な情報は得られない。辿り着いたコチラのサイトによると、どうやら原因は2つあるようだ。

SAS側でのデータ作成について
ASデータセットを作るときに圧縮をかけるのが通常なのですが、
Rに取り込むときに圧縮をかけていると、
読み込みがエラーになるので注意が必要です。

SASにて、データを取り込むときに「compress = no」とオプションをつける!

データの確認 日本語の変数要素が入っている場合は 文字化けしている可能性があります。

先方にデータを圧縮したか尋ねたが明瞭な回答は得られず。日本語はそもそも入っているようで、英語にすべて変換するのは厳しいとのこと。というわけで{sas7bdat}を使うのは諦めた。

3-2. {haven}を試してみる

次にたどり着いたのは、Package ‘haven’。これも試してみると

install.packages("haven")
library(haven)
read_sas("export.sas7bdat")

すると

read_sas("export.sas7bdat")
Error: Failed to parse export.sas7bdat: Invalid file, or file has unsupported features.

と怒られた。するとhavenの最新バージョンならイケるという情報をゲットしたので試してみる。Githubからダウンロードするらしい。

devtools::install_github("hadley/haven")
library(haven)
read_sas("export.sas7bdat")

インストールに時間がかかり、これはイケるかも?と期待されたが

read_sas("export.sas7bdat")
Error: Failed to parse export.sas7bdat: Invalid file, or file has unsupported features.

とあえなく撃沈。

3-3. sas7bdat.parso

今度はコチラのサイトを見つけました。ここで紹介されているsas7pdat.parsoという物を使えば、compressされたSASファイルも扱えそう。というわけでやってみました。

install.packages(c("rJava", "devtools"))
devtools::install_github("BioStatMatt/sas7bdat.parso")
library(sas7bdat.parso)
read.sas7bdat.parso("export.sas7bdat")

とすると今度は

Error in .jnew("s7b2csvclass") : 
  java.lang.UnsupportedClassVersionError: s7b2csvclass : Unsupported major.minor version 51.0

という新しいエラーメッセージが。割りとメジャーなものでどうやらJAVAの設定の問題の様子。Githubの皆様は、みんな困っていたようですが、解決策が出ず。他にもいろいろとgoogleでヒットするのですが、僕の理解の範疇を超えてしまっています。コチラを参考に.bash_profileをいじったりしましたが、結局解決せず。この問題さえ解決できれば、クリアできそうだったのに…残念です。

3. .xpt

というわけで、.sas7bdatのインポートは諦めて、改めて.xptで送ってもらうように頼みました。.xptであれば割りと有名なpackage ‘foreign’でインポートできるようです。

install.packages("foreign")
library("foreign")
mydata <- read.xport("export.xpt")

とすると、ついに読み込めました!感極まりましたが、結局、

head(mydata)[,1:6]

とデータを確認すると

> head(mydata)[,1:6]
  X_R______ X____ X___A X________ X_E______ X_E_____R
1      C001     2     1         1         0        NA
2      C002     1     1         2         0        NA
3      C003     1     1         3         0        NA
4      C004     1     1         4         0        NA
5      C005    NA     1         5        -1        NA
6      C006     1     1         6         0        NA

となり、日本語で書かれた列名が文字化けし、ラベルの項目は結局削除されてしまっていましたとさ。
というわけで、長くなりましたが、結局はExcelに単純に変換してもらったファイルを何とかラベルを類推して解析しました。恐らくsas7bdat.parsoでJAVAの問題さえ解決できればなんとかなったんじゃないかと思われます。
どなたか、詳しい方、教えていただけると幸いです。

コホート内ケースコントロール研究: 2. コントロール群の抽出法

0. はじめに

さて、この記事ではRとパッケージ"Epi"を用いて、コホート内ケースコントロール研究の被験者を実際に抽出していきたいと思います。データ・セットはRパッケージ{Epi}の中の"diet"を使用していきます。

コホート内ケースコントロール研究についてはコチラにまとめてあります。 www.pediatricsurgery.site

続きを読む

コホート内ケースコントロール研究: 1. コホート内ケースコントロール研究とは?

0. はじめに

現在、私が関わっているプロジェクトでコホート内ケースコントロール研究を行うことになりました。というのも、腸内細菌叢や糞便中代謝物を測定するのには非常にお金がかかるので、集めた全検体を調べると大変なことになります。ですので、前向きコホート研究で集めた検体や被験者の中から、一部を抽出して解析する方法です。その概要と実際の被験者の抽出方法をまとめたので書いていきたいと思います。

Rでの実行はこちらの記事を参照してみてください。 pediatricsurgery.hatenadiary.jp

続きを読む

予測メタゲノム解析: HUMAnNをインストールするためのあれこれ

はじめに

f:id:Razumall:20180708130659p:plain

HUMAnNとは、The HMP Unified Metabolic Analysis Networkの略で、メタゲノムデータを使って腸内細菌叢がどの代謝経路を有していて、またその遺伝子をどれくらい持っているのか?ということを明らかにするためのパイプラインです。16SrRNAアンプリコンシーケンシングではできない、腸内細菌の機能の比較にまで踏み込んでいけます。

通常はメタゲノムデータ、つまり糞便中の全細菌の全DNAの配列を全て読んだ膨大なシーケンスデータを使って解析をしますが、PICRUStを用いれば、16S rRNA解析の結果をゲノムデータベースにマッチングさせて遺伝子を予測することができます。

続きを読む

Gasteroenterology: γδ-T 細胞から産生されるIL-17と胆道閉鎖症

Interleukin-17, Produced by γδ-T Cells, Contributes to Hepatic Inflammation in a Mouse Model of Biliary Atresiaand is Increased in Livers of Patients.

www.ncbi.nlm.nih.gov

続きを読む

肺分画症の血管走行

0. はじめに

肺分画症を手術する際に最も重要なことは、血管の走行を可能な限り把握し、予期せぬ血管損傷のリスクを最小限に留めておくことと考えられます。しかしその血管走行は単純ではありません。先日、肺葉内肺分画症の血管走行に関して議論があり、復習してみました。

続きを読む

Office365のアカウント認証が上手くいかない

久しぶりの更新で、いろいろな記事が途切れ途切れになっていますが、これからも少しずつマイペースにやっていきます。さて、Macユーザー待望のOffice for Mac 2016がリリースされました。

http://www.itmedia.co.jp/news/articles/1507/10/news060.html">http://www.itmedia.co.jp/news/articles/1507/10/news060.html">http://www.itmedia.co.jp/news/articles/1507/10/news060.html

Office365での先行リリースということだったのですが、有難いことに大学院の学生および大学病院の職員は包括ライセンス契約により、無償で使うことができます。ということで、早速ダウンロードしてインストールしてみましたが、エラーが起きてなかなか使えず難渋しましたので、その解決策を共有したいと思います。

続きを読む

腸内細菌叢の成長: 生後1000日の変遷

はじめに

www.ncbi.nlm.nih.gov

次世代シーケンサーの普及により腸内細菌叢の解析が進み、新生児期から乳児期を経て成人型に腸内細菌叢がどの様に変化し、免疫システムの構築、アレルギー疾患をはじめとした免疫システムの異常に伴う疾患との関係性が少しずつ明らかになってきました。

やはり強調されているのは生後6ヶ月くらいまでの腸内細菌が重要ということで、この時期の栄養の問題や抗菌薬はインパクトが大きく、小児外科医として真剣に考えなければいけない問題だと思っています。

続きを読む

わからない単語を英辞郎で検索するショートカットキーを作成する

はじめに

論文を読んでいてわからない単語が出てくると、みなさんどうしてますか?僕はMacのスクリーンで読むことがほとんどなので、三本指でタップすれば辞書.appが自動的に立ち上がってくれますが、専門用語だと載っていないことも多いです。

僕はアルク英辞郎を愛用してます。皆さんご存知の通り、専門用語でもたいていの単語は載っていますし、それよりも豊富な例文が強みで、僕は有料会員登録もしてしまいました。 ( Weblioの方が音声ファイルは充実していると思います ) 調べた単語を単語帳に片っ端から登録し、週に1回復習をしています。

前置きが長くなりましたが、ショートカットで一発で英辞郎で単語の意味を調べられないかな?と思っていろいろ調べてみたところ、Automatorを使えば比較的簡単に出来そうなことがわかったのでやってみたところうまくいきましたので紹介したいと思います。

ちなみに英辞郎Macの辞書.appに組み込むこともでき、昔は僕もそうやっていましたが、単語帳に登録できないことと、値段が高いこと、容量が1GBくらいあり、Macbook Airの容量を圧迫してしまうことから、この方法がbetterと考えます。

今回は、こちらのMacの右クリックメニューに項目を追加する方法の記事を参考させていただきました。

1. Automatorでワークフローを作成する

  1. Automatorを立ち上げる
  2. 書類の種類を選択してください→「サービス」を選ぶ

スクリーンショット 0027-04-14 20.05.33

  1. 「ユーティリティ」→「クリップボードにコピー」をドラッグ&ドロップ スクリーンショット 0027-04-14 20.06.00
  2. AppleScriptを実行」→ドラッグ&ドロップ→下記のスクリプトを入力する set aURL to "http://eowp.alc.co.jp/search?q=" & (get the clipboard) open location aURL スクリーンショット 0027-04-14 20.07.07
  3. コンテキストメニュー ( 右クリックメニュー ) に表示したい名前をファイル名にして保存 スクリーンショット 0027-04-14 20.07.34これでコンテキストメニューの「サービス」に「英辞郎で調べる」が追加されました。 スクリーンショット 0027-04-14 20.09.02

2. ショートカットの作成

「システム環境設定」→「キーボード」→「ショートカット」タブ→「サービス」→「英辞郎で調べる」で好きなショートカットを決める。僕は「control + command + E」にしてみました。 スクリーンショット 0027-04-14 20.15.32

以上になります。ちなみにコンテキストメニューからだと「サービス」を選んでからでないと「英辞郎で調べる」にアプローチできず鬱陶しいので、Macの右クリックメニューを3倍使いやすくする方法まとめ。を参考にして、改善してあります。

プレビューで論文をPDF読んでるときでも、Safariでサイト開いている時でも、コンテキストメニューもしくはショートカットキー一発で英辞郎で調べられますのでかなり快適ですよ。オススメです、ぜひともお試しあれ。ちなみにApplescriptのURLの部分を工夫すれば、どんな検索サイトにも対応可能と思います。

Automator、かなり便利なのは前々から知っていたのですが、これを機に勉強してみたいなと思いました。

エラーバーとSDとSE

0. はじめに

エラーバーについて書いていこうと思います。エラーバーとは何かというと、棒グラフや折れ線グラフについているエ字の棒です。かっこいいグラフにはよくついているやつですが、きちんと意味を知っていることが非常に大切なことだと思いますのでまとめておきます。

続きを読む