WinslowFan Claude Opus 4.8 commited on
Commit
b82a477
Β·
1 Parent(s): d7865ac

Rename pair_fidelity to observation_fidelity; document feature columns

Browse files

Rename the edge fidelity field across the API model, query, and data table,
document the experimental-context and state-cluster columns, and refresh the
database introduction.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

backend/app/protein/api/routes/protein.py CHANGED
@@ -141,7 +141,7 @@ async def get_data(filters: FilterParams):
141
  state_id_b=getattr(row, "state_id_B", None) or None,
142
  state_fidelity=getattr(row, "state_fidelity", None) or None,
143
  avg_sim=getattr(row, "avg_sim", None) or None,
144
- pair_fidelity=getattr(row, "pair_fidelity", None) or None,
145
  ))
146
 
147
  return DataResponse(
 
141
  state_id_b=getattr(row, "state_id_B", None) or None,
142
  state_fidelity=getattr(row, "state_fidelity", None) or None,
143
  avg_sim=getattr(row, "avg_sim", None) or None,
144
+ observation_fidelity=getattr(row, "observation_fidelity", None) or None,
145
  ))
146
 
147
  return DataResponse(
backend/app/protein/data_loader.py CHANGED
@@ -175,7 +175,7 @@ class DataManager:
175
  CAST(e.structure_sim AS REAL) AS structure_sim,
176
  e."delta_Rosetta", e."delta_FoldX", e."delta_EvoEF2",
177
  e."delta_RM", e."delta_RM+",
178
- e.state_id_B, e.state_fidelity, e.avg_sim, e.pair_fidelity
179
  FROM edge e
180
  {where_sql}
181
  LIMIT ?
 
175
  CAST(e.structure_sim AS REAL) AS structure_sim,
176
  e."delta_Rosetta", e."delta_FoldX", e."delta_EvoEF2",
177
  e."delta_RM", e."delta_RM+",
178
+ e.state_id_B, e.state_fidelity, e.avg_sim, e.observation_fidelity
179
  FROM edge e
180
  {where_sql}
181
  LIMIT ?
backend/app/protein/models.py CHANGED
@@ -118,7 +118,7 @@ class DataRecord(BaseModel):
118
  state_id_b: Optional[str] = None
119
  state_fidelity: Optional[str] = None
120
  avg_sim: Optional[str] = None
121
- pair_fidelity: Optional[str] = None
122
 
123
 
124
  class DataResponse(BaseModel):
 
118
  state_id_b: Optional[str] = None
119
  state_fidelity: Optional[str] = None
120
  avg_sim: Optional[str] = None
121
+ observation_fidelity: Optional[str] = None
122
 
123
 
124
  class DataResponse(BaseModel):
backend/assets/MuSProt_documentation.md CHANGED
@@ -1,7 +1,6 @@
1
  # MuSProt Dataset Documentation
2
 
3
- **MuSProt** (Multistate Protein Database) is a large-scale structural database capturing conformational diversity across protein chains derived from the Protein Data Bank (PDB). It encodes pairwise structural relationships between chain instances sharing the same UniProt annotation, enabling systematic analysis of protein flexibility, binding effects, and functional variation.
4
-
5
  ---
6
 
7
  ## Download
@@ -33,6 +32,7 @@ Each row represents a single protein chain instance (one PDB entry + chain).
33
  | `original_metals` | TEXT | Metal ions present in the structure |
34
  | `original_ligands` | TEXT | Small-molecule ligands present in the structure |
35
  | `sequence_id` | TEXT | Internal sequence cluster identifier |
 
36
  | `CATH_ID` | TEXT | CATH domain assignment |
37
  | `cath_class` | TEXT | CATH class (e.g. `1` = Mainly Alpha) |
38
  | `cath_arch` | TEXT | CATH architecture |
@@ -40,6 +40,11 @@ Each row represents a single protein chain instance (one PDB entry + chain).
40
  | `cath_homology` | TEXT | CATH homology superfamily |
41
  | `cath_superfamily` | TEXT | Full CATH superfamily code (e.g. `1.10.10.10`) |
42
  | `domain_length` | INT | Length of the matched CATH domain |
 
 
 
 
 
43
  | `Rosetta` | FLOAT | Rosetta total energy score |
44
  | `FoldX` | FLOAT | FoldX total energy score |
45
  | `EvoEF2` | FLOAT | EvoEF2 total energy score |
@@ -47,6 +52,7 @@ Each row represents a single protein chain instance (one PDB entry + chain).
47
  | `RM+` | FLOAT | RosettaMembrane+ energy score |
48
  | `ranked_functions` | TEXT | JSON-encoded list of ranked GO/functional annotations |
49
 
 
50
  ---
51
 
52
  ### Table: `edge`
@@ -67,6 +73,11 @@ Each row represents a pairwise structural comparison between two chain instances
67
  | `delta_EvoEF2` | FLOAT | EvoEF2 energy difference (B βˆ’ A) |
68
  | `delta_RM` | FLOAT | RosettaMembrane energy difference (B βˆ’ A) |
69
  | `delta_RM+` | FLOAT | RosettaMembrane+ energy difference (B βˆ’ A) |
 
 
 
 
 
70
 
71
  ---
72
 
 
1
  # MuSProt Dataset Documentation
2
 
3
+ **MuSProt** (Multistate Protein Database) is a million-scale multimodal database for multistate proteins, designed to support programmable protein design and AI model development. It links experimentally observed conformational states of identical protein sequences from the PDB, organizes them into state clusters and transition relationships, and enriches each record with structural similarity, experimental context, state-specific function rankings and transition fidelity labels. Users can search, browse and download MuSProt records to study conformational diversity, state-dependent functions and feasible protein state transitions.
 
4
  ---
5
 
6
  ## Download
 
32
  | `original_metals` | TEXT | Metal ions present in the structure |
33
  | `original_ligands` | TEXT | Small-molecule ligands present in the structure |
34
  | `sequence_id` | TEXT | Internal sequence cluster identifier |
35
+ | `state_id` | TEXT | Conformational state cluster this chain is assigned to (`0`, `1`, `2`, …) |
36
  | `CATH_ID` | TEXT | CATH domain assignment |
37
  | `cath_class` | TEXT | CATH class (e.g. `1` = Mainly Alpha) |
38
  | `cath_arch` | TEXT | CATH architecture |
 
40
  | `cath_homology` | TEXT | CATH homology superfamily |
41
  | `cath_superfamily` | TEXT | Full CATH superfamily code (e.g. `1.10.10.10`) |
42
  | `domain_length` | INT | Length of the matched CATH domain |
43
+ | `experimental_method` | TEXT | Structure determination method (e.g. `X-RAY DIFFRACTION`, `ELECTRON MICROSCOPY`, `SOLUTION NMR`) |
44
+ | `pH` | FLOAT | pH of the experimental / crystallization condition |
45
+ | `temp_K` | FLOAT | Temperature of the experiment, in Kelvin |
46
+ | `experimental_details` | TEXT | Free-text crystallization / sample-preparation details |
47
+ | `resolution` | FLOAT | Experimental resolution in Γ… (lower is sharper; empty for methods without a resolution) |
48
  | `Rosetta` | FLOAT | Rosetta total energy score |
49
  | `FoldX` | FLOAT | FoldX total energy score |
50
  | `EvoEF2` | FLOAT | EvoEF2 total energy score |
 
52
  | `RM+` | FLOAT | RosettaMembrane+ energy score |
53
  | `ranked_functions` | TEXT | JSON-encoded list of ranked GO/functional annotations |
54
 
55
+
56
  ---
57
 
58
  ### Table: `edge`
 
73
  | `delta_EvoEF2` | FLOAT | EvoEF2 energy difference (B βˆ’ A) |
74
  | `delta_RM` | FLOAT | RosettaMembrane energy difference (B βˆ’ A) |
75
  | `delta_RM+` | FLOAT | RosettaMembrane+ energy difference (B βˆ’ A) |
76
+ | `state_id_A` | TEXT | Conformational state cluster of chain A |
77
+ | `state_id_B` | TEXT | Conformational state cluster of chain B |
78
+ | `avg_sim` | TEXT | Average structural similarity within the state cluster (`>0.95` or a numeric value) |
79
+ | `state_fidelity` | TEXT | State-level transition fidelity label: `identical`, `high`, `medium`, or `low` |
80
+ | `observation_fidelity` | TEXT | Observation-level transition fidelity label: `identical`, `high`, `medium`, or `low` |
81
 
82
  ---
83
 
frontend/src/components/datasets/protein/DataTable.tsx CHANGED
@@ -126,8 +126,8 @@ export const DataTable: React.FC<DataTableProps> = ({ data, loading, total, filt
126
  <th onClick={() => handleSort('avg_sim')}>
127
  State avg. similarity {getSortIcon('avg_sim')}
128
  </th>
129
- <th onClick={() => handleSort('pair_fidelity')}>
130
- Observation fidelity {getSortIcon('pair_fidelity')}
131
  </th>
132
  <th onClick={() => handleSort('structure_sim')}>
133
  Observation similarity {getSortIcon('structure_sim')}
@@ -165,7 +165,7 @@ export const DataTable: React.FC<DataTableProps> = ({ data, loading, total, filt
165
  <td className="font-mono">{record.state_id_b ?? <span className="placeholder">β€”</span>}</td>
166
  <td>{record.state_fidelity ?? <span className="placeholder">β€”</span>}</td>
167
  <td>{record.avg_sim ?? <span className="placeholder">β€”</span>}</td>
168
- <td>{record.pair_fidelity ?? <span className="placeholder">β€”</span>}</td>
169
  <td className="numeric">{record.structure_sim != null ? record.structure_sim.toFixed(3) : <span className="placeholder">β€”</span>}</td>
170
  </tr>
171
  ))}
 
126
  <th onClick={() => handleSort('avg_sim')}>
127
  State avg. similarity {getSortIcon('avg_sim')}
128
  </th>
129
+ <th onClick={() => handleSort('observation_fidelity')}>
130
+ Observation fidelity {getSortIcon('observation_fidelity')}
131
  </th>
132
  <th onClick={() => handleSort('structure_sim')}>
133
  Observation similarity {getSortIcon('structure_sim')}
 
165
  <td className="font-mono">{record.state_id_b ?? <span className="placeholder">β€”</span>}</td>
166
  <td>{record.state_fidelity ?? <span className="placeholder">β€”</span>}</td>
167
  <td>{record.avg_sim ?? <span className="placeholder">β€”</span>}</td>
168
+ <td>{record.observation_fidelity ?? <span className="placeholder">β€”</span>}</td>
169
  <td className="numeric">{record.structure_sim != null ? record.structure_sim.toFixed(3) : <span className="placeholder">β€”</span>}</td>
170
  </tr>
171
  ))}
