공개된 특허 화학 구조 데이터베이스 및 리소스

 공개된 특허 화학 구조 데이터베이스 및 리소스

📊 주요 공개 특허 구조 데이터베이스

1. SureChEMBL

  • 제공: EMBL-EBI
  • 규모: 2,000만개 이상 화합물
  • 특징:
    • 특허에서 자동 추출한 화학 구조
    • 매일 업데이트
    • SMILES, InChI 형식 제공
  • 접근: https://www.surechembl.org
  • API: RESTful API 무료 제공

# SureChEMBL API 사용 예시

import requests

 

def search_surechembl(smiles):

    url = "https://www.surechembl.org/api/v1/compounds"

    params = {"smiles": smiles}

    response = requests.get(url, params=params)

    return response.json()

2. PubChem Patents

  • 제공: NCBI/NIH
  • 규모: 1,600만개 이상 특허 문서
  • 특징:
    • USPTO, EPO, WIPO 특허 포함
    • 화학 구조 검색 가능
    • 생물학적 활성 데이터 연계
  • 접근: https://pubchem.ncbi.nlm.nih.gov/patents

# PubChem 다운로드 예시

wget https://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF/

3. Google Patents Public Datasets

  • 제공: Google Cloud
  • 규모: 1억개 이상 특허 문서
  • 특징:
    • BigQuery로 쿼리 가능
    • 전문(full-text) 검색
    • 화학 구조 추출 데이터 포함
  • 접근: BigQuery Public Datasets

-- BigQuery 쿼리 예시

SELECT

  publication_number,

  title,

  abstract

FROM `patents-public-data.patents.publications`

WHERE REGEXP_CONTAINS(claims.text, r'C\d+H\d+')  -- 화학식 검색

LIMIT 100

4. ChEMBL Patent Data

  • 제공: EMBL-EBI
  • 규모: 200만개 이상 화합물
  • 특징:
    • 의약품 관련 특허 중심
    • 생물활성 데이터 포함
    • 타겟 정보 연계
  • 접근: https://www.ebi.ac.uk/chembl/

🔓 무료 특허 구조 검색 도구

1. USPTO Patent Full-Text Database

# USPTO 벌크 다운로드

import urllib.request

 

# 화학 특허 (Class 514 - Drug, bio-affecting)

url = "https://bulkdata.uspto.gov/data/patent/grant/redbook/2024/"

urllib.request.urlretrieve(url + "file.zip", "patents_2024.zip")

2. EPO Open Patent Services (OPS)

# EPO API 사용

import requests

 

def search_epo_patent(keyword):

    base_url = "https://ops.epo.org/3.2/rest-services/published-data/search"

    headers = {"Authorization": "Bearer YOUR_TOKEN"}

    params = {

        "q": f"ta={keyword}",  # title/abstract 검색

        "Range": "1-100"

    }

    return requests.get(base_url, headers=headers, params=params)

3. WIPO Global Brand Database

  • 화학 구조 포함 특허
  • PCT 출원 데이터
  • 무료 벌크 다운로드 가능

💾 다운로드 가능한 데이터셋

1. IBM ZINC Patent Database

# ZINC 특허 데이터 다운로드

wget http://zinc20.docking.org/patents/patents.smi.gz

gunzip patents.smi.gz

 

# 1,000만개 특허 화합물

# SMILES 형식

2. ChemSpider Patents

# ChemSpider API

from chemspipy import ChemSpider

 

cs = ChemSpider('YOUR_API_KEY')

compound = cs.get_compound(2157)  # Aspirin

patents = compound.patents  # 관련 특허 리스트

3. DrugBank Patent Data

<!-- DrugBank XML 형식 -->

<drug>

  <drugbank-id>DB00945</drugbank-id>

  <name>Aspirin</name>

  <patents>

    <patent>

      <number>US5847003</number>

      <country>United States</country>

      <expires>2018-09-22</expires>

    </patent>

  </patents>

</drug>

🔍 특허 구조 검색 쿼리 예시

SQL 쿼리 (로컬 DB)

-- PostgreSQL with RDKit

CREATE TABLE patent_structures (

    patent_id VARCHAR(50),

    smiles TEXT,

    mol mol  -- RDKit molecule type

);

 

-- 구조 유사성 검색

SELECT patent_id, smiles

FROM patent_structures

WHERE mol@>'c1ccccc1'  -- 벤젠 고리 포함

  AND tanimoto_sml(morgan_fp(mol,2),

                   morgan_fp('CCO'::mol,2)) > 0.7;

Python으로 특허 구조 데이터 처리

import pandas as pd

from rdkit import Chem

from rdkit.Chem import AllChem

 

# SureChEMBL 데이터 로드

df = pd.read_csv('surechembl_patents.csv')

 

# SMILES 유효성 검증

def validate_smiles(smiles):

    try:

        mol = Chem.MolFromSmiles(smiles)

        return mol is not None

    except:

        return False

 

df['valid'] = df['smiles'].apply(validate_smiles)

 

# 지문 계산

def calculate_fingerprint(smiles):

    mol = Chem.MolFromSmiles(smiles)

    if mol:

        return AllChem.GetMorganFingerprintAsBitVect(mol, 2, 2048)

    return None

 

df['fingerprint'] = df['smiles'].apply(calculate_fingerprint)

📈 한국 특허 구조 데이터

KIPRIS (한국특허정보원)

# KIPRIS OpenAPI 사용

import requests

import xml.etree.ElementTree as ET

 

def search_korean_patent(keyword):

    url = "http://plus.kipris.or.kr/openapi/rest/patUtiModInfoSearchSvc"

    params = {

        'accessKey': 'YOUR_KEY',

        'keyword': keyword,

        'numOfRows': 100

    }

    response = requests.get(url, params=params)

    return ET.fromstring(response.content)

K-PION (한국 의약품 특허 정보)

  • 의약품 관련 특허 전문
  • 화학 구조식 이미지 제공
  • API 제한적 제공

🛠️ 특허 구조 데이터 추출 도구

오픈소스 도구

# OSRA - 이미지에서 구조 추출

osra patent_image.png -f smi > structures.smi

 

# ChemDataExtractor - PDF에서 추출

cde extract patent.pdf --output structures.json

 

# PatCID - 특허에서 화합물 추출

python patcid.py --input US20240123456.xml --output compounds.sdf

📊 통계 및 현황

데이터베이스

공개 화합물 수

업데이트 주기

API

무료

SureChEMBL

2,000+

매일

PubChem Patents

1,600+

주간

ChEMBL

200+

분기별

Google Patents

텍스트 위주

실시간

*

KIPRIS

500+

매일

DrugBank

1.3+

월간

일부

*BigQuery 사용료 별도

댓글

이 블로그의 인기 게시물

Claude AI의 생명과학 적용: 최신 자료 종합 리뷰

클로드 코드 빠른 시작

Claude Code를 사용할 때 유용한 명령어와 팁