Windows上でbedtoolsを使用する / Use bedtools in Windows

# 注意事項 / Precautions: 
・2022年4月時点の情報です。 This information is written in April, 2022.
・同様の処理を行う他の方法もあるかと思います。ご意見やご質問等をコメントしていただけると幸いです。 Other ways may be able to conduct the same calculations. Please send your opinions and comments.
・投稿者はこの分野に対して専門外であり、全般的に知識が不足しています。用語の誤用や不自然な言い回しはご容赦ください。 I don’t have sufficient knowledge about this field because I don’t major in these. Please forgive me for mistake of words.
・本記事の情報を参考にしたインストールや解析は自己責任でお願い致します。 Please conduct installation or analyses at your own risk. 

# 環境 / Environments:
Windows 10,11
Cygwin version 3.3.4
にて動作することを確認しています。 
I confirmed that bedtools operated in these environments.

# 1.	本記事の背景 Background
bedtoolsとは、Bioinformaticsの分野で使用されるBED形式のファイルを扱うツールです。様々なオプションに応じて必要な処理を行うことができ、広く用いられています。今回研究で使用することになりましたが、デフォルトではCygwin上におけるコンパイルでエラーが発生します。その解決をまとめた日本語/英語のサイトが見つからなかったため、私の検討を共有させていただきます。
Bedtools is a tool which treats BED files in the feild of Bioinformatics. It can various calculations based on options. I was going to use bedtools for my research, however there were some errors in default settings. I made this article because there was no site which shows the resolution written by Japanese or English.

# 2.	公式サイトの案内 Guidance of official sites
公式サイト (https://bedtools.readthedocs.io/en/latest/) の説明によると、UNIXベースのコマンドラインからの処理を前提としており、通常ローカルなWindows環境では使用することができません。今回は、UNIXライクな仮想環境を提供するCygwinを用いてこちらのツールを使用することを目標とします。
According to an official site description, bedtools operates in UNIX-based environments. So we cannot use it in local Windows. The goal of this article is to use bedtools in Cygwin which gives virtual environments like UNIX. 

# 3.	具体的な方法 Specific ways
以下が実際の方法となります。 How to install are following.
①	Cygwinのインストール Installation of Cygwin
公式サイト (https://www.cygwin.com/install.html) からCygwinをインストールします。
Please install Cygwin from official site (https://www.cygwin.com/install.html).

②	必要なCygwinパッケージのインストール Installation of required packages 
デフォルトのインストールでも複数のパッケージがインストールされます。今回の目標達成に必要なパッケージを追加でインストールします。set up からGUIで行うことも可能ですが、apt-cyg等を利用したコマンドラインからの実行が便利です。以下または類似のパッケージをインストールしてください。
Default setting will install some packages. We will install additional packages in this article. Although we can install them by set up GUI application, it is useful to use a command of apt-cyg. Please install following or similar packages. 
・	wget
・	libbz2-devel

③	bedtoolsのインストール Installation of bedtools
公式サイトの案内通り以下のコマンドを実行します。 
Please Conduct some commands by following to official guidance. 
``` sh:
$ wget https://github.com/arq5x/bedtools2/releases/download/v2.29.1/bedtools-2.29.1.tar.gz
$ tar -zxvf bedtools-2.29.1.tar.gz
$ cd bedtools2
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118262/3941cc39-289a-6163-c72f-77d34674b12c.png)

④	必要なファイルの追加とヘッダファイルの編集 Editing of header files
・外部サイト (http://asprintf.insanecoding.org/ )からzipファイルをダウンロードし、解凍後にasprintf.hをbedtools2/src/coverageFileに移動してください。
Please download a zip file from another site (http://asprintf.insanecoding.org/) and unzip it. After unzipping, move asprintf.h to “bedtools2/src/coverageFile”.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118262/0db5f787-bf7d-bedd-c754-a019692a032d.png)

 
・bedtools2/src/coverageFile/coverageFile.h
下図のデフォルトは#include \<stdio.h> "のみですが、#include \<asprintf.h>と#include \<stdlib.h>を追加してください。
Please add #include \<asprintf.h> and #include \<stdlib.h>. Default is  #include \<stdio.h> only.  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118262/f28bdc0c-806e-38ef-f7f2-d4e896223efd.png)
・bedtools2/Makefile
下図のデフォルトはc++11ですが、gnu11に変更してください。	
Please change “c++11” to “gnu11”. 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118262/b3f4ca8c-5c84-743d-8b5f-99dfebe8595f.png)

⑤	コンパイル Compiling
④の後に公式サイトの案内に従ってmakeコマンドを実行し、コンパイルを行います。
After ④, compiling will be executed by command of “make” with an official site.
``` sh:
make
```

⑥	パスを通してコマンドラインから実行 Making a path and executing
⑤のコンパイル後にbedtools2/bin/bedtools.exeが作成されますので、パスを通してコマンドラインから実行します。
After ⑤, a executable file of “bedtools2/bin/bedtools.exe” will be made. We can use bedtools from command line by making a path.

# 4.	参考文献　References
・bedtools official site
https://bedtools.readthedocs.io/en/latest/
・Cygwin official site
https://www.cygwin.com/
・http://asprintf.insanecoding.org/
・https://stackoverflow.com/questions/40766055/error-strdup-was-not-declared-in-this-scope
・https://github.com/torognes/swarm/issues/100