0%

Python3 内置虚拟环境venv

.. _python-venv-python3:

在虚拟环境中安装(可选)

您还可以选择在虚拟环境(或应用程序虚拟环境)中安装各种软件,以保持环境清洁。

1
$ python3 -m venv packenv

创建后,通过从命令行运行来激活虚拟环境

1
2
3
4
# Windows
$ call packenv\scripts\activate.bat
# Linux
$ source packenv/bin/activate

最后,安装所需的软件包,比如numpy

1
$ pip3 install numpy

同时也可以增加一个提示符,比如NAME

1
$ python3 -m venv --prompt NAME virtual_name 

构建Docker镜像时处理Configuring tzdata交互输入

在Dockerfile中安装deb软件包时,某些软件将tzdata作为依赖项安装。

tzdata会以交互方式提醒用户选择使用位置。

Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.
 1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
 2. America     5. Arctic     8. Europe    11. SystemV
 3. Antarctica  6. Asia       9. Indian    12. US
Geographic area:

可能一直会卡在这个界面(我就遇到了)。

为了解决这个问题,我们需要将tzdata设置为非交互方式。

首选的方法是在Dockerfile的第一条RUN之前加入以下配置:

ENV DEBIAN_FRONTEND=noninteractive
第二个方法是,在DEBIAN_FRONTEND=noninteractive条件下使用命令apt install或apt-get install配置安装tzdata:

RUN DEBIAN_FRONTEND=noninteractive apt install -y tzdata
这将自动选择默认配置安装tzdata。

简介

casacore 是一系列射电天文数据处理的C++库

安装

Debian/Ubuntu

1
2
3
4
5
$ apt-get update
$ sudo apt-get install build-essential cmake gfortran g++ libncurses5-dev libreadline-dev flex bison libblas-dev liblapacke-dev libcfitsio-dev wcslib-dev
$ sudo apt-get install libhdf5-serial-dev libfftw3-dev python-numpy libboost-python-dev libpython3.4-dev libpython2.7-dev
$ apt-get search casacore
$ apt-get install casacore

CentOS

1
2
3
4
$ yum update
$ sudo yum install cmake cmake-gui gcc-gfortran gcc-c++ flex bison blas blas-devel lapack lapack-devel cfitsio cfitsio-devel wcslib wcslib-devel ncurses ncurses-devel readline readline-develpython-devel boost boost-devel fftw fftw-devel hdf5 hdf5-devel numpy boost-python
$ apt-get search casacore
$ apt-get install casacore

MacOSX

1
2
$ brew tap ska-sa/tap
$ brew install casacore

Docker

1
$ docker pull quay.io/casacore/casacore:master

测试数据集

ftp://ftp.astron.nl/outgoing/Measures/

代码参考 https://www.github.com/shaoguangleo/radio_astronomy

简介

python-casacore是casacore的python绑定。

在安装这个之前,需要先行安装casacore。

安装

二进制安装

1
$ pip install python-casacore

Debian/Ubuntu

1
$ sudo apt-get install python-casacore

Kern

此处为使用Ubuntu LTS系统的

1
2
3
4
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:kernsuite/kern-5
$ sudo apt-get update
$ sudo apt-get install python-casacore

MacOSX

On Macs, you may need to create an /etc/sysctl.conf file
Put in it the following lines

重启后可以使用 sysctl kern.sysv来查看状态。

代码参考 https://www.github.com/shaoguangleo/radio_astronomy

slurm作业提交系统常用命令

查看有哪些分区 sinfo命令

1
2
3
4
5
$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
arm up infinite 9 idle taishan-arm-cpu[01-09]
gpu up infinite 8 idle sugon-gpu[01-08]
cpu up infinite 10 idle x86-cpu[01-10]

指定节点跑程序srun

比如这里我有一个test.py的文件,内容如下:

1
2
3
4
5
6
#!/usr/bin/env python

import time
for i in range(10):
time.sleep(1)
print(i)

执行如下命令:

1
srun -p cpu -w x86-cpu01 python ./test.py 

slurm最基本的命令是srun,比如上面一行的参数如下:

  • -p:指定分区PARTITION
  • -w:指定NODELIST

查看自己任务squeue

squeue -u +用户

1
2
3
~> squeue -u name
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
32236 cpu test.py name R 2:08 1 x86-cpu01

生成一个构建号

Git 中不存在随每次提交递增的“v123”之类的数字序列,如果你想要为提交附上一个可读的名称, 可以对其运行 git describe 命令。作为回应,Git 将会生成一个字符串, 它由最近的标签名、自该标签之后的提交数目和你所描述的提交的部分 SHA-1 值(前缀的 g 表示 Git)构成:

1
2
$ git describe master
v1.6.2-rc1-20-g8c5b85c

这样你在导出一个快照或构建时,可以给出一个便于人们理解的命名。 实际上,如果你的 Git 是从 Git 自己的版本库克隆下来并构建的,那么 git –version 命令给出的结果是与此类似的。 如果你所描述的提交自身就有一个标签,那么它将只会输出标签名,没有后面两项信息。

运行DiFX

设置MPI和mpifxcorr

设置 mpifxcorr 现在比以前简单了许多,只需将 setup.bashsetup.csh 添加到登录脚本中。你可以在安装目录的顶层找到这些设置文件。假设你使用的是 bash,并运行 DiFX-2.2(现在已经较旧,最新版本为2.8.1),你需要的文件是 master_tags/DiFX-2.2/setup.bash
你在安装 DiFX 时应该已经设置过这个文件。

