2023年5月28日日曜日

Jupyterの導入とVS Codeでのノートの利用

Jupyterlabの導入


miniconda3を再導入したubuntuについて、jupyterをインストールして解析環境を作り直すことにした。condaのbase環境に対してインストールした。

$ conda install jupyterlab

モジュールについては、当面必要なものをインストールした。

$ conda install pandas numpy scikit-learn seaborn matplotlib


VS CodeでのJupyter 利用


VS Codeでは、ipynbを編集、実行することができるようになっている。これまではjupyterlabをブラウザで利用していたが、他のスクリプトを含めてVS Codeを使って解析することが多くなってきた。今後は、VS Codeで手元のクライアントからUbuntu機にssh接続して、ipynbを利用することになるだろう。

新しいipynbを作るときは、EXPLOREのNew File..で拡張子を.ipynbにすれば勝手にノートを作ってくれる。pythonのカーネルを右上のところから選択できるようになっていて、condaで導入したbaseのpythonを利用している。


参考

2023年5月23日火曜日

RStudio server の導入

 RStudioは統計解析のためのR言語を用いた解析を行うときに便利な統合解析環境 (IDE) であり、データ解析をしている際にも多用するプラットフォームである。NGSデータのバイオインフォマティクスのようなライフサイエンス分野の解析でも頻繁に使用されるプラットフォームだが、これまでRStudio Desktop版を主に利用してきた。比較的リソースが豊富なubuntuのlinuxマシンを利用したいのだが、実際の端末としては発表資料やオフィスソフトを使っているMacやWindowsなどを使いたいとも思う。それで、Desktop版ではなくubuntu機にserver版をインストールして、ゲストのbrowserからアクセスすることを考えた。対象マシンにはVS codeでssh接続し、主に公式の手順に則って作業を進めた。


RStudioインストール手順 


Step1 Server versionの選択

基本的に公式のインストール手順の通りに進めていくことで実施できた。対象のマシンはubuntuなので、Debian10/Ubuntu20を選択した。


Step2 R のインストール

対象の環境には既にRがインストールされていたので、このステップは省略した。現在インストールされているのはR ver4.1.2だった。

R version 4.1.2 (2021-11-01) -- "Bird Hippie"

Copyright (C) 2021 The R Foundation for Statistical Computing

Platform: x86_64-pc-linux-gnu (64-bit)


Step3 RStudio Serverのインストール

端末で、以下のコマンドを実行しインストール作業を行なった。


$ sudo apt-get install gdebi-core


gdebi-coreについては、参考のリンクを見て調べた。

"gdebi を使うと、ローカルの deb パッケージをその依存関係を解決しながら インストールできます。apt は同じ動作をしますが、インストールできるのはリモート (http, ftp) にあるパッケージのみです。"

続けて、wgetで.debをダウンロードした。


$ wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-2023.03.1-446-amd64.deb


ダウンロード先のディレクトリに移動し、先ほどのgdebiを用いてインストールする。


$ sudo gdebi rstudio-server-2023.03.1-446-amd64.deb


インストールの最後で、Serverが起動したことが表示された。


● rstudio-server.service - RStudio Server

     Loaded: loaded (/lib/systemd/system/rstudio-server.service; enabled; vendor preset: enabled)

     Active: active (running) since Mon 2023-05-22 23:08:17 JST; 1s ago

    Process: 6534 ExecStart=/usr/lib/rstudio-server/bin/rserver (code=exited, status=0/SUCCESS)

   Main PID: 6535 (rserver)

      Tasks: 4 (limit: 309319)

     Memory: 4.1M

        CPU: 670ms

     CGroup: /system.slice/rstudio-server.service

             └─6535 /usr/lib/rstudio-server/bin/rserver


May 22 23:08:17 XXXXX systemd[1]: Starting RStudio Server...

May 22 23:08:17 XXXXX systemd[1]: Started RStudio Server.


Serverへのアクセス


手元Macのsafariから以下のアドレスに対してアクセスすると、ブラウザでRStudioの画面が表示された。


http://{serverマシンのIPアドレス}:8787/



ubuntuマシンのuser nameとpasswordを入力するとログインすることができた。



今回のRStudio serverの導入により、RStudioのインターフェイスは日常使用するPCから利用し、かつ計算は比較的スペックが高いubuntuのマシンを使うことが可能になった。この方法はDesktop版よりも便利なような気がする。解析結果のreportやコミュニケーションのことを考えると、officeなども完備している手元のパソコンを使いたいが、計算自体は多少重めの場合など、serverを使った方が便利に進めることができるだろう。


参考

2023年5月21日日曜日

Ubuntuにminiconda3で環境構築

 前回、こんがらがってよく分からなくなっていた古いanaconda3環境を一度アンインストールして、新しくminiconda3で環境構築を実施することにした。かれこれ4年間ほどcondaを利用してきたが、その間に所属も変わり、ライセンスの変更でconda-forgeを利用することになるなど、色々と変遷はあるが、今しばらくはpython環境はcondaで構築する状況が続くように思う。


