pythonってすごいね

RNAseqを用いた遺伝子発現量解析、機械学習を用いた回帰、分類などの解析を中心に記事を書いていきたいです!

博士課程に向いているなと思った人の特徴を挙げてみた

主体的に物事を考えられる

一般的にどのような事をする際も主体性は大切です。特に、博士課程に行く場合、指導教員の方はずっと側にいる事は少ないので、自分で考え、自分で行動する習慣が必要となってきます。

金銭的面に不安がない、もしくは余裕がある

博士まで行くとすれば、修士課程2年間、博士課程3年間あります。授業料免除、奨学金の返還免除があるとはいえ、住居費、食費などそれなりの金額となってきます。ある程度の金銭的な余裕がないと、精神的な面で不安になります。

一人の作業が苦にならない

大学に入ると、同年代の人がたくさんいます。修士課程の段階でも比較的まわりに人はいます。博士に入ると極端に人が減ります。また、実験などを行う場合、一人になることも増えてきます。

一人でいる時間が長いと落ち込みやすい人、周囲の人と集団で物事を行うことが好きな人にとっては、博士課程は辛い時があります。

マイペース

人のペースに乱されない事はとても大事です。特に生物系の研究だと1年に1本のペースで論文を出せば、とても早い方だと言われています。長期戦になる場合も多く、自分のペースでコツコツと結果を積み上げる能力は大切になってきます。

働く義務感が強すぎない人

博士課程を出るときには、27、28才くらいにはなっています。小、中、高の同級生が既に働いている場合、働く義務感が強いと”自分は何をやっているのだろうか?”などと思ってしまう場合があります。

”働かなければいけない”という思いが強い人にとって、博士課程は精神的に辛くなるかもしれません。


まとめ! 上記の特徴に当てはまらなくても、充実した博士課程を送る事はできます。
環境、自分の能力の両方が大事になってきます。
博士に行くか迷っている方、博士に行くと決めた方に少しでも役立てれば幸いです。

博士の学位取得に必要だと思った心得

博士課程の学位を取得する上で、大事だと思った習慣を箇条書きしました。(とても当たり前のことが多いです)


全ての意見を聞かない

他人の意見を聞くことは、とても重要ですが、全ての意見を聞く必要はないと思います。特に、博士学生だと教授などの指導教員とディスカッションをする機会が多いと思います。言われたことをきちんとこなす事は大事ですが、全ての意見を聞いていては1日40時間くらいないと達成できません。。。自分にとって重要なことを取捨選択しましょう。


ある程度は意見を聞く

先ほどと逆ですが、ある程度は意見を参考にしないと、卒業が遠くなります。先生方は研究者の先輩なので、対応できる範囲で意見を反映することは必要だと思います。


仲間を見つける

先輩、後輩、同期、誰でも良いので仲間を見つけましょう。博士課程の学生の場合、身近に同年代が少ないことがよくあります。一人でいると、考えが極端になりすぎる場合があるので(大学院をやめるなど)、学会や大学内で仲間を見つけましょう。


部屋にずっと閉じこもっていない

あたり前ですが、大学院に行かなくなると卒業の可能性は低くなります。修士課程、博士課程と5年間も大学院に通っていると行きたくない日も当然出てきます。休む日が続くと、行きづらくなってしまうので、なるべく行くようにしましょう。


自分の意見を持つ

正直、言われたことをやっていれば、研究はある程度までは進んで行きます。ですが5年という歳月を考えた際に、先生方は細部まで把握できないことも多いです。始めはできなくて当然なので、博士の学位を取得するまでには、自分の研究を自分自身で向上させる能力を磨きましょう!


最後に! 修士、博士という5年間の考えた際、モチベーション、やる気がなくなる時があります。一度立ち止まることが必要なこともあります。どうにもならなくなったら、自分ひとりで考えこまず、誰かに相談しましょう。


Trimomaticを用いたアダプター配列の除去 (RNAseq)

基本文

シングルエンド (SE)

java -jar <trimmomatic.jarのパス> SE -threads <スレッド数> -phred33 or -phred64 -trimlog <logの保存先> <inputのパス> <outputのパス> <option> 

現在は、だいたい-phred33だと思われる

e.g. 
/
java -jar trimmomatic-0.39.jar SE -threads 4 -phred33 -trimlog log.txt input.fa output.fa
/

