@pikaa-ai/pikaa 0.3.23 → 0.3.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/brand/orbit-logo-option4-whale.jpg +0 -0
- package/assets/brand/orbit-logo.jpg +0 -0
- package/assets/brand/orbit-logo.png +0 -0
- package/assets/brand/orbit-logo.svg +3 -0
- package/dist/cli.js +337 -162
- package/dist/index.js +1 -2
- package/package.json +1 -2
- package/skills/adaptyv/SKILL.md +0 -240
- package/skills/aeon/SKILL.md +0 -402
- package/skills/analytical-method-validation/SKILL.md +0 -299
- package/skills/anndata/SKILL.md +0 -431
- package/skills/arbor/SKILL.md +0 -152
- package/skills/arboreto/SKILL.md +0 -267
- package/skills/astropy/SKILL.md +0 -353
- package/skills/autoskill/SKILL.md +0 -233
- package/skills/benchling-integration/SKILL.md +0 -229
- package/skills/bgpt-paper-search/SKILL.md +0 -75
- package/skills/bids/SKILL.md +0 -237
- package/skills/biopython/SKILL.md +0 -472
- package/skills/bioservices/SKILL.md +0 -399
- package/skills/bulk-rnaseq/SKILL.md +0 -198
- package/skills/cellxgene-census/SKILL.md +0 -283
- package/skills/cirq/SKILL.md +0 -370
- package/skills/citation-management/SKILL.md +0 -329
- package/skills/clinical-decision-support/SKILL.md +0 -238
- package/skills/clinical-decision-support/references/README.md +0 -62
- package/skills/clinical-reports/SKILL.md +0 -248
- package/skills/clinical-reports/references/README.md +0 -34
- package/skills/cobrapy/SKILL.md +0 -496
- package/skills/consciousness-council/SKILL.md +0 -151
- package/skills/dask/SKILL.md +0 -482
- package/skills/database-lookup/SKILL.md +0 -386
- package/skills/datamol/SKILL.md +0 -200
- package/skills/deepchem/SKILL.md +0 -244
- package/skills/deepspot-m/SKILL.md +0 -175
- package/skills/deeptools/SKILL.md +0 -412
- package/skills/depmap/SKILL.md +0 -301
- package/skills/dhdna-profiler/SKILL.md +0 -184
- package/skills/diffdock/SKILL.md +0 -488
- package/skills/dnanexus-integration/SKILL.md +0 -325
- package/skills/docx/SKILL.md +0 -99
- package/skills/esm/SKILL.md +0 -334
- package/skills/etetoolkit/SKILL.md +0 -327
- package/skills/exa-search/SKILL.md +0 -102
- package/skills/executing-plans/SKILL.md +0 -14
- package/skills/experimental-design/SKILL.md +0 -234
- package/skills/exploratory-data-analysis/SKILL.md +0 -280
- package/skills/flowio/SKILL.md +0 -310
- package/skills/fluidsim/SKILL.md +0 -279
- package/skills/frontend-design/SKILL.md +0 -100
- package/skills/generate-image/SKILL.md +0 -304
- package/skills/geniml/SKILL.md +0 -310
- package/skills/genomic-coordinates/SKILL.md +0 -189
- package/skills/genomic-intelligence/SKILL.md +0 -243
- package/skills/geomaster/README.md +0 -105
- package/skills/geomaster/SKILL.md +0 -366
- package/skills/geopandas/SKILL.md +0 -250
- package/skills/get-available-resources/SKILL.md +0 -260
- package/skills/gget/SKILL.md +0 -153
- package/skills/ginkgo-cloud-lab/SKILL.md +0 -106
- package/skills/glycoengineering/SKILL.md +0 -339
- package/skills/gtars/SKILL.md +0 -282
- package/skills/guardian-rails/SKILL.md +0 -54
- package/skills/histolab/SKILL.md +0 -243
- package/skills/hugging-science/SKILL.md +0 -132
- package/skills/hypogenic/SKILL.md +0 -290
- package/skills/hypothesis-generation/SKILL.md +0 -264
- package/skills/imaging-data-commons/SKILL.md +0 -496
- package/skills/infographics/SKILL.md +0 -315
- package/skills/iso-standards-readiness/SKILL.md +0 -352
- package/skills/lab-hardware-cad/SKILL.md +0 -372
- package/skills/labarchive-integration/SKILL.md +0 -216
- package/skills/lamindb/SKILL.md +0 -408
- package/skills/latchbio-integration/SKILL.md +0 -227
- package/skills/latex-posters/SKILL.md +0 -369
- package/skills/latex-posters/references/README.md +0 -439
- package/skills/liteparse/SKILL.md +0 -295
- package/skills/literature-review/SKILL.md +0 -263
- package/skills/markdown-mermaid-writing/SKILL.md +0 -322
- package/skills/market-research-reports/SKILL.md +0 -337
- package/skills/markitdown/SKILL.md +0 -264
- package/skills/matchms/SKILL.md +0 -276
- package/skills/matlab/SKILL.md +0 -274
- package/skills/matplotlib/SKILL.md +0 -378
- package/skills/medchem/SKILL.md +0 -321
- package/skills/modal/SKILL.md +0 -468
- package/skills/molecular-dynamics/SKILL.md +0 -458
- package/skills/molfeat/SKILL.md +0 -348
- package/skills/ncats-arax/SKILL.md +0 -178
- package/skills/networkx/SKILL.md +0 -440
- package/skills/neurokit2/SKILL.md +0 -323
- package/skills/neuropixels-analysis/SKILL.md +0 -412
- package/skills/nextflow/SKILL.md +0 -195
- package/skills/omero-integration/SKILL.md +0 -222
- package/skills/onekgpd/SKILL.md +0 -371
- package/skills/ontology-term-resolution/SKILL.md +0 -147
- package/skills/open-notebook/SKILL.md +0 -297
- package/skills/openpiv/SKILL.md +0 -469
- package/skills/opentrons-integration/SKILL.md +0 -322
- package/skills/optimize-for-gpu/SKILL.md +0 -176
- package/skills/owasp-top10/SKILL.md +0 -48
- package/skills/pacsomatic/LICENSE +0 -21
- package/skills/pacsomatic/SKILL.md +0 -150
- package/skills/paper-lookup/SKILL.md +0 -263
- package/skills/paperclip/SKILL.md +0 -413
- package/skills/paperzilla/SKILL.md +0 -159
- package/skills/parallel-web/SKILL.md +0 -128
- package/skills/pathml/SKILL.md +0 -222
- package/skills/pathogen-variant-surveillance/SKILL.md +0 -208
- package/skills/pathway-enrichment/SKILL.md +0 -194
- package/skills/pdf/SKILL.md +0 -322
- package/skills/peer-review/SKILL.md +0 -288
- package/skills/penetration-testing/SKILL.md +0 -31
- package/skills/pennylane/SKILL.md +0 -240
- package/skills/phylogenetics/SKILL.md +0 -409
- package/skills/pi-agent/SKILL.md +0 -83
- package/skills/pkpd-modeling/SKILL.md +0 -381
- package/skills/polars/SKILL.md +0 -393
- package/skills/polars-bio/SKILL.md +0 -379
- package/skills/ponytail/SKILL.md +0 -31
- package/skills/ponytail-audit/SKILL.md +0 -18
- package/skills/pptx/SKILL.md +0 -246
- package/skills/pptx-posters/SKILL.md +0 -258
- package/skills/primekg/SKILL.md +0 -99
- package/skills/protocolsio-integration/SKILL.md +0 -236
- package/skills/pufferlib/SKILL.md +0 -328
- package/skills/pydeseq2/SKILL.md +0 -369
- package/skills/pydicom/SKILL.md +0 -381
- package/skills/pyhealth/SKILL.md +0 -124
- package/skills/pylabrobot/SKILL.md +0 -216
- package/skills/pymatgen/SKILL.md +0 -404
- package/skills/pymc/SKILL.md +0 -310
- package/skills/pymoo/SKILL.md +0 -276
- package/skills/pyopenms/SKILL.md +0 -179
- package/skills/pysam/SKILL.md +0 -330
- package/skills/pytdc/SKILL.md +0 -297
- package/skills/pytorch-lightning/SKILL.md +0 -191
- package/skills/pyzotero/SKILL.md +0 -137
- package/skills/qiskit/SKILL.md +0 -259
- package/skills/qutip/SKILL.md +0 -317
- package/skills/rdkit/SKILL.md +0 -94
- package/skills/relsa-severity-assessment/SKILL.md +0 -354
- package/skills/research-grants/SKILL.md +0 -296
- package/skills/research-grants/references/README.md +0 -287
- package/skills/research-lookup/README.md +0 -106
- package/skills/research-lookup/SKILL.md +0 -338
- package/skills/rowan/SKILL.md +0 -398
- package/skills/scanpy/SKILL.md +0 -303
- package/skills/scholar-evaluation/SKILL.md +0 -296
- package/skills/scientific-brainstorming/SKILL.md +0 -282
- package/skills/scientific-critical-thinking/SKILL.md +0 -180
- package/skills/scientific-schematics/SKILL.md +0 -370
- package/skills/scientific-slides/SKILL.md +0 -379
- package/skills/scientific-visualization/SKILL.md +0 -285
- package/skills/scientific-writing/SKILL.md +0 -356
- package/skills/scikit-bio/SKILL.md +0 -470
- package/skills/scikit-learn/SKILL.md +0 -324
- package/skills/scikit-survival/SKILL.md +0 -313
- package/skills/scvelo/SKILL.md +0 -328
- package/skills/scvi-tools/SKILL.md +0 -201
- package/skills/seaborn/SKILL.md +0 -254
- package/skills/security-auditor/SKILL.md +0 -37
- package/skills/shap/SKILL.md +0 -282
- package/skills/simpy/SKILL.md +0 -283
- package/skills/stable-baselines3/SKILL.md +0 -325
- package/skills/statistical-analysis/SKILL.md +0 -446
- package/skills/statistical-power/SKILL.md +0 -200
- package/skills/statsmodels/SKILL.md +0 -238
- package/skills/sympy/SKILL.md +0 -354
- package/skills/systematic-debugging/SKILL.md +0 -35
- package/skills/tamarind/SKILL.md +0 -285
- package/skills/tdd/SKILL.md +0 -26
- package/skills/tiledbvcf/SKILL.md +0 -456
- package/skills/timesfm-forecasting/SKILL.md +0 -408
- package/skills/timesfm-forecasting/examples/global-temperature/README.md +0 -178
- package/skills/torch-geometric/SKILL.md +0 -458
- package/skills/torchdrug/SKILL.md +0 -241
- package/skills/transformers/SKILL.md +0 -195
- package/skills/treatment-plans/SKILL.md +0 -174
- package/skills/treatment-plans/references/README.md +0 -19
- package/skills/umap-learn/SKILL.md +0 -488
- package/skills/uncertainty-and-units/SKILL.md +0 -384
- package/skills/usfiscaldata/SKILL.md +0 -171
- package/skills/vaex/SKILL.md +0 -204
- package/skills/venue-templates/SKILL.md +0 -269
- package/skills/verification-before-completion/SKILL.md +0 -22
- package/skills/waypoint-bio/SKILL.md +0 -273
- package/skills/what-if-oracle/SKILL.md +0 -184
- package/skills/writing-plans/SKILL.md +0 -15
- package/skills/xlsx/SKILL.md +0 -110
- package/skills/zarr-python/SKILL.md +0 -241
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: glycoengineering
|
|
3
|
-
description: Analyze and engineer protein glycosylation. Scan sequences for N-glycosylation sequons (N-X-S/T), predict O-glycosylation hotspots, and access curated glycoengineering tools (NetOGlyc, GlycoShield, GlycoWorkbench). For glycoprotein engineering, therapeutic antibody optimization, and vaccine design.
|
|
4
|
-
license: Unknown
|
|
5
|
-
metadata:
|
|
6
|
-
version: "1.1"
|
|
7
|
-
skill-author: Kuan-lin Huang
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Glycoengineering
|
|
11
|
-
|
|
12
|
-
## Overview
|
|
13
|
-
|
|
14
|
-
Glycosylation is the most common and complex post-translational modification (PTM) of proteins, affecting over 50% of all human proteins. Glycans regulate protein folding, stability, immune recognition, receptor interactions, and pharmacokinetics of therapeutic proteins. Glycoengineering involves rational modification of glycosylation patterns for improved therapeutic efficacy, stability, or immune evasion.
|
|
15
|
-
|
|
16
|
-
**Two major glycosylation types:**
|
|
17
|
-
- **N-glycosylation**: Attached to asparagine (N) in the sequon N-X-[S/T] where X ≠ Proline; occurs in the ER/Golgi
|
|
18
|
-
- **O-glycosylation**: Attached to serine (S) or threonine (T); no strict consensus motif; primarily GalNAc initiation
|
|
19
|
-
|
|
20
|
-
## When to Use This Skill
|
|
21
|
-
|
|
22
|
-
Use this skill when:
|
|
23
|
-
|
|
24
|
-
- **Antibody engineering**: Optimize Fc glycosylation for enhanced ADCC, CDC, or reduced immunogenicity
|
|
25
|
-
- **Therapeutic protein design**: Identify glycosylation sites that affect half-life, stability, or immunogenicity
|
|
26
|
-
- **Vaccine antigen design**: Engineer glycan shields to focus immune responses on conserved epitopes
|
|
27
|
-
- **Biosimilar characterization**: Compare glycan patterns between reference and biosimilar
|
|
28
|
-
- **Drug target analysis**: Does glycosylation affect target engagement for a receptor?
|
|
29
|
-
- **Protein stability**: N-glycans often stabilize proteins; identify sites for stabilizing mutations
|
|
30
|
-
|
|
31
|
-
## N-Glycosylation Sequon Analysis
|
|
32
|
-
|
|
33
|
-
### Scanning for N-Glycosylation Sites
|
|
34
|
-
|
|
35
|
-
N-glycosylation occurs at the sequon **N-X-[S/T]** where X ≠ Proline.
|
|
36
|
-
|
|
37
|
-
```python
|
|
38
|
-
import re
|
|
39
|
-
from typing import List, Tuple
|
|
40
|
-
|
|
41
|
-
def find_n_glycosylation_sequons(sequence: str) -> List[dict]:
|
|
42
|
-
"""
|
|
43
|
-
Scan a protein sequence for canonical N-linked glycosylation sequons.
|
|
44
|
-
Motif: N-X-[S/T], where X ≠ Proline.
|
|
45
|
-
|
|
46
|
-
Args:
|
|
47
|
-
sequence: Single-letter amino acid sequence
|
|
48
|
-
|
|
49
|
-
Returns:
|
|
50
|
-
List of dicts with position (1-based), motif, and context
|
|
51
|
-
"""
|
|
52
|
-
seq = sequence.upper()
|
|
53
|
-
results = []
|
|
54
|
-
i = 0
|
|
55
|
-
while i <= len(seq) - 3:
|
|
56
|
-
triplet = seq[i:i+3]
|
|
57
|
-
if triplet[0] == 'N' and triplet[1] != 'P' and triplet[2] in {'S', 'T'}:
|
|
58
|
-
context = seq[max(0, i-3):i+6] # ±3 residue context
|
|
59
|
-
results.append({
|
|
60
|
-
'position': i + 1, # 1-based
|
|
61
|
-
'motif': triplet,
|
|
62
|
-
'context': context,
|
|
63
|
-
'sequon_type': 'NXS' if triplet[2] == 'S' else 'NXT'
|
|
64
|
-
})
|
|
65
|
-
i += 3
|
|
66
|
-
else:
|
|
67
|
-
i += 1
|
|
68
|
-
return results
|
|
69
|
-
|
|
70
|
-
def summarize_glycosylation_sites(sequence: str, protein_name: str = "") -> str:
|
|
71
|
-
"""Generate a research log summary of N-glycosylation sites."""
|
|
72
|
-
sequons = find_n_glycosylation_sequons(sequence)
|
|
73
|
-
|
|
74
|
-
lines = [f"# N-Glycosylation Sequon Analysis: {protein_name or 'Protein'}"]
|
|
75
|
-
lines.append(f"Sequence length: {len(sequence)}")
|
|
76
|
-
lines.append(f"Total N-glycosylation sequons: {len(sequons)}")
|
|
77
|
-
|
|
78
|
-
if sequons:
|
|
79
|
-
lines.append(f"\nN-X-S sites: {sum(1 for s in sequons if s['sequon_type'] == 'NXS')}")
|
|
80
|
-
lines.append(f"N-X-T sites: {sum(1 for s in sequons if s['sequon_type'] == 'NXT')}")
|
|
81
|
-
lines.append(f"\nSite details:")
|
|
82
|
-
for s in sequons:
|
|
83
|
-
lines.append(f" Position {s['position']}: {s['motif']} (context: ...{s['context']}...)")
|
|
84
|
-
else:
|
|
85
|
-
lines.append("No canonical N-glycosylation sequons detected.")
|
|
86
|
-
|
|
87
|
-
return "\n".join(lines)
|
|
88
|
-
|
|
89
|
-
# Example: IgG1 Fc region
|
|
90
|
-
fc_sequence = "APELLGGPSVFLFPPKPKDTLMISRTPEVTCVVVDVSHEDPEVKFNWYVDGVEVHNAKTKPREEQYNSTYRVVSVLTVLHQDWLNGKEYKCKVSNKALPAPIEKTISKAKGQPREPQVYTLPPSREEMTKNQVSLTCLVKGFYPSDIAVEWESNGQPENNYKTTPPVLDSDGSFFLYSKLTVDKSRWQQGNVFSCSVMHEALHNHYTQKSLSLSPGK"
|
|
91
|
-
print(summarize_glycosylation_sites(fc_sequence, "IgG1 Fc"))
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Mutating N-Glycosylation Sites
|
|
95
|
-
|
|
96
|
-
```python
|
|
97
|
-
def eliminate_glycosite(sequence: str, position: int, replacement: str = "Q") -> str:
|
|
98
|
-
"""
|
|
99
|
-
Eliminate an N-glycosylation site by substituting Asn → Gln (conservative).
|
|
100
|
-
|
|
101
|
-
Args:
|
|
102
|
-
sequence: Protein sequence
|
|
103
|
-
position: 1-based position of the Asn to mutate
|
|
104
|
-
replacement: Amino acid to substitute (default Q = Gln; similar size, not glycosylated)
|
|
105
|
-
|
|
106
|
-
Returns:
|
|
107
|
-
Mutated sequence
|
|
108
|
-
"""
|
|
109
|
-
seq = list(sequence.upper())
|
|
110
|
-
idx = position - 1
|
|
111
|
-
assert seq[idx] == 'N', f"Position {position} is '{seq[idx]}', not 'N'"
|
|
112
|
-
seq[idx] = replacement.upper()
|
|
113
|
-
return ''.join(seq)
|
|
114
|
-
|
|
115
|
-
def add_glycosite(sequence: str, position: int, flanking_context: str = "S") -> str:
|
|
116
|
-
"""
|
|
117
|
-
Introduce an N-glycosylation site by mutating a residue to Asn,
|
|
118
|
-
and ensuring X ≠ Pro and +2 = S/T.
|
|
119
|
-
|
|
120
|
-
Args:
|
|
121
|
-
position: 1-based position to introduce Asn
|
|
122
|
-
flanking_context: 'S' or 'T' at position+2 (if modification needed)
|
|
123
|
-
"""
|
|
124
|
-
seq = list(sequence.upper())
|
|
125
|
-
idx = position - 1
|
|
126
|
-
|
|
127
|
-
# Mutate to Asn
|
|
128
|
-
seq[idx] = 'N'
|
|
129
|
-
|
|
130
|
-
# Ensure X+1 != Pro (mutate to Ala if needed)
|
|
131
|
-
if idx + 1 < len(seq) and seq[idx + 1] == 'P':
|
|
132
|
-
seq[idx + 1] = 'A'
|
|
133
|
-
|
|
134
|
-
# Ensure X+2 = S or T
|
|
135
|
-
if idx + 2 < len(seq) and seq[idx + 2] not in ('S', 'T'):
|
|
136
|
-
seq[idx + 2] = flanking_context
|
|
137
|
-
|
|
138
|
-
return ''.join(seq)
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## O-Glycosylation Analysis
|
|
142
|
-
|
|
143
|
-
### Heuristic O-Glycosylation Hotspot Prediction
|
|
144
|
-
|
|
145
|
-
```python
|
|
146
|
-
def predict_o_glycosylation_hotspots(
|
|
147
|
-
sequence: str,
|
|
148
|
-
window: int = 7,
|
|
149
|
-
min_st_fraction: float = 0.4,
|
|
150
|
-
disallow_proline_next: bool = True
|
|
151
|
-
) -> List[dict]:
|
|
152
|
-
"""
|
|
153
|
-
Heuristic O-glycosylation hotspot scoring based on local S/T density.
|
|
154
|
-
Not a substitute for NetOGlyc; use as fast baseline.
|
|
155
|
-
|
|
156
|
-
Rules:
|
|
157
|
-
- O-GalNAc glycosylation clusters on Ser/Thr-rich segments
|
|
158
|
-
- Flag Ser/Thr residues in windows enriched for S/T
|
|
159
|
-
- Avoid S/T immediately followed by Pro (TP/SP motifs inhibit GalNAc-T)
|
|
160
|
-
|
|
161
|
-
Args:
|
|
162
|
-
window: Odd window size for local S/T density
|
|
163
|
-
min_st_fraction: Minimum fraction of S/T in window to flag site
|
|
164
|
-
"""
|
|
165
|
-
if window % 2 == 0:
|
|
166
|
-
window = 7
|
|
167
|
-
seq = sequence.upper()
|
|
168
|
-
half = window // 2
|
|
169
|
-
candidates = []
|
|
170
|
-
|
|
171
|
-
for i, aa in enumerate(seq):
|
|
172
|
-
if aa not in ('S', 'T'):
|
|
173
|
-
continue
|
|
174
|
-
if disallow_proline_next and i + 1 < len(seq) and seq[i+1] == 'P':
|
|
175
|
-
continue
|
|
176
|
-
|
|
177
|
-
start = max(0, i - half)
|
|
178
|
-
end = min(len(seq), i + half + 1)
|
|
179
|
-
segment = seq[start:end]
|
|
180
|
-
st_count = sum(1 for c in segment if c in ('S', 'T'))
|
|
181
|
-
frac = st_count / len(segment)
|
|
182
|
-
|
|
183
|
-
if frac >= min_st_fraction:
|
|
184
|
-
candidates.append({
|
|
185
|
-
'position': i + 1,
|
|
186
|
-
'residue': aa,
|
|
187
|
-
'st_fraction': round(frac, 3),
|
|
188
|
-
'window': f"{start+1}-{end}",
|
|
189
|
-
'segment': segment
|
|
190
|
-
})
|
|
191
|
-
|
|
192
|
-
return candidates
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
## External Glycoengineering Tools
|
|
196
|
-
|
|
197
|
-
### 1. NetOGlyc 4.0 (O-glycosylation prediction)
|
|
198
|
-
|
|
199
|
-
Web service for high-accuracy O-GalNAc site prediction:
|
|
200
|
-
- **URL**: https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/
|
|
201
|
-
- **Input**: FASTA protein sequence
|
|
202
|
-
- **Output**: Per-residue O-glycosylation probability scores
|
|
203
|
-
- **Method**: Neural network trained on experimentally verified O-GalNAc sites
|
|
204
|
-
|
|
205
|
-
```python
|
|
206
|
-
import requests
|
|
207
|
-
|
|
208
|
-
def submit_netoglycv4(fasta_sequence: str) -> str:
|
|
209
|
-
"""
|
|
210
|
-
Submit sequence to NetOGlyc 4.0 web service.
|
|
211
|
-
Returns the job URL for result retrieval.
|
|
212
|
-
|
|
213
|
-
Note: This uses the DTU Health Tech web service. Results take ~1-5 min.
|
|
214
|
-
"""
|
|
215
|
-
url = "https://services.healthtech.dtu.dk/cgi-bin/webface2.cgi"
|
|
216
|
-
# NetOGlyc submission (parameters may vary with web service version)
|
|
217
|
-
# Recommend using the web interface directly for most use cases
|
|
218
|
-
print("Submit sequence at: https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/")
|
|
219
|
-
return url
|
|
220
|
-
|
|
221
|
-
# Also: NetNGlyc for N-glycosylation prediction
|
|
222
|
-
# URL: https://services.healthtech.dtu.dk/services/NetNGlyc-1.0/
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### 2. GlycoShield-MD (Glycan Shielding Analysis)
|
|
226
|
-
|
|
227
|
-
GlycoShield-MD analyzes how glycans shield protein surfaces during MD simulations:
|
|
228
|
-
- **URL**: https://gitlab.mpcdf.mpg.de/dioscuri-biophysics/glycoshield-md/
|
|
229
|
-
- **Use**: Map glycan shielding on protein surface over MD trajectory
|
|
230
|
-
- **Output**: Per-residue shielding fraction, visualization
|
|
231
|
-
|
|
232
|
-
```bash
|
|
233
|
-
# Installation
|
|
234
|
-
uv pip install glycoshield
|
|
235
|
-
|
|
236
|
-
# Basic usage: analyze glycan shielding from glycosylated protein MD trajectory
|
|
237
|
-
glycoshield \
|
|
238
|
-
--topology glycoprotein.pdb \
|
|
239
|
-
--trajectory glycoprotein.xtc \
|
|
240
|
-
--glycan_resnames BGLCNA FUC \
|
|
241
|
-
--output shielding_analysis/
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
### 3. GlycoWorkbench (Glycan Structure Drawing/Analysis)
|
|
245
|
-
|
|
246
|
-
- **URL**: https://www.eurocarbdb.org/project/glycoworkbench
|
|
247
|
-
- **Use**: Draw glycan structures, calculate masses, annotate MS spectra
|
|
248
|
-
- **Format**: GlycoCT, IUPAC condensed glycan notation
|
|
249
|
-
|
|
250
|
-
### 4. GlyConnect (Glycan-Protein Database)
|
|
251
|
-
|
|
252
|
-
- **URL**: https://glyconnect.expasy.org/
|
|
253
|
-
- **Use**: Find experimentally verified glycoproteins and glycosylation sites
|
|
254
|
-
- **Query**: By protein (UniProt ID), glycan structure, or tissue
|
|
255
|
-
|
|
256
|
-
```python
|
|
257
|
-
import requests
|
|
258
|
-
|
|
259
|
-
def query_glyconnect(uniprot_id: str) -> dict:
|
|
260
|
-
"""Query GlyConnect for glycosylation data for a protein."""
|
|
261
|
-
url = f"https://glyconnect.expasy.org/api/proteins/uniprot/{uniprot_id}"
|
|
262
|
-
response = requests.get(url, headers={"Accept": "application/json"})
|
|
263
|
-
if response.status_code == 200:
|
|
264
|
-
return response.json()
|
|
265
|
-
return {}
|
|
266
|
-
|
|
267
|
-
# Example: query EGFR glycosylation
|
|
268
|
-
egfr_glyco = query_glyconnect("P00533")
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
### 5. UniCarbKB (Glycan Structure Database)
|
|
272
|
-
|
|
273
|
-
- **URL**: https://unicarbkb.org/
|
|
274
|
-
- **Use**: Browse glycan structures, search by mass or composition
|
|
275
|
-
- **Format**: GlycoCT or IUPAC notation
|
|
276
|
-
|
|
277
|
-
## Key Glycoengineering Strategies
|
|
278
|
-
|
|
279
|
-
### For Therapeutic Antibodies
|
|
280
|
-
|
|
281
|
-
| Goal | Strategy | Notes |
|
|
282
|
-
|------|----------|-------|
|
|
283
|
-
| Enhance ADCC | Defucosylation at Fc Asn297 | Afucosylated IgG1 has ~50× better FcγRIIIa binding |
|
|
284
|
-
| Reduce immunogenicity | Remove non-human glycans | Eliminate α-Gal, NGNA epitopes |
|
|
285
|
-
| Improve PK half-life | Sialylation | Sialylated glycans extend half-life |
|
|
286
|
-
| Reduce inflammation | Hypersialylation | IVIG anti-inflammatory mechanism |
|
|
287
|
-
| Create glycan shield | Add N-glycosites to surface | Masks vulnerable epitopes (vaccine design) |
|
|
288
|
-
|
|
289
|
-
### Common Mutations Used
|
|
290
|
-
|
|
291
|
-
| Mutation | Effect |
|
|
292
|
-
|----------|--------|
|
|
293
|
-
| N297A/Q (IgG1) | Removes Fc glycosylation (aglycosyl) |
|
|
294
|
-
| N297D (IgG1) | Removes Fc glycosylation |
|
|
295
|
-
| S298A/E333A/K334A | Increases FcγRIIIa binding |
|
|
296
|
-
| F243L (IgG1) | Increases defucosylation |
|
|
297
|
-
| T299A | Removes Fc glycosylation |
|
|
298
|
-
|
|
299
|
-
## Glycan Notation
|
|
300
|
-
|
|
301
|
-
### IUPAC Condensed Notation (Monosaccharide abbreviations)
|
|
302
|
-
|
|
303
|
-
| Symbol | Full Name | Type |
|
|
304
|
-
|--------|-----------|------|
|
|
305
|
-
| Glc | Glucose | Hexose |
|
|
306
|
-
| GlcNAc | N-Acetylglucosamine | HexNAc |
|
|
307
|
-
| Man | Mannose | Hexose |
|
|
308
|
-
| Gal | Galactose | Hexose |
|
|
309
|
-
| Fuc | Fucose | Deoxyhexose |
|
|
310
|
-
| Neu5Ac | N-Acetylneuraminic acid (Sialic acid) | Sialic acid |
|
|
311
|
-
| GalNAc | N-Acetylgalactosamine | HexNAc |
|
|
312
|
-
|
|
313
|
-
### Complex N-Glycan Structure
|
|
314
|
-
|
|
315
|
-
```
|
|
316
|
-
Typical complex biantennary N-glycan:
|
|
317
|
-
Neu5Ac-Gal-GlcNAc-Man\
|
|
318
|
-
Man-GlcNAc-GlcNAc-[Asn]
|
|
319
|
-
Neu5Ac-Gal-GlcNAc-Man/
|
|
320
|
-
(±Core Fuc at innermost GlcNAc)
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
## Best Practices
|
|
324
|
-
|
|
325
|
-
- **Start with NetNGlyc/NetOGlyc** for computational prediction before experimental validation
|
|
326
|
-
- **Verify with mass spectrometry**: Glycoproteomics (Byonic, Mascot) for site-specific glycan profiling
|
|
327
|
-
- **Consider site context**: Not all predicted sequons are actually glycosylated (accessibility, cell type, protein conformation)
|
|
328
|
-
- **For antibodies**: Fc N297 glycan is critical — always characterize this site first
|
|
329
|
-
- **Use GlyConnect** to check if your protein of interest has experimentally verified glycosylation data
|
|
330
|
-
|
|
331
|
-
## Additional Resources
|
|
332
|
-
|
|
333
|
-
- **GlyTouCan** (glycan structure repository): https://glytoucan.org/
|
|
334
|
-
- **GlyConnect**: https://glyconnect.expasy.org/
|
|
335
|
-
- **CFG Functional Glycomics**: http://www.functionalglycomics.org/
|
|
336
|
-
- **DTU Health Tech servers** (NetNGlyc, NetOGlyc): https://services.healthtech.dtu.dk/
|
|
337
|
-
- **GlycoWorkbench**: https://glycoworkbench.software.informer.com/
|
|
338
|
-
- **Review**: Apweiler R et al. (1999) Biochim Biophys Acta. PMID: 10564035
|
|
339
|
-
- **Therapeutic glycoengineering review**: Jefferis R (2009) Nature Reviews Drug Discovery. PMID: 19448661
|
package/skills/gtars/SKILL.md
DELETED
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gtars
|
|
3
|
-
description: Use Gtars for local genomic interval models and set algebra, overlaps and counts, consensus and coverage, tokenization, fragment processing, and refget/BEDbase planning across Python, Rust, and the CLI.
|
|
4
|
-
license: MIT
|
|
5
|
-
compatibility: Python bindings require Python 3.10+ and gtars 0.9.2. The Rust meta-crate and gtars-cli are 0.9.0 and require a Rust toolchain supporting Edition 2024; upstream declares no rust-version. Bundled audit CLIs use only Python 3.10+ standard library and are local/network-free. Remote constructors, pretrained tokenizers, refget, and BEDbase caching require explicit network and storage approval.
|
|
6
|
-
allowed-tools: Read Write Edit Bash Glob
|
|
7
|
-
metadata:
|
|
8
|
-
version: "1.2"
|
|
9
|
-
skill-author: K-Dense Inc.
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Gtars
|
|
13
|
-
|
|
14
|
-
Gtars provides native Rust implementations, Python bindings, and a feature-gated
|
|
15
|
-
`gtars` binary for genomic interval and reference-sequence work. Start with the
|
|
16
|
-
bundled local inspectors; call upstream code only after the data contract,
|
|
17
|
-
provenance, resource bounds, and side effects are explicit.
|
|
18
|
-
|
|
19
|
-
## Verified snapshot (2026-07-23)
|
|
20
|
-
|
|
21
|
-
- Python: [`gtars==0.9.2`](https://pypi.org/project/gtars/), released
|
|
22
|
-
2026-06-17, `Requires-Python >=3.10`.
|
|
23
|
-
- Rust meta-crate: [`gtars=0.9.0`](https://crates.io/crates/gtars), released
|
|
24
|
-
2026-06-15. Its default feature set is empty.
|
|
25
|
-
- CLI crate/binary: [`gtars-cli=0.9.0`](https://crates.io/crates/gtars-cli);
|
|
26
|
-
the installed binary is named `gtars`.
|
|
27
|
-
- Direct refget crate: [`gtars-refget=0.9.1`](https://crates.io/crates/gtars-refget),
|
|
28
|
-
released 2026-06-17. `gtars=0.9.0` itself pins its component release set, which
|
|
29
|
-
includes refget 0.9.0.
|
|
30
|
-
- Upstream intentionally versions workspace crates, Python bindings, and CLI
|
|
31
|
-
independently. Do not assume matching numbers mean matching artifacts.
|
|
32
|
-
- The published docs changelog stops at 0.5.1. API examples here were checked
|
|
33
|
-
against the 0.9.2 Python stubs/runtime and the `v0.9.0` CLI/Rust source.
|
|
34
|
-
|
|
35
|
-
The `license: MIT` field covers this skill. Published `gtars` crates declare MIT,
|
|
36
|
-
while the GitHub repository currently displays BSD-2-Clause at the root; verify
|
|
37
|
-
the exact artifact's license before redistribution.
|
|
38
|
-
|
|
39
|
-
## Native-code trust gate and exact pins
|
|
40
|
-
|
|
41
|
-
The Python wheel contains a PyO3 native extension. Cargo installation compiles a
|
|
42
|
-
native binary and can run dependency build scripts. Treat either path as code
|
|
43
|
-
execution:
|
|
44
|
-
|
|
45
|
-
1. Confirm the official PyPI/crates.io/GitHub owner and immutable version.
|
|
46
|
-
2. Review filenames, platform tags, release provenance, license, and SHA-256.
|
|
47
|
-
GitHub's v0.9.0 binary release includes per-archive `.sha256` sidecars.
|
|
48
|
-
3. Never run an untrusted prebuilt binary, wheel, source tree, Cargo build script,
|
|
49
|
-
or archive installer. Use isolation and CPU/RAM/disk/time limits.
|
|
50
|
-
4. Keep a lockfile and artifact hashes with the analysis manifest.
|
|
51
|
-
|
|
52
|
-
After that review, create an isolated Python environment:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
uv venv --python 3.11 .venv-gtars
|
|
56
|
-
uv pip install --dry-run --python .venv-gtars/bin/python "gtars==0.9.2"
|
|
57
|
-
uv pip install --python .venv-gtars/bin/python "gtars==0.9.2"
|
|
58
|
-
.venv-gtars/bin/python -c \
|
|
59
|
-
"import gtars; assert gtars.__version__ == '0.9.2'; print(gtars.__version__)"
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
For the reviewed CLI source release:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
cargo install gtars-cli --version 0.9.0 --locked
|
|
66
|
-
gtars --version
|
|
67
|
-
gtars --help
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
For a Rust project, pin the wrapper exactly and enable only required features:
|
|
71
|
-
|
|
72
|
-
```toml
|
|
73
|
-
[dependencies]
|
|
74
|
-
gtars = { version = "=0.9.0", default-features = false, features = [
|
|
75
|
-
"core", "overlaprs", "uniwig", "tokenizers", "refget"
|
|
76
|
-
] }
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Use `gtars-refget = "=0.9.1"` directly only when the newer direct component API is
|
|
80
|
-
required and compatibility has been tested. Do not replace these pins with a Git
|
|
81
|
-
branch or an unreviewed release.
|
|
82
|
-
|
|
83
|
-
## Genomic data contract
|
|
84
|
-
|
|
85
|
-
Apply this contract before every operation:
|
|
86
|
-
|
|
87
|
-
1. **Coordinates:** BED intervals are 0-based and half-open: `[start, end)`.
|
|
88
|
-
Require `0 <= start < end <= contig_length`. Gtars coordinates are `u32`, so
|
|
89
|
-
reject values above `4,294,967,295`.
|
|
90
|
-
2. **Assembly:** record an assembly accession/version and the SHA-256 of the exact
|
|
91
|
-
chromosome-sizes or refget sequence-collection metadata. Never infer assembly
|
|
92
|
-
from filenames or `chr` prefixes.
|
|
93
|
-
3. **Contigs:** compare names exactly. `1` and `chr1`, alternate loci, decoys, and
|
|
94
|
-
mitochondrial aliases are not interchangeable. Rename or liftover only as a
|
|
95
|
-
separately reviewed transformation.
|
|
96
|
-
4. **Sorting:** preserve the original file, then sort a copy by chromosome-sizes
|
|
97
|
-
order and numeric start/end when the operation requires it. Python
|
|
98
|
-
`RegionSet(path)` currently sorts lexicographically by contig and start while
|
|
99
|
-
loading; do not rely on original row order afterward.
|
|
100
|
-
5. **Strand:** BED6 uses `+`, `-`, or `.`. `Region.rest` retains trailing BED
|
|
101
|
-
fields, but a file-backed Python `RegionSet` currently initializes its separate
|
|
102
|
-
`strands` vector to `*`. Several set operations drop strand. Preserve and
|
|
103
|
-
validate strand externally when it is scientifically meaningful.
|
|
104
|
-
6. **Duplicates/adjacency:** choose policies explicitly. `reduce()` and consensus
|
|
105
|
-
merge overlapping **and adjacent** intervals; ordinary half-open overlap does
|
|
106
|
-
not treat `[0,10)` and `[10,20)` as overlapping.
|
|
107
|
-
|
|
108
|
-
Run the local validator first:
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
python3 -B scripts/bed_validator.py \
|
|
112
|
-
--input data.bed.gz \
|
|
113
|
-
--assembly GRCh38.p14 \
|
|
114
|
-
--chrom-sizes GRCh38.p14.chrom.sizes \
|
|
115
|
-
--require-sorted
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
## Safe local workflow
|
|
119
|
-
|
|
120
|
-
1. Inventory local files, checksums, assembly, contig dictionary, coordinate
|
|
121
|
-
system, strand policy, patient/replicate groups, and intended outputs.
|
|
122
|
-
2. Validate BED/fragments and estimate work. Pilot a small synthetic file.
|
|
123
|
-
3. Choose Python, CLI, or Rust from the documented surface; do not translate API
|
|
124
|
-
names by guesswork.
|
|
125
|
-
4. Set hard limits for input bytes/records/files, threads/jobs, memory, temporary
|
|
126
|
-
disk, output size, and wall time.
|
|
127
|
-
5. Run in a dedicated output directory. Refuse collisions unless overwrite was
|
|
128
|
-
explicitly approved.
|
|
129
|
-
6. Revalidate output sorting, bounds, row counts, checksums, and provenance.
|
|
130
|
-
|
|
131
|
-
## Current Python core
|
|
132
|
-
|
|
133
|
-
Imports are from submodules, not the `gtars` top level:
|
|
134
|
-
|
|
135
|
-
```python
|
|
136
|
-
from gtars.models import Region, RegionSet
|
|
137
|
-
|
|
138
|
-
query = RegionSet.from_regions(
|
|
139
|
-
[
|
|
140
|
-
Region(chr="chr1", start=100, end=200, rest=None),
|
|
141
|
-
Region(chr="chr1", start=300, end=400, rest=None),
|
|
142
|
-
],
|
|
143
|
-
strands=["+", "-"],
|
|
144
|
-
)
|
|
145
|
-
universe = RegionSet.from_vectors(
|
|
146
|
-
["chr1", "chr1"],
|
|
147
|
-
[150, 500],
|
|
148
|
-
[350, 600],
|
|
149
|
-
)
|
|
150
|
-
|
|
151
|
-
counts = query.count_overlaps(universe) # one count per query region
|
|
152
|
-
flags = query.any_overlaps(universe) # one bool per query region
|
|
153
|
-
indices = query.find_overlaps(universe) # indices into universe
|
|
154
|
-
pieces = query.intersect_all(universe) # all intersection fragments
|
|
155
|
-
fraction = query.coverage(universe) # fraction of query bp covered
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
`RegionSet.sort()` mutates and returns `None`. Set algebra includes `reduce`,
|
|
159
|
-
`setdiff`, `pintersect` (pairs by index), `concat`, `union`, `jaccard`,
|
|
160
|
-
`coverage`, `overlap_coefficient`, `intersect_all`, `closest`, `cluster`, and
|
|
161
|
-
`gaps`. Read `references/python-api.md` before relying on ordering or strand.
|
|
162
|
-
|
|
163
|
-
Consensus is a Python binding in a different module:
|
|
164
|
-
|
|
165
|
-
```python
|
|
166
|
-
from gtars.genomic_distributions import consensus
|
|
167
|
-
|
|
168
|
-
rows = consensus([query, universe])
|
|
169
|
-
# rows: [{"chr": ..., "start": ..., "end": ..., "count": ...}, ...]
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Signal-track generation is **not** exposed as `gtars.uniwig` in Python 0.9.2;
|
|
173
|
-
use the reviewed CLI or Rust API. `RegionSet.coverage()` is a base-pair set metric,
|
|
174
|
-
not a WIG/bigWig generator.
|
|
175
|
-
|
|
176
|
-
## Tokenizers, fragments, and reference stores
|
|
177
|
-
|
|
178
|
-
Use only local constructors by default:
|
|
179
|
-
|
|
180
|
-
```python
|
|
181
|
-
from gtars.models import RegionSet
|
|
182
|
-
from gtars.tokenizers import Tokenizer
|
|
183
|
-
|
|
184
|
-
tokenizer = Tokenizer.from_bed("reviewed-universe.bed")
|
|
185
|
-
regions = RegionSet("local-query.bed")
|
|
186
|
-
tokens = tokenizer.tokenize(regions)
|
|
187
|
-
encoding = tokenizer(regions)
|
|
188
|
-
ids = encoding["input_ids"]
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
`Tokenizer.from_pretrained(name)` contacts Hugging Face and writes its cache when
|
|
192
|
-
the argument is not an existing local directory; it exposes no revision or cache
|
|
193
|
-
argument. Obtain explicit approval, fetch an immutable revision through a reviewed
|
|
194
|
-
mechanism, verify checksums, then pass the local snapshot directory. See
|
|
195
|
-
`references/tokenizers.md`.
|
|
196
|
-
|
|
197
|
-
For refget, prefer `RefgetStore.in_memory()` or `RefgetStore.open_local(path)`.
|
|
198
|
-
`open_remote(cache_path, remote_url)` contacts a remote service, creates/uses a
|
|
199
|
-
local cache, and performs on-demand range reads. See `references/refget.md`.
|
|
200
|
-
|
|
201
|
-
## Network and cache gate
|
|
202
|
-
|
|
203
|
-
No download or cache write is implicit in this skill. Before any network-capable
|
|
204
|
-
upstream call:
|
|
205
|
-
|
|
206
|
-
- obtain explicit user approval for the exact host, endpoint, data, and cache;
|
|
207
|
-
- allowlist HTTPS hosts and reject unreviewed redirects;
|
|
208
|
-
- record immutable revision/identifier, retrieval time, expected SHA-256 and
|
|
209
|
-
domain digest, assembly accession, size quota, and provenance;
|
|
210
|
-
- disclose sensitive BED coordinates, barcodes, sample labels, and reference
|
|
211
|
-
choices that could leave the approved environment;
|
|
212
|
-
- validate downloaded content as untrusted before using it.
|
|
213
|
-
|
|
214
|
-
Important side effects:
|
|
215
|
-
|
|
216
|
-
- `RegionSet(path)` has HTTP support; a nonexistent local string may be treated as
|
|
217
|
-
a URL. Check that the local path exists before construction.
|
|
218
|
-
- `Tokenizer.from_pretrained` may download `universe.bed.gz` into the Hugging Face
|
|
219
|
-
cache.
|
|
220
|
-
- `RefgetStore.on_disk` creates/writes a store. `open_remote` loads remote metadata
|
|
221
|
-
and enables persistence by default.
|
|
222
|
-
- `gtars bbcache` creates cache directories even when constructing the client.
|
|
223
|
-
Cache/download commands use `BBCLIENT_CACHE` (default `~/.bbcache`) and
|
|
224
|
-
`BEDBASE_API` (default `https://api.bedbase.org`).
|
|
225
|
-
|
|
226
|
-
## Sensitive metadata and leakage
|
|
227
|
-
|
|
228
|
-
Genomic intervals, rare loci, barcodes, sample names, phenotypes, and assembly
|
|
229
|
-
choices can be identifying. Keep full paths and raw coordinates out of logs;
|
|
230
|
-
default bundled reports redact paths and emit only counts/checksums.
|
|
231
|
-
|
|
232
|
-
Freeze splits by patient/donor first, then keep all technical and biological
|
|
233
|
-
replicates in the same split. Fit consensus sets, universes, tokenizers, scaling,
|
|
234
|
-
thresholds, and QC rules on training data only. Do not create a universe from all
|
|
235
|
-
samples and then split: that leaks validation/test locus support. Record excluded
|
|
236
|
-
samples and replicate aggregation separately.
|
|
237
|
-
|
|
238
|
-
## Bundled deterministic CLIs
|
|
239
|
-
|
|
240
|
-
All six helpers reject URLs, traversal, symlinks, and special files; apply byte,
|
|
241
|
-
record, file, coordinate, and worker caps; use no network or gtars import; and
|
|
242
|
-
write no output files. Plans contain fixed argv templates and never launch them.
|
|
243
|
-
|
|
244
|
-
```bash
|
|
245
|
-
python3 -B scripts/bed_validator.py --help
|
|
246
|
-
python3 -B scripts/execution_plan.py --help
|
|
247
|
-
python3 -B scripts/tokenizer_manifest.py --help
|
|
248
|
-
python3 -B scripts/refget_digest_plan.py --help
|
|
249
|
-
python3 -B scripts/coverage_preflight.py --help
|
|
250
|
-
python3 -B scripts/artifact_inspector.py --help
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
Run synthetic tests without bytecode:
|
|
254
|
-
|
|
255
|
-
```bash
|
|
256
|
-
PYTHONDONTWRITEBYTECODE=1 python3 -B -m unittest discover \
|
|
257
|
-
-s tests/gtars -p 'test_*.py' -v
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
## Migration traps removed in 1.1
|
|
261
|
-
|
|
262
|
-
Do not use stale examples containing `gtars.RegionSet`,
|
|
263
|
-
`RegionSet.from_bed`, `TreeTokenizer`, `gtars.igd.build_index`,
|
|
264
|
-
`gtars.uniwig.coverage_from_bed`, `gtars.RefgetStore`, global
|
|
265
|
-
`set_option`/`set_log_level`, `parallel_apply`, or invented exception classes.
|
|
266
|
-
CLI forms such as `uniwig generate`, `igd build`, `scoring score`, and
|
|
267
|
-
`fragsplit cluster-split` are also stale for 0.9.0.
|
|
268
|
-
|
|
269
|
-
Upstream's published docs and stubs have some drift (for example the older
|
|
270
|
-
`GlobalRefgetStore` tutorial and incomplete 0.9.2 stubs). Prefer installed
|
|
271
|
-
signature smoke tests plus immutable tagged source when they conflict.
|
|
272
|
-
|
|
273
|
-
## Bundled references
|
|
274
|
-
|
|
275
|
-
These are the only six bundled references; all links are local and present:
|
|
276
|
-
|
|
277
|
-
- `references/python-api.md` — exact Python 0.9.2 imports and behavior
|
|
278
|
-
- `references/overlap.md` — overlap/count/set algebra and consensus semantics
|
|
279
|
-
- `references/coverage.md` — uniwig, bigWig, coverage, sorting, and resources
|
|
280
|
-
- `references/tokenizers.md` — tokenizer/universe and fragment compatibility
|
|
281
|
-
- `references/refget.md` — digests, stores, BEDbase, network/cache controls
|
|
282
|
-
- `references/cli.md` — CLI 0.9.0 commands, features, and migrations
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: guardian-rails
|
|
3
|
-
description: "Global safety and workspace cleanliness guardrails: strict zero-pollution rules against temporary/scratch files, mandatory in-place editing, and pre-action safety protocols."
|
|
4
|
-
risk: low
|
|
5
|
-
source: built-in
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Global Guardian Rails (Zero-Pollution & Safe Execution Protocol)
|
|
9
|
-
|
|
10
|
-
All AI agents, sub-agents, and domain skills must adhere to these non-negotiable guardrails before and during any code generation or tool execution.
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## 1. Zero Scratch / Temporary File Pollution
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
NEVER DUMP TEMPORARY, SCRATCH, OR DRAFT FILES INTO THE WORKSPACE ROOT OR RANDOM FOLDERS.
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
* ❌ **Forbidden Anti-Patterns**:
|
|
21
|
-
* Temporary scripts or logs in project root: `build_log.txt`, `dev_log.txt`, `output.log`, `*.log`, `*_log.txt`, `check.ps1`, `test.ps1`, `script.sh`
|
|
22
|
-
* Command output redirection to files (e.g. `npm run build > build_log.txt 2>&1`)
|
|
23
|
-
* `temp_*`, `tmp_*`, `scratch_*`, `draft_*`, `sandbox_*`, `test_preview.html`, `preview.html`, `mock_*.json`
|
|
24
|
-
* ✅ **Mandatory Practice**:
|
|
25
|
-
* **Direct Command Execution**: Run build, test, and verification commands directly via the `shell` tool and inspect standard output / standard error directly from the returned tool output. Never dump stdout/stderr into `.txt` or `.log` files.
|
|
26
|
-
* **In-Place Architecture**: Implement code directly within the project's real directory architecture (e.g., `components/`, `src/components/`, `app/`, `lib/`, `tests/`).
|
|
27
|
-
* If a file path is ambiguous, inspect existing project structure (`list_dir`, `find_files`) to locate the correct directory before writing.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## 2. Frontend & Design Zero-Spam Mandate
|
|
32
|
-
|
|
33
|
-
When asked to create UI, prototypes, designs, or styles:
|
|
34
|
-
1. **Target Real Files**: Edit or create production-grade components directly inside the existing frontend framework structure (e.g. `src/components/`, `app/`, `views/`).
|
|
35
|
-
2. **Never Create Detached Preview Files**: Do not generate detached single-file HTML/CSS preview playgrounds unless the user explicitly requested a standalone HTML file.
|
|
36
|
-
3. **Integrate with Existing Styling**: Reuse project Tailwind classes, CSS variables, or component libraries already in place.
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 3. Surgical & Minimal Modifications (Ponytail Principle)
|
|
41
|
-
|
|
42
|
-
* **Deletion > Addition**: Prefer refactoring or extending existing utilities rather than introducing new redundant files.
|
|
43
|
-
* **No Stray Artifacts**: If a command or tool creates a transient log or test output file during verification, it must be deleted before the turn concludes.
|
|
44
|
-
* **Check Dirty Worktree**: Run `git status` or inspect changed files to ensure no unexpected garbage files are left behind.
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## 4. Pre-Flight Checklist Before Every Turn Completion
|
|
49
|
-
|
|
50
|
-
Before reporting any task complete:
|
|
51
|
-
- [ ] No `tmp_*` / `scratch_*` / `preview.*` files left behind.
|
|
52
|
-
- [ ] All new files reside in standard, structured project directories.
|
|
53
|
-
- [ ] Automated tests, linter, and type checks pass cleanly.
|
|
54
|
-
- [ ] Working directory is clean and free of junk.
|