Assign TAs to Classes using a global optimization algorithm
Project description
TA ASSIGNMENT - AUTOMATION PROJECT
How to run the project
INPUT FILES:
- You need three files to run this software: TA_schedule.csv, class_schedule.csv and Instr_Pref.csv.
- These input files should be stored in the folder: input_files
- Run the main.ipynb file in jupyter notebook or any IDE (VS CODE) and then open the index.html file in any browser to view the assignments
- If you want to run it in a terminal by converting to python, use the following command:
jupyter nbconvert --to python nb.ipynb
You may have to install the python mistune package:
sudo pip install -U mistune
Folder Details:
-
algorithms: Contains the code for hungarian algorith - hungarian.py
-
assignment_output_files: Contains the final assignments, unassigned courses and the cost breakdown
-
data- This folder contains the code to change edgeweights, capacity limit, LAB - TA requirement limit, etc.
- capacity_cap.py: To change the capacity limit for TAs
- edgeWeights.py: To change edgeWeights
- getPseudoLabs: To fetch the labs that are not marked as lab but have lab like TA requirement
- db_config.py: To change the DB URL
- lab_ta_requirements.py: This function returns a dictionary which maps labs to the number of sections 1 TA can handle
- timeSlotMapping: Map Time slots (period: 11:10 to 12:25) to Letters
-
input_files - This folder contains all the input files that we need to provide to the program
-
input_json - Input files converted to JSON files
-
output_files - All the files that are generated as the program runs: The final section data is in the sub-folder: section_data
-
scripts - ALL the scripts can be found in this folder
- parse_ta_data.py: CREATE TA_schedule.json from the input file TA_Schedule.csv
- parse_courses.py: CREATE courses.json from the input file course Schdule
- parse_sections.py: CREATE INITIAL SECTION DATA - This will again be parsed in various scripts to form the final section data
- parse_schedule.py: CREATE schedules
- combined_view.py: Combines the schedule information by merging all slots for the CRN
- parse_instructor_pref.py: Creates the instructor preference data from the input CSV file
- create_final_sections.py: This file creates the final data that we need for the hungarian algorithm and calls lab processing scripts to process lab data and then processes non-lab data and creates a final section.json file which is stored in section_data folder in output_files folder.
- process_labs.py: Processes lab data which handles pseudo labs and TA requirements, capacity cap mapping and filtering the labs we don't need
- compute_conflict_matrix.py: This file creates the conflict matrix between TA and final sections. IT also calls the conflict break down skeleton to create and store the breakdown
- create_conflict_breakdown_skeleton.py: This script creates the conflict breakdown skeleton
- duplicateTAs.py: This script will create another entry for all TAs that have been assigned to classes with 0.5 TA requirement to be assigned to another class
- incremental_TA_duplication.py: After we allocated all TAs if there are any unassigned courses left then we run this script to fetch the next best TA to duplicate - TA with least enrollment in section they are TAing for (if they are only TAing for one class)
-
utils: Contains all the utility files
- show_hungarian_assignments - This file produces the assignment output and stores it in the assignment_output folder
FOLDER STURCTURE:
.
├── algorithms
│ ├── hungarian.py
├── assignment_output_files
├── data
│ ├── capacity_cap.py
│ ├── daysMapping.py
│ ├── db_config.py
│ ├── edgeWeights.py
│ ├── getPseudoLabs.py
│ ├── lab_ta_requirements.py
│ └── timeSlotMapping.py
├── db
│ ├── connect.py
│ ├── create_tables.py
│ ├── insert_data.py
│ └── models.py
├── input_files
├── input_json
├── output_files
│ └── section_data
├── scripts
│ ├── combined_view.py
│ ├── compute_conflict_matrix.py
│ ├── create_conflict_breakdown_skeleton.py
│ ├── create_final_sections.py
│ ├── duplicateTAs.py
│ ├── incremental_TA_duplication.py
│ ├── parse_courses.py
│ ├── parse_instructor_pref.py
│ ├── parse_schedule.py
│ ├── parse_sections.py
│ ├── parse_ta_data.py
│ └── process_labs.py
├── temp # ignore
├── utils
│ ├── convertCSVtoJSON.py
│ ├── csvToDict.py
│ ├── create_conflict_breakdown_skeleton.py
│ ├── dictionaryToJsonFile.py
│ ├── getCoursesTakenFromCrn.py
│ ├── getTimeSlotsFromCRN.py
│ ├── load_conflict_matrix.py
│ └── show_hungarian_assignments.py
├── conflicts_view.html # Shows the conflict breakdown in browser (TA vs Sections)
├── index.html
├── main.ipynb # This file should be used to run all the scripts in one go
└── README.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ta_assignment_automation-0.1.tar.gz.
File metadata
- Download URL: ta_assignment_automation-0.1.tar.gz
- Upload date:
- Size: 24.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6171d82bce518e515587e660d6f1ae55deeeb002b89c57f0c74d1067703cc98b
|
|
| MD5 |
ae2e435e28eb9f19b8ddba0908bbcb87
|
|
| BLAKE2b-256 |
3963ac788766c78ff56b07c8b8e703bce6c9b90440d83e77da52811064825a40
|
File details
Details for the file ta_assignment_automation-0.1-py3-none-any.whl.
File metadata
- Download URL: ta_assignment_automation-0.1-py3-none-any.whl
- Upload date:
- Size: 39.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1408147bba7fa226e06f091c54e49e0c50563ac5f69301c6c9cc4a500b435d61
|
|
| MD5 |
9e6ef0040f1750815faa09e33c33f571
|
|
| BLAKE2b-256 |
0a6489535b28f8c3c84fc0e8f544f3b9ddc1e9ea3458df44666c33481cfd6ccd
|