diff --git a/gui/src/client/src/components/workspace/WorkspaceDiscovery.tsx b/gui/src/client/src/components/workspace/WorkspaceDiscovery.tsx index a18e8e7..0012bf0 100644 --- a/gui/src/client/src/components/workspace/WorkspaceDiscovery.tsx +++ b/gui/src/client/src/components/workspace/WorkspaceDiscovery.tsx @@ -11,6 +11,7 @@ import Chip from "@mui/material/Chip"; import CircularProgress from "@mui/material/CircularProgress"; import Collapse from "@mui/material/Collapse"; import Divider from "@mui/material/Divider"; +import FormControlLabel from "@mui/material/FormControlLabel"; import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; import ToggleButton from "@mui/material/ToggleButton"; @@ -268,7 +269,12 @@ function ResultRow({ )} - + fp {(result.fingerprintSimilarity * 100).toFixed(1)}% @@ -332,6 +338,8 @@ export const WorkspaceDiscovery: React.FC = ({ session const [scoreMode, setScoreMode] = React.useState("subsequence"); const [n, setN] = React.useState(100); const [topX, setTopX] = React.useState(20); + const [includeUserUploads, setIncludeUserUploads] = React.useState(false); + const [onlyUserUploads, setOnlyUserUploads] = React.useState(false); const [resultsView, setResultsView] = React.useState<"pairwise" | "msa">("pairwise"); const [selectedForMsa, setSelectedForMsa] = React.useState>(new Set()); @@ -349,6 +357,9 @@ export const WorkspaceDiscovery: React.FC = ({ session scoreMode, n, topX, + includeUserUploads: (includeUserUploads || onlyUserUploads) && entryType !== "bgc", + onlyUserUploads: onlyUserUploads && entryType !== "bgc", + sessionId: session.sessionId, }), onError: (err) => { const msg = err instanceof Error ? err.message : String(err); @@ -593,6 +604,34 @@ export const WorkspaceDiscovery: React.FC = ({ session disabled={discoveryMutation.isPending} /> + setIncludeUserUploads(e.target.checked)} + disabled={ + discoveryMutation.isPending || entryType === "bgc" || compoundItems.length === 0 || onlyUserUploads + } + /> + } + label="Include my uploaded compounds" + title="Uploaded compounds compete for a spot among the nearest N candidates, then follow the usual top-X ranking. BGC uploads aren't supported yet." + /> + + setOnlyUserUploads(e.target.checked)} + disabled={discoveryMutation.isPending || entryType === "bgc" || compoundItems.length === 0} + /> + } + label="Only use my uploads" + title="Skip the shared database entirely and align only against your own uploaded compounds." + /> +