環境

今回環境構築するのは、自分のsmall projectに使っているubuntu上である。

$ cat /etc/issue

Ubuntu 20.04.6 LTS \n \l


昔のanaconda3環境をアンインストール

自分の環境下のanaconda3をアンインストールした。

https://tyoshidalog.blogspot.com/2023/05/ubuntuanaconda3.ht


Miniconda3のインストール

インストーラーを下記サイトからダウンロードした。


ダウンロード後、ハッシュ値の確認を実施する。

$ cat sha256sum.check.txt 

aef279d6baea7f67940f16aad17ebe5f6aac97487c7c03466ff01f4819e5a651 Miniconda3-latest-Linux-x86_64.sh

$ sha256sum -c sha256sum.check.txt

Miniconda3-latest-Linux-x86_64.sh: OK

# hash値を書いてあるファイルは、"hash"+"スペース"+"ファイルパス"になっている。


インストールを実施する。home下にminiconda3のディレクトリができる。  

$ bash  ./Miniconda3-latest-Linux-x86_64.sh


新しいターミナルを立ち上げると、プロンプトが(base)になっている。


パッケージの確認

最初の段階で入っているパッケージは、anacondaと比べるとだいぶ少ない。

$ conda list

# Name                    Version                   Build  Channel

_libgcc_mutex             0.1                        main  

_openmp_mutex             5.1                       1_gnu  

boltons                   23.0.0          py310h06a4308_0  

brotlipy                  0.7.0           py310h7f8727e_1002  

bzip2                     1.0.8                h7b6447c_0  

ca-certificates           2023.01.10           h06a4308_0  

certifi                   2022.12.7       py310h06a4308_0  

cffi                      1.15.1          py310h5eee18b_3  

charset-normalizer        2.0.4              pyhd3eb1b0_0  

conda                     23.3.1          py310h06a4308_0  

conda-content-trust       0.1.3           py310h06a4308_0  

conda-package-handling    2.0.2           py310h06a4308_0  

conda-package-streaming   0.7.0           py310h06a4308_0  

cryptography              39.0.1          py310h9ce1e76_0  

idna                      3.4             py310h06a4308_0  

jsonpatch                 1.32               pyhd3eb1b0_0  

jsonpointer               2.1                pyhd3eb1b0_0  

ld_impl_linux-64          2.38                 h1181459_1  

libffi                    3.4.2                h6a678d5_6  

libgcc-ng                 11.2.0               h1234567_1  

libgomp                   11.2.0               h1234567_1  

libstdcxx-ng              11.2.0               h1234567_1  

libuuid                   1.41.5               h5eee18b_0  

ncurses                   6.4                  h6a678d5_0  

openssl                   1.1.1t               h7f8727e_0  

packaging                 23.0            py310h06a4308_0  

pip                       23.0.1          py310h06a4308_0  

pluggy                    1.0.0           py310h06a4308_1  

pycosat                   0.6.4           py310h5eee18b_0  

pycparser                 2.21               pyhd3eb1b0_0  

pyopenssl                 23.0.0          py310h06a4308_0  

pysocks                   1.7.1           py310h06a4308_0  

python                    3.10.10              h7a1cb2a_2  

readline                  8.2                  h5eee18b_0  

requests                  2.28.1          py310h06a4308_1  

ruamel.yaml               0.17.21         py310h5eee18b_0  

ruamel.yaml.clib          0.2.6           py310h5eee18b_1  

setuptools                65.6.3          py310h06a4308_0  

six                       1.16.0             pyhd3eb1b0_1  

sqlite                    3.41.1               h5eee18b_0  

tk                        8.6.12               h1ccaba5_0  

toolz                     0.12.0          py310h06a4308_0  

tqdm                      4.65.0          py310h2f386ee_0  

tzdata                    2023c                h04d1e81_0  

urllib3                   1.26.15         py310h06a4308_0  

wheel                     0.38.4          py310h06a4308_0  

xz                        5.2.10               h5eee18b_1  

zlib                      1.2.13               h5eee18b_0  

zstandard                 0.19.0          py310h5eee18b_0  


チャンネルの設定について

今回の環境は商業活動に関係のない個人的なものだが、商用の利用では、anacondaのデフォルトチャンネルの使用が有償化されているので、conda-forgeなどの利用を検討した方が良い。これらの情報については、下記のリンクでわかりやすい説明を見つけることができる。

Anacondaの有償化に伴いminiconda+conda-forgeでの運用を考えてみた

  • Qiitaの記事で、conda-forgeの利用について参考になる記事。


conda-forgeとは?主な使い方や活用のポイントをご紹介

  • conda-forgeの紹介や、pipとcondaの違い、重複パッケージの調べ方などが紹介されていた。


https://conda-forge.org/

https://github.com/conda-forge

  • conda-forgeのサイト


参考