要确保 MPI 准备好运行,输入 mpirun。它应该显示可用的选项列表。如果它抱怨环境没有准备好,可能需要运行 mpd。除此之外,咨询你所用 MPI 发行版的具体文档,这里有太多不同的 MPI 版本,无法进行详细的故障排除。

这个文件定义了一堆变量,例如$DIFXROOT,并将$DIFXROOT/bin/添加到路径中。
因此,编译的所有程序都应该可以正常运行。
输入which mpifxcorr - 您应该看到将要运行的mpifxcorr版本和路径。

为了确保MPI准备好运行,键入 mpirun 。 它应该给您提供它所采取的选项列表。 如果它抱怨环境还没有准备好,您可能需要运行’mpd’。
除此之外 - 请参阅您的发行版的特定MPI文档,有太多不同的MPI发行版,无法在此处进行详细的故障排除。

运行mpifxcorr

如果您已经下载了一些示例数据并且只想测试它,那么您可以立即开始,因为您不需要生成辅助文件。
但是,最好从一开始就遵循正常的设置相关性的路径,您只需使用vex文件即可生成所有mpifxcorr配置文件。

下面显示了一个相关处理方式的流程图:

correlation_flowchart

如图所见,有两个步骤需要用户输入。
第一个是生成 .v2d 文件。 有关此文件的介绍,可以参考vex2difx文档,但它可以(并且通常是)非常简单。
另一个是机器文件和.threads文件。 这些描述了mpifxcorr将在哪台计算机上运行以及它将使用多少个计算线程。
这里显示了一个示例,具体可以参考difx-files。 如果您只是在一台机器上运行(比如自己的笔记本或者服务器),那么只需一遍又一遍地使用它的名称即可。
您至少需要N + 2个条目,其中N是望远镜的数量。

Before you start up the correlator, you should start up errormon2 to log
the messages which come out of the correlator. Just type errormon2, and
it will write a file called log (you can rename it later if you want).
在启动相关处理之前,您应该启动 errormon2 以记录相关处理输出的消息。 只需键入 errormon2 ,它将写入一个名为log的文件(如果需要,稍后可以将其重命名)。

一旦您拥有机器文件,并且errormon2正在运行,您就应该能够使用以下命令启动相关处理:

1
$ mpirun -machinefile machines.list -np X mpifxcorr example.input

将machines.list替换为您的机器文件名,将X替换为要使用的进程数,并将example.input替换为输入文件名。

目前,主要有以下几个工具可以运行:genmachines/startdifxespressostartcorr.plgenmachines 适用于 Mark5 单元相关的相关性计算,espresso 用于基于文件的相关性计算,而 startcorr.pl 适用于 eVLBI。将来这些工具可能会统一。

辅助程序

如上所述,DiFX 提供了一系列辅助程序,帮助设置相关处理作业并将输出转换为导出格式。下面列出了这些程序及其简要说明的链接。

vex2difx

vex2difx在vex2difx有很好的文档。

calcif2

使用 calcif2 生成相关模型文件。它处理由 vex2difx 生成的 .calc 文件,并生成 .delay.uvw.rate.im 文件。你应该在 vex2difx 之后运行 calcif2,在 mpifxcorr 之前运行。

difx2fits

difx2fits 用于生成 FITS 文件。要使用 difx2fits,需要将 .input 文件中的输出格式设置为 SWIN,并在相关性计算完成后使用 difx2fits。更多文档已记录在 这里

difx2mark4

difx2mark4 用于生成类地测量的 Mark4 可见性数据集。它的运行方式与 difx2fits 类似。相关文档已记录在 这里

参考指南

关于 mpifxcorr 及其支持软件的详细信息,可以在参考

什么是SSH key?

SSH 密钥对 最直观的作用:让你方便的登录到 SSH 服务器,而无需输入密码。由于你无需发送你的密码到网络中,SSH 密钥对被认为是更加安全的方式。

SSH Key是比较简单的保护账户安全的一种方式,SSH key提供了一种与GitHub通信的方式,通过这种方式,能够在不输入密码的情况下,将GitHub作为自己的remote端服务器.
这样也就保证了你的密码不会被其他人或者robot暴力破解,理论上只有你拥有这个密码。

如何创建SSH Key

创建公用密钥的步骤如下所示:

1
2
3
4
5
6
$ ssh-keygen -t rsa -b 4096 -C "youremail@email.com"
# 回车即可

#显示公钥
$ cat .ssh/id_rsa.pub
# 此时就需要拷贝公钥了

注意ssh-keygen会生成两部分,公钥和私钥,切记不要公开私钥(除非是本单位机构的管理员),文件名为.ssh/id_rsa

把SSH Key添加到Github Account

按照下面的步骤即可:

  1. 登录github账户
  2. 点击头像选择settings
  3. 选择SSH and GPG kyes
  4. 在SSH Keys点击New SSH Key
  5. 输入一个title并将刚才复制的内容粘贴进去即可搞定

任重而道远的研究生导师

第二次来到依然幽静的岳阳路,熙熙攘攘的人群从乍一拐进岳阳路就消失不见,特别喜欢这种闹市中安静的一隅。

这几天参加研究生导师的培训,本来以为做好了准备,过来听了听报告,发现还有很多东西是需要学习和补充的。

师者

DAY 1

DAY 2

DAY 3

Docker 保存和导入

docker loaddocker save 用于操作images.

docker importdocker export 用于操作容器。

所以要确保成对使用,不然可能需要加上一些参数。

docker: Error response from daemon: No command specified.

这个问题可能是因为用save来保存了镜像,而用import导入了这个镜像,此时需要跟上命令:

这个命令可以通过save的镜像来查找,命令为:

1
docker ps -a --no-trunc

这个命令输出的最后作为docker run的参数,基本可以解决。