ペアエンド (PE)

java -jar <trimmomatic.jarのパス> PE -threads <スレッド数> -phred33 or -phred64 -trimlog <logの保存先> <input 1のパス> <input 2のパス> <ペアのリード output 1のパス> <非ペアのリード output 1のパス> <ペアのリード output 2のパス> <非ペアの output 2のパス> <option>

e.g.
/
java -jar trimmomatic-0.39.jar PE -threads 4 -phred33 -trimlog log.txt  input_1.fa input_2.fa paired_output_1.fa unpaired_output_1.fa paired_output_2.fa unpaired_output_2.fa <option>
/


詳細な設定

アダプター配列の除去

ILLUMINACLIP:<fast形式のファイル.fa>:<seed mismatch>:<palindrome clip threshold>:<simple clip threshold>

e.g.
ILLUMINACLIP:adapter_sequence.fa:2:30:10

ファスタ形式のファイルの例

>adapter_sequence
AAAAAAAAAAAAGGGGGGGGGGGGG

Forward、Reverseかを指定したい場合、

/1を末尾につけることで、forwardのアダプター配列から取り除かれる
/2を末尾につけることで、reverceのアダプター配列から取り除かれる

>forward/1
CCCCCCCCAAAAATT

>forward/2
TTTTTTTGGGGGAAAA

>reverse/1
AAAGAATTGGGAAAA

>reverse/2
AGGGAATTGGGAAAA

ペアエンドで配列を指定する際は、Prefixを共通にする。(/1、/2以外の名前を同一にしておく)

seed mismatch

ミスマッチをいくつまで許容するか?

palindrome clip threshold

何塩基(?)ペアエンドのリード間でアダプター配列が一致しているか

simple clip threshold

何塩基アダプター配列が一致しているか?

リードのクオリティに応じたフィルタリング

SLIDINGWINDOW:<検索ウィンドウのサイズ>:<クオリティ>

指定したウィンドウサイズで検索を行い、指定したクオリティ以下の領域が存在した場合、それ以降を解析から除外する。

e.g.
SLIDINGWINDOW:4:15

LEADING:<リードのクオリティ>

5'末端から開始し、指定したクオリティを下回った場合、対象塩基を除去、次の塩基のクオリティを算出指定く。

TRAILING:<リードのクオリティ>

3'末端から開始し、指定したクオリティを下回った場合、対象塩基を除去、次の塩基のクオリティを算出指定く。

e.g.
LEADING:3
TRAILING:3

塩基長の指定

CROP:<塩基長>

リードの頭から、指定した塩基長を取得する。

HEADCROP:<塩基長>

リードの頭から指定の塩基を切り落とす

MINLEN:<塩基長>

最小長の設定

e.g.
CROP:50
HEADCROP:10
MINLEN:36

参考

Trimmomatic Manual: V0.32

USADELLAB.org

Tophat2を用いたマッピング (RNAseq)

インデックスの作成

Tophat2は内部的にBowtieを使用しているため、Bowtieを用いてゲノムのインデックスを作ります。

bowtie2-build -f [対象とするゲノムのファスタファイル] [output]
bowtie2-build -f TAIR10_genome.fasta TAIR10 #example

注意:後述する-Gを使用する場合は、クロマチン名が一致するようにする

基本文

tophat2 [option] [index] input.fastq

オプションの設定

特によく使いそうなオプションを抜粋しています。

option説明
-N許容するミスマッチ数 デフォルトは2
-o出力先の指定
-i最小のイントロン長 デフォルトは70
-I最大のイントロン長 500000
-pスレッド数 デフォルトは1
-g許容するマルチヒット
-G/--GTFGTF 2.2、GFF3を基にマッピングする
-j/--raw-juncsジャンクション情報を基にマッピングを行う
--no-novel-juncs既存のスプライシング情報のみを使用する

-G/--GTF

TopHat will first extract the transcript sequences and use Bowtie to align reads to this virtual transcriptome first. Only the reads that do not fully map to the transcriptome will then be mapped on the genome. The reads that did map on the transcriptome will be converted to genomic mappings (spliced as needed) and merged with the novel mappings and junctions in the final tophat output

最初のマッピングは、指定したファイルを基にマッピングが行われ、マップされたリードは、その後ゲノムを基にマッピングが行われる(新規のスプライシングを含む)。

