[log] container 內部的細節
===
###### tags: `Parabricks-v3.5`
###### tags: `基因體`, `NVIDIA`, `Clara`, `Parabricks`, `二級分析`
<br>
[TOC]
<br>
:::warning
:bulb: **啟發**
- 原本是由 pbrun 啟動容器
- 拿這個容器的 image 當作 base
- 再把 pbrun 複製到 image
- 原本 pbrun 是執行 docker run, 改成 python3 /parabricks/run_pipeline.py
:::
## 建置 image
:::warning
:bulb: 需先前查看 [container 的組態](#inspect)
:::
### 準備 Dockerfile
```dockerfile=
FROM parabricks/release:v3.5.0
ENTRYPOINT ["/bin/bash"]
```
<br>
### 執行 docker build
```bash=
docker build -t parabricks/release:v3.5.0-by-tj .
```
- `.` 表示當前目錄,從當前目錄尋找 `Dockerfile`
<br>
### 執行 docker run
```bash=
docker run --rm -it parabricks/release:v3.5.0-by-tj
```
- v3.5 版本 :+1:
- 沒有拔掉 pwd, ls, find, grep, ...
[](https://i.imgur.com/VOeIOxj.png)
- user 是 root
```
# id
uid=0(root) gid=0(root) groups=0(root)
```
- 可以自行安裝套件
```bash=
apt install nano
```
- 舊版
- pwd, ls, find, grep, ... 等所有的指令,都是空殼
- 要執行這些指令,必須從外部掛進去
<br>
## 掛載資料測試
### 進入到容器
> 精簡過後,確認可以跑得 docker run 指令 (2021/06/11 18:50)
```bash=
# 切到含有 parabricks_sample 子目錄的目錄
rm -rf tmp-dir
mkdir tmp-dir
WORKSPACE=`pwd`
docker run \
--gpus all \
--rm \
-it \
--net=host \
-w=$WORKSPACE \
-v $WORKSPACE:$WORKSPACE \
-v /opt/parabricks:/INSTALL/ \
parabricks/release:v3.5.0-by-tj
```
- 這邊要移除掉 `-u=1000:1000`參數
因為 user 是 `uid=0(root) gid=0(root) groups=0(root)
`
否則會有底下的 error:
`groups: cannot find name for group ID 1000`
- `--gpus all`
- 主機若沒有 CPU,會遇到下列錯誤:
> docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: Running hook #0:: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown.
- 即使有安裝 Nvidia runtime (CUDA Toolkit)、nvidia-container-toolkit 仍然一樣
- `nvidia-smi`
```
$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
```
- 解決方式
- 暫時不要使用 `--gpus all` 參數
<br>
### [在容器中] 執行 fq2bam (簡單版)
> 精簡過後,確認可以跑得 docker run 指令 (2021/06/11 19:15)
```bash=
python3 /parabricks/run_pipeline.py fq2bam \
--ref parabricks_sample/Ref/Homo_sapiens_assembly38.fasta \
--in-fq parabricks_sample/Data/sample_1.fq.gz \
parabricks_sample/Data/sample_2.fq.gz \
--out-bam output.bam \
--tmp-dir tmp-dir \
--x3
```
- 是 `python3` 程式,不是 `python`
否則會執行到 Python 2.7.17
- 指令同 [`pbrun fq2bam`](/on6QkW93SKyxvV2codV7GA##執行-pbrun-fq2bam),但要加上 `--tmp-dir` 參數
否則會有底下的 error:

`ValueError: '--tmp-dir' is not in list`
- 曾經遇到:
- 硬碟空間不足,但實際上空間很大(1TB),目前無法重製
```
...
progressMeter - Percentage
[08:10:31] 0.0 0.00 GB
Received signal: 11
Please make sure you have enough disk space in the output and temp directory
Contact Parabricks-Support@nvidia.com for support
Please contact Parabricks-Support@nvidia.com for any questions
There is a forum for Q&A as well at https://forums.developer.nvidia.com/c/healthcare/Parabricks/290
Exiting...
```
- Please make sure you have enough disk space.
<br>
### [在容器中] 執行 fq2bam (複雜版)
> 精簡過後,確認可以跑得 docker run 指令 (2021/06/11 19:30)
```bash=
python3 /parabricks/run_pipeline.py fq2bam \
--ref parabricks_sample/Ref/Homo_sapiens_assembly38.fasta \
--in-fq parabricks_sample/Data/sample_1.fq.gz \
parabricks_sample/Data/sample_2.fq.gz \
"@RG\tID:HK3TJBCX2.1\tLB:lib1\tPL:bar\tSM:sample\tPU:HK3TJBCX2.1" \
--knownSites parabricks_sample/Ref/Homo_sapiens_assembly38.known_indels.vcf.gz \
--out-bam output.bam \
--out-recal-file report.txt \
--tmp-dir tmp-dir \
--x3
```
<br>
### [在容器中] 執行 germline
:::warning
:warning: **底下指令不存在** :no_entry_sign:
```bash=
python3 /parabricks/run_pipeline.py germline \
--ref parabricks_sample/Ref/Homo_sapiens_assembly38.fasta \
--in-fq parabricks_sample/Data/sample_1.fq.gz parabricks_sample/Data/sample_2.fq.gz \
--knownSites parabricks_sample/Ref/Homo_sapiens_assembly38.known_indels.vcf.gz \
--out-bam output.bam \
--out-variants output.vcf \
--out-recal-file report.txt \
--x3
```

- germline 指令是由 pbrun 控制
- 容器內部並無 germline 指令
:::
> 精簡過後,確認可以跑得 docker run 指令 (2021/06/11 19:43)
```
python3 /parabricks/run_pipeline.py haplotypecaller \
--ref parabricks_sample/Ref/Homo_sapiens_assembly38.fasta \
--in-bam output.bam \
--in-recal-file report.txt \
--out-variants output.vcf \
--ploidy 2 \
--num-htvc-threads 5 \
--num-gpus 2 \
--x3 \
--tmp-dir tmp-dir
```
<br>
<hr>
<br>
## inspect
### [`pbrun fq2bam`](/on6QkW93SKyxvV2codV7GA#pbrun-fq2bam)
```bash=
pbrun fq2bam \
--ref parabricks_sample/Ref/Homo_sapiens_assembly38.fasta \
--in-fq parabricks_sample/Data/sample_1.fq.gz \
parabricks_sample/Data/sample_2.fq.gz \
--out-bam output.bam \
--x3
```
```bash=
# 透過 pbrun 正常啟動的容器
$ docker inspect db3d02a38ec0
```
- Path
`"/parabricks/run_pipeline.py"`
- Args
```json=
[
"fq2bam",
"--ref",
"parabricks_sample/Ref/Homo_sapiens_assembly38.fasta",
"--in-fq",
"parabricks_sample/Data/sample_1.fq.gz",
"parabricks_sample/Data/sample_2.fq.gz",
"--out-bam",
"output.bam",
"--x3",
"--tmp-dir",
"/uploads/workspace/9DBIL9ME"
]
```
- Cmd
```bash=
[
"fq2bam",
"--ref",
"parabricks_sample/Ref/Homo_sapiens_assembly38.fasta",
"--in-fq",
"parabricks_sample/Data/sample_1.fq.gz",
"parabricks_sample/Data/sample_2.fq.gz",
"--out-bam",
"output.bam",
"--x3",
"--tmp-dir",
"/uploads/workspace/9DBIL9ME"
]
```
- Entrypoint
```json=
"/parabricks/run_pipeline.py"
```
- 執行結果
:::spoiler
```json
[
{
"Id": "db3d02a38ec04e44d35f8b3d2ddd9c73dad8bb5add966b9701c1769098f3cbcf",
"Created": "2021-06-10T03:14:57.398476975Z",
"Path": "/parabricks/run_pipeline.py",
"Args": [
"fq2bam",
"--ref",
"parabricks_sample/Ref/Homo_sapiens_assembly38.fasta",
"--in-fq",
"parabricks_sample/Data/sample_1.fq.gz",
"parabricks_sample/Data/sample_2.fq.gz",
"--out-bam",
"output.bam",
"--x3",
"--tmp-dir",
"/uploads/workspace/9DBIL9ME"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 24839,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-06-10T03:14:59.631886014Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:da882a2f26c9e3858c92e2dc8ac4c05d3dfbab69702dc75e4d218369e6c3cfe6",
"ResolvConfPath": "/var/lib/docker/containers/db3d02a38ec04e44d35f8b3d2ddd9c73dad8bb5add966b9701c1769098f3cbcf/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/db3d02a38ec04e44d35f8b3d2ddd9c73dad8bb5add966b9701c1769098f3cbcf/hostname",
"HostsPath": "/var/lib/docker/containers/db3d02a38ec04e44d35f8b3d2ddd9c73dad8bb5add966b9701c1769098f3cbcf/hosts",
"LogPath": "/var/lib/docker/containers/db3d02a38ec04e44d35f8b3d2ddd9c73dad8bb5add966b9701c1769098f3cbcf/db3d02a38ec04e44d35f8b3d2ddd9c73dad8bb5add966b9701c1769098f3cbcf-json.log",
"Name": "/distracted_mendeleev",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "docker-default",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/uploads/workspace/parabricks_sample/Data:/uploads/workspace/parabricks_sample/Data",
"/opt/parabricks:/INSTALL/",
"/uploads/workspace/9DBIL9ME:/uploads/workspace/9DBIL9ME",
"/uploads/workspace:/uploads/workspace",
"/uploads/workspace/parabricks_sample/Ref:/uploads/workspace/parabricks_sample/Ref"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "host",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": true,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": [
{
"Driver": "",
"Count": -1,
"DeviceIDs": null,
"Capabilities": [
[
"gpu"
]
],
"Options": {}
}
],
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/5ecdbc7c1100fc3590882a2d58d1c71020defdb5cecd855427485250d61012ab-init/diff:/var/lib/docker/overlay2/95100646f1ff8316d1c06a7b0b3451439dca5bdf4e33bde6f584065c96866c09/diff:/var/lib/docker/overlay2/c9158a87787badbb60960de32a39cfa18bfc56f2b22e502cbda712f5cb99be42/diff:/var/lib/docker/overlay2/b6f618b9e13e49ab439c08f179dc7ddf2e756ac1cd53bbdc31b3872f01f4d3d4/diff:/var/lib/docker/overlay2/8ce465351f799fd7e0c9284cbeb1619e594b963713b79516fd5f861da11f8c7c/diff:/var/lib/docker/overlay2/5f51dbee605647a571a609ff9f33d411c5d944503356ac3f20ce44a8e6421a65/diff:/var/lib/docker/overlay2/e3a6db43fff265a671c939b6a28574bb0599e96603ef72aa77bdb325e29468da/diff:/var/lib/docker/overlay2/dbf16f87259a59e72ac5edef6594586296916c0c969c928648441d64b4b03b9e/diff:/var/lib/docker/overlay2/93478e0a56e909c6026d2cb020fa33c26633b9661f0be122be6b9b528f3437ee/diff:/var/lib/docker/overlay2/e3209e1ad5328df416136513d36e9bfafd1f28cde75ac54be142d25090185177/diff:/var/lib/docker/overlay2/417b5ab64d2485fddc0a6369434e9acdde7d40a360aab00b8a9087ed7803ce00/diff:/var/lib/docker/overlay2/aff613731f0d6d16380efe3573d38ae44985c4adcf303de9af822ace571ab5e3/diff:/var/lib/docker/overlay2/204381c326d056c06c381c9e3f80d6ff753999aeecd90fbea0c3e32f2aa3018d/diff:/var/lib/docker/overlay2/1f53eb8731ff13cf6389da0f0b91cb7ae75dfae974d727baf718167c685ec90c/diff:/var/lib/docker/overlay2/2cbce77b8816ba28ca718757c351060a5fc31d3e4e01f90fe685a4745fbface8/diff:/var/lib/docker/overlay2/adb4dc92c8c2a038a2eb3aefdb59eaae2ca6a9f13dbe46efad3b1c8e79c35456/diff:/var/lib/docker/overlay2/98513893aa6968b97d1b0df0937407e76e41b92accad4b6f8a87093eaaaa125d/diff:/var/lib/docker/overlay2/b82cc3de5486d714f0babf1ba64caba690dede00c10d60adcb736635edc3eaf3/diff:/var/lib/docker/overlay2/187bea67669cd8d2de88f6ba252751249243b6a3a3db21a1f78e12e7182b8558/diff:/var/lib/docker/overlay2/44efbdf16447b790efaf613ced36a7801203006beba5d53f7728d76bf9a1a723/diff",
"MergedDir": "/var/lib/docker/overlay2/5ecdbc7c1100fc3590882a2d58d1c71020defdb5cecd855427485250d61012ab/merged",
"UpperDir": "/var/lib/docker/overlay2/5ecdbc7c1100fc3590882a2d58d1c71020defdb5cecd855427485250d61012ab/diff",
"WorkDir": "/var/lib/docker/overlay2/5ecdbc7c1100fc3590882a2d58d1c71020defdb5cecd855427485250d61012ab/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/uploads/workspace/parabricks_sample/Data",
"Destination": "/uploads/workspace/parabricks_sample/Data",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/opt/parabricks",
"Destination": "/INSTALL",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/uploads/workspace/9DBIL9ME",
"Destination": "/uploads/workspace/9DBIL9ME",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/uploads/workspace",
"Destination": "/uploads/workspace",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/uploads/workspace/parabricks_sample/Ref",
"Destination": "/uploads/workspace/parabricks_sample/Ref",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "GPU-VM-NC12s-v2",
"Domainname": "",
"User": "1000:1000",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/miniconda/bin",
"CUDA_VERSION=10.1.243",
"CUDA_PKG_VERSION=10-1=10.1.243-1",
"LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64",
"NVIDIA_VISIBLE_DEVICES=all",
"NVIDIA_DRIVER_CAPABILITIES=compute,utility",
"NVIDIA_REQUIRE_CUDA=cuda>=10.1 brand=tesla,driver>=396,driver<397 brand=tesla,driver>=410,driver<411 brand=tesla,driver>=418,driver<419"
],
"Cmd": [
"fq2bam",
"--ref",
"parabricks_sample/Ref/Homo_sapiens_assembly38.fasta",
"--in-fq",
"parabricks_sample/Data/sample_1.fq.gz",
"parabricks_sample/Data/sample_2.fq.gz",
"--out-bam",
"output.bam",
"--x3",
"--tmp-dir",
"/uploads/workspace/9DBIL9ME"
],
"Image": "parabricks/release:v3.5.0",
"Volumes": null,
"WorkingDir": "/uploads/workspace",
"Entrypoint": [
"/parabricks/run_pipeline.py"
],
"OnBuild": null,
"Labels": {
"maintainer": "NVIDIA CORPORATION <cudatools@nvidia.com>"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "3ccfc9126c93fb12933d89f28314c3719180f8c6169cf4adecd8b59da4a6a549",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/default",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"host": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "e93977ab9b9b8ab0ba8b127243f8b6d66bca2596428a25857a131f68b5ee2b41",
"EndpointID": "0de75fab853cb4be062e1eae031598814599f0030e050c389c0c964644c9e139",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"DriverOpts": null
}
}
}
}
]
```
:::
<br>
<hr>
<br>
## binary 檔的真正位置在
:::warning
**資料來源:[[log] WGS + Azure:GPU-NC12s-v2(P100-16GB x2)](/fS60joh8TNqroKm2L_0WYg)**
- log 中出現的 binary 檔位置,並非是真正位置
```
/usr/local/cuda/.pb/binaries//bin/bwa
```
:::
```
/usr/local/cuda-10.1/.pb/binaries/bin
```
```bash=
usr/local/cuda-10.1/.pb/binaries/bin$ ls -ls
total 467644
360 -rwxrwxrwx 367256 Feb 23 applyBQSR
1192 -rwxrwxrwx 1218248 Feb 23 bamreadcount
296 -rwxrwxrwx 301024 Feb 23 bcftoolscall
432 -rwxrwxrwx 440368 Feb 23 bcftoolsmpileup
96 -rwxrwxrwx 96584 Feb 23 bedcov
500 -rwxrwxrwx 510696 Feb 23 bqsr
2424 -rwxrwxrwx 2481896 Feb 23 bwa
708 -rwxrwxrwx 723584 Feb 23 cnnscorevariants
220 -rwxrwxrwx 223192 Feb 23 cnvkit
844 -rwxrwxrwx 863712 Feb 23 collectmultiplemetrics
336 -rwxrwxrwx 342408 Feb 23 coverage
272 -rwxrwxrwx 276456 Feb 23 dbsnp
2252 -rwxrwxrwx 2305216 Feb 23 deepvariant
652 -rwxrwxrwx 664832 Feb 23 deviceQuery
296520 -rwxrwxrwx 303633183 Feb 23 gatk-package-4.1.0.0-local.jar
20 -rwxrwxrwx 19197 Feb 23 gatk_cpu
572 -rwxrwxrwx 584152 Feb 23 genotypegvcf
146552 -rwxrwxrwx 150068464 Feb 23 glnexus
2132 -rwxrwxrwx 2182792 Feb 23 htvc
252 -rwxrwxrwx 255960 Feb 23 indexgvcf
220 -rwxrwxrwx 223168 Feb 23 licenseManagerTool
324 -rwxrwxrwx 329688 Feb 23 licenseinfo
220 -rwxrwxrwx 223104 Feb 23 licensereturn
44 -rwxrwxrwx 42968 Feb 23 markQueryName
32 -rwxrwxrwx 31848 Feb 23 mergegvcf_humanpar
1824 -rwxrwxrwx 1867488 Feb 23 mutect
12 -rwxrwxrwx 10120 Feb 23 pb_driver
1000 -rwxrwxrwx 1022960 Feb 23 postsort
316 -rwxrwxrwx 321512 Feb 23 samtoolsmpileup
340 -rwxrwxrwx 346616 Feb 23 somaticsniper
432 -rwxrwxrwx 440296 Feb 23 sort
364 -rwxrwxrwx 370976 Feb 23 splitncigar
2920 -rwxrwxrwx 2989784 Feb 23 star
624 -rwxrwxrwx 636896 Feb 23 starfusion
468 -rwxrwxrwx 477168 Feb 23 trioCombineGVCF
768 -rwxrwxrwx 784640 Feb 23 variantfiltration
312 -rwxrwxrwx 317400 Feb 23 varscan
792 -rwxrwxrwx 809120 Feb 23 vqsr
```