WinslowFan Claude Opus 4.8 commited on
Commit
6d84fd1
·
1 Parent(s): 92129bf

Functions: only show strings longer than 10 chars; remove chain composition from UI

Browse files

- get_functions filters out annotations <= 10 chars.
- Remove Chain Composition from chain metadata block and the
alternative observations table (binding status retained; DB column,
backend field and docs unchanged).

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

backend/app/protein/tsv_loader.py CHANGED
@@ -198,7 +198,7 @@ def get_functions(pdb_id: str, auth_asym_id: str) -> Optional[List[str]]:
198
  row = get_node_row(pdb_id, auth_asym_id)
199
  if row is None:
200
  return None
201
- return _parse_functions(row["ranked_functions"])
202
 
203
 
204
  def get_state_id(pdb_id: str, auth_asym_id: str) -> Optional[str]:
 
198
  row = get_node_row(pdb_id, auth_asym_id)
199
  if row is None:
200
  return None
201
+ return [f for f in _parse_functions(row["ranked_functions"]) if len(f) > 10]
202
 
203
 
204
  def get_state_id(pdb_id: str, auth_asym_id: str) -> Optional[str]:
frontend/src/components/datasets/protein/ChainBasicInfoCards.tsx CHANGED
@@ -107,11 +107,6 @@ const ChainBasicInfoCards: React.FC<ChainBasicInfoCardsProps> = ({ metadata, isL
107
  <div className="text-sm font-semibold text-slate-900 capitalize">{metadata?.binding_status || '—'}</div>
108
  </div>
109
 
110
- <div className="break-inside-avoid mb-3" style={{ breakInside: 'avoid' }}>
111
- <div className="text-xs font-medium text-slate-500 uppercase tracking-wider mb-1">Chain Composition</div>
112
- <div className="text-sm font-semibold text-slate-900 capitalize">{metadata?.chain_composition || '—'}</div>
113
- </div>
114
-
115
  <div className="break-inside-avoid mb-3" style={{ breakInside: 'avoid' }}>
116
  <div className="text-xs font-medium text-slate-500 uppercase tracking-wider mb-1">CATH ID</div>
117
  <div className="text-sm font-semibold text-slate-900 font-mono">{metadata?.cath_id || 'uncategorized'}</div>
 
107
  <div className="text-sm font-semibold text-slate-900 capitalize">{metadata?.binding_status || '—'}</div>
108
  </div>
109
 
 
 
 
 
 
110
  <div className="break-inside-avoid mb-3" style={{ breakInside: 'avoid' }}>
111
  <div className="text-xs font-medium text-slate-500 uppercase tracking-wider mb-1">CATH ID</div>
112
  <div className="text-sm font-semibold text-slate-900 font-mono">{metadata?.cath_id || 'uncategorized'}</div>
frontend/src/components/datasets/protein/DataTable.tsx CHANGED
@@ -105,9 +105,6 @@ export const DataTable: React.FC<DataTableProps> = ({ data, loading, total, filt
105
  <th onClick={() => handleSort('binding_status')}>
106
  Binding status {getSortIcon('binding_status')}
107
  </th>
108
- <th onClick={() => handleSort('chain_composition')}>
109
- Chain composition {getSortIcon('chain_composition')}
110
- </th>
111
  <th onClick={() => handleSort('delta_rosetta')}>
112
  ΔRosetta {getSortIcon('delta_rosetta')}
113
  </th>
@@ -163,9 +160,6 @@ export const DataTable: React.FC<DataTableProps> = ({ data, loading, total, filt
163
  <td className="capitalize">
164
  {record.binding_status || <span className="placeholder">—</span>}
165
  </td>
166
- <td className="capitalize">
167
- {record.chain_composition || <span className="placeholder">—</span>}
168
- </td>
169
  {(['delta_rosetta', 'delta_foldx', 'delta_evoef2', 'delta_rw', 'delta_rw_plus'] as const).map(field => {
170
  const val = record[field];
171
  return (
 
105
  <th onClick={() => handleSort('binding_status')}>
106
  Binding status {getSortIcon('binding_status')}
107
  </th>
 
 
 
108
  <th onClick={() => handleSort('delta_rosetta')}>
109
  ΔRosetta {getSortIcon('delta_rosetta')}
110
  </th>
 
160
  <td className="capitalize">
161
  {record.binding_status || <span className="placeholder">—</span>}
162
  </td>
 
 
 
163
  {(['delta_rosetta', 'delta_foldx', 'delta_evoef2', 'delta_rw', 'delta_rw_plus'] as const).map(field => {
164
  const val = record[field];
165
  return (