HVS環境構築

朝5時。
今日一日でデータ探索が開始できるようにする。

#(0) py37_hvs

```bash
$ conda create -n py37_hvs python=3.7 anaconda

...

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate py37_hvs
#
# To deactivate an active environment, use
#
#     $ conda deactivate

# とか言われる。しかし、Linux設定の都合で、以下のように環境をactivateする。

$ source activate py37_hvs

(py37_hvs)$ 
```

#(1) 必要なモジュール

- import gala
- import sqlutilpy as sqlutil
    - D = sqlutil.get()
    - みたいなものがあるので、sqlutilpyのデータ形式を扱える必要ありか？
    - https://github.com/segasai/sqlutilpy
- astrolibpyのデータ形式な気がする。
    - https://github.com/segasai/astrolibpy

## astrolibpy

```shell
# /home/[user_01]/my_libs_3 に、git cloneする。
my_libs_3$ git clone https://github.com/segasai/astrolibpy.git

$ cd 
$ nano .bash_profile
===
# /home/.bash_profile に加筆。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

#Added 2021/06/15 -- This line should be before eval "$(pyenv init -) !!
export PYTHONPATH="$HOME/my_libs_3:$PYTHONPATH"

eval "$(pyenv init -)"
alias activate="source $PYENV_ROOT/versions/anaconda3-5.2.0/bin/activate"
===

---
# 職場のUbuntuの場合は、.bashrc にも加筆する。
export PYTHONPATH="$HOME/my_libs_3:$PYTHONPATH"
---

$ source .bash_profile 

# 利用可能なことを確認。
$ python
Python 3.7.10 (default, Feb 26 2021, 18:47:35) 
[GCC 7.3.0] :: Anaconda, Inc. on linux

>>> import numpy # これでエラーがでる場合は、今までの環境が読み込めていない。

>>> from astrolibpy.utils import idlsave
>>> from astrolibpy.utils.idlsave import idlsave
>>> idlsave.idlsave
<class 'astrolibpy.utils.idlsave.idlsave'>
>>> help(idlsave.idlsave)

>>> from astrolibpy.utils.idlsave import idlsave
```

注意。```setup.py``` がないモジュールは、```pip install git+git://github.com/some_body/module_something.git``` が使えない模様（要確認）。

## idlsave

```shell
$ python
> import numpy
> from astrolibpy.utils.idlsave import idlsave
>
> x = 2
> y = [2,3]
> a = numpy.array([4,5,6])
> b = numpy.array([1,4,9])
>
> idlsave.save('ab.sav','a,b', a, b)
> idlsave.save('xx.sav','x,y', x, y)
> exec (idlsave.restore('xx.sav'))

[close]

$ python
> import numpy
> from astrolibpy.utils.idlsave import idlsave
>
> exec (idlsave.restore('ab.sav'))
> exec (idlsave.restore('xx.sav'))
>
> a
array([4,5,6])
> b 
array([1,4,9])
> x
2
> y
[2,3]

# a,bを宣言しなくても、execによって保存されていた変数・配列がすぐに使える。

```

ここまでで朝7:30

## gala

```shell
$ python -m pip install gala
```

## mwdust

https://github.com/jobovy/mwdust

