
# 创建分子优化作业 - CreateOptmJob
#### 功能介绍
创建分子优化作业。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-ai4sservice/ai4sservice_03_0100.html)。
#### URI
POST /v1/{project_id}/eihealth-projects/{eihealth_project_id}/drug-jobs/optimization
表1路径参数 
| 参数                  | 是否必选 | 参数类型   | 描述                                                                                                                                                                                |
|:---|:---|:---|:---|
| project_id          | 是    | String | **参数解释**： 项目ID，您可以从[获取项目ID](https://support.huaweicloud.com/api-ai4sservice/ai4sservice_03_0033.html)中获取。 **约束限制**： 不涉及 **取值范围**： 仅支持字母、数字、中划线和下划线，长度为\[1-128\]个字符。 **默认取值**： 不涉及 |
| eihealth_project_id | 是    | String | **参数解释**： 空间ID，您可以从[获取空间ID](https://support.huaweicloud.com/api-ai4sservice/ai4sservice_03_0099.html)中获取。 **约束限制**： 不涉及 **取值范围**： 仅支持字母、数字、中划线和下划线，长度为\[1-128\]个字符。 **默认取值**： 不涉及 |
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释**： 用户Token。 Token认证就是在调用API的时候将Token加到请求消息头，从而通过身份认证，获得操作API的权限，[获取Token](https://support.huaweicloud.com/api-ai4sservice/ai4sservice_03_0011.html)接口响应消息头中X-Subject-Token的值即为Token。 **约束限制**： 不涉及 **取值范围**： 长度为\[1-32768\]个字符。 **默认取值**： 不涉及 |
   
表3请求Body参数 
| 参数                   | 是否必选 | 参数类型                                                                                | 描述                                                                                          |
|:---|:---|:---|:---|
| basic_info           | 是    | [CreateDrugJobBasicInfo] object     | **参数解释**： 创建药物作业基本信息。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                             |
| smiles               | 否    | String                                                                              | **参数解释**： 分子SMILES表达式。 **约束限制**： 不涉及 **取值范围**： 长度为\[1-512\]个字符。 **默认取值**： 不涉及               |
| molecule_file        | 否    | [DrugFile] object                                 | **参数解释**： 分子文件。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                                   |
| binding_site         | 否    | [BindSiteDto] object                           | **参数解释**： 受体。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                                     |
| binding_sites        | 否    | Array of [BindSiteDto] objects                 | **参数解释**： 受体列表和受体是二选一的关系，受体列表优先级最高。 **约束限制**： 不涉及 **取值范围**： 受体数量范围为\[0-2\]。 **默认取值**： 不涉及   |
| weak_constraints     | 否    | Array of [WeakConstraintDto] objects     | **参数解释**： 弱约束集合。 **约束限制**： 弱约束数量范围为\[0-10\]。 **取值范围**： 不涉及 **默认取值**： 不涉及                    |
| strong_constraints   | 否    | Array of [StrongConstraintDto] objects | **参数解释**： 强约束集合。 **约束限制**： 不涉及 **取值范围**： 强约束数量范围为\[0-5\]。 **默认取值**： 不涉及                     |
| sampler_mixin_weight | 否    | Float                                                                               | **参数解释**： 初始化采样权重。 **约束限制**： 不涉及 **取值范围**： 0.5-1 **默认取值**： 0.6                              |
| base_model_id        | 否    | String                                                                              | **参数解释**： 基模型ID。 **约束限制**： 不涉及 **取值范围**： 长度为\[0-128\]个字符。 **默认取值**： pangu-drug-model        |
| model_ids            | 否    | Array of strings                                                                    | **参数解释**： 模型ID列表。 **约束限制**： 模型ID数量范围为\[0-10\]，模型ID长度为\[1-128\]。 **取值范围**： 不涉及 **默认取值**： 不涉及 |
| num_trials           | 否    | Integer                                                                             | **参数解释**： 生成分子数量。 **约束限制**： 不涉及 **取值范围**： 0-5000 **默认取值**： 5000                             |
   
 表4CreateDrugJobBasicInfo 
| 参数                | 是否必选 | 参数类型             | 描述                                                                                                                             |
|:---|:---|:---|:---|
| name              | 是    | String           | **参数解释**： 作业名称。 **约束限制**： 不涉及 **取值范围**： 长度范围\[5-64\]，允许大小写字母、数字、空格、下划线（_）和中划线（-），只能以数字或字母开头。 **默认取值**： 不涉及                     |
| labels            | 否    | Array of strings | **参数解释**： 标签。 **约束限制**： 标签数量范围为\[0-5\]，单个标签长度为\[1-32\]个字符，支持中文、字母、数字、空格、下划线（_）和中划线（-），且不能以空格开头或结尾。 **取值范围**： 不涉及 **默认取值**： 不涉及 |
| upstream_job_info | 否    | String           | **参数解释**： 上游作业信息。 **约束限制**： 不涉及 **取值范围**： 长度为\[1-10240\]个字符。 **默认取值**： 不涉及                                                     |
   
 表5DrugFile 
| 参数     | 是否必选 | 参数类型   | 描述                                                                                                                                                               |
|:---|:---|:---|:---|
| source | 是    | String | **参数解释**： 受体的数据源。 **约束限制**： 不涉及 **取值范围**： - EXTRANET：外部网络数据 - PRIVATE：私有数据 - PUBLIC：公共数据 - RAW ：源数据 **默认取值**： 不涉及                                                |
| url    | 否    | String | **参数解释**： 文件URL。 **约束限制**： 当数据源source为外部网络数据时为https地址，为用户私有数据中心时为空间路径，为公共数据场景时为obs地址。 **取值范围**： 文件URL仅支持以.pdb、.mol2、.sdf、.smi为结尾，长度为\[1-2000\]个字符。 **默认取值**： 不涉及 |
| format | 否    | String | **参数解释**： 文件格式。 **约束限制**： 仅数据源source为 RAW 时提供。 **取值范围**： - PDB - SDF - MOL2 - SMI **默认取值**： 不涉及                                                                  |
| data   | 否    | String | **参数解释**： 文件原始数据。 **约束限制**： 仅数据源source为RAW时提供。 **取值范围**： 长度为\[0-10000000\]个字符。 **默认取值**： 不涉及                                                                     |
   
 表6BindSiteDto 
| 参数            | 是否必选 | 参数类型                                                                | 描述                                                                                                                       |
|:---|:---|:---|:---|
| name          | 否    | String                                                              | **参数解释**： 靶点名称，只能设置为target1或target2。 **约束限制**： 不涉及 **取值范围**： - target1：靶点名称target1。 - target2：靶点名称target2。 **默认取值**： 不涉及 |
| receptor      | 是    | [ReceptorDrugFile] object | **参数解释**： 受体文件。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                                                                |
| engine        | 否    | String                                                              | **参数解释**： 引擎，支持DSDP、AUTODOCK_VINA，默认值为AUTODOCK_VINA。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                           |
| docking_type  | 否    | String                                                              | **参数解释**： 对接类型，仅支持POCKET_DOCKING。 **约束限制**： 不涉及 **取值范围**： - POCKET_DOCKING：口袋对接 **默认取值**： POCKET_DOCKING                 |
| bounding_box  | 否    | [BoundingBoxDto] object     | **参数解释**： 结合口袋，包含口袋中心位置和尺寸大小。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                                                  |
| remove_ion    | 否    | Boolean                                                             | **参数解释**： 去除受体中的离子。 **约束限制**： 不涉及 **取值范围**： - true：去除。 - false：不去除。 **默认取值**： true                                       |
| remove_water  | 否    | Boolean                                                             | **参数解释**： 去除受体中的水分子。 **约束限制**： 不涉及 **取值范围**： - true：去除。 - false：不去除。 **默认取值**： true                                      |
| remove_ligand | 否    | Boolean                                                             | **参数解释**： 去除受体中的配体分子。 **约束限制**： 不涉及 **取值范围**： - true：去除。 - false：不去除。 **默认取值**： true                                     |
| add_hydrogen  | 否    | Boolean                                                             | **参数解释**： 增加氢原子。 **约束限制**： 不涉及 **取值范围**： - true：增加氢原子。 - false：不增加氢原子。 **默认取值**： false                                   |
   
 表7ReceptorDrugFile 
| 参数     | 是否必选 | 参数类型   | 描述                                                                                                                                                |
|:---|:---|:---|:---|
| source | 是    | String | **参数解释**： 受体的数据源。 **约束限制**： 不涉及 **取值范围**： - EXTRANET：外部网络数据 - PRIVATE：私有数据 - PUBLIC：公共数据 - RAW ：源数据 **默认取值**： 不涉及                                 |
| url    | 否    | String | **参数解释**： 文件URL。 **约束限制**： 当数据源source为外部网络数据时为https地址，为用户私有数据中心时为空间路径，为公共数据场景时为obs地址。 **取值范围**： 文件URL仅支持以.pdb格式结尾，长度为\[1-2000\]个字符。 **默认取值**： 不涉及 |
| format | 否    | String | **参数解释**： 文件格式。 **约束限制**： 仅数据源source为RAW时提供。 **取值范围**： - PDB：PDB文件 **默认取值**： 不涉及                                                                  |
| data   | 否    | String | **参数解释**： 文件原始数据。 **约束限制**： 仅数据源source为RAW时提供。 **取值范围**： 长度为\[0-10000000\]个字符 **默认取值**： 不涉及                                                       |
   
 表8BoundingBoxDto 
| 参数      | 是否必选 | 参数类型             | 描述                                                                                                        |
|:---|:---|:---|:---|
| center  | 是    | Array of doubles | **参数解释**： 口袋中心坐标，x、y、z 轴的坐标。 **约束限制**： 坐标数量固定为3，坐标大小范围为\[-9999999-99999999\]。 **取值范围**： 不涉及 **默认取值**： 不涉及 |
| size    | 是    | Array of floats  | **参数解释**： 口袋尺寸大小，x、y、z轴的大小。 **约束限制**： 数组元素数量固定为3，x、y、z轴的大小范围为\[2-500\]。 **取值范围**： 不涉及 **默认取值**： 不涉及       |
| padding | 否    | Float            | **参数解释**： 填充。 **约束限制**： 不涉及 **取值范围**： 0-20 **默认取值**： 不涉及                                                  |
   
 表9WeakConstraintDto 
| 参数          | 是否必选 | 参数类型                                                                                        | 描述                                                                                                                                               |
|:---|:---|:---|:---|
| id          | 否    | String                                                                                      | **参数解释**： 自定义模型ID。 **约束限制**： 仅弱约束为模型时填写。 **取值范围**： 长度为\[1-128\]个字符。 **默认取值**： 不涉及                                                                |
| name        | 否    | String                                                                                      | **参数解释**： 属性名称。 **约束限制**： 不涉及 **取值范围**： 长度为\[1-128\]个字符。 **默认取值**： 不涉及                                                                           |
| type        | 是    | String                                                                                      | **参数解释**： 属性约束类型。 **约束限制**： 不涉及 **取值范围**： - bool：阴性/阳性 - range：区间 - struct：包含/排除 - minimize：最小化 - maximize：最大化 - interaction：相互作用力 **默认取值**： 不涉及 |
| bool        | 否    | Boolean                                                                                     | **参数解释**： 属性约束类型bool的参数。 **约束限制**： 不涉及 **取值范围**： - true - false **默认取值**： 不涉及                                                                    |
| range       | 否    | Array of floats                                                                             | **参数解释**： 属性约束类型range的参数。 **约束限制**： 参数数量固定为2，参数大小范围为\[-9999-9999\]。 **取值范围**： 不涉及 **默认取值**： 不涉及                                                  |
| struct      | 否    | [StructureConstraintParamsDto] object | **参数解释**： 结构约束参数。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                                                                                      |
| quantiles   | 否    | Array of floats                                                                             | **参数解释**： 属性约束类型minimize和maximize的参数。 **约束限制**： 参数数量固定为2，参数大小范围为\[0.0-1.0\]。 **取值范围**： 不涉及 **默认取值**： 不涉及                                         |
| interaction | 否    | [InteractionConstraintDto] object         | **参数解释**： 相互作用力约束参数。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                                                                                   |
   
 表10StrongConstraintDto 
| 参数          | 是否必选 | 参数类型                                                                                        | 描述                                                                                                                 |
|:---|:---|:---|:---|
| id          | 否    | String                                                                                      | **参数解释**： 自定义模型ID。 **约束限制**： 仅强约束为模型时填写。 **取值范围**： 长度为\[1-128\]个字符。 **默认取值**： 不涉及                                  |
| name        | 否    | String                                                                                      | **参数解释**： 属性名称。 **约束限制**： 不涉及 **取值范围**： 长度为\[1-128\]个字符。 **默认取值**： 不涉及                                             |
| type        | 是    | String                                                                                      | **参数解释**： 属性约束类型。 **约束限制**： 不涉及 **取值范围**： - bool：阴性/阳性 - range：区间 - struct：包含/排除 - interaction：相互作用力 **默认取值**： 不涉及 |
| bool        | 否    | Boolean                                                                                     | **参数解释**： 属性约束类型bool的参数。 **约束限制**： 不涉及 **取值范围**： - true - false **默认取值**： 不涉及                                      |
| range       | 否    | Array of floats                                                                             | **参数解释**： 属性约束类型range的参数。 **约束限制**： 参数数量固定为2，大小范围为\[-9999-9999\]。 **取值范围**： 不涉及 **默认取值**： 不涉及                      |
| struct      | 否    | [StructureConstraintParamsDto] object | **参数解释**： 结构约束参数。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                                                        |
| interaction | 否    | [InteractionConstraintDto] object         | **参数解释**： 相互作用力约束参数。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                                                     |
   
 表11StructureConstraintParamsDto 
| 参数        | 是否必选 | 参数类型             | 描述                                                                                                    |
|:---|:---|:---|:---|
| structs   | 是    | Array of strings | **参数解释**： 子结构SMILES。 **约束限制**： 子结构数量范围为\[1-8\]，子结构SMILES的长度为\[1-120\]个字符。 **取值范围**： 不涉及 **默认取值**： 不涉及 |
| exclusive | 是    | Boolean          | **参数解释**： 是否排除子结构。 **约束限制**： 不涉及 **取值范围**： - true：排除子结构。 - false：不排除子结构。 **默认取值**： 不涉及                |
| operator  | 否    | String           | **参数解释**： 多个子结构之间的逻辑关系。 **约束限制**： 不涉及 **取值范围**： - or：或 - and：与 **默认取值**： 不涉及                          |
   
 表12InteractionConstraintDto 
| 参数           | 是否必选 | 参数类型                                                                | 描述                                                                                                  |
|:---|:---|:---|:---|
| interactions | 是    | Array of [Interaction] objects | **参数解释**： 相互作用力列表。 **约束限制**： 数组数量范围为\[1-8\]。 **取值范围**： 不涉及 **默认取值**： 不涉及                            |
| exclusive    | 是    | Boolean                                                             | **参数解释**： 是否排除指定的约束作用力。 **约束限制**： 不涉及 **取值范围**： - true：排除。 - false：不排除。 true 或 false。 **默认取值**： 不涉及 |
| operator     | 否    | String                                                              | **参数解释**： 多个子结构之间的逻辑关系。 **约束限制**： 不涉及 **取值范围**： - or：或 - and：与 **默认取值**： 不涉及                        |
   
 表13Interaction 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                        |
|:---|:---|:---|:---|
| binding_site | 是    | String | **参数解释**： 靶点名称。 **约束限制**： 不涉及 **取值范围**： - target1：靶点名称target1。 - target2：靶点名称target2。 **默认取值**： 不涉及                                                                       |
| type         | 是    | String | **参数解释**： 相互作用力类型。 **约束限制**： 不涉及 **取值范围**： - hydrogen_bond：氢键作用力 - hydrophobic_action：疏水作用 - salt_bridge：盐桥 - pi_stacking：Pi-Stacking - pi_cation：Pi-Cation **默认取值**： 不涉及 |
| amino_acid   | 是    | String | **参数解释**： 氨基酸。 **约束限制**： 不涉及 **取值范围**： 长度为\[4-16\]个字符。 **默认取值**： 不涉及                                                                                                      |
   
#### 响应参数
**状态码：201**
表14响应Body参数 
| 参数                | 参数类型    | 描述                                                          |
|:---|:---|:---|
| id                | String  | **参数解释**： 作业ID。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及   |
| limit_concurrency | Integer | **参数解释**： 限制的并发量。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及 |
   
#### 请求示例
创建分子优化作业，作业名称为demo-job，分子SMILES表达式为string，靶点设置的受体文件为project:/test.pdb，口袋中心位置为\[0,0,0\]，口袋尺寸大小为\[500,500,500\]，设置弱约束为eye_corrosion，类型为布尔值，值为true，设置强约束为sascore，类型为range，值为\[0,1\]。
```
https://{endpoint}/v1/{project_id}/eihealth-projects/{eihealth_project_id}/drug-jobs/optimization
{
  "basic_info" : {
    "name" : "demo-job",
    "labels" : [ "labelA" ]
  },
  "smiles" : "string",
  "num_trials" : 500,
  "binding_sites" : [ {
    "name" : "target1",
    "receptor" : {
      "source" : "PRIVATE",
      "url" : "project:/test.pdb"
    },
    "engine" : "DSDP",
    "bounding_box" : {
      "center" : [ 0, 0, 0 ],
      "size" : [ 500, 500, 500 ]
    },
    "remove_ion" : false,
    "remove_water" : false,
    "remove_ligand" : false
  } ],
  "weak_constraints" : [ {
    "name" : "eye_corrosion",
    "type" : "bool",
    "bool" : true
  } ],
  "strong_constraints" : [ {
    "name" : "sascore",
    "type" : "range",
    "range" : [ 0, 1 ]
  } ]
}
```
#### 响应示例
**状态码：201**
CREATED
- 创建分子优化作业成功。
  ```
  {
    "id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1"
  }
  ```
- 创建分子优化作业成功，当前运行作业数已达配额限制，此作业会等待。
  ```
  {
    "id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1",
    "limit_concurrency" : 50
  }
  ```
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 201 | CREATED |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-ai4sservice/ErrorCode.html)。
