Wet系バイオインフォマティシャンの災難

機械に弱いバイオ研究者に降りかかる災難を綴っていきます。 Twitter: @1wantphd

【学振特別研究員になるために】申請書の書き方以外に大切なこと

学振特別研究員の申請の時期になりました。

これから学振に申請する皆様へ私がどうしても伝えたいことは

申請書の書き方”以外”に大切なことがある

ということです。

私はこれを知らなかったため、1年目のDC2申請の際には不採用をいただくことになりました。

しかし、この教訓をもとに再チャレンジした2年目のDC2申請では

申請書の内容は1年目とほぼ変わらなかったにもかかわらず採用をもらえました!

 

なお、この記事では申請書の書き方については記載していませんので、

それについてはみのんさんのブログや書籍などをご参照ください。

https://ocoshite.me/how-to-get-gakushin-dc1

学振申請書の書き方とコツ DC/PD獲得を目指す若者へ (KS科学一般書)

 https://www.amazon.co.jp/dp/4061531603

 

DC2採用までの経緯

まず、DC2の大前提として

主著1報の業績があることは圧倒的なアドバンテージになる

ということです。

過去の採用者一覧から採用者の業績を調べてみると

一般的な生物系の審査区分では

主著0-1報、共著2-5報

くらいがだいたいの目安です。

しかし、論文の出しやすさは研究分野によって変わります。

審査区分次第では主著3報で平均レベル

というようなハイレベルの分野もあります。

1年目の私は何も知らずにそのような研究分野に申請をしてしまったのが敗因でした。

そこで、2年目の申請では申請書の内容はほぼ変えず、

申請すべき審査区分を徹底的に考え抜いた結果、DC2に採用されるに至りました。

 

審査区分ってなんですか。

審査区分とは、”適切な相対評価”ができるように

申請者の研究内容を分類するための区分で、

以下の3つから成り立っています。

  1. 書面合議・面接審査区分(=大区分)

  2. 書面審査区分(=中区分)

  3. 小区分(=小区分)

書面合議・面接審査区分とは「生物系科学」や「医歯薬学」というような大きな区分になります。

書面審査区分とは上記の区分をさらに細分化した区分であり、

例えば、生物系科学なら以下の4つの書面審査区分があります。 

  1. 分子レベルから細胞レベルの生物学およびその関連分野

  2. 細胞レベルから個体レベルの生物学およびその関連分野

  3. 個体レベルから集団レベルの生物学と人類学およびその関連分野

  4. 神経科学およびその関連分野 

そして、各書面審査区分はさらに小区分に分かれます。

「1. 分子レベルから細胞レベルの生物学およびその関連分野」なら

分子生物学関連

構造生物化学関連

機能生物化学関連

生物物理学関連

ゲノム生物学関連

システムゲノム科学関連

 

ここで重要な点として覚えておいてほしいことは

申請書の審査は書面審査区分(=中区分)ごとに行われる

ということです。

小区分の具体的な内容例などについては

日本学術振興会が公開している審査区分表に記載されているので参考にしてみてください。

https://www.jsps.go.jp/j-pd/pd_sinsa-set.html

多くの場合、自分の専門と合う書面審査区分が2,3個は見つかるため、

どこに申請するかは迷うことになります。

 

申請する際の審査区分は大切

申請書が良ければどの区分に出しても採用されると思っている、そこのあなた…

「違うな、間違っているぞ!(C.V. 福山潤)」

どの審査区分に出すかは申請書の内容と同じくらい大切です。

まずはその理由について解説していきたいと思います。

 

理由①:審査区分が変われば審査員となる先生の専門も変わる。

日本学術振興会曰く、各審査区分ごとに割り当てられる審査員の先生は

その区分の研究内容に詳しい先生が選ばれているそうです。

すなわち、申請する審査区分を間違えると、自分の研究内容に詳しくない先生に審査されることになります。

この”審査員と自分の研究内容のミスマッチ”により起こりうる弊害としては

  1. 研究内容に関わる専門用語が理解できない
  2. 研究の背景をよく知らないから研究の意義が理解できない
  3. そもそも申請書を読みたいと思えない

などが挙げられます。

ある程度のミスマッチであれば、専門用語や研究背景を丁寧に説明することで

レスキューできるかもしれませんが、

完全なミスマッチの場合、その時点で審査対象外になりかねません。

 

では、どのように審査区分を選ぶのが良いでしょうか。

個人的にオススメしたいのが...

学振のHPにある”過去の採用者一覧”を使う

https://www.jsps.go.jp/j-pd/pd_saiyoichiran.html

 

この一覧表で自分の研究内容に関連するキーワードを検索して、

自分と近しい研究内容がどの審査区分で採用されているか徹底的に調べ上げてください。

そうすることで、少なくとも、

