FAQ - nibb-unix/gitc202502-unix GitHub Wiki

環境構築

HTSeq が pip3 でインストールできない(macOS)

最近のmacOSでターミナル.appを使用すると、シェルが zsh になります。このままHomebrewのインストールはできるのですが、brewコマンドでPython をインストールすると、Python3 での参照先がズレてしまいます。このため、"pip3 -V" を実行してもエラーがでます。

pip3 -V
Traceback (most recent call last):
  File "/Library/Developer/CommandLineTools/usr/bin/pip3", line 6, in <module>
    from pip._internal import main
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages/pip/_internal/__init__.py", line 40, in <module>
 ...(以下エラーメッセージ)

これを避けるためには、pip3 の実行を /usr/local/bin/pip3 から直接実行するか、 一旦シェルを bash にします。 pip3 -V を実行して、バージョンが表示されることを確認してください。

直接実行する

% /usr/local/bin/pip3 -V

または シェルをbashにしてから pip3を実行する。
% bash 

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

bash-3.2$ pip3 -V
pip 21.3.1 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

確認できたら、(zsh) "/usr/local/bin/pip3 install HTSeq" または (bash)"pip3 install HTSeq" を実行してみてください。pipのバージョンが最新でないという旨の警告が出ますが、htseqのインストール自体は success で終了します。 htseq-count -h を実行して、usageが表示されることを確認してくみてください。

UNIX入門

パスの設定方法は?

  • 実は現在のUNIXでは、パスの設定が必要な場面はほとんどない。コマンドサーチパスの考え方は2つあって、
  1. パスの通った場所(ディレクトリ)にプログラムを置く
  2. プログラムを置いた場所(ディレクトリ)にパスを通す

動くという点ではどちらでも構わないが、1. の方法が一般的であり、プログラムを正しくインストールすれば、慣例的にパスの通った場所にプログラムが置かれるはずである。 condaなどを用いる場合も、インストール最後に .bash_profile にcondaのプログラムが入ったディレクトリへのパスについて追加書きをするためのコマンドが現れて、それを実行すればパスが通るはず。.bash_profileを直接手で編集する方法は、2日目のエディタを履修しないとできないため、中途半端な説明になってしまった。

cat の使いどころは?

  • cat コマンドで複数のファイルを指定し、出力先をリダイレクト「>」でファイル名にすれば、複数のファイルを結合することができる。~/data/1_unix/exercise/ にある「HUMAN」を含む fasta ファイルを結合して all_human.fasta というファイルを作成する。
cd ~/data/1_unix/exercise
cat *_HUMAN.fasta > all_human.fasta

ディレクトリのコピー

  • コピーしたいディレクトリ名の最後に「/」をつけると、そのディレクトリ内のファイルがコピーされ、ディレクトリそのものはコピーされない
cd ~/data/1_unix
mkdir unixtest
cp -r fastq unixtest
ls unixtest
  fastq
cp -r fastq/ unixtest  ### fastq ディレクトリ内のファイルが unixtest 内にコピーされる
ls unixtest
  CFT_mpos_1.fastq	CFT_urine_2.fastq	MG_mpos_3.fastq
  CFT_mpos_2.fastq	CFT_urine_3.fastq	MG_urine_1.fastq ...

brew と miniconda3 のおすすめはどちらですか

まず、brew と Miniconda ではその性質が異なります。 Miniconda とは、Anaconda の縮小版であり、本家 Anaconda とは、Python およびそのパッケージを管理するものです。Python 環境を整えるために Anaconda はあります。 Homebrew は、Python に限らず、Mac にあらゆるアプリケーションをインストールするものです。必要に応じて使い分けてください。筆者の Python 環境に関する推奨は conda よりも 「pyenv で Python 本体のバージョンを管理して、Python パッケージは pip でインストールする」です。

