Skip to main content

A tool assignate students to timeslots.

Project description

A tool for automatic assignments of students to timeslot.

Installation

  • From pypi:

    pip install assignator
    
  • Dev version:

    git clone https://github.com/jb-leger/assignator
    cd assignator/
    pip install -e .
    

Python module

assignments(bmat, order=1, ntry=10)

Make assignments between rows and columns.

    The objective is to have assigments following the following conditions:
     - all association are allowed in bmat,
     - each row is associated with a unique column,
     - each column is associated with a unique row,
     - all rows are associated.

    A classical use case is to assign students to defense schedule.

    Parameters
    ----------
    bmat : array of bool or int
        Binary matrix indicating which assignments are allowed.
    order : int, optional
        Order of the greedy search. Default: 1. A higher oreder can be used for
        small dataset if a solution can not be found with oreder 1.
    ntry : int
        Number of random tries to use to solve the assignments problem.

    Returns
    -------
    AssignmentResult
        Attributes are:
          - ``best_assignments`` contains the assigments that solve the problem
            or aith the higher number of associated rows.
          - ``not_assigned_rows`` contains the indexes of not assignated rows in
            the ``best_assignments`` (empty if the problem is solved)
          - ``problematic_rows`` contains tuples of problematics rows indexes
            and scores. A higher score indicating a row is problematic for the
            assignement problem.

Cli usage

usage: assignator [-h] [-e TIMESLOT_FILE] [-o OUTPUT_FILE] [-t TIMESLOT_FILE]
                  [-g GROUPS_FILE]
                  INPUT_FILE

A tool to assign students to time slots.

With allowed assignments provided in a csv (e.g. from a survey),
provide a acceptable solution.

positional arguments:
  INPUT_FILE            Input CSV file with headers. Encoding and CSV dialect
                        are autodetected. This file must contain a header. The
                        firsts columns contains a student identifier (e.g. the
                        name or the name and the email address). Following
                        columns are timeslots. the column name must identify
                        the timeslot and therefore must be unique.

optional arguments:
  -h, --help            show this help message and exit
  -e TIMESLOT_FILE, --export-timeslots TIMESLOT_FILE
                        Export in TIMESLOT_FILE all timeslots from the input
                        csv.
  -o OUTPUT_FILE, --output OUTPUT_FILE
                        Output CSV file where to write assignments. The
                        encoding and CSV dialect is the same than the input.
  -t TIMESLOT_FILE, --timeslots TIMESLOT_FILE
                        Restrict allowed timeslots to timeslots provided in
                        TIMESLOT_FILE. All line beginning with a '#' is
                        ignored. See -e to generate a version of this file. If
                        not provided, all timeslots are allowed.
  -g GROUPS_FILE, --groups GROUPS_FILE
                        Students are in groups, and the assignments must be
                        done by groups. The GROUPS_FILE must be a CSV with a
                        header and two columns, the first must be a column
                        identifying the student and must have exactly the same
                        name than one of the columns provided in the
                        INPUT_FILE, and values must corresponds (order or rows
                        doesn't matter), and the second column must be a group
                        identifier (whatever its name). If more than one
                        student answer for a group, the intersection is made
                        to build allowed timeslots for the group.

Workflow example:
  - Give a survey to your students providing a little bit more time
    slots than student number. Export the survey result in CSV.
  - To have a fist allocation, run the command:
      assignatorurvey.csv -o output.csv
    If you have not assigned students, contact all the students
    marked as problematic (not only the not assigned) to extend
    their choices. Once a allocation can be made go to next step.
  - If you have more time slots than student, you can try to choice
    the time slot you want to free.
     1. First, export the timeslot list from the csv:
         assignatorurvey.csv -e timeslots.txt
     2. Edit the timeslots file, adding a '#' in the begining of the
        timeslots you want to free.
     3. Run the command with the timeslots
         prog -t timeslots.txt survey.csv -o output.csv

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

assignator-0.2.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

assignator-0.2-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file assignator-0.2.tar.gz.

File metadata

  • Download URL: assignator-0.2.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for assignator-0.2.tar.gz
Algorithm Hash digest
SHA256 aef8562e5cbcf761000b5bcf4ef3c88bb496b3c7a76dce7f8aef697b826b3a6d
MD5 6a3a19d6400c61cdcf5c9154a1f53e38
BLAKE2b-256 78f4146afeca4408e04200722b5ef76bd212de4d1b8aeb1de7e9e25c24d5d515

See more details on using hashes here.

File details

Details for the file assignator-0.2-py3-none-any.whl.

File metadata

  • Download URL: assignator-0.2-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for assignator-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a499d629d562f19394b519e260aa05759e95789227e10ef8db4784b5242d908c
MD5 85d5c7a059fdc54b6885009f925db3ca
BLAKE2b-256 1d9c84201c487b0e8d24fa996ae7766d2fe697ebed7b7afb16d57050d8c7283b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page