自分の研究内容に理解のある先生が審査員がいる可能性が高い審査区分を見つけることができます。

 

理由②:審査区分が変われば、競争相手となる他の申請者も変わる

上記で述べたとおり、学振の評価は”相対評価”です。

競争相手の評価点が低ければ自分の評価点は相対的に高くなります。

では、競争相手の情報をどのように調べることができるのでしょうか。

 

 ここでも重要になるのが

学振のHPにある”過去の採用者一覧”です。

https://www.jsps.go.jp/j-pd/pd_saiyoichiran.html

自分が申請しようとしている区分において過去の採用者がどれくらいの業績で採用されているかをPubmedで検索してください。

大変ありがたいことに、採用者一覧には採用者の名前と指導教官の名前がセットで記載されているため、採用者の業績は簡単に調べられます。

研究分野によっては主著0報でも採用されやすい審査区分もあるので是非探してみてください。

(ただし、あくまで自分の研究内容と近しい範囲の審査区分で探してください。)

 

最後に

学振の申請書は”申請者の研究分野にはそこまで詳しくない審査員”に読んでもらうものと考えるべきです。

申請書を指導教官に読んでもらうことはもちろん大切ですが、

専門的になりすぎた申請書は外部の先生には理解できないかもしれません。

逆に、「親に読んでもらう」という話もよく聞きますが、

審査員の先生は”生物学のプロ”なので普通のお父さんお母さんとはレベルが違います。

忙しい審査員の先生に読んでいただくという気持ちを大切にした上で、

審査員の先生への配慮が行き届いた申請書にすることが大事かと思います。

 

 

シェルスクリプトに出てくる「2>&1」ってなんですか?【エラーログの保存に使えます】

シェルスクリプトを書くために勉強をしていると

時々行末に「2>&1」という記号を見かけると思います。

プログラミング初心者には意味不明なこの呪文について解説をしたいと思います。

この呪文はファイルディスクリプタと呼ばれる番号"1, 2"と

リダイレクト">"から成り立っているのでこの2つについてをまず解説します。

 

コマンドによる出力には”標準出力”と”標準エラー出力”の2種類がある 

コマンドechoを例に説明します。

まず、echoで”Hello”と表示させてみましょう。

$echo "Hello"
Hello

"Hello"と問題なく出力されます。

これが標準出力です。

 

次に存在しないコマンドaaaを行ってみると

$aaa "Hello" 
-bash: aaa: command not found

"aaaというコマンドはありません"というエラーメッセージが出ます。

これが標準エラー出力です。

 

上記の "標準出力"と "標準エラー出力"にはそれぞれ"1" "2"という番号が与えられており、この番号をファイルディスクリプタと呼びます。

この番号と">(リダイレクト)"を使うことでそれぞれの出力を呼び出すことができます。

リダイレクトとはコマンドの出力先を変更する記号で

> (file名).txtとすることで指定したファイルにコマンドの結果を出力することができます。

 

それでは、echoの標準出力と標準エラー出力を2つのファイルにリダイレクトしてみましょう。

$ echo "Hello" 1>result.txt 2>error.txt
$ cat result.txt
Hello
$ cat error.txt
$

echo "Hello"によって出力される"Hello"はresult.txtにリダイレクトされたため、

これまでと異なりecho後、ターミナル上には表示されません。

その代わりにcatでresult.txtファイル内を開くと

"Hello" と書き込まれていることがわかります。

echo "Hello"ではエラーが出ませんので

error.txtには何も書き込まれていません。

 

次に、エラーが出るaaaというコマンド(?)を使ってみましょう。

$aaa "Hello" 1>result.txt 2>error.txt
$cat error.txt 
-bash: aaa: command not found
$cat result.txt
$

aaa "Hello!"で出力されるエラーメッセージは

error.txtに書き込まれていました。

aaaは存在しないコマンドでエラー以外に出力される結果はありませんので、

result.txtファイルには何も書き込まれていません。

  

2>&1は標準エラー出力を標準出力と一緒に出力させる

上記の内容から"2>&1"が標準エラー出力(2)を標準出力(1)にリダイレクトさせているということはなんとなくわかると思います。

では&とは何でしょうか。

&なしで以下のコマンドを実行してみると

$echo "Hello" 2>1
"Hello"

とくに何も起こらないように見えますが

カレントディレクトリに[1]というファイルが新たに出現しています。

しかし、このファイルには何も書かれていません。

$cat 1
$

これはecho "Hello"標準エラー出力(2)を[1]というファイルにリダイレクトしたために生まれたファイルであり、エラーメッセージが出ないのでファイルは空です。

そのため、エラーメッセージの出るaaaを使うと

$aaa "Hello!" 2>1
$cat 1
-bash: aaa: command not found

[1]というファイルにはエラーメッセージが書き込まれました。

 

では&とは一体なんなのでしょうか。

