# paths are relative to the location of setup.py in the main package

notebooks = {

    "AGIPD": {
        "DARK": {
            "notebook":
                "notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb",
            "dep_notebooks": [
                "notebooks/generic/overallmodules_Darks_Summary_NBC.ipynb"],
            "concurrency": {"parameter": "modules",
                            "use function": "find_modules",
                            "cluster cores": 8},
        },
        "PC": {
            "notebook": "notebooks/AGIPD/Chracterize_AGIPD_Gain_PC_NBC.ipynb",
            "dep_notebooks": [
                "notebooks/AGIPD/Chracterize_AGIPD_Gain_PC_Summary.ipynb"],
            "concurrency": {"parameter": "modules",
                            "default concurrency": 16,
                            "cluster cores": 32},
        },
        "FF": {
            "notebook":
                "notebooks/AGIPD/Characterize_AGIPD_Gain_FlatFields_NBC.ipynb",
            "dep_notebooks": [
                "notebooks/AGIPD/Characterize_AGIPD_Gain_FlatFields_Summary.ipynb"],
            "concurrency": {"parameter": "modules",
                            "default concurrency": 16,
                            "cluster cores": 16},
        },
        "CORRECT": {
            "notebook": "notebooks/AGIPD/AGIPD_Correct_and_Verify.ipynb",
            "dep_notebooks": [
                "notebooks/AGIPD/AGIPD_Correct_and_Verify_Summary_NBC.ipynb"],
            "concurrency": {"parameter": "sequences",
                            "use function": "balance_sequences",
                            "default concurrency": [-1],
                            "cluster cores": 16},
        },
        "COMBINE": {
            "notebook":
                "notebooks/AGIPD/AGIPD_Characterize_Gain_Combine_NBC.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 8},
        },
        "FF_HISTS": {
            "notebook":
                "notebooks/AGIPD/AGIPD_FF_Histogramming.ipynb",
            "concurrency": {"parameter": "modules",
                            "default concurrency": list(range(16)),
                            "cluster cores": 1},
               },
    },
    "LPD": {
        "DARK": {
            "notebook": "notebooks/LPD/LPDChar_Darks_NBC.ipynb",
            "dep_notebooks": [
                "notebooks/generic/overallmodules_Darks_Summary_NBC.ipynb"],
            "concurrency": {"parameter": "modules",
                            "default concurrency": list(range(16)),
                            "cluster cores": 8},
        },
        "PC": {
            "notebook":
                "notebooks/LPD/Characterize_LPD_GAIN_CI_per_pixel_NBC.ipynb",
            "concurrency": {"parameter": "modules",
                            "default concurrency": 16,
                            "cluster cores": 32},
        },
        "FF": {
            "notebook":
                "notebooks/LPD/LPD_FlatField_Radial_per_pixel_CI_NBC.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 8},
        },
        "CORRECT": {
            "notebook": "notebooks/LPD/LPD_Correct_Fast.ipynb",
            "concurrency": {"parameter": "sequences",
                            "default concurrency": [-1],
                            "use function": "balance_sequences",
                            "cluster cores": 16},
        },
        "XGM_MINE": {
            "notebook": "notebooks/LPD/Mine_RadIntensity_vs_XGM_NBC.ipynb",
            "concurrency": {"parameter": "runs",
                            "use function": "create_run_list",
                            "default concurrency": [-1],
                            "cluster cores": 2},
        },
        "INJECT_CONSTANTS": {
            "notebook": "notebooks/LPD/Inject_calibration_constants_from_h5files.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 1},
        }
    },
    "LPDMINI": {
        "DARK": {
            "notebook": "notebooks/LPDMini/LPD_Mini_Char_Darks_NBC.ipynb",
            "concurrency": {"parameter": None},
        },
        "CORRECT": {
            "notebook": "notebooks/LPDMini/LPD_Mini_Correct.ipynb",
            "concurrency": {"parameter": "sequences",
                            "default concurrency": [-1],
                            "use function": "balance_sequences",
                            "cluster cores": 16},
        },
        "INJECT_CONSTANTS": {
            "notebook": "notebooks/LPDMini/LPD_Mini_Inject_calibration_constants_from_h5files.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 1},
        }
    },
    "PNCCD": {
        "DARK": {
            "notebook": "notebooks/pnCCD/Characterize_pnCCD_Dark_NBC.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 32},
        },
        "RELGAIN": {
            "notebook": "notebooks/pnCCD/Characterize_pnCCD_Gain.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 32},
        },
        "CORRECT": {
            "notebook": "notebooks/pnCCD/Correct_pnCCD_NBC.ipynb",
            "concurrency": {"parameter": "sequences",
                            "default concurrency": [-1],
                            "use function": "balance_sequences",
                            "cluster cores": 32},
        },
    },
    "GENERIC": {
        "DB_TO_H5": {
            "notebook": "notebooks/generic/DB_Constants_to_HDF5_NBC.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 32},
            "extend parms": "extend_parms",
        },
        "STATS_FROM_DB": {
            "notebook": "notebooks/generic/PlotFromCalDB_NBC.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 1},
        },
        "STATS_FROM_DB2": {
            "notebook": "notebooks/generic/PlotFromCalDB_NBC.ipynb",
            "dep_notebooks": [
                "notebooks/generic/PlotFromCalDB_Summary_NBC.ipynb"],
            "concurrency": {"parameter": "submodules",
                            "default concurrency": None,
                            "cluster cores": 1},
        },
    },
    "TUTORIAL": {
        "TEST": {
            "notebook": "notebooks/Tutorial/calversion.ipynb",
            "concurrency": {"parameter": "random_seed",
                            "default concurrency": None,
                            "cluster cores": 4},
        },
    },
    "FASTCCD": {
        "DARK": {
            "notebook":
                "notebooks/FastCCD/Characterize_Darks_NewDAQ_FastCCD_NBC_New_Common_Mode.ipynb",  # noqa
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 16},
        },
        "CORRECT": {
            "notebook":
                "notebooks/FastCCD/CorrectionNotebook_NewDAQ_FastCCD_NBC.ipynb",
            "concurrency": {"parameter": "sequences",
                            "default concurrency": [-1],
                            "use function": "balance_sequences",
                            "cluster cores": 4},
        },
    },
    "JUNGFRAU": {
        "DARK": {
            "notebook":
                "notebooks/Jungfrau/Jungfrau_dark_analysis_all_gains_burst_mode_NBC.ipynb",  # noqa
            "dep_notebooks": [
                "notebooks/Jungfrau/Jungfrau_darks_Summary_NBC.ipynb"],
            "concurrency": {"parameter": "karabo_da",
                            "default concurrency": list(range(8)),
                            "cluster cores": 4},
        },
        "CORRECT": {
            "notebook":
                "notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb",
            "concurrency": {"parameter": "sequences",
                            "default concurrency": [-1],
                            "use function": "balance_sequences",
                            "cluster cores": 14},
        },
    },
    "GOTTHARD2": {
        "CORRECT": {
            "notebook":
                "notebooks/Gotthard2/Correction_Gotthard2_NBC.ipynb",
            "concurrency": {"parameter": "sequences",
                            "default concurrency": [-1],
                            "use function": "balance_sequences",
                            "cluster cores": 16},
        },
        "DARK": {
            "notebook":
                "notebooks/Gotthard2/Characterize_Darks_Gotthard2_NBC.ipynb",
            "dep_notebooks": [
                "notebooks/Gotthard2/Summary_Darks_Gotthard2_NBC.ipynb"],
            "concurrency": {"parameter": "karabo_da",
                            "default concurrency": list(range(2)),
                            "cluster cores": 4},
        },
    },
    "EPIX100": {
        "DARK": {
            "notebook": "notebooks/ePix100/Characterize_Darks_ePix100_NBC.ipynb",  # noqa
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 4},
        },

        "CORRECT": {
            "notebook": "notebooks/ePix100/Correction_ePix100_NBC.ipynb",
            "concurrency": {"parameter": "sequences",
                            "default concurrency": [-1],
                            "use function": "balance_sequences",
                            "cluster cores": 4},
        },
        "FF": {
            "notebook": "notebooks/ePix100/Characterize_FlatFields_ePix100_NBC.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 4},
        },
    },
    "EPIX10K": {
        "DARK": {
            "notebook": "notebooks/ePix10K/Characterize_Darks_ePix10K_NBC.ipynb",
            "concurrency": {"parameter": None,
                            "default concurrency": None,
                            "cluster cores": 4},
        },

        "CORRECT": {
            "notebook": "notebooks/ePix10K/Correction_ePix10K_NBC.ipynb",
            "concurrency": {"parameter": "sequences",
                            "default concurrency": [-1],
                            "use function": "balance_sequences",
                            "cluster cores": 4},
        }
    },
    "DSSC": {
        "DARK": {
            "notebook": "notebooks/DSSC/Characterize_DSSC_Darks_NBC.ipynb",
            "dep_notebooks": [
                "notebooks/generic/overallmodules_Darks_Summary_NBC.ipynb"],
            "concurrency": {"parameter": "modules",
                            "default concurrency": list(range(16)),
                            "cluster cores": 8},
        },
        "CORRECT": {
            "notebook": "notebooks/DSSC/DSSC_Correct_and_Verify.ipynb",
            "concurrency": {"parameter": "sequences",
                            "use function": "balance_sequences",
                            "default concurrency": [-1],
                            "cluster cores": 16},
        },
    },
    "REMI": {
        "CORRECT": {
            "notebook": "notebooks/REMI/REMI_Digitize_and_Transform.ipynb",
            "user": {
                "notebook": None,
                "venv": "/gpfs/exfel/sw/software/exfel_environments/sqs-remi-preview"
            },
            "concurrency": {
                "parameter": None,
                "use function": None,
                "default concurrency": None,
                "cluster cores": 1
            },
        },
    },
    "TIMEPIX": {
        "CORRECT": {
            "notebook": "notebooks/Timepix/Compute_Timepix_Event_Centroids.ipynb",
            "concurrency": {
                "parameter": None,
                "use function": None,
                "default concurrency": None,
                "cluster cores": 1
            },
        },
    },
    "TEST": {
        "TEST-CLI": {
            "notebook": "notebooks/test/test-cli.ipynb",
            "concurrency": {
                "parameter": "concurrency_parameter",
                "default concurrency": None,
                "cluster cores": 1,
            },
        },
        "TEST-USER-NB": {
            "notebook": None,
            "user": {
                "notebook": "/{root}/test-cli.ipynb",
                "venv": None,  # default, pycalibration environment
            },
            "concurrency": {
                "parameter": None,
                "use function": None,
                "default concurrency": None,
                "cluster cores": 1
            },
        },
        "TEST-USER-NB-VENV": {
            "notebook": None,
            "user": {
                "notebook": "/{root}/test-cli.ipynb",
                "venv": "/{root}/.venv",
            },
            "concurrency": {
                "parameter": None,
                "use function": None,
                "default concurrency": None,
                "cluster cores": 1
            },
        },
    },
    "TEST-RAISES-ERRORS": {
        "TEST-BAD-KEY": {
            "noteboke": "a typo",
        }
    },
}