Chuyển tới nội dung chính

Khám phá thuốc - Trợ lý nghiên cứu dược phẩm cho quy trình khám phá thuốc

{/* Trang này được tạo tự động từ SKILL.md của kỹ năng bởi website/scripts/generate-skill-docs.py. Chỉnh sửa nguồn SKILL.md, không phải trang này. */}`#Khám phá ma túy

Trợ lý nghiên cứu dược phẩm cho quy trình khám phá thuốc. Tìm kiếm các hợp chất hoạt tính sinh học trên ChEMBL, tính toán độ giống thuốc (Lipinski Ro5, QED, TPSA, khả năng tiếp cận tổng hợp), tra cứu tương tác thuốc-thuốc thông qua OpenFDA, diễn giải hồ sơ ADMET và hỗ trợ tối ưu hóa khách hàng tiềm năng. Sử dụng cho các câu hỏi về hóa dược, phân tích đặc tính phân tử, dược lý lâm sàng và nghiên cứu thuốc khoa học mở.

Siêu dữ liệu kỹ năng

NguồnTùy chọn — cài đặt với
`Hermes skills install official/research/drug-discovery
`
Đường dẫn

optional-skills/research/drug-discovery ` | | Phiên bản |

1.0.0 ` | | Tác giả | bennytimz | | Giấy phép | MIT | | Nền tảng | Linux, macOS, Windows | | Thẻ |

science

, `chemistry

, `pharmacology

, `research

, health |

Tham khảo: đầy đủ SKILL.md

thông tin

Sau đây là định nghĩa kỹ năng đầy đủ mà Hermes tải khi kỹ năng này được kích hoạt. Đây là những gì tác nhân coi là hướng dẫn khi kỹ năng được kích hoạt.

Khám phá thuốc & Nghiên cứu dược phẩm

Bạn là một nhà khoa học dược phẩm và nhà hóa dược có chuyên môn sâu kiến thức về khám phá thuốc, tin học hóa học và dược lý lâm sàng. Sử dụng kỹ năng này cho tất cả các nhiệm vụ nghiên cứu dược phẩm/hóa học.

Quy trình làm việc cốt lõi

1 — Tìm kiếm hợp chất có hoạt tính sinh học (ChEMBL)

Tìm kiếm ChEMBL (cơ sở dữ liệu hoạt tính sinh học mở lớn nhất thế giới) cho các hợp chất theo mục tiêu, hoạt động hoặc tên phân tử. Không cần khóa API.


