add-curve-format
FreeAdd support for a new curve data format in the Curves package converter system
The English summary is being prepared. Showing the original description.
Add a new single-objective optimization algorithm to the sci-comp library. Use when the user asks to implement a new optimizer (e.g. gradient descent, BFGS, simulated annealing, differential evolution).
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
The user wants to add a new optimizer: $ARGUMENTS
Follow these steps exactly. Do not skip any step.
Before writing code, research the algorithm:
Read these files to understand codebase patterns:
src/optimization/single-objective/optimizers/nelder-mead.ts — reference optimizersrc/optimization/single-objective/__tests__/nelder-mead.test.ts — reference tests (the new optimizer MUST include all the same test cases)src/optimization/single-objective/__tests__/helpers.ts — test functions and helperssrc/optimization/single-objective/examples/unconstrained.ts — reference exampleCreate src/optimization/single-objective/optimizers/<name>.ts following the pattern from nelder-mead.ts.
runInternal receives the already-penalized objective — do NOT handle constraintsrunInternal receives settings with defaults already applied via withDefaultsconverged = true only if a convergence criterion was met, not just maxIterationscostHistory: pre-allocate Float64Array(maxIter) with a separate costLen counter; return costHistory.subarray(0, costLen)Edit src/optimization/single-objective/index.ts:
Add export for the class and settings type (in the "Built-in optimizers" section):
export {<Name>} from './optimizers/<name>';
export type {<Name>Settings} from './optimizers/<name>';
Add auto-registration (in the "Auto-register" section at the bottom):
import {<Name>} from './optimizers/<name>';
registerOptimizer('<kebab-name>', () => new <Name>());
Create src/optimization/single-objective/__tests__/<name>.test.ts.
The new test file MUST replicate ALL test cases from nelder-mead.test.ts — every describe block, each with both sync and async variants.
You may adjust:
x0 starting points (if the algorithm needs a closer start)maxIterations, tolerance, and algorithm-specific settingstoBeCloseTo / expectPointClose (if the algorithm is less precise)You must NOT:
Create src/optimization/single-objective/examples/<name>.ts following the structure of unconstrained.ts. Must show minimize, maximize, and at least one constrained example with boxConstraints + applyPenalty.
Run in order:
npm run lint-fixnpm run build — must compile without errorsnpm test — run all testsCRITICAL: If any tests fail, do NOT silently fix or skip them. Instead:
The benchmark suite is split into two runners that share objective functions via
benchmarks/test-functions.ts. Register the new optimizer in both runners:
src/optimization/single-objective/benchmarks/unconstrained-benchmarks.ts — single x₀ per problemsrc/optimization/single-objective/benchmarks/multistart-benchmarks.ts — three x₀ per problemIn each file:
Import the new optimizer class
Add an entry to the optimizers array:
{
name: '<Name>',
optimizer: new <Name>(),
settings: {maxIterations: 10_000, /* algorithm-specific defaults */},
},
Run both benchmarks:
npx tsx src/optimization/single-objective/benchmarks/unconstrained-benchmarks.tsnpx tsx src/optimization/single-objective/benchmarks/multistart-benchmarks.tsRegenerate both markdown reports (unconstrained-benchmarks.md and multistart-benchmarks.md) with the new optimizer's rows/columns.
Update the problem count / optimizer count in the banner if changed.
Do NOT add new objective functions inline — export them from test-functions.ts so both runners pick them up.
In CLAUDE.md, update the architecture tree — add the new optimizer file under optimizers/.
In README.md, add the new optimizer to the list under "Single-objective" section, with a Wikipedia or reference link.
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Add support for a new curve data format in the Curves package converter system
The English summary is being prepared. Showing the original description.
Create info panels that appear in the context panel based on semantic types
The English summary is being prepared. Showing the original description.
Add unit tests to a Datagrok package
The English summary is being prepared. Showing the original description.
Answer a "how do I …" question about the platform with a Gherkin scenario on @datagrok-libraries/bdd that is filmed into a how-to video (grok-bdd guide), so the answer is demonstrated, sent as a video plus numbered steps, and kept as a regression test; the same scenarios, filmed in help mode, are the GIFs of the help pages
The English summary is being prepared. Showing the original description.
Translate hand-written Playwright specs (or any existing UI tests) into Gherkin features on @datagrok-libraries/bdd, then prove the features test what they claim by backward-matching them against the originals with independent reviewers, and fix the gaps in the core, the library and the features
The English summary is being prepared. Showing the original description.
Create a Datagrok application with routing, views, and data access
The English summary is being prepared. Showing the original description.