先ほどのSecretを指定。http://<IPアドレス>/oauth/authorizeを指定。http://<IPアドレス>/oauth/tokenを指定。http://<IPアドレス>/api/v4/userを指定。"http://192.168.100.114/api/v4/user"GitLabのDockerコンテナを一旦停止させて、破棄します。gitlabmakefileを用意していれば、以下のコマンドで実行できます。rm続いて、Dockerコンテナを起動します。gitlab/gitlab-ce:latestmakefileを用意していれば、以下のコマンドで実行できます。start参考https://docs.gitlab.com/omnibus/docker/https://docs.gitlab.com/omnibus/gitlab-mattermost/GitLabのDockerコンテナを起動した後、http://<IPアドレス>:8001/にアクセスします(ここまでの例では、http://192.168.100.114:8001/)。Mattermostのログイン画面が表示されます。Sign-Onをクリックした後、以下の画面が表示されます。Authorizeボタンをクリックすると、Mattermostにログインできます。teamをクリックし、チーム名を入力して登録すると、Mattermostのメイン画面が表示されるはずです。基本的な準備は、以上で完了です。まとめGitLabのDockerイメージの準備・起動GitLabへのSSHキーの設定Mattermostの起動(GitLabアカウントによるSSO)今回、上記の3つについて、やり方をまとめてみました。他にも、重要なこととしてバックアップのとり方や、サーバ監視などがありますが、今回は割愛しました。以下に、公式のドキュメントのリンクを示すのにとどめておきます。LTS(デスクトップ版)にWindowsもしくはMacOSからアクセス方法(いわゆる、リモートデスクトップのやり方)の紹介です。ネットで調べてみるといろいろな情報が散見されており、個人的にわかりにくかったのでやり方をまとめてみました。LTS(デスクトップ版)へのリモート接続方法を示しました。ちなみに、サーバ版のUbuntuではやり方が異なるので注意してください。LTSではデフォルトで「Xorg」が採用されているので大丈夫です)。以下では、Ubnutu18.04における設定方法を示しました。設定から「共有」をオンにし、画面共有をアクティブにします。以下の詳細設定では、「このスクリーンの操作する接続を許可する」にチェック、アクセスオプションの「パスワードを要求する」にチェックをつけます。このとき、「新規接続の場合アクセス要求を必要とする」にチェックすると、Ubuntu側で接続要求を許可するかどうか毎回確認が入るので、パスワードの要求のほうが便利です。Windowsからリモート接続する場合、通信の暗号化処理をオフにしておく必要があります(通信内容が暗号化されなくなるので、セキュリティ的に問題があります。リモート接続はローカルネットワークなどの限定された範囲で行ったほうが良さそうです)。falseまた、すでにファイアウォールの設定がされているかどうか確認します。status状態:非アクティブとなっていれば、ファイアウォールが有効になっていないのでリモート接続できる状態にあります。ファイアウォールが有効になっている場合、以下のように5900番ポートを許可する設定を行います。Viewerを使って、Ubuntuにリモート接続します。Windowsにデフォルトで入っているリモートデスクトップアプリは通信プロトコルが異なるため利用できません。ここでは、TightVNCを使いました。オープンソースで開発されており、フリーで利用可能です。いくつかのViewerを使ってみたところ、TightVNCが最も軽快に動作する印象でした。以下のサイトからダウンロードします。Viewer」をクリックして起動します。Host」にローカルネットワーク上のIPアドレス(Ubnutu側)を入力し、ポート番号を「5900」に設定します。Ubuntu側のPCに割り当てられているIPアドレスがわからない場合は、以下のコマンドで調べることができます。ifconfig接続に問題がなければ、Ubnutu側で設定したパスワードを入力する画面が出てきます。パスワードを入力した後、OKボタンをクリックするとUbuntu側のPCにリモート接続できるはずです。次に、MacOSからUbuntu側へのリモート接続を試したいと思います。Finderの「移動」から「サーバへ接続」をクリックします。サーバアドレスにローカルネットワークのIPアドレス(Ubuntu側のもの)とポート番号を入力します。この時、「+」ボタンをクリックし、設定を保存しておくと次回以降の接続が簡単になります。接続に問題がなければ、Ubuntu側で設定したパスワードを入力する画面が出てきます。パスワードを入力した後、OKボタンをクリックするとUbuntu側のPCにリモート接続できるはずです。LTSをインストールしたらとりあえずやっておきたいことをまとめました。アップデートインターネットに接続していれば、自動でアップデートがかかるので更新しておく。続いて、以下のコマンドでアップデートをかける。make日本語名のディレクトリを英語表記に変更するフォルダ名が日本語なのは使いにくいので、以下で一括で英語表記に設定。Names」をクリックしディレクトリ名を変更する。xdg-user-dirs-gtk-update変更されると、以下のようになる。自力でディレクトリ名を変更してしまった場合は、以下の方法で新しいディレクトリ名とデスクトップやドキュメントなどのリンクを対応付けする。user-dirs.dirsVSCodeで編集。Biocondaきっかけ近年では、BiocondaのようなBiology関連ソフトウェアに対するパッケージマネージャが登場し、NGS関連のソフトウェアのインストールがグッと簡単になりました(Biocondaが登場する前は、いちいちソースコードからコンパイルする必要があったり、各ソフトウェア固有のインストール方法を理解する必要があったり、とにかく手間がかかっていました...。NGS関連のソフトは依存関係が複雑で本当にやっかい)。いろんな人のNGS関連のブログを見ていると、環境によってはBiocondaでうまくインストールできないという事例もあるようです(Biocondaレシピで想定されていなかったパッケージへの依存によるもの?)。確かに、Biocondaは非常に便利なんですが、他の環境でも同じ解析環境を構築しようとすると、再現よく環境を構築できないケースがあることがわかってきました。そこで、ソフトウェアごとに仮想環境を構築し、各ソフトウェアの動作が保証された環境を色々な解析に使いまわすことで、上記の問題を解決しようと考えました。そこで、Dockerの出番です。Dockerはコンテナ型仮想化技術の1つであり、ホストOS上で単一のプロセスとして起動します。VirtualBoxなどのホスト型仮想化技術と比較して、軽量であるとされています。(FastQCを実行して見る)という内容になります。Dockerをベースにした解析パイプラインの活用事例パッと目についた事例をあげてみました。他にもたくさんあると思います。Instituteで利用されているゲノム解析用のパイプラインhttps://hub.docker.com/r/broadinstitute/genomes-in-the-cloud/BioContainersバイオインフォマティクス関連のDockerイメージファイルをまとめたものhttps://biocontainers.pro/ベースとなるDockerイメージの選択NGSのデータ解析をする上では、必要最小限のLinuxディストリビューションのDockerイメージを使用した方がいいと思います。1つはイメージサイズが小さいほど、Dockerイメージの起動や破棄、ダウンロードなどの取り回しの面で有利だから。1つは、軽量コンテナの方が不要なパッケージが少なく、セキュリティ上、潜在的な攻撃を受けにくいからです。ベースイメージを選定する上で、OSにインストールマネージャーがついているかどうかや、ITベンダーなどにより定期的にメンテナンスされているかどうかもポイントになります。以下では、主要なLinuxディストリビューションについて簡単に比較をして見たいと思います。Dockerイメージのサイズ以下が主要なLinuxディストリビューションのDockerイメージのサイズになります。MB上記のデータは、2018-03-13時点のデータです。前までは、Debianが軽量なDockerイメージだったので、Debian一択なのかと思っていましたが、Ubuntuも直近ではかなりスリム化を果たしていますね(ちなみに、Anacondaやその他NGS関連のDockerイメージはDebianをベースに作られたものが多い気がします)。脆弱性レポート各Dockerイメージのレポジトリのtagタブから、各バージョンの脆弱性レポートを確認することができます。スキャンされた各イメージをクリックすると、詳細を見ることができます。以下では、各LinuxディストリビューションのDockerイメージの脆弱性レポートを見ていくことにします。7.4.1708脆弱性レポートまとめ上記で示した脆弱性レポートの結果をまとめて見ました。いくつのコンポーネントが脆弱性を抱えているかカウントした表が以下の通りになります。16上記のデータは、2018-03-13時点のデータです。Ubuntuが脆弱性が0なのが際立っている気がします(本当かなって結果になりました)。現状では、Debian-slimかUbuntuを選択するのが良いのかなと思いました。Dockerのインストール自身のパソコンにDockerをインストールします。Edition)をダウンロードできます。https://www.docker.com/community-edition#/downloadMacOSXにDockerをインストールして使う場合は以上でインストール完了です。(WSL)を導入して、BashシェルからDockerを扱えるようにしたいと思います。Proであることが必須です。storeからWSLをダウンロード・インストールできるようになったので、ストアからインストールしましょう。今回はUbuntuを導入しました。Linuxにチェックをつけます。DockerをWSLにインストールする以下のUbuntuへのDockerのインストール方法は、Dockerの公式ドキュメントを参考にしました。詳しくは、そちらを参照のこと。shellを起動し、まずaptパッケージをアップグレードしておきます。update次のDockerを動かすために必要な各種パッケージをインストールします。software-properties-commonDockerの公式のGPGキーを加え、キー情報の確認を行っています。2017-02-22Dockerをインストールします。Windowsのデーモンに接続するための設定を行います。今の状態では、あくまでホストOS側(Windows10)とWSL側で別々にDockerをインストールしただけなので、WSL側から、ホストOS側のDockerのデーモンプロセスを操作できるのように連携させる必要があります。以下のように、WSL側のDockerクライアントからホストOS側のデーモンを見れるように、環境変数DOCKER_HOSTを設定します。TLSにチェックを付けます。これで、WSL側からホストOS側のDockerのデーモンを操作できるようになりました。WindowsをWSLから使う時のVolumeの扱い方https://qiita.com/gentaro/items/7dec88e663f59b472de6VSCodeの総合ターミナルでWSLを使うVSCodeでは、エディタ内でターミナルを開くことができるので、こちらの標準のターミナルをWSLに変更しておくと便利です。設定画面から、terminal.integrated.shell.windowsで検索します。"C:\\Windows\\System32\\bash.exe"のようにWSLのBash.exeのパスを指定します。OSのDockerイメージをベースイメージにして、その上にNGS解析のソフトウェアをインストールしたDockerイメージを作成します。OSのDebina9-slimをベースイメージにして、BiocondaをインストールしたDockerイメージを作成します。以下のDockerfileは、condaの公式Dockerfileを参考しました。https://hub.docker.com/r/conda/miniconda2/~/dockerfile/&&で処理を連続して行っているのは、レイヤーを減らすためです。中間ファイルを削除することでDockerのイメージファイルのサイズを小さくしています。/opt/conda/bin:$PATH次に、DockerfileからDockerイメージを作成します。FastQCをインストールしたDockerイメージを作成する先程作ったDockerイメージをベースにして、FastQCのインストールしたイメージファイルを作成します。"/run_fastqc_local.py"]Pythonのコードをエントリポイントに設定します。以下が、そのソースコードになります。main()次に、DockerfileからDockerイメージを作成します。Pythonのコードも同じディレクトリに置いておきます。.以下のコマンドで作成したDockerイメージをチェックできます。適当なFASTQファイルを持っていない場合、以下の記事を参考にしてテストに使うFASTQファイルを用意してください。Dockerコンテナを起動するFASTQ_FILEにFASTQファイル、FASTQファイルが置いてあるLOCAL_WORKING_DIRに作業ディレクトリを指定します。DOCKER_IMAGEに先ほど作成したDockerイメージを、DOCKER_WORKING_DIRにDockerコンテナ内の適当な作業ディレクトリを指定します。${DOCKER_WORKING_DIR}ちなみに、DockerでWSL環境からホストOS(Windows10)のフォルダを見るとき、Cドライブは/mnt/cではなく、/cです。Bashシェルからアクセスするときは、/mnt/c(WSLにマウントされているCドライブを見る形)なのでパスの違いに注意が必要です。Windowsだと、これで詰まりました...。コンテナでデータを管理するhttp://docs.docker.jp/engine/userguide/dockervolumes.html上記のシェルスクリプト(もしくは以下で説明するmakeコマンド)を実行することで、FastQCが実行されます。ホストOSのディレクトリを、Docker上のディレクトリに紐づけておくこと(ボリュームのマウント)で、以下のようにDockerコンテナが破棄されたあとでも、データを永続化させることができます。Dockerコマンドをまとめたmakefileの作成Dockerコマンドはイメージファイルの作成やコンテナ起動時など、繰り返し使用します。startなどを用意することで、コマンド操作が簡単になります。Windows10やWSLには、makeコマンドがインストールされていないため、あらかじめインストールしておきます。Windows10でmakeファイルを実行するWSLを使わない場合のmakeコマンドのインストール方法を示します。Windows10にはコマンドプロンプトからmakeコマンドを使えないので、まずmakeコマンドをインストールします。makeコマンドをコマンドプロンプトに導入する(参考)以下のURLから、makeをダウンロードします。(x86)\GnuWin32\binにmake.exeが保存されているので、パスを通します。WSL環境にmakeコマンドを導入するWSLのコンソールから、以下のコマンドを実行するだけです。$(NAME):latestつまづいたポイントmakefileの作成インデントはスペースではなく、タブにしないとエラーになる。Codeの場合、makefileと認識されたファイルでは、インデントをタブにするように設定されている。ファイル名がMakefileだと下記の設定が適応されない。makefileと小文字のmにする必要がある。simulator)を用いて、テスト用のFASTQファイルを作成します。Biocondaをインストールしていることを前提にしています。ARTをインストールします。artARTが正しくインストールされたか確認します。--helpRefseqのGTFファイルをダウンロードARTを使ってテスト用のFASTQファイルを作るのですが、今回はRNA-seqのデータを作ろうと思います。そこで、元となる配列を用意したいと思います。TranscriptomeのデータをGTFファイルと取得し、それをFASTQのファイルに変換したいと思います。GencodeのGTFファイルでもいいですが、ここでは必要なTranscriptomeデータが含まれておりコンパクトなRefseqのデータを使います。illuminaのiGenomeサイトから、hg38のデータを丸ごとダウンロードします。この中に、RefSeqのGTFファイルも含まれています。ダウンロードしたら、解凍します。Home_sapiens_UCSC_hg38.tar.gz解凍が終わったら、Homo_sapiensというディレクトリができるはずです。Homo_sapiens/UCSC/hg38/Annotation/Archives/archive-2015-08-14-08-18-15/Genes/にあるgenes.gtfというファイルがRefSeqのGTFファイルになります(ちょっと古いデータですが、実際の解析に用いるわけではないので、良しとしましょう)。これだけ適当なディレクトリに移動もしくはコピーしておき、それ以外のファイルは削除します。このままだと、何のファイルかわからないのでリネームしておきます。以下のスクリプトを使って、GTFファイルをBEDファイルに変換する。transcriptsをできるだけ抽出するようにします。ファイルへ変換するために、Bedtoolsを使います。Bioconda経由でBedtoolsをインストールします。bedtoolsBEDファイルをFASTAファイルに変換します。ここで、先ほどダウンロードしたhg38.faファイルを使います。BEDファイルのname列の値を各配列の名称とする。(Strandness)を考慮する(Transcriptomeなのでもちろん考慮します)。(12列のデータがあるBEDふぁいる)がInputである場合に指定。Referenceになる配列(ゲノム配列)のFASTAファイルを指定。TranscriptomeのBEDファイルを指定。このコマンドの実行には、FASTAファイルのインデックスファイルが必要になりますが、ファイルがない場合、自動的に生成してくれるので問題ないです。generating...生成されたTranscriptomeのFATSAファイルは、標準出力で出力されます。single-end)を生成したいと思います。ここでは、HiSeq2000のデータを作ります。fasta形式の入力ファイルの指定。(拡張子はつけなくて良い)。シーケンサーの種類を選択。リードカバレージの指定。Paired-endのデータとして出力(指定しない場合、Single-endのデータとして出力)。フラグメントの平均サイズの指定(Paired-endのときのみ)。フラグメントのサイズの標準偏差の指定(Paired-endのときのみ)。SAMファイルを出力。(ALN)を出力しない。別にリード長は、指定された長さよりも短くても大丈夫です。ファイルサイズを小さくしたい場合は、以下のように特定の行を抽出したファイルを作成します。UIテスト自動化はじめにSeleniumとは、Webアプリケーションの画面操作を自動化するためのツールです。Webアプリケーション開発のUIテスト時に利用するものです。キー入力などの操作を自動化できることから、Webスクレイピングのツールとして活用される例もあるようです。2.0ライセンスで公開されているオープンソースのツールです。https://www.seleniumhq.org/about/license.jspSeleniumの内部で使われているWebDriverは、Webブラウザを外部から遠隔操作するためのインターフェースであり、W3Cによって標準化されています(厳密には、標準化された内容と乖離する部分あり?)。RCと呼ばれる古い実装が残っていましたが、2016年に公開されたSelenium3では、完全にWebDriverの実装に移行しました。RCでの操作方法が記載されており、これは現在では動作しない方法になるので注意が必要です。本来はUIテスト用のツールですが、今回は研究室時代にめんどくさいと思っていた作業を自動化してみました。trackをアップロードする作業です。繰り返し同じことを繰り返す作業に対して、こういった自動化の方法は役に立ちますね。32bit)Seleniumの導入Seleniumを動かすのに必要なものは以下の通りです。Bindings各種ブラウザのWebDriver今回はJavaでの例を示したいと思いますが、javaであれば、MavenやGradleを使って導入する方法もあります。今回はJARファイルをダウンロードして1からプロジェクトを作っていきます。Client)を用意しています。Clientのファイルをダウンロードします。selenium-java-3.xx.xx.zipというファイルをダウンロードできるはずです。https://www.seleniumhq.org/download/各種ブラウザのWebDriver続いて、各種ブラウザのWebDriverをダウンロードします。Chrome、SafariのWebDriverをそれぞれダウンロードすることにします(自身のパソコンにそれぞれのブラウザがすでにインストール済みでであることを前提とします)。余談ですが、WebDriverはSeleniumを開発しているグループが作成しているわけではなく、Webブラウザの開発元であるGoogleやMozilla、Apple、Microsoftなどがそれぞれ開発をしています。そのため、基本的に最新バージョンのWebブラウザに対応するWebDriverを、これらのITベンダーが提供してくれる状態にあります。いった点も、Seleniumを使うメリットですね。(Selenium3.5以降でのみ動作)以下からダウンロードします。https://github.com/mozilla/geckodriver/releases自身のパソコンのOSに合ったWebDriverをダウンロードしてきます。以下のコマンドでファイルを解凍します。geckodriver-v0.19.1-macos.tar.gzgeckodriverという名前のWebDriverの実行ファイルが解凍されます。Chrome)以下からダウンロードします。Chromeのバージョンに気をつけてください。最新のものだと、対応しているバージョンはv62-64に限定されます(もちろん、以前のバージョンのWebDriverについてもダウンロード可能です)。Chromeのバージョンを確認し、古いバージョンであれば、そのバージョンをサポートしているWebDriverをダウンロードしてください。自身のパソコンのOSに合ったWebDriverをダウンロードしてきます。以下のコマンドでファイルを解凍します。chromedriver_mac64.zipchromedriverという名前のWebDriverの実行ファイルが解凍されます。OSX内にすでにインストール済みです。/usr/bin/safaridriverの場所に存在します。Safariの設定を変更する必要があります。Safariの環境設定を開きます。次に、「メニューバーに'開発'メニューを表示」にチェックをつけます。すると、メニューバーに「開発」が追加されるので、そこから「リモートオートメーションを許可」をクリックします。これで、ブラウザ側の設定は完了です。リモートオートメーションを許可していない場合、Javaのテストコードを実行すると、以下のようなエラーが出力されます。このエラーが出た場合は、上記の設定ができてないので、設定を変更してください。Edge以下からダウンロードします。https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/自身のパソコンのOSのビルドに合ったWebDriverをダウンロードしてきます。11設定が複雑なので、必要でない限り使わないほうが良いと思います。こちらに詳しい使用方法が記載されているので参照してください。保護モードの設定が、「インターネット」「イントラネット」「信頼済みサイト」「制限付きサイト」の4つで統一されていることがかなり重要です(この設定が揃っていないとWebDriverが動作しません)。seleniumでinternet-explorer11を動かす方法http://bitwave.showcase-tv.com/seleniumでinternet-explorer11を動かす方法/トラブルシューティング(一部)画面は拡大せずに、100%でないと動作しません。以下のエラーが出た場合は、拡大率を100%にしましょう。100%Seleniumを動かしてみる以下では、Eclipseがインストール済みであることを前提として説明を行います。One)をインストールすることをお勧めします。プロジェクトファイルの作成Seleniumを動かすためのプロジェクトファイルを作成します。[Javaプロジェクト]をクリックします。適当なプロジェクト名をつけて、「次へ」をクリックします。Clientを解凍し、libsフォルダのjarとclient-combined-3.10.0.jarとclient-combined-3.10.0-sources.jarをそれぞれプロジェクトファイルに取り込みます。「ライブラリ」タブを選択し、「外部JARの追加」をクリックします。ClientのJARファイル一式を追加します。最後に、「完了」ボタンをクリックし、プロジェクトを生成します。ClientのJARファイルが参照されて取り込まれていることが確認できると思います。次に、WebDriverを保存するためのフォルダを用意します。[フォルダー]をクリックします。フォルダー名を「exe」として、「完了」ボタンをクリックします。作成した「exe」フォルダ内に、先ほどダウンロードしたWebDriverをドラック&ドロップでインポートします。(ここでは、chromedriver.exeをインポートした例を示した。OSXの場合、実行権限を付与しておきます。geckodriver続いて、Seleniumを実行するためのテストクラスを作成していきます。[Junitテスト・ケース]をクリックします。適当なパッケージ名とクラス名を記入し、setUp()とtearDown()にチェックを付けます。JUnit4がビルドパスに入っていない場合、追加するかどうか聞かれるので、「OK」をクリックしてビルドパスに加えます。Browserを操作するコードを書いてみるページオブジェクトパターン下図にページオブジェクトパターンと呼ばれる、一般的なクラスの設計方法を示しました。この方法を取り入れることで、メニューやボタン、検索入力欄など、Webページへの操作を共通クラスにまとめることでメンテナンス性の高いコードを書くことができます。ロケータの調べ方selenium用のコードを書くために、まずロケータ(ボタンやメニューなどを操作するための目印)を調べる必要があります。FireFoxを使うと、要素(下の例だと"Advanced")を右クリックして「要素を調査」をクリックすることでロケータを調べることができます。どのタグが使われているかなどの情報を調べることができます(以下の図だと、INPUTタグのID要素が"Submit"であることがわかります。これを目印にしてSeleniumでWebブラウザを操作していきます)。コーディング以下のような構成で、プログラムを用意しました。pageパッケージにページオブジェクトクラスを、testパッケージにJUnitのテストケースクラスを配置するようにしました。WebDriverの呼び出しSystem.setProperty()の2番目の引数は、ダウンロードしたWebDriverを指定してください。OSによって、拡張子が異なるので注意する必要があります。以下でいくつか例を示しました。InternetExplorerDriver();ソースコード例ソースコードの内容について言及しません。「Selenium実践入門」と言う本と下記のWebサイトを参考にしました。}}スクリーンショットの取り方について(トラブルシューティング)余談ですが、Java8の場合、FileUtils(Java7以前)ではなく、FileHandler(Java8以降)なので間違いがないように。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。