tscircuit/autorouting-dataset-01

This code manages the hardware and electronic components for circuit design and PCB layout, defining components like resistors, capacitors, transistors, connectors, and footprints, and providing tools for component placement, PCB topology, and electrical connections.

Version
1.0.102
License
unset
Stars
4

scripts/run-benchmark/loadScenarioList.ts

import { readdir, readFile } from "node:fs/promises"
import path from "node:path"
import type { Scenario } from "types/run-benchmark/Scenario"
import type { SimpleRouteJson } from "types/run-benchmark/SimpleRouteJson"

const loadScenarioList = async (inputs: {
  datasetDirectory: string
  scenarioCountLimit: number | null
}): Promise<Scenario[]> => {
  const { datasetDirectory, scenarioCountLimit } = inputs
  const datasetFileList = (await readdir(datasetDirectory))
    .filter((fileName) => fileName.endsWith(".simple-route.json"))
    .sort()
  const limitedFileList =
    scenarioCountLimit === null
      ? datasetFileList
      : datasetFileList.slice(0, scenarioCountLimit)

  if (limitedFileList.length === 0) {
    return []
  }

  const scenarioList: Scenario[] = []

  for (const fileName of limitedFileList) {
    const scenarioName = fileName.replace(".simple-route.json", "")
    const simpleRouteJsonPath = path.join(datasetDirectory, fileName)
    const simpleRouteJsonText = await readFile(simpleRouteJsonPath, "utf8")
    const simpleRouteJson = JSON.parse(simpleRouteJsonText) as SimpleRouteJson
    scenarioList.push({ scenarioName, simpleRouteJsonPath, simpleRouteJson })
  }

  return scenarioList
}

export { loadScenarioList }