360 Secure SkillHub
360 安全技能中心

Polymer Database Search

该 Skill 说明如何调用 Bohrium 开放数据接口的聚合物数据表,按 DOI、聚合物名称或性能字段检索记录,返回结构、热学、光学、力学、电学、分子量等信息;因属性字段为字符串,数值范围筛选需在客户端解析,并提供统计与选材建议流程。

sorrymaker0624
sorrymaker0624
热度 16.02
最近更新 2026-05-22 11:41:59
分类:搜索依赖:第三方 API / 代码执行应用场景:研究 / 数据处理 / 推荐

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add polymer-db
Metadata
name
polymer-db
version
1.0.0
description
Polymer database search: query the Polymer-Data-Bank for polymer data, supporting searches by DOI, polymer name, properties, etc. Returns structure, thermal, optical, mechanical, and electrical property information. Use when users ask about polymer properties (Tg/Td/transmittance/mechanical properties), look up polymer data from specific papers, or need to filter polymers by performance criteria.

Polymer Database Search (Polymer-Data-Bank)

API Information

  • Endpoint: POST https://open.bohrium.com/openapi/v1/database/common_data/list
  • Authentication: Header accessKey: <YOUR_ACCESS_KEY>
  • tableAk: 123zl00 (Polymer-Data-Bank, 280k+ records)
  • Data Source: Bohrium Materials Database

Request Format

curl -s -X POST 'https://open.bohrium.com/openapi/v1/database/common_data/list' \
  -H 'Content-Type: application/json' \
  -H 'accessKey: <YOUR_ACCESS_KEY>' \
  -d '<JSON body>'

Basic Request Body

{
  "tableAk": "123zl00",
  "page": 1,
  "pageSize": 50,
  "filters": { ... },
  "selectedFields": ["field1", "field2"],
  "orderBy": [{"field": "fieldName", "order": "asc"}]
}

Parameters

Parameter Type Required Description
tableAk string Yes Fixed "123zl00"
page int Yes Page number, starting from 1
pageSize int Yes Items per page, max 5000
filters object No Filter conditions (Filter structure)
selectedFields []string No Only return specified fields
orderBy []object No Sort by {"field": "xxx", "order": "asc/desc"}

Filter Structure

{
  "type": 2,
  "groupOperator": "and",
  "sub": [
    {
      "type": 1,
      "field": "field_name (dataIndex)",
      "operator": "eq",
      "value": "value"
    }
  ]
}
  • type: 1 = Simple condition, 2 = Compound condition (with sub)
  • groupOperator: "and" | "or"
  • operator: eq / neq / like / gt / gte / lt / lte / in / nin / between

Important limitation: All property fields are string type (values like "71.3 °C", "[255 °C,288 °C]"). Operators like gt/lt perform lexicographic comparison, not numeric. Numeric range filtering must be done client-side after parsing.

Field Name Mapping

Basic Information

Common Name dataIndex Example Value
DOI doi "10.1021/acs.macromol.9b02359"
Polymer name polymer_name "PI", "PU"
Polymer type polymer_type "Polyimide"
Monomer composition/structure components "6FDA:O=C1OC...;ODA:Nc1ccc..."
Feed ratio feed_ratio_text "DABz/m-BAPS = 1/1"
Ratio type ratio_type "mole", "weight"

Thermal Properties

Common Name dataIndex Related Fields
Tg / Glass transition temperature GlassTransitionTemperature(Tg) test_method_GlassTransitionTemperature(Tg), heating_rate_GlassTransitionTemperature(Tg), atmosphere_GlassTransitionTemperature(Tg)
Td / Decomposition temperature DecompositionTemperature(Td) decomposition_criterion_DecompositionTemperature(Td), atmosphere_DecompositionTemperature(Td)
Tm / Melting temperature MeltingTemperature(Tm) test_method_MeltingTemperature(Tm)
Tc / Crystallization temperature CrystallizationTemperature(Tc) —
CTE / Coefficient of thermal expansion CoefficientofThermalExpansion(CTE) —
Thermal conductivity ThermalConductivity —

Optical Properties