Ubuntuのanaconda3を削除した

 色々と環境がこんがらがってきて、ubuntu上にanaconda3で構築していた環境を削除したくなった。しばしばcondaの環境を削除する作業をしているような気がして、手順を記録として残しておくことにした。


1. homeのanaconda3ディレクトリを削除する

$ rm -rf ./anaconda3

これで、anacondaのファイルの大部分が削除される。


2. .bashrcのconda関係の記述を削除する。

下記の記述があるので、エディタで.bashrcを開いて削除する。

これまでのバージョン、あるいはOSなのかもしれないが、.bashrcに記述がある場合と、.bash_profileの場合があったような気がする。現在のubuntuの場合は.bashrcだった。

# >>> conda initialize >>>

~~~~~~~~

# <<< conda initialize <<<


3. condaに関連する隠しファイル、ディレクトリを削除する

homeディレクトリ下にあるconda関係のファイルやディレクトリを削除した。

$ rm -rf .condarc .conda


参考



2023年5月10日水曜日

home directoryのdisk quotaでしばしば躓く

解析サーバーでのトラブル

たまに聞く話として、サーバにVS codeを使ってremote SSHでアクセスしている場合に、アップデートをしたタイミングからssh接続できなくなることがある。最初はアップデートされたextentionの問題なのではないかと考え、前バージョンへのダウン等でトラブルシューティングを試みたのだがうまくいかない。remote SSHしようとする時に、ホストにサーバーがインストールできないというエラーメッセージが表示されており、途中からホストのホームディレクトリに書き込みできない状態になっているのではないかと考えたて確かめていくと解決することがある。


原因はdisk quotaのオーバーにより書き込みできなくなったこと

ホームディレクトリに移ってduで使用状況を調べてみた。


$ du -sh ~


すると、決められたdisk quotaを2GBほど超過した状態であることがわかった。どこに大きなファイルがあるのかを調べてみた。


$ du -sh ~/*


隠しファイルについても以下のように調べた。


$ du -sh ~/.[^.]*


大きなものとしては、使用しているcondaのディレクトリや、.cache/firefoxなどが肥大化しているようだった。.cache/firefoxはfirefoxのキャッシュファイルだが、こんなに大きくなっているとは思わなかった。これらのファイルを削除したり、別に移したりすることで、disk quota内に収めたのち、改めて手元のPCからVS codeでssh接続してみると、今度は無事に接続することができた。


過去にも類似のトラブルを複数回経験

思い返すと、過去にもdisk quota超過での書き込み不可によるトラブルを経験しているのが思い出された。conda updateでアップデートしたり新しいアプリケーションをインストールしたりしようとしたときにできない、ということがあり、ホーム下のminiconda3のディレクトリに書き込めなくなっていることが原因だった。VS Codeもsshアクセス先のホーム下に.vscode-serverというフォルダを作っていたが、disk quota超過によりここに書き込めなくなっていることが今回の原因だったらしい。この.vscode-serverディレクトリも1.4Gほどあり、かなり大きかった。


miniconda3のディレクトリが肥大化しがち

ホームディレクトリを大きくする原因の一つは、.cache下のファイルもあるが、miniconda3が大きくなることが一番の原因のように思われた。いくつもアプリケーションを導入したり、環境をたくさん作ったりすると、すぐに5G、10Gに肥大化してしまう。


一つの解決策としては、conda cleanを使用して不要になったファイルを削除することだと思う。ただ、--allを使うと不具合が生じると述べているサイトもあり(問題なかったとする人もいる)、今回は--tarballsでtarballのみ削除することにした。

あるいは、ホーム下のcondaの設定ファイルの.condarcの中に、pkgs_dirsの記述で別のパスを記載することで、そちらにpkgsの大きいファイルを格納するようにしたら、ホーム下のサイズは小さくすることができると思う。


pkgs_dirs:

 - /path/to/conda-pkgs/pkgs


また、envのフォルダを別の場所にとりあえず移動し、リンクを張ることでホーム下miniconda3のサイズを削除できるようだった、この方法でリンクを張った後でもその環境を使うことができた。このようにした方がいいのか、あるいは、ホーム下.conda/environments.txtに各environmentのパスが書かれていたので、こちらを編集した方が良いのかもしれない。


envのディレクトリの位置は、プロジェクトのフォルダ下に作って共有するといったやり方もあるらしく、これは解析の時にも便利なように思った。disk quotaを気にせずにそれぞれの解析ごとに環境を準備することもできるので、次回以降試してみたいと思った。


disk quotaのチェック

今回のこともあり、ホームディレクトリのディスク使用量をたまに確認することにした。隠しファイルについても表示するための"disk_quota_check"というエイリアスを新しく.bash_aliasesに記述した。


alias disk_quota_check='echo "---total---"  &&  du -sh ~  &&  echo "--- dir --"  &&  du -sh ~/*  &&  echo "---invisible---"  &&  du -sh ~/.[^.]*'


また、.bashrcに以下の記述をした。


if [ -f ~/.bash_aliases ]; then

    ~/.bash_aliases

fi



参考