これはマージを意味しており、

「標準出力と標準エラー出力をまとめて出力する」を意味しています。

そのため、 2>&1を使えば標準出力と標準エラー出力をまとめてresult.txtファイルに書き込むことができます。

$echo "Hello"  >result.txt 2>&1
$cat result.txt
Hello 
$aaa "Hello" >result.txt 2>&1
$cat result.txt
-bash: aaa: command not found

echoの標準出力もaaa標準エラー出力もresult.txt内に保存することができました。

これをシェルスクリプト内で使えばエラーメッセージが出た場合には指定のファイルにログを保存させることができますのでデバックする際などに役立てることができます。

 

 

 

おまけ・リダイレクトの種類

リダイレクトはシェルスクリプトを書く際に大事な手法なので

使い方をまとめた表をhttps://eng-entrance.com/linux-redirect様より転載させていただきました。

 この機会に覚えておきたいですね。

コマンド > ファイル コマンド結果をファイルへ書き込む
コマンド < ファイル ファイルの中身をコマンドの標準入力へ
コマンド >> ファイル コマンドの出力結果をファイルへ追記
コマンド 2> ファイル エラー出力をファイルへ書き込む
コマンド 2>> ファイル ファイルにエラー出力を追記
コマンド > ファイル 2>&1 ファイルに標準出力と標準エラー出力を書き込む
コマンド >> ファイル 2>&1 ファイルに標準出力と標準エラー出力を追記
コマンド << 終了文字 終了文字が現れるまで標準入力へ送る
コマンド &> ファイル 標準出力と標準エラー出力を同じファイルに書き込む
コマンド > /dev/null 2>&1 表示をしない。(表示をゴミ箱へ)

https://eng-entrance.com/linux-redirectより引用

 

参考

https://qiita.com/ritukiii/items/b3d91e97b71ecd41d4ea

https://qiita.com/tsubasaogawa/items/9495ad6e903998c4d1ac

https://qiita.com/toshihirock/items/78286fccf07dbe6df38f

【mapping】BWAでマッピング・出力したファイルはsam形式ではない(場合がある)

【要約】

・ロングリードのマッピングbwa memではsam形式のファイルが出力される

・ショートリードのマッピングbwa alnでは"sai形式"のファイルが出力される

そのため、samファイルに書き換えるためにはbwa samseをする必要がある

 

以下詳細

【BWAを使い始めた理由】

・Bowtie2が遅すぎる

・Hisat2の爆速マッピングに慣れすぎてBowtie2のスピードは止まって見える

 

【BWAとは】

ロングリードを高速でマッピングするために開発されたツール

メモリの消費量が数GBで済む

もちろんショートリードにも対応している

 

【いざ実践】

いつもお世話になっているhttps://bi.biopapyrus.jp/様を参考にマッピングに挑戦

https://bi.biopapyrus.jp/rnaseq/mapping/bwa/

 

【インデックスの作成】

bwa index -p [index_file名] UCSC_hg38.fa

hg38のヒトゲノムでインデックスを作成

Mac book proなら30分ほどで終わる

 

マッピング:問題発生】

ショートリード(70 bp以下)なのでalnのオプションをつける

bwa aln -t 3 [index_file名] DRRXXXXX.fastq > DRRXXXXX.sam

 

出力されたファイルを確認すると…

head DRRXXXXX.sam 
?92?92?9\6s}\6s}??A???A?????\?U\?U?????????m??m??3A?3AA?XA?X??Q??Q?BR?BR?A?X?A?X?@?X?@?XA?XA?XA?XA?X??z???z??)?)N?1@?zT?ZzT?Z?R?_?R?_???]??]{T?Z~T?ZO_O_??v??v?w?]?w?]??]??]?w?]?w?]Fw$

明らかにバイナリ形式でsamファイルではない