ファイル名に任意の文字列を「含まない」ものを指定する

  • ~/data/1_unix/fastq 内で、「MG」で始まり「mpos」を含まず、.fastqで終わるファイルのリスト
ls MG_[!mpos]*.fastq
  MG_urine_1.fastq	MG_urine_2.fastq	MG_urine_3.fastq

Control-D と Control-C の違いは?

  • Control-D はコマンドへの「入力の終わり」 (正確にはファイルの終わり、EOF = End Of File) コマンドの途中で入力待ちの状態に「入力終了」を告げる
  • Control-C は実行中のプロセスに割り込みシグナルを送ってプロセスを終了させる

gzip と bzip2 の違いは?

  • 圧縮アルゴリズムが異なる。gzipは DEFLATEアルゴリズム、 bzip2は BURROW-WHEELER変換アルゴリズムが用いられている。
  • 一般的にbzip2のほうが圧縮率が高く、変換時間がより長くかかる。
  • テキスト形式のファイルにはgzipのほうが効率がよいと言われている。

参考) https://askanydifference.com/difference-between-gzip-and-bzip2-with-table/

ターミナルに表示される $ や % の違い

環境によってターミナルの文字入力受付表示が少し異なる。

hoge@hogehoge ~ %
huga@hugahuga ~ $

この ~ の後ろの%や$は次のような違いになる。

  • %
    • zsh(Zシェル) の場合、通常のユーザーのプロンプトは % で終わります。
    • macOS Catalina以降、デフォルトシェルが bash から zsh に変更されたため、現在のmacではこの記号がよく見られます。
  • $
    • bash や sh などのシェルでは、通常のユーザーのプロンプトは $ で終わります。
    • 他の設定や古いmacOSでは、依然として bash が使われている可能性があります。
  • つまり、プロンプトの末尾の記号はあなたの端末がどのシェルを使用しているかを示しているだけで、特に機能的な違いはありません。

ls -l のパーミッションの前にある d や l は何ですか?

ls -l で表示されるファイルパーミッションは10文字からなります。後ろ9文字はUNIX講義でもあったとおり、r(read), w(write), x(eXecute)ですが、最初の文字はファイルの種別を示します。いくつかの例を下に示します。

  • d : それがディレクトリであることを示す。以下同様に。
  • l : シンボリックリンク
  • -(ハイフン) : 通常ファイル

より詳しくは man ls してみてください。

R入門

row.names=列番号 で行の名前として指定した列では、その列の名前がなくなる

  • 「行の名前」として使われた列はデータフレームの変量としては取り除かれる。データではない列の名前も必要なくなるので消える

macでの"新規文章"はWindowsでの何が対応するか。 またどのように実行するか

  • "新しいスクリプト (Ctrl + N)"で "カーソル行または選択中のRコードを実行 (Ctrl + R)"

左側に + と表示されてコマンドを受け付けてくれない

  • 括弧の数が合わないなどの理由でコマンドが完結していないことを示すので、追加の 「括弧とじる」を入力してコマンドを完結させるか、Escapeキーを入力して打ち切ってから入力し直して下さい。

クオリティコントロールとNGS基本ツール

FastQCでデスクトップ上のディレクトリを開くことができない

  • 5_NGS ディレクトリをホームディレクトリにコピーし、そこから開いてください。コマンドラインからコピーする場合は
cp -r ~/Desktop/gitc/data/5_NGS ~/

テキストファイル処理

sort -k 2,2 -k 3,3 と sort -k 2,3 の違いは?

前者は2カラム目をソート評価したあと、3カラム目がソート評価されます。 対し、後者は 2カラム目と3カラム目をくっつけた状態にしてソートされます。 単純な テーブル形式のファイルである場合、両者の違いは殆ど無いでしょう。また、 sort -k 2,4 のように幅広く指定すると、2カラム目が第一優先、3カラム目が第2優先、4カラム目が第3優先...となります。

⚠️ **GitHub.com Fallback** ⚠️