
# 新建分子优化任务接口
#### 功能介绍
输入起始小分子以及属性约束，创建分子优化任务。
#### URI
POST /v1/{project_id}/task/optimization
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述      |
|:---|:---|:---|:---|
| project_id | 是    | String | 华为云项目id |
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述       |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户 token |
   
表3请求Body参数 
| 参数                 | 是否必选 | 参数类型                                                                                                               | 描述                 |
|:---|:---|:---|:---|
| smiles             | 是    | String                                                                                                             | 分子SMILES表达式        |
| num_trials         | 否    | Integer                                                                                                            | 生成分子数量             |
| strong_constraints | 否    | Array of [MoleculeConstraint] objects | 强约束集合              |
| weak_constraints   | 否    | Array of [MoleculeConstraint] objects | 弱约束集合              |
| num_expected       | 否    | Integer                                                                                                            | 期望最大返回条目数（排序后取Top） |
| binding_site       | 否    | [BindingSite] object                         | 结合位点               |
| custom_props       | 否    | Array of [CustomProp] objects                 | 用户已开启的自定义属性集合      |
   
 表4MoleculeConstraint 
| 参数        | 是否必选 | 参数类型                                                                                                                   | 描述                                                                            |
|:---|:---|:---|:---|
| name      | 否    | String                                                                                                                 | 属性名称                                                                          |
| type      | 是    | String                                                                                                                 | 属性约束类型 枚举值： - **bool** - **range** - **struct** - **minimize** - **maximize** |
| bool      | 否    | Boolean                                                                                                                | 属性约束类型bool的参数                                                                 |
| range     | 否    | Array of numbers                                                                                                       | 属性约束类型range的参数                                                                |
| struct    | 否    | [StructureConstraintParams] object | 结构约束参数                                                                        |
| quantiles | 否    | Array of numbers                                                                                                       | 属性约束类型minimize和maximize的参数 最小值：**0.0** 最大值：**1.0**                            |
   
 表5StructureConstraintParams 
| 参数        | 是否必选 | 参数类型             | 描述                                              |
|:---|:---|:---|:---|
| structs   | 是    | Array of strings | 子结构SMILES                                       |
| exclusive | 是    | Boolean          | 是否排除子结构                                         |
| operator  | 否    | String           | 多个子结构之间的逻辑关系 缺省值：**or** 枚举值： - **or** - **and** |
   
 表6BindingSite 
| 参数           | 是否必选 | 参数类型                                                                                       | 描述                                                       |
|:---|:---|:---|:---|
| protein      | 否    | String                                                                                     | 蛋白质3D结构，使用gzip压缩然后转base64格式 最小长度：**1** 最大长度：**10000000** |
| bounding_box | 否    | [BoundingBox] object | 结合口袋，包含口袋中心位置和尺寸大小                                       |
   
 表7BoundingBox 
| 参数     | 是否必选 | 参数类型             | 描述                                          |
|:---|:---|:---|:---|
| center | 否    | Array of numbers | 口袋中心坐标; x, y, z轴的坐标                         |
| size   | 否    | Array of numbers | 口袋尺寸大小; x, y, z轴的大小 最小值：**1.7** 最大值：**500** |
   
 表8CustomProp 
| 参数              | 是否必选 | 参数类型                                                                                             | 描述                                    |
|:---|:---|:---|:---|
| id              | 是    | String                                                                                           | 自定义属性的ID（API侧） 最小长度：**1** 最大长度：**64** |
| prop_definition | 否    | [PropDefinition] object | 属性定义的元信息                              |
   
 表9PropDefinition 
| 参数                    | 是否必选 | 参数类型                                                                                     | 描述                                           |
|:---|:---|:---|:---|
| id                    | 否    | String                                                                                   | 属性业务侧ID 最小长度：**1** 最大长度：**128**              |
| name                  | 否    | String                                                                                   | 属性名称 最小长度：**1** 最大长度：**32**                  |
| type                  | 否    | String                                                                                   | 属性类型 枚举值： - **binary** - **numerical**       |
| description           | 否    | String                                                                                   | 属性具体描述信息 最小长度：**0** 最大长度：**256**             |
| value_range           | 否    | [ValueRange] object | 属性有效值域区间                                     |
| optimal_range         | 否    | [ValueRange] object | 属性最优值域区间                                     |
| warning_range         | 否    | [ValueRange] object | 属性欠佳值域区间                                     |
| style                 | 否    | String                                                                                   | 模型参数呈现类型 枚举值： - **number** - **probability** |
| confidential_interval | 否    | Boolean                                                                                  | 模型推理是否呈现置信区间                                 |
   
 表10ValueRange 
| 参数              | 是否必选 | 参数类型    | 描述       |
|:---|:---|:---|:---|
| lower           | 否    | Number  | 值域下限     |
| lower_inclusive | 否    | Boolean | 是否包含值域下限 |
| upper           | 否    | Number  | 值域上限     |
| upper_inclusive | 否    | Boolean | 是否包含值域上限 |
   
#### 响应参数
无
#### 请求示例
创建一个分子优化任务
```
POST https://{endpoint}/v1/{project_id}/task/optimization
{
  "smiles" : "c1ccccc1",
  "num_trials" : 10000,
  "weak_constraints" : [ {
    "name" : "mw",
    "type" : "range",
    "range" : [ 100, 600 ]
  }, {
    "name" : "nhet",
    "type" : "range",
    "range" : [ 0, 15 ]
  }, {
    "name" : "fsp3",
    "type" : "range",
    "range" : [ 0.07317073170731707, null ]
  }, {
    "name" : "qedmean",
    "type" : "maximize"
  }, {
    "name" : "sascore",
    "type" : "minimize",
    "quantiles" : [ 0.1, 0.9 ]
  }, {
    "name" : "3b2dce64-c244-11ed-acf5-0255ac100017",
    "type" : "range",
    "range" : [ 0.2, 0.5 ]
  } ],
  "binding_site" : {
    "protein" : "H4sIAK8LamMC/3MM8fdVAANDBQU/IOUY7KfgqKBgYgEVNdAzMDACMfRMTAwUFIyN9EwsDUFcAyDPQA+mDgz8AHV0WkpOAAAA",
    "bounding_box" : {
      "center" : [ 1.3, 23.4, -14.5 ],
      "size" : [ 10.0, 10.0, 10.0 ]
    }
  },
  "custom_props" : [ {
    "id" : "3b2dce64-c244-11ed-acf5-0255ac100017",
    "prop_definition" : {
      "id" : "c4c07032d1934671a0dfe3bd10416eea",
      "name" : "custom_prop_name",
      "type" : "numerical",
      "description" : "custom_prop_description"
    }
  } ]
}
```
#### 响应示例
**状态码： 201**
分子优化任务成功提交响应，返回分子优化任务ID
```
"87ba6b54-2288-4a5d-90a2-3db01c22a9d2"
```
#### 状态码
| 状态码 | 描述                      |
|:---|:---|
| 201 | 分子优化任务成功提交响应，返回分子优化任务ID |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-eihealth/ErrorCode.html)。