Common Name dataIndex Related Fields
Transmittance Transmittance wavelength_Transmittance, thickness_Transmittance
Refractive index RefractiveIndex(n) wavelength_RefractiveIndex(n)
Yellow index YellowIndex(YI)/WhitenessIndex(WI) —
Haze Haze —
Birefringence Birefringence(Δn) —
Cut-off wavelength Cut-offWavelength(λ_cut) —
Abbe number AbbeNumber(νd) —

Mechanical Properties

Common Name dataIndex
Tensile strength TensileStrength
Tensile modulus / Young's modulus TensileModulus
Elongation at break ElongationatBreak
Flexural strength FlexuralStrength
Flexural modulus FlexuralModulus
Impact strength ImpactStrength
Shear strength ShearStrength
Shore hardness ShoreHardness

Electrical Properties

Common Name dataIndex
Dielectric constant Dk DielectricConstant(Dk)
Dielectric loss Df DielectricLoss(Df/tanδ)
Breakdown strength BreakdownStrength
Volume resistivity VolumeResistivity
Proton conductivity ProtonConductivity

Molecular Weight

Common Name dataIndex
Number-average molecular weight Mn mn_value
PDI / Polydispersity index pdi_value

Query Strategies

Exact Query (Q1 type)

User asks "properties of a specific DOI/polymer": query directly with selectedFields limiting returned fields.

{
  "tableAk": "123zl00",
  "page": 1,
  "pageSize": 50,
  "filters": {
    "type": 2, "groupOperator": "and",
    "sub": [{"type": 1, "field": "doi", "operator": "eq", "value": "10.1021/..."}]
  },
  "selectedFields": ["polymer_name", "polymer_type", "GlassTransitionTemperature(Tg)", "DecompositionTemperature(Td)"]
}

Numeric Range Filtering (Q2 type)

User asks "polymers with Tg > 350°C":

  1. Cannot directly use gt operator (field is string, lexicographic comparison is inaccurate)
  2. Correct approach: Use like operator to exclude empty values ("value": ""), set pageSize: 5000, fetch data and parse numerically on client side
import re

def parse_value_celsius(val_str):
    """Parse temperature string with units, convert to °C"""
    if not val_str:
        return None
    nums = re.findall(r'[-+]?\d+\.?\d*', val_str)
    if not nums:
        return None
    values = [float(n) for n in nums]
    max_val = max(values)
    if 'K' in val_str and '°C' not in val_str:
        return max_val - 273.15
    elif '°F' in val_str:
        return (max_val - 32) * 5 / 9
    return max_val
  1. After filtering, perform statistical analysis (type distribution, frequent monomers, etc.)

Analysis & Recommendation (Q3 type)

User asks "suggestions for synthesizing a polymer with XX properties":

  1. Use like "" to fetch records with that property data (max 5000/page, may need pagination)
  2. Parse values on client side, filter records meeting criteria
  3. Analyze polymer_type distribution, frequent monomers in components
  4. Provide structural design suggestions based on data patterns

Data Format Notes

components field format

monomer_name:SMILES;monomer_name:SMILES;...

Example: 6FDA:O=C1OC(=O)c2cc(...)ccc21;ODA:Nc1ccc(Oc2ccc(N)cc2)cc1

Property value format (all strings)

  • Single value: "71.3 °C"
  • Multiple values: "[255 °C,288 °C]"
  • Descriptive: "over 90 %", "greater than 350 °C"
  • With error: "90.8% ± 0.6%"

System fields (ignore)

  • _id: MongoDB ObjectID
  • a1b2c3d4e5_is_locked: Lock flag
  • a1b2c3d4e5_owner_id: Data owner
  • a1b2c3d4e5_source: Data source
  • a1b2c3d4e5_status: Review status
  • authors: Contributor info
  • createTime / updateTime: Timestamps

Important Notes

  1. Inconsistent units: Same field may mix °C, K, °F — unit conversion is required
  2. String values: All property fields are strings, numeric comparison must be done client-side
  3. Multi-value fields: A record may have multiple values for a property (array format like "[val1,val2]")
  4. pageSize limit: Max 5000. For large datasets, use pagination (total count in data.count)
  5. Special characters in field names: e.g. GlassTransitionTemperature(Tg) contains parentheses, use directly as JSON key
  6. like empty string: "operator": "like", "value": "" matches all non-empty records
  7. When presenting results to user, filter out system fields (a1b2c3d4e5_*, authors), show only meaningful data