frontend/src/components/datasets/protein/ProteinDashboard.tsx CHANGED
@@ -334,10 +334,13 @@ export function ProteinDashboard() {
334
  <section className="px-1">
335
  <h1 className="text-2xl font-semibold text-slate-900">MuSProt β€” Multistate Protein Database</h1>
336
  <p className="mt-2 max-w-4xl text-slate-600 leading-relaxed">
337
- MuSProt is a large-scale structural database capturing conformational diversity across
338
- protein chains derived from the Protein Data Bank (PDB). It encodes pairwise structural
339
- relationships between chain instances that share the same UniProt annotation, enabling
340
- systematic analysis of protein flexibility, binding effects, and functional variation.
 
 
 
341
  </p>
342
  </section>
343
 
 
334
  <section className="px-1">
335
  <h1 className="text-2xl font-semibold text-slate-900">MuSProt β€” Multistate Protein Database</h1>
336
  <p className="mt-2 max-w-4xl text-slate-600 leading-relaxed">
337
+ <span className="font-semibold text-slate-900">MuSProt</span> (Multistate Protein Database) is a
338
+ million-scale multimodal database for multistate proteins, designed to support programmable protein
339
+ design and AI model development. It links experimentally observed conformational states of identical
340
+ protein sequences from the PDB, organizes them into state clusters and transition relationships, and
341
+ enriches each record with structural similarity, experimental context, state-specific function
342
+ rankings and transition fidelity labels. Users can search, browse and download MuSProt records to
343
+ study conformational diversity, state-dependent functions and feasible protein state transitions.
344
  </p>
345
  </section>
346
 
frontend/src/types/protein.ts CHANGED
@@ -96,7 +96,7 @@ export interface DataRecord {
96
  state_id_b?: string | null;
97
  state_fidelity?: string | null;
98
  avg_sim?: string | null;
99
- pair_fidelity?: string | null;
100
  }
101
 
102
  export interface DataResponse {
 
96
  state_id_b?: string | null;
97
  state_fidelity?: string | null;
98
  avg_sim?: string | null;
99
+ observation_fidelity?: string | null;
100
  }
101
 
102
  export interface DataResponse {