.gitignore
LICENSE.txt
README.md
SPDX.spdx
evaluate_dr_metrics.py
pyproject.toml
requirements.txt
start_dev_server.py
.github/workflows/client-build.yml
.github/workflows/client-tests.yml
.github/workflows/deploy-client.yml
.github/workflows/python-publish.yml
client/.env.example
client/.eslintrc.json
client/.gitignore
client/README.md
client/codegen.yml
client/manageHeaderComments.js
client/next.config.js
client/package-lock.json
client/package.json
client/tsconfig.json
client/vitest.config.mts
client/components/NoDataMessage.tsx
client/components/UiSettingsWrapper.tsx
client/components/ColoredLabel/ColoredLabel.tsx
client/components/ColoredLabel/coloredLabel.scss
client/components/ConfusionMatrix/ConfusionMatrix.tsx
client/components/ConfusionMatrix/confusionMatrix.scss
client/components/ControlBar/ControlBar.module.scss
client/components/ControlBar/ControlBar.tsx
client/components/Dashboard/Dashboard.module.scss
client/components/Dashboard/Dashboard.tsx
client/components/Dashboard/EmptyDashboard.tsx
client/components/Dashboard/getClassCounts.ts
client/components/Dashboard/processConfidenceThresholds.ts
client/components/Dashboard/Demo/ScatterUQDemoDashboard.module.scss
client/components/Dashboard/Demo/ScatterUQDemoDashboard.tsx
client/components/Dashboard/Demo/mnist-global-umap.json
client/components/Dashboard/Demo/mnist-inference-samples.json
client/components/Dashboard/Demo/mnist-prototype-support-examples.json
client/components/Dashboard/Demo/mnist-table-data.json
client/components/Dashboard/Demo/vnat-global-umap.json
client/components/Dashboard/Demo/vnat-inference-samples-input.json
client/components/Dashboard/Demo/vnat-inference-samples.json
client/components/Dashboard/Demo/vnat-prototype-support-examples.json
client/components/Dashboard/Demo/vnat-support-examples-input.json
client/components/Dashboard/Demo/vnat-table-data.json
client/components/Dashboard/__tests__/getClassCounts.test.ts
client/components/Dashboard/__tests__/processConfidenceThresholds.test.ts
client/components/DownloadPage/DownloadPage.module.scss
client/components/DownloadPage/DownloadPage.tsx
client/components/FeedbackModal/FeedbackModal.tsx
client/components/FileDragDrop/FileDragDrop.tsx
client/components/FilteredTable/FilteredTable.module.scss
client/components/FilteredTable/FilteredTable.tsx
client/components/Filters/FilterInput.tsx
client/components/Filters/Filters.module.scss
client/components/Filters/Filters.tsx
client/components/Filters/filterInput.scss
client/components/InfoTooltip/InfoTooltip.module.scss
client/components/InfoTooltip/InfoTooltip.tsx
client/components/Input/InputError.tsx
client/components/Landing/Landing.module.scss
client/components/Landing/Landing.tsx
client/components/Landing/SettingsForm/SettingsForm.module.scss
client/components/Landing/SettingsForm/SettingsForm.tsx
client/components/Matrix/Matrix.tsx
client/components/Matrix/matrix.scss
client/components/ModelSummaryPage/ModelSummaryEmptyPage.module.scss
client/components/ModelSummaryPage/ModelSummaryEmptyPage.tsx
client/components/ModelSummaryPage/ModelSummaryPage.module.scss
client/components/ModelSummaryPage/ModelSummaryPage.tsx
client/components/ProgressBar/ProgressBar.tsx
client/components/ProgressBar/progressBar.scss
client/components/ResponsiveWidth/ResponsiveWidth.tsx
client/components/SamplesBarChart/SamplesBarChart.module.scss
client/components/SamplesBarChart/SamplesBarChart.tsx
client/components/SamplesBarChart/processStackData.ts
client/components/SamplesBarChart/__tests__/processStackData.test.ts
client/components/ScatterUQ/RenderInput.tsx
client/components/ScatterUQ/ScatterUQ.module.scss
client/components/ScatterUQ/ScatterUQ.tsx
client/components/ScatterUQ/ScatterUQDataWrapper.tsx
client/components/ScatterUQ/types.ts
client/components/SelectInputDataType/SelectInputDataType.tsx
client/components/SelectOrUploadModel/SelectOrUploadModel.module.scss
client/components/SelectOrUploadModel/SelectOrUploadModel.tsx
client/components/Settings/Settings.tsx
client/components/Sidebar/Sidebar.module.scss
client/components/Sidebar/Sidebar.tsx
client/components/Training/Training.module.scss
client/components/Training/Training.tsx
client/components/Training/TrainingSuccess.tsx
client/components/UploadSampleFiles/UploadSampleFiles.module.scss
client/components/UploadSampleFiles/UploadSampleFiles.tsx
client/graphql/generated.ts
client/graphql/mutations/runInference.graphql
client/graphql/mutations/training.graphql
client/graphql/mutations/uploadModel.graphql
client/graphql/mutations/uploadSampleFile.graphql
client/graphql/queries/dimensionalityReduction.graphql
client/graphql/queries/getPrototypeSupportEmbeddings.graphql
client/graphql/queries/modelSummary.graphql
client/graphql/queries/models.graphql
client/graphql/queries/renderInferenceFeatureData.graphql
client/graphql/queries/renderSupportFeatureData.graphql
client/hooks/useFilters.ts
client/hooks/useGetColorFromLabel.ts
client/hooks/useOodThresholds.ts
client/hooks/useProcessAndSetSamples.tsx
client/pages/_app.tsx
client/pages/_document.tsx
client/pages/dashboard.tsx
client/pages/demo.tsx
client/pages/download.tsx
client/pages/index.tsx
client/pages/model-summary-page.tsx
client/pages/settings.tsx
client/pages/training.tsx
client/public/.nojekyll
client/public/EQUI(NE)^2_Full_Logo.svg
client/public/EQUI(NE)^2_Logo.svg
client/public/EQUI(NE)^2_Text.svg
client/public/EQUINE2_fav.svg
client/public/favicon.ico
client/public/favicon.svg
client/public/ood.png
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-9.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-0.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-1.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-10.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-11.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-12.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-13.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-14.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-15.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-16.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-17.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-18.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-19.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-2.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-20.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-21.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-22.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-23.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-24.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-25.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-26.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-27.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-28.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-29.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-3.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-30.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-31.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-32.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-33.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-34.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-35.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-36.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-37.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-38.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-39.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-4.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-5.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-6.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-7.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-8.jpg
client/public/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-9.jpg
client/redux/inferenceSettings.ts
client/redux/modal.ts
client/redux/reduxHooks.ts
client/redux/store.ts
client/redux/uiSettings.ts
client/styles/app.scss
client/styles/bootstrapOverrides.scss
client/styles/icon.scss
client/types/react-chartkick/index.d.ts
client/utils/_variables.scss
client/utils/ajvValidate.ts
client/utils/chartkick.ts
client/utils/colors.ts
client/utils/comparator.ts
client/utils/copyArrayThenDelete.ts
client/utils/determineSampleCondition.ts
client/utils/downloadFile.ts
client/utils/generateString.ts
client/utils/getLabelsSortedByDistance.ts
client/utils/getLabelsSortedByProbability.ts
client/utils/getPlotDataForSample.ts
client/utils/getRelativePositionFromEvent.ts
client/utils/getRelevantPrototypeSupportEmbeddingsForSample.ts
client/utils/graphqlMultipartFormFetcher.ts
client/utils/handleFetchResponse.ts
client/utils/isIn.ts
client/utils/isValidVersion.ts
client/utils/labelColors.ts
client/utils/roundSigDigits.ts
client/utils/routes.ts
client/utils/setDocumentTitle.ts
client/utils/stripFileExtension.ts
client/utils/toHex.ts
client/utils/uploadModelAndSampleFiles.ts
client/utils/__tests__/ajvValidate.test.ts
client/utils/__tests__/copyArrayThenDelete.test.ts
client/utils/__tests__/handleFetchResponse.test.ts
client/utils/__tests__/isValidVersion.test.ts
client/utils/__tests__/localStorage.test.ts
client/utils/__tests__/roundSigDigits.test.ts
client/utils/__tests__/stripFileExtension.test.ts
client/utils/__tests__/toHex.test.ts
client/utils/localStorage/clearLocalStorage.ts
client/utils/localStorage/getLocalStorageItem.ts
client/utils/localStorage/localStorageKeys.ts
client/utils/localStorage/setLocalStorageItem.ts
src/equine_webapp/.gitignore
src/equine_webapp/__init__.py
src/equine_webapp/_version.py
src/equine_webapp/flask_server.py
src/equine_webapp/utils.py
src/equine_webapp.egg-info/PKG-INFO
src/equine_webapp.egg-info/SOURCES.txt
src/equine_webapp.egg-info/dependency_links.txt
src/equine_webapp.egg-info/entry_points.txt
src/equine_webapp.egg-info/requires.txt
src/equine_webapp.egg-info/top_level.txt
src/equine_webapp/client/404.html
src/equine_webapp/client/EQUI(NE)^2_Full_Logo.svg
src/equine_webapp/client/EQUI(NE)^2_Logo.svg
src/equine_webapp/client/EQUI(NE)^2_Text.svg
src/equine_webapp/client/EQUINE2_fav.svg
src/equine_webapp/client/dashboard.html
src/equine_webapp/client/demo.html
src/equine_webapp/client/download.html
src/equine_webapp/client/favicon.ico
src/equine_webapp/client/favicon.svg
src/equine_webapp/client/index.html
src/equine_webapp/client/model-summary-page.html
src/equine_webapp/client/ood.png
src/equine_webapp/client/settings.html
src/equine_webapp/client/training.html
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-0_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-1_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-2_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-3_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-4_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-5_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-6_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-7_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-8_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/class-9_support-9.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-0.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-1.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-10.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-11.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-12.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-13.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-14.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-15.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-16.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-17.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-18.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-19.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-2.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-20.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-21.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-22.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-23.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-24.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-25.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-26.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-27.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-28.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-29.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-3.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-30.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-31.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-32.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-33.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-34.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-35.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-36.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-37.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-38.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-39.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-4.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-5.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-6.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-7.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-8.jpg
src/equine_webapp/client/ScatterUQ-demo-images/FashionMNIST-ID_MNIST-OOD/images/sample-9.jpg
src/equine_webapp/client/_next/static/BIbH6i2C0RwyoOR9HP8py/_buildManifest.js
src/equine_webapp/client/_next/static/BIbH6i2C0RwyoOR9HP8py/_ssgManifest.js
src/equine_webapp/client/_next/static/chunks/192-b92151c79b9841d6.js
src/equine_webapp/client/_next/static/chunks/402-363f0764365c8a98.js
src/equine_webapp/client/_next/static/chunks/420-1522028cbdda33f5.js
src/equine_webapp/client/_next/static/chunks/424-3619d8f510cf6772.js
src/equine_webapp/client/_next/static/chunks/581-923161b0fabfcdba.js
src/equine_webapp/client/_next/static/chunks/644-6d3655bc34624a79.js
src/equine_webapp/client/_next/static/chunks/743-9eb63513b6150d5f.js
src/equine_webapp/client/_next/static/chunks/996-1b8878260b9aa847.js
src/equine_webapp/client/_next/static/chunks/framework-49c6cecf1f6d5795.js
src/equine_webapp/client/_next/static/chunks/main-f27cf2c92fd50780.js
src/equine_webapp/client/_next/static/chunks/polyfills-42372ed130431b0a.js
src/equine_webapp/client/_next/static/chunks/webpack-f164db4954bac6ec.js
src/equine_webapp/client/_next/static/chunks/pages/_app-e6c9b4f6cafbb72c.js
src/equine_webapp/client/_next/static/chunks/pages/_error-7a92967bea80186d.js
src/equine_webapp/client/_next/static/chunks/pages/dashboard-44c993bf3bbf0ab7.js
src/equine_webapp/client/_next/static/chunks/pages/demo-b4c17d680ca698f4.js
src/equine_webapp/client/_next/static/chunks/pages/download-d77cebf8e40c79cb.js
src/equine_webapp/client/_next/static/chunks/pages/index-a49c846d8bb28207.js
src/equine_webapp/client/_next/static/chunks/pages/model-summary-page-d5b262c3e40eb950.js
src/equine_webapp/client/_next/static/chunks/pages/settings-8e2a3eada448b8cb.js
src/equine_webapp/client/_next/static/chunks/pages/training-d1df3b6374d63123.js
src/equine_webapp/client/_next/static/css/39ceee4e5908c872.css
src/equine_webapp/client/_next/static/css/6ff9d5c9e0a16434.css
src/equine_webapp/client/_next/static/css/8af4c3b37687e360.css
src/equine_webapp/client/_next/static/css/943c3034c4b068f0.css
src/equine_webapp/client/_next/static/css/ef9f5150e4d50df1.css
src/equine_webapp/client/_next/static/css/f46237fb101eef92.css
src/equine_webapp/client/_next/static/css/fb1ec0dcf088682f.css
src/equine_webapp/client/_next/static/media/EQUI(NE)^2_Full_Logo.31ea5d30.svg
src/equine_webapp/graphql/__init__.py
src/equine_webapp/graphql/graphql_config.py
src/equine_webapp/graphql/mutation_resolvers.py
src/equine_webapp/graphql/query_resolvers.py
src/equine_webapp/graphql/types/dimensionality_reduction.graphql
src/equine_webapp/graphql/types/model_summary.graphql
src/equine_webapp/graphql/types/models.graphql
src/equine_webapp/graphql/types/run_inference.graphql
src/equine_webapp/graphql/types/training.graphql
src/equine_webapp/graphql/types/upload_file.graphql
src/equine_webapp/graphql/types/upload_model.graphql
src/equine_webapp/graphql/types/uq_viz.graphql
src/equine_webapp/tests/.gitignore
src/equine_webapp/tests/__init__.py
src/equine_webapp/tests/conftest.py
src/equine_webapp/tests/test_mutation_runInference.py
src/equine_webapp/tests/test_mutation_uploadFile.py
src/equine_webapp/tests/test_query_dimensionalityReduction.py
src/equine_webapp/tests/test_query_getPrototypeSupportEmbeddings.py
src/equine_webapp/tests/test_query_models.py
src/equine_webapp/tests/test_static_web_files.py
src/equine_webapp/tests/train_model_for_testing.py
src/equine_webapp/tests/utils.py