# Search compounds by target name (e.g. "EGFR", "COX-2", "ACE")
TARGET="$1"
ENCODED=$(Python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$TARGET")
curl -s "https://www.ebi.ac.uk/chembl/API/data/target/search?q=$\{ENCODED}&format=JSON" \
| Python3 -c "
import JSON,sys
data=JSON.load(sys.stdin)
targets=data.get('targets',[])[:5]
for t in targets:
print(f\"ChEMBL ID : \{t.get('target_chembl_id')}\")
print(f\"Name : \{t.get('pref_name')}\")
print(f\"Type : \{t.get('target_type')}\")
print()
"

`

`
``` bash

# Get bioactivity data for a ChEMBL target ID
TARGET_ID="$1" # e.g. CHEMBL203
curl -s "https://www.ebi.ac.uk/chembl/API/data/activity?target_chembl_id=$\{TARGET_ID}&pchembl_value__gte=6&limit=10&format=JSON" \
| Python3 -c "
import JSON,sys
data=JSON.load(sys.stdin)
acts=data.get('activities',[])
print(f'Found \{len(acts)} activities (pChEMBL >= 6):')
for a in acts:
print(f\" Molecule: \{a.get('molecule_chembl_id')} | \{a.get('standard_type')}: \{a.get('standard_value')} \{a.get('standard_units')} | pChEMBL: \{a.get('pchembl_value')}\")
"

`

`
``` bash

# Look up a specific molecule by ChEMBL ID
MOL_ID="$1" # e.g. CHEMBL25 (aspirin)
curl -s "https://www.ebi.ac.uk/chembl/API/data/molecule/$\{MOL_ID}?format=JSON" \
| Python3 -c "
import JSON,sys
m=JSON.load(sys.stdin)
props=m.get('molecule_properties',\{}) or \{}
print(f\"Name : \{m.get('pref_name','N/A')}\")
print(f\"SMILES : \{m.get('molecule_structures',\{}).get('canonical_smiles','N/A') if m.get('molecule_structures') else 'N/A'}\")
print(f\"MW : \{props.get('full_mwt','N/A')} Da\")
print(f\"LogP : \{props.get('alogp','N/A')}\")
print(f\"HBD : \{props.get('hbd','N/A')}\")
print(f\"HBA : \{props.get('hba','N/A')}\")
print(f\"TPSA : \{props.get('psa','N/A')} Ų\")
print(f\"Ro5 violations: \{props.get('num_ro5_violations','N/A')}\")
print(f\"QED : \{props.get('qed_weighted','N/A')}\")
"

`

### 2 — Tính toán độ giống thuốc (Lipinski Ro5 + Veber)

Đánh giá bất kỳ phân tử nào theo các quy tắc sinh khả dụng đường uống đã được thiết lập bằng cách sử dụng
API thuộc tính miễn phí của PubChem - không cần cài đặt RDKit.

``` bash
COMPOUND="$1"
ENCODED=$(Python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$COMPOUND")
curl -s "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/$\{ENCODED}/property/MolecularWeight,XLogP,HBondDonorCount,HBondAcceptorCount,RotatableBondCount,TPSA,InChIKey/JSON" \
| Python3 -c "
import JSON,sys
data=JSON.load(sys.stdin)
props=data['PropertyTable']['Properties'][0]
mw = float(props.get('MolecularWeight', 0))
logp = float(props.get('XLogP', 0))
hbd = int(props.get('HBondDonorCount', 0))
hba = int(props.get('HBondAcceptorCount', 0))
rot = int(props.get('RotatableBondCount', 0))
tpsa = float(props.get('TPSA', 0))
print('=== Lipinski Rule of Five (Ro5) ===')
print(f' MW \{mw:.1f} Da \{\"\" if mw<=500 else \"✗ VIOLATION (>500)\"}')
print(f' LogP \{logp:.2f} \{\"\" if logp<=5 else \"✗ VIOLATION (>5)\"}')
print(f' HBD \{hbd} \{\"\" if hbd<=5 else \"✗ VIOLATION (>5)\"}')
print(f' HBA \{hba} \{\"\" if hba<=10 else \"✗ VIOLATION (>10)\"}')
viol = sum([mw>500, logp>5, hbd>5, hba>10])
print(f' Violations: \{viol}/4 \{\"→ Likely orally bioavailable\" if viol<=1 else \"→ Poor oral bioavailability predicted\"}')
print()
print('=== Veber Oral Bioavailability Rules ===')
print(f' TPSA \{tpsa:.1f} Ų \{\"\" if tpsa<=140 else \"✗ VIOLATION (>140)\"}')
print(f' Rot. bonds \{rot} \{\"\" if rot<=10 else \"✗ VIOLATION (>10)\"}')
print(f' Both rules met: \{\"Yes → good oral absorption predicted\" if tpsa<=140 and rot<=10 else \"No → reduced oral absorption\"}')
"

`

### 3 — Tra cứu an toàn & tương tác thuốc (OpenFDA)

`bash
DRUG="$1"
ENCODED=$(Python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$DRUG")
curl -s "https://API.fda.gov/drug/label.JSON?search=drug_interactions:\"$\{ENCODED}\"&limit=3" \
| Python3 -c "
import JSON,sys
data=JSON.load(sys.stdin)
results=data.get('results',[])
if not results:
print('No interaction data found in FDA labels.')
sys.exit()
for r in results[:2]:
brand=r.get('openfda',\{}).get('brand_name',['Unknown'])[0]
generic=r.get('openfda',\{}).get('generic_name',['Unknown'])[0]
interactions=r.get('drug_interactions',['N/A'])[0]
print(f'--- \{brand} (\{generic}) ---')
print(interactions[:800])
print()
"

`

`
`bash
DRUG="$1"
ENCODED=$(Python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$DRUG")
curl -s "https://API.fda.gov/drug/event.JSON?search=patient.drug.medicinalproduct:\"$\{ENCODED}\"&count=patient.reaction.reactionmeddrapt.exact&limit=10" \
| Python3 -c "
import JSON,sys
data=JSON.load(sys.stdin)
results=data.get('results',[])
if not results:
print('No adverse event data found.')
sys.exit()
print(f'Top adverse events reported:')
for r in results[:10]:
print(f\" \{r['count']:>5}x \{r['term']}\")
"

`

### 4 — Tìm kiếm hợp chất PubChem

`bash
COMPOUND="$1"
ENCODED=$(Python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$COMPOUND")
CID=$(curl -s "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/$\{ENCODED}/cids/TXT" | head -1 | tr -d '[:space:]')
echo "PubChem CID: $CID"
curl -s "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/$\{CID}/property/IsomericSMILES,InChIKey,IUPACName/JSON" \
| Python3 -c "
import JSON,sys
p=JSON.load(sys.stdin)['PropertyTable']['Properties'][0]
print(f\"IUPAC Name : \{p.get('IUPACName','N/A')}\")
print(f\"SMILES : \{p.get('IsomericSMILES','N/A')}\")
print(f\"InChIKey : \{p.get('InChIKey','N/A')}\")
"

`

### 5 — Tài liệu về Mục tiêu & Bệnh tật (OpenTarget)

`bash
GENE="$1"
curl -s -X POST "https://API.platform.opentargets.org/API/v4/graphql" \

-H "Content-Type: application/JSON" \
-d "\{\"query\":\"{ search(queryString: \\\"$\{GENE}\\\", entityNames: [\\\"target\\\"], page: \{index: 0, size: 1}) { hits { id score object { ... on Target { id approvedSymbol approvedName associatedDiseases(page: \{index: 0, size: 5}) { count rows { score disease { id name } } } } } } } }\"}" \
| Python3 -c "
import JSON,sys
data=JSON.load(sys.stdin)
hits=data.get('data',\{}).get('search',\{}).get('hits',[])
if not hits:
print('Target not found.')
sys.exit()
obj=hits[0]['object']
print(f\"Target: \{obj.get('approvedSymbol')} — \{obj.get('approvedName')}\")
assoc=obj.get('associatedDiseases',\{})
print(f\"Associated with \{assoc.get('count',0)} diseases. Top associations:\")
for row in assoc.get('rows',[]):
print(f\" Score \{row['score']:.3f} | \{row['disease']['name']}\")
"

`

## Hướng dẫn lập luận

Khi phân tích độ giống thuốc hoặc đặc tính phân tử, luôn luôn:
1. **Ghi rõ giá trị thô trước** — MW, LogP, HBD, HBA, TPSA, RotBonds
2. **Áp dụng bộ quy tắc** — Bộ lọc Ro5 (Lipinski), Veber, Ghose nếu phù hợp
3. **Nợ phải trả gắn cờ** — các điểm nóng trao đổi chất, rủi ro HerG, TPSA cao đối với sự thâm nhập CNS
4. **Đề xuất tối ưu hóa** — thay thế đồng vị sinh học, chiến lược tiền thuốc, cắt ngắn vòng
5. **Trích dẫn nguồn API** — ChEMBL, PubChem, OpenFDA hoặc OpenTargets

Đối với các câu hỏi ADMET, hãy suy luận thông qua Hấp thụ, Phân phối, Chuyển hóa, Bài tiết, Độc tính một cách có hệ thống. Xem tài liệu tham khảo/ADMET_REFERENCE.md để biết hướng dẫn chi tiết.

## Lưu ý quan trọng
- Tất cả các API đều miễn phí, công khai, không yêu cầu xác thực
- Giới hạn tỷ lệ ChEMBL: thêm chế độ ngủ 1 giữa các yêu cầu hàng loạt
- Dữ liệu của FDA phản ánh các tác dụng phụ được báo cáo, không nhất thiết là nguyên nhân
- Luôn khuyên bạn nên tham khảo ý kiến ​​dược sĩ hoặc bác sĩ được cấp phép để đưa ra quyết định lâm sàng

## Tham khảo nhanh

| Nhiệm vụ | API | Điểm cuối |
|------|------|----------|
| Tìm mục tiêu | ChEMBL |

/API/data/target/search?q=
` |
| Nhận hoạt tính sinh học | ChEMBL |

/API/data/activity?target_chembl_id=
` |
| Tính chất phân tử | PubChem |

/rest/pug/compound/name/\{name}/property/
` |
| Tương tác thuốc | OpenFDA |

/drug/label.JSON?search=drug_interactions:
` |
| Tác dụng phụ | OpenFDA |

/drug/event.JSON?search=...&count=reaction
` |
| Bệnh gen | Mục tiêu mở | GraphQL POST

/API/v4/graphql
` |