TopHat Manual より引用

GTF、GFFファイルとゲノム情報のchromosomeとcontig namesが合わないとエラーが出るため注意

エラーがでた場合、bowtie-inspect --names your_indexを用いてテェックを行う

参考

TopHat Manual

cutadaptを用いたアダプター配列の除去(RNAseq)

cutadapt結構便利なんですが、ホームページの説明がとても長いので、簡略化し、まとめてみました。


  1. cutadaptとは?
  2. シンプルな設定
  3. 詳細な設定 4.参考

cutadaptとは?

RNAseqなど次世代シーケンサーを用いる際に、取得したリードのクオリティに応じてフィルタリングを行います。

cutadaptはフィルタリングに用いられ、pythonのpipでインストールすることができます。

シンプルな設定

cutadaptの基本形は以下の通りです。

(シングルエンド; SE) 
cutadapt [option] input.fastq


(ペアエンド; PE) 
cutadapt [option] input_1.fastq input_2.fastq

(SE)
3' 末端側のアダプター配列を取り除きたい場合は-aを指定します。
5' 末端側は-gになります。
-o で出力先を指定することができます。

cutadapt -a adapter_sequence -o out_put_file input.fastq

(PE)
Read_1の3' 末端側のアダプター配列を取り除きたい場合は-a、5' 末端側は-gになります。
Read_2の3' 末端側のアダプター配列を取り除きたい場合は-A、5' 末端側は-Gになります。
-o でRead_1出力先を指定することができます。-p でRead_2出力先を指定することができます。

cutadapt -a adapter_sequence -A adapter_sequence -g adapter_sequence -G adapter_sequence -o out_put_file_read_1 -p out_put_file_read_2 Read_1.fastq Read_2.fastq

また、以下のように拡張子にgzをつけることで、圧縮形式で保存することも可能です。

cutadapt -a adapter_sequence -o output.fastq.gz input.fastq.gz

アダプター配列の除去法の細かな設定に関しては、以下の論文が参考になるかと思います。

Cutadapt Removes Adapter Sequences From High-Throughput Sequencing Reads

詳細な設定

細かな設定に関しては、特に重要そうな設定を抜粋していきます。

option説明
-eアダプター配列を取り除く際のエラー率 defalt 0.1 (10%)
-o最低、何塩基配列が重複しているかを指定する
-l5' 末端側から指定した長さを切り出す
-q指定したクオリティー以下のリードを除去する
-m指定した塩基長以下のリードを解析から除外する
--discard-untrimmedアダプターが存在しないリードを解析から除外

ペアエンドの場合は、--pair-filter=any、もしくは、-pair-filter=bothを用いて、両方、もしくは、片方かの指定ができます。

また、各アダプター配列ごとに、オプションを設定することも可能です!

参考

cutadapt.readthedocs.io

データフレームの条件分岐 (pandas)

pandasでは、if文のように、カラムの値に応じて任意の領域を選択、取り出す事ができます。


import pandas as pd #使うパッケージをimportする
from sklearn.datasets import load_iris
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names) #データフレームの作成
print(df)

単一の条件式

基本形は、df[df["カラムの名前"]=="条件"] です。

==には、>= 、<=、 !=に変えることができます。

”条件”には、文字列、数値を入れる事ができます。

table=table[table["sepal length (cm)"]==5] #sepal length (cm) が5のみ残す
print(df)

この他にも、以下のような条件式をしようすることもできます。

table=table[table["sepal length (cm)"]!=5] #sepal length (cm) が5以外のカラムを残す

table=table[table["sepal length (cm)"]>=5] #sepal length (cm) が5以上のカラムのみを残す

複数の条件式 (”かつ”、”または”)

条件Aかつ条件Bのデータフレームを選択する場合、

df[(df["カラム名"]==条件A)&(df["カラム名"]==条件B)]

書き方の手順

条件式を書く
[1] df["カラム名"]==条件A  df["カラム名"]==条件B

カッコで囲む
[2] (df["カラム名"]==条件A)&(df["カラム名"]==条件B)

df[]の中に条件式を入れる
[3] df[(df["カラム名"]==条件A)&(df["カラム名"]==条件B)]

