
# 示例：使用命令行执行简单脚本
基因容器命令行工具提供了上传原始数据和参考组数据至OBS桶内的功能。当然您还可以使用 OBS 客户端上传数据。
#### 前提条件
请确保已完成命令行工具安装，且已创建环境。如未完成，请参见[安装命令行工具](https://support.huaweicloud.com/clir-gcs/gcs_clir_02_0001.html)完成操作。
 #### 上传本地数据文件
为了执行基因比对任务，需要将本地的原始数据文件及参考组文件上传至对象存储桶中。
基因容器服务提供原始测试数据供您使用，下载路径为：
- <http://opengene.org/data/R1.fq.gz>
- <http://opengene.org/data/R2.fq.gz>
 
此外，基因容器服务已在公共数据桶中上传hg19.fa\*参考组，**您可以直接使用，无需下载或是上传至OBS桶中。公共参考组数据由基因容器自动挂载到对象存储的/ref目录下。**
本示例中使用的是GCS提供的原始测试数据，将已下载到本地路径为"/LOCAL_FILE"文件夹内的原始数据上传至OBS桶中的sample目录下。
如下示例以将原始数据文件传至 sample 目录，参考组文件传至 reference目录为例。执行以下命令上传基本文件，其中"LOCAL_FILE"为本地文件路径。
```
gcs obs upload /LOCAL_FILE/R1.fq.gz --obs-path sample
gcs obs upload /LOCAL_FILE/R2.fq.gz --obs-path sample
gcs obs upload /LOCAL_FILE/hg19.fa     --obs-path reference
gcs obs upload /LOCAL_FILE/hg19.fa.amb --obs-path reference
gcs obs upload /LOCAL_FILE/hg19.fa.ann --obs-path reference
gcs obs upload /LOCAL_FILE/hg19.fa.bwt --obs-path reference
gcs obs upload /LOCAL_FILE/hg19.fa.fai --obs-path reference
gcs obs upload /LOCAL_FILE/hg19.fa.pac --obs-path reference
gcs obs upload /LOCAL_FILE/hg19.fa.sa  --obs-path reference
```
#### 设置执行环境和SFS
在执行gcs命令前，按如下命令在配置项中预置sfs-pvc-name和environment-name两个参数。
1. 执行如下命令设置任务执行环境。 
   **gcs set env** envrionmentName
   其中envrionmentName是环境名称。
   
   
2. 执行如下命令设置SFS。 
   **gcs set sfs**sfsPvcName
   其中sfsPvcName是sfs PVC的名称，具体命令请参见[gcs set sfs](https://support.huaweicloud.com/clir-gcs/gcs_clir_04_0022.html)。
   
   
 
#### 提交单个任务
使用命令行工具执行gcs sub job提交单个任务。执行单任务即指由基因容器服务在集群中选择某一个节点上的容器来运行输入参数FILENAME中的内容。
以执行脚本名为bwa-help.sh为例，其中脚本中内容为查看bwa软件使用方法，并将输出重定向至/obs/log.err文件中。bwa软件为基因测序常用工具，作为公共工具集成在基因容器服务供您使用。
bwa-help.sh文件中内容为：
```
#cat bwa-help.sh
sleep 5 && echo 123 >/obs/log.err
```
执行如下命令，为脚本bwa-help.sh申请1G内存、0.5核CPU，并在基因容器中执行该脚本。
```
gcs sub job --memory 1g --cpu 0.5 --shell sh --tool bwa:0.7.12 bwa-help.sh
```
#### 提交一组任务
以多个样本并行执行 bwa 软件使用方法为例。首先完成 [上传本地数据文件] 中的文件上传后，假设需要对上传的原始文件、参考基因组进行基因比对，有如下脚本 bwa_mem.sh：
```
#cat bwa_mem.sh
fastq=$1
ref=$2
bwa mem $ref $fastq
```
此时，如果对这个脚本执行不同参数，可以额外写一个脚本 bwa_mem_work.sh。注意这里使用的 /ref 文件夹是由基因窗口提供的hg19.fa公共参考组数据，无需上传。
```
#cat bwa_mem_work.sh
sh bwa_mem.sh /obs/sample/R1.fq.gz /ref/reference_files/hg19.fa >/obs/sample1.sam
sh bwa_mem.sh /obs/sample/R2.fa.gz /ref/reference_files/hg19.fa >/obs/sample2.sam
```
若如[上传本地数据文件]所示，上传的自己本地文件，则这里 bwa_mem_work.sh 应写为：
```
#cat bwa_mem_work.sh
sh bwa_mem.sh /obs/sample/R1.fq.gz /obs/reference/hg19.fa >/obs/sample1.sam
sh bwa_mem.sh /obs/sample/R2.fa.gz /obs/reference/hg19.fa >/obs/sample2.sam
```
对这个额外脚本，需要使用 gcs sub repjob 投递。同样这里可以使用 bwa:0.7.12 这个工具：
```
gcs sub repjob -cpu 0.5 --memory 1g --shell sh --tool bwa:0.7.12 bwa_mem_work.sh
```
