Hands-on R Lecture for Makino Lab

岩嵜 航 (Watal M. Iwasaki)
東北大学 生命科学研究科 進化ゲノミクス分野
  1. Why do we use R?
  2. R basics
  3. Visualization with R
  4. Tidying and transforming data with R
  5. Statistical analysis with R
  6. File management with Git+GitHub
資料作成協力: 石川由希 (名古屋大学 理学研究科 脳回路構造学 講師)
2019-10-30 生物棟大会議室

Reproducible Research (再現可能な研究)

Programming!

Backup!

Source codes grow messy

Lots of unused codes, just in case…

library(tidyverse)

# diamonds %>%
#   select(carat, price) %>%
#   filter(carat > 1)
#
#
# ... long long old code worked in the past ...
#
#

result = diamonds %>%
  select(carat, cut, price) %>%
  filter(carat > 2) %>%
  group_by(cut) %>%
  summarize_all(mean) %>%
  print()

Directories grow messy

Lots of different versions. Which is the latest?

% ls
analysis.R
analysis2.R
analysis-20180129.R
analysis-20180129fix.R
analysis-kuma-edit.R
analysis-yoko-edit.R
analysis完全版.R
analysis最終.R
analysis最終2.R
analysis最終改.R
analysis決定版!.R
plot.R
plot2.R
plot最終.R
plot論文.R

Timestamp in filename is not enough

You found a bug. How can you find its origin, and fix all the copies?

Version control with Git + GitHub

  • Only the latest files are visible.
  • You can easily browse and rollback the version history.
 

Online Storages and Time Machine are useful


But they are not designed for version control or collaborative work.
  • 履歴の保持期間が限られている。 (e.g., <180 days on Dropbox)
  • オフラインだったりバッテリー駆動だったりすると保存漏れが起きる。
  • いつのバージョンに戻したらいいのか、日時以外の手掛かりが無い。
  • ファイル変更の競合・衝突に対処しにくい。

Git and GitHub

  • いつでも好きなところに戻れる安心感
    • 履歴を残すタイミングは任意 = 手動。
    • バージョン(リビジョン)ごとにメッセージを残せる。
    • 差分を簡単に見られる。
  • 複数マシンや複数人での並列作業にも使える
    • オフラインでも作業できる。
    • ブランチを作ることで競合・衝突の影響を抑えられる。
    • もし競合・衝突が起きてもうまく対処する機能がある。
    • 課題を管理する機能もある。
  • 読み方はギット、ギットハブ。(ちなみに画像のGIFはジフ)

e.g., https://github.com/tidyverse/stringr/commits/master

Git and GitHub

Git
分散型バージョン管理システムとして最も広く使われるオープンソース・ソフトウェア。
手元のコンピュータ上でこれを操作して、変更履歴を記録・閲覧したり送受信したりする。
GitHub
Gitをより便利に使うためのオンラインサービス。
それを運営する会社の名前でもある。
多人数でプロジェクトを共有するプラットフォームとしても有用。

Alternative tools and services

  • Version Control System (VCS)
  • Hosting Service
    • GitHub: 公開リポジトリは無料。教職員・学生なら非公開も無料。
    • Bitbucket: 非公開リポジトリも無料。
    • GitLab: 非公開リポジトリも無料。ローカル版もあり。
    • Gitea: ローカル版のみ。
    • その他 SourceForge, Google Code など。

VCSは基本的にGit一択。
ホスティングサービスは、使い方や予算などに応じて選択。

Git basics: Export local changes

📁 working directory (working tree)
手元のファイルの変更はまだリポジトリに登録されていない
git add
staging area (index)
次のコミットに含めるファイルをマークする段階
git commit
local repository
変更履歴が .git/ 内に記録されている
git push
remote repository
GitHubなど別マシンのリポジトリに反映

Git basics: Import changes

remote repository
git fetch
local repository
変更が .git/ に取り込まれたが、見えてるファイルには反映されてない
git checkout or git merge
📁 working directory
手元のファイルが最新版に同期されている

GitHub functions

GitHub functions

Let’s start using!