{"id":22326084,"url":"https://github.com/mrphys/ucl_ics_researchprojects","last_synced_at":"2025-10-25T22:08:18.623Z","repository":{"id":66135673,"uuid":"532310359","full_name":"mrphys/UCL_ICS_researchProjects","owner":"mrphys","description":"This is the code used for the UCL ICS iBSc and MSc to optimally match all students to their desired projects","archived":false,"fork":false,"pushed_at":"2024-08-30T14:04:30.000Z","size":430,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-07T07:07:09.244Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrphys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-03T16:12:10.000Z","updated_at":"2024-08-30T14:04:37.000Z","dependencies_parsed_at":"2025-01-31T07:29:03.626Z","dependency_job_id":"64c1e884-b138-4310-a774-c80e7531910b","html_url":"https://github.com/mrphys/UCL_ICS_researchProjects","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mrphys/UCL_ICS_researchProjects","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrphys%2FUCL_ICS_researchProjects","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrphys%2FUCL_ICS_researchProjects/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrphys%2FUCL_ICS_researchProjects/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrphys%2FUCL_ICS_researchProjects/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrphys","download_url":"https://codeload.github.com/mrphys/UCL_ICS_researchProjects/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrphys%2FUCL_ICS_researchProjects/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018715,"owners_count":26086609,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-04T02:15:35.208Z","updated_at":"2025-10-25T22:08:18.616Z","avatar_url":"https://github.com/mrphys.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UCL Institute of Cardiovascular Science iBSc and MSc Independent Research Project Matching Process\n\n## Overview\n\nThis page documents the process used for the UCL Institute of Cardiovascular Science iBSc and MSc Cardiovascular Science programmes to match students and supervisors for their independent research project modules. \n\nBoth programmes employ an automated system for allocating projects to students at the start of each year. In this system, students indicate their preferred choices of projects from a list of all available proposals before being allocated to one of these choices by an automated, unbiased, and anonymous minimisation algorithm designed to ensure the fairest spread of choices across the entire cohort. \n\nA workflow for the process can be seen below, followed by more detailed instructions and templates for each step of the process.\n\n\n### Workflow\n\n\u003cimg src = \"https://github.com/scottchiesa/Project_Matching_Algorithm/blob/patch-1/Flowcharts.jpeg\"\u003e\n\n## Call for Proposals\n### Generating a PDF List of Projects to Offer to Students\n\n1) Potential supervisors submit project proposals using form such as that shown in following [MS Form](https://forms.office.com/e/3XSMBR9YRP)\n2) Once complete, all proposals downloaded as Excel sheet similar to that shown in `ProjectList.xlsx` and filtered to separate iBSc and MSc projects.\n3) `ProjectList.xlsx` merged with `ProjectList_MailMerge.doc` to create PDF booklet to circulate to students on respective programmes.\n\n## Allocation of Projects\n### Student Selection of Preferred Projects\n\n1) Students with pre-arranged projects (e.g. clinical students already working with pre-existing supervisor, students who have arranged external project) removed from allocation process.\n2) All remaining students select top six desired projects from list of available projects in order of preference using form such as that shown in following [MS Form](https://forms.office.com/e/EpW7UzMGwj)\n3) Once complete, all preferences downloaded as Excel sheet similar to that shown in `AllProjectData.xlsx`.\n\n### Matching of Students and Projects\n\nHere we use a mathematical optimizer to 'best' match between the students choices to the research projects available. We have used Google's open source software suite for optimization, OR-Tools, which provides an MPSolver wrapper for solving linear programming and mixed integer programming problems. This is a mixed integer programming (MIP) problem Since the constraints are linear, this is a linear optimization problem in which the solutions are required to be integers. More information about algorithm can be found here: https://developers.google.com/optimization/mip/mip_example. We use the MIP solver 'SCIP' (Solving constraint integer problems). https://www.scipopt.org which is currently one of the fastest non-commercial solvers for mixed integer programming. SCIP is a framework for Constraint Integer Programming oriented towards the needs of mathematical programming experts who want to have total control of the solution process and access detailed information down to the guts of the solver. In SCIP the problem is successively divided into smaller subproblems (branching) that are solved recursively.(details of the algorithm can be found here: https://www.scipopt.org/doc/html/WHATPROBLEMS.php )\n\n1) Upload `FINAL_MatchingAlgorithm_MSc2022.ipynb` to a Colab Notebook on Google Drive using https://colab.research.google.com/\n2) Upload `AllProjectData.xlsx` to a folder on the same Google Drive ensuring that relevant line of code in opening section of .ipynb file points to this folder and file.\n3) Run code to automatically allocate projects and generate new file called `AllProjectData_time_date.xlsx`\n\n## Informing Staff and Students\n### Informing Supervisors of Successful Allocation of Student(s)\n\n1) Use `Supervisor Email Following Matching.docx` to link to PROJECT_RESULT_final tab in `AllProjectData_time_date.xlsx`. \n2) Remove any supervisors from mailing list who have not been allocated a student. \n3) Generate mail merge to automatically send to all successful supervisors. \n\n### Informing Supervisors of Unsuccessful Allocation of Student \n\n1) Use `Supervisor Email Following Unsuccessful Matching.docx` to link to PROJECT_RESULT_final tab in `AllProjectData_time_date.xlsx`. \n2) Remove any supervisors from mailing list who have been allocated a student \n3) Generate mail merge to automatically send to all successful supervisors. \n\n### Informing Students of Allocated Project \n\n1) Use `Student Email Following Matching.docx` to link to STUDENTS_RESULT_final tab in `AllProjectData_time_date.xlsx`. \n2) Generate mail merge to automatically send to all students. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrphys%2Fucl_ics_researchprojects","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrphys%2Fucl_ics_researchprojects","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrphys%2Fucl_ics_researchprojects/lists"}