(sam ファイルは人の読める形式のファイルであるhttps://bi.biopapyrus.jp/format/sam.html

 

Githubのbwa readmeを確認すると(https://github.com/lh3/bwa/blob/master/README.md)

イルミナの70 bp以下のシングルエンドリードをbwa memを使ってマッピングした場合、saiファイルとして出力される…だと…?(なんてこった…)

saiファイルはbwa samseを使ってsamに変換できるので

以下のコマンドで目的とするsamファイルを得ることができました。

bwa aln -t 3 [index_file名] DRRXXXXX.fastq > DRRXXXXX.sai
bwa samse [index_file名] DRRXXXXX.sai DRRXXXXX.fastq > DRRXXXXX.sam

※注意:各ファイル名間のスペースは”1つ”でなければならない

 

 【感想】

10Gb(約4000万リード)のマッピングをsamファイルにするまでの所要時間は

30分から1時間程度と十二分な速さを見せつけてくれました。BWAに感謝。

同じデータをbowtie2でマッピングしようとしたら20時間経っても終わりませんでした。(これはこれで何かおかしい? マウスのマッピングなら2,3時間でいつも終わるのに)

マッピングの精度とかについてはよくわからないですが素晴らしいMapperであることに間違いなさそうですので是非使ってみてください。

 

【教訓】

ツールを使う際は開発元の説明をちゃんと読むべし

 

2019年交流戦成績でのPCA

2019 交流戦の成績を元にPCA解析をしてみました。

使用したデータは以下のデータです。 

 データ元:https://baseball.yahoo.co.jp/npb/standings/26/

  runs runs allowed Homerun steal Batting average earned run average
Hawks 75 61 32 16 0.233 3.16
Buffaloes 73 64 8 21 0.257 3.42
Giants 85 66 23 15 0.257 3.34
Baystars 72 70 22 7 0.242 3.86
Lions 99 79 18 14 0.27 4.14
Eagles 73 71 13 5 0.25 3.81
Fighters 69 81 14 9 0.25 4.19
Dragons 78 79 7 7 0.265 4.38
Marines 87 93 23 12 0.268 4.84
Tigers 74 77 9 17 0.248 3.29
Swallows 81 100 20 6 0.236 5.08
Carp 59 84 13 11 0.216 3.85

 

 コマンドは以下の通りです。

data=read.csv("交流戦成績.csv", row.names = 1) #上記のデータをcsv形式で保存後、読み込み。

#PCA
name=rownames(data) 
rownames(data)<-NULL#都合によりrownameは一旦削除(削除しなくても良いがFigが見にくくなる。)

pcaobj=prcomp(data, scale=T) 

biplot(pcaobj)
PC1<- pcaobj$x[, 1]
PC2 <- pcaobj$x[, 2]

library(png)
a=0.3 #アイコンの大きさ調整
for (i in 1:12) {
  img <- readPNG(paste(name[i],"png",sep=".")) #各チームのアイコン画像をteam名.pngで作成、保存しておく。
  rasterImage(img, PC1[i]-a, PC2[i]-a,PC1[i]+a, PC2[i]+a)
}

f:id:SRY:20190626214515p:plain

やっている内容は「Rで主成分分析(https://www.casleyconsulting.co.jp/blog/engineer/119/))」のほぼパクリです。casley consulting様、お世話になります。

結果としては左下に寄っているチームが上位に来ている。つまり、チーム防御率(earned.run.average)が低く、チーム打率(Batting.average)がやや高いチームが強かったということになります(当たり前だ…)。

興味深いのは、盗塁数(steal)が順位に強く影響する点でしょうか。

 

反省点としては

1.見やすいようにチームアイコンを上から貼り付けてみたが、西武と広島のアイコンが数字の位置(本来のプロットされるべき位置)から随分ずれてしまいました…何故…?

2.biplotで出力する図の文字サイズの変え方が分からない…

改善方法をご存知の方がいらっしゃいましたらコメントいただけると助かります。

 

 

PDFファイル内の文字検索ができない(Mac)

ターミナルから以下のコマンドでファイルを削除するだけ。

rm /Users/(user)/Library/Containers/com.apple.Preview

削除が怖ければmvで移動しても可

 

参考

https://discussionsjapan.apple.com/thread/110211573

Rグラフのpng画像と画質

Rで作成したグラフはいつもPng形式で書き出して

PowerPointに貼り付けて使用していました。

プレゼンなどはこれで何の問題もなかったのですが、

学会用ポスターをPowerPoint上で作成すると…

不思議なことにRで作成したすべてのグラフの画質が異様に悪い…

もちろん図を拡大をした訳ではない(むしろ縮小した図ほど画質が悪い?)

 

調べてみるとベクタ形式での出力が印刷には良いらしいので

以下のコマンドを使用して再度作図をし直しました。

quartz(type="pdf", width=3.5, height=5, file=Name)

 

quartzMac用のコマンドらしいのでwindowswin.metafileを使用してください。

 

Pngの画質の悪さは以下のURLを参照してください。

https://rstudio-pubs-static.s3.amazonaws.com/3329_37cff1e3150d4002bb3dee7dc88e0bf3.html

 

複数ファイルの一括削除

ターミナルのコマンドは主にカレントディレクトリを参照するため、

サブディレクトリを含めたファイルの削除などは以下のコマンドが便利です。

 

find . -type f -name "*.txt"|xargs rm

findでtxtの拡張子を持つファイルを検索し、

見つけたファイルを引数としてrmでファイルを削除できます。

 

 

参考

 http://shikumiya.jp/techlife/archives/67 

 

 

追記2020 4 26

上記の方法だと空白などの特殊文字が入るとうまく動かないので

ヌル文字を切り出すと良いらしい

find . -name fileA -print0 | xargs -0 grep abc

 

https://teratail.com/questions/25558