df=df[(df["sepal length (cm)"]==5)&(df["petal length (cm)"]==1.4)] #sepal length (cm)が 5でかつ、petal length (cm)が1.4のみ残す
print(df)

条件A”または”条件Bのデータフレームを選択する場合、
&の代わりに”|”を使用する

df[(df["カラム名"]==条件A)|(df["カラム名"]==条件B)]

df=df[(df["sepal length (cm)"]==5)|(df["petal length (cm)"]==1.4)] #sepal length (cm)が 5または、petal length (cm)が1.4を残す
print(df)

条件式は少し複雑ですが、覚えておくととても便利なので、ぜひ使えるようにしましょう!

博士課程に進む前に知っておけば良かったこと(3つ)

私自身が博士課程に進む際、情報の少なさに苦労した事があったため、少しでも役立てればと思い、博士課程に進む前に知っておけば良かった事を簡単にまとめてみました。

そもそも博士課程とは?

一般的な4年生大学を卒業すると学士、その後2年間大学院で研究をすると修士、その後さらに3年間(4~5年の場合も)研究すると博士を取得できます。

研究は政治的な力が大きい場合がある

学会や研究の議論をすると、「政治的な〜〜」という言葉をよく聞きます。これは、どのような事を意味するかというと、純粋に研究に生じる問題以外の事を幅広く指していると解釈しています。

いかなる場合も公平に評価してくれると、学部生の頃は思っていましたが、そうじゃない場合もあります。

例えば、博士学生は学術振興会という、月に20万円ほどお給料がもらえる研究費の申請ができますが、正直、有名な研究室の学生さんは、もらえる確率が高い印象を持っています。これには、別な理由もあって有名な研究室ほど、高いレベルの研究をしていることも考えられます。

学会からもらえる賞などにおいても、純粋な研究力というよりも、指導している先生のコネクションという話を聞いたりもします。

このような話は、研究だけではなく、社会に出てもあります。研究の世界でも、研究の能力だけで、その人の評価が決まる訳ではない事を認識しておく事は必要だと思います。

バイオ系博士

一般的には、研究力を評価してもらえるはずなので、政治的な力もあるんだなーと覚えておく程度でいいと思います。

博士100人の村もあながち間違いじゃない

10年ほど前に、もし博士が100人いたらどうなるかー?というホラー映画のような動画がありました。詳しくは、以下の記事を参考にして下さい。

生物系博士の就職活動

ざっくり話すと、「博士が100人くらいいると、20人ぐらいは無職だったり、行方不明だよ」っという内容なのですが、博士に入る前の私は、恐怖でガクブルでした。

実際に博士課程に入って経験した事は、まず博士に進学予定だった人が、修士課程を修了する直前に数人いなくなりました。また、博士課程を終える年に、ふと同期を見渡すと進路が決まっていない方もちらほらいました。

バイオ系博士

決して、大部分の人が職につけないわけではありませんが、学部卒、修士卒と比べると、進路の不透明性は高いのかなと思います。

選ぶテーマで就職活動のやりやすさが全く違う

これは、選ぶテーマ≒身に着ける技術だからと思います。情報、工学系の人に就職の話を聞くと、とてつもなく早いです。ホント一瞬で終わっています。私は、バイオ系だったので比較的遅めでした。

バイオ系の中でも就職活動をしていると、化学や情報系の事をやっていたり、立体構造系の研究をやっていたりする方は、比較的早く決まっていました。純粋な生物学となると、人口も多く、倍率はとても高い印象を受けました。

バイオ系博士

決して、就職しやすいテーマを選べという事ではなく、その時の状況を把握していく事が重要だと感じています。

じゃあ、博士課程に行っていい事は?

ここまで、ネガティブな話ばかりしていましたが、最後に博士課程に行って良い事を少しだけ話したいと思います。

[1] 物事を考える思考量力が身に付く
やはり、学部卒、修士卒の方と比較すると、研究やデータの解釈に関する能力は一般的には高いのかなと感じています。

[2] 研究職に着く可能性が高まる
ポストドクターになったり、企業の研究職に着く可能性が高まります。特に、企業の研究職を考えた場合、学部卒、修士卒では、なかなか希望通りの部署に配属されないということもよく聞きます。

バイオ系博士

私自身も博士課程にいく事はとても悩んだので、コメント、質問などをいただければ、可能な限りお答えします。