```shell 
$ cd 
$ nano .bash_profile
===
# /home/.bash_profile に加筆。

#2021/06/15
export DUST_DIR="/home/[user_01]/my_libs_3/mwdust_DATA_directory"
===

$ cd my_libs_3
$ mkdir mwdust_DATA_directory # データ格納用のディレクトリ

$ git clone https://github.com/jobovy/mwdust.git
$ cd mwdust
$ cp setup.py setup_orig.py # 修正前のオリジナルのファイルを保存しておく。

$ nano setup.py

# '--no-downloads' に対応するブロック（48行目くらい）を修正。
# '--no-downloads' が指定されても、「SFDだけダウンロード」になるようにする。
===
    _DOWNLOAD_SFD= True #False# （48行目くらい）
===

$ python setup.py install --no-downloads
# これで「SFDだけダウンロード」ができる。

$ cd
$ python 
> import numpy
> import mwdust
> sfd= mwdust.SFD() #E(B-V), SD
> sfd(30.,3.,numpy.array([1.,2.,3.]))
73
array([2.60820293, 2.60820293, 2.60820293]) # 距離に関係なく同じE(B-V).

# 試しに次の３つの(l, b) in degでE(B-V)を計算。
231.1338633798848 10.474286532158144
231.16511285457824 10.599688496217722
231.51976877308135 10.969642997759712

> l = numpy.array([231.1338633798848, 231.16511285457824, 231.51976877308135])
> b = numpy.array([10.474286532158144, 10.599688496217722, 10.969642997759712])
>
> sfd(l,b,0.) # A dummy distance of dist=0 is assigned.
array([0.0876220166683197, 0.09137586504220963, 0.06955942511558533])

> for i in range(3):
>     print(l[i],b[i], table_ebv[i], sfd(l[i],b[i],0)) #table_ebvは別に計算。
231.1338633798848 10.474286532158144 0.087622 0.0876220166683197
231.16511285457824 10.599688496217722 0.091375 0.09137586504220963
231.51976877308135 10.969642997759712 0.06956 0.06955942511558533
```

ここで朝9時。

## ebfpy

個人メモ：CMU時代の個人ノートの
2019/11/22 -- ebfpy for Python3 
2020/01/03 -- ebfpy bug
を参照のこと。

```
$ cd my_libs_3

$ git clone https://github.com/segasai/ebfpy.git 

$ cd ebfpy

$ cp ebfpy.py ebfpy_original.py

## ここでebfpy.py の以下の行を編集。

---
#Line 1069
capacity=64 # modified from 16  

#Line 1369
_EbfTable.__create(filename,64,0) # modified from (filename,16,0)

#Line 1388
_EbfTable.__create(filename,64,1)# modified from (filename,16,1)

#Line 1422
capacity=64 # modified from 16  
---

$ python setup.py install 

running install
running build
running build_py
creating build
creating build/lib
copying ebf.py -> build/lib
running build_scripts
creating build/scripts-3.7
copying and adjusting scripts/ebfconvert -> build/scripts-3.7
copying and adjusting scripts/ebftk -> build/scripts-3.7
changing mode of build/scripts-3.7/ebfconvert from 664 to 775
changing mode of build/scripts-3.7/ebftk from 664 to 775
running install_lib
copying build/lib/ebf.py -> /home/[user_01]/.pyenv/versions/anaconda3-5.2.0/envs/py37_hvs/lib/python3.7/site-packages
byte-compiling /home/[user_01]/.pyenv/versions/anaconda3-5.2.0/envs/py37_hvs/lib/python3.7/site-packages/ebf.py to ebf.cpython-37.pyc
running install_scripts
copying build/scripts-3.7/ebfconvert -> /home/[user_01]/.pyenv/versions/anaconda3-5.2.0/envs/py37_hvs/bin
copying build/scripts-3.7/ebftk -> /home/[user_01]/.pyenv/versions/anaconda3-5.2.0/envs/py37_hvs/bin
changing mode of /home/[user_01]/.pyenv/versions/anaconda3-5.2.0/envs/py37_hvs/bin/ebfconvert to 775
changing mode of /home/[user_01]/.pyenv/versions/anaconda3-5.2.0/envs/py37_hvs/bin/ebftk to 775
running install_egg_info
Writing /home/[user_01]/.pyenv/versions/anaconda3-5.2.0/envs/py37_hvs/lib/python3.7/site-packages/ebfpy-0.0.14-py3.7.egg-info

$ cd
$ python -c 'import ebfpy'

```

## PyGaia

```shell
$ cd my_libs_3
$ git clone https://github.com/agabrown/PyGaia.git
$ cd PyGaia
$ python setup.py install
```

## nbconvert


```shell 
$ python -m pip install jupyter_contrib_nbextensions
```
参考　
https://github.com/ipython-contrib/jupyter_contrib_nbextensions/issues/1115