Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, acm.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.8%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: sutd-automated-programming-tools
  • License: gpl-3.0
  • Language: Python
  • Default Branch: main
  • Size: 22.9 MB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 1
  • Releases: 0
Created over 4 years ago · Last pushed about 2 years ago
Metadata Files
Readme License Citation

README.md

Build and test

CLuster And RepAir tool for introductory programming assignments

About

This is an implementation of the clustering and repair tool for introductory programming assignments, described in the following paper: Automated Clustering and Program Repair forIntroductory Programming Assignments (https://dl.acm.org/doi/10.1145/3192366.3192387 and https://arxiv.org/abs/1603.03165).

Deployment

bash git clone git@github.com:sutd-automated-programming-tools/clara-api-server.git

Run: bash cd clara-api-server . ec2script.sh Access api at: server-ip@ddress/clara/

Dependencies

  • C compiler
  • Cython
    • $ sudo aptitude install cython (Debian)
    • # dnf install Cython (Fedora)
  • lpsolve 5.5 (development files and library)
    • $ sudo aptitude install lp-solve liblpsolve55-dev (Debian)
    • # dnf install lpsolve-devel (Fedora)

Installation & running

  • make (in this directory) installs a binary file called clara
  • Run clara help or see examples below.

Development

  • Create a new virtual environment (using virtualenv)
  • Install Cython (using pip install Cython inside the new virtual enviroment)
  • Run python setup.py develop

OR

Create a clone of the project and run the local installation script: git clone https://github.com/sutd-automated-programming-tools/clara-api-server.git . install_local.sh

Docker

Create a clone of the project and run the docker script: git clone https://github.com/sutd-automated-programming-tools/clara-api-server.git docker build . -t clara docker compose up

Debian note

On Debian system the following is required before running the tool: export LD_LIBRARY_PATH=/usr/lib/lp_solve/

Examples

The examples/ directory contains some example programs: - c1.py and c2.py are the correct examples from the paper - i1.py and i2.py are the incorrect example from the paper - c3.py is a constructed example.

Matching

To test matching between examples/c1.py and examples/c2.py on inputs [4.5] and [1.0,3.0,5.5] use: clara match examples/c1.py examples/c2.py --entryfnc computeDeriv --args "[[[4.5]], [[1.0,3.0,5.5]]]" --ignoreio 1

This should output Match!.

To test matching between examples/c1.py and examples/c3.py on inputs [4.5] and [1.0,3.0,5.5] use: clara match examples/c1.py examples/c3.py --entryfnc computeDeriv --args "[[[4.5]], [[1.0,3.0,5.5]]]" --ignoreio 1

This should output No match!.

Repair (on two programs)

To repair examples/i1.py using examples/c1.py on the same inputs as above, use: clara repair examples/c1.py examples/i1.py --entryfnc computeDeriv --args "[[[4.5]], [[1.0,3.0,5.5]]]" --ingoreio 1

Clustering

To cluster correct programs on the same inputs as above use: mkdir clusters clara cluster examples/c*.py --clusterdir clusters --entryfnc computeDeriv --args "[[[4.5]], [[1.0,3.0,5.5]]]" --ignoreio 1

This should produce two clusters in the directroy clusters/ and two .json files with additional experssion extracted from the clusters.

Feedback

To produce feedback from the above clusters for an incorrect program, for example examples/i1.py, use: clara feedback clusters/c*.py examples/i1.py --entryfnc computeDeriv --args "[[[4.5]], [[1.0,3.0,5.5]]]" --ignoreio 1 --feedtype python

Note

You can add --verbose 1 to any of the examples to obtain a more verbose output.

Known issues

May not work well on Python 3.8.

Owner

  • Name: sutd-automated-programming-tools
  • Login: sutd-automated-programming-tools
  • Kind: organization

GitHub Events

Total
Last Year

Dependencies

ec2_requirements.txt pypi
  • Cython ==0.29.23
  • fastapi ==0.65.2
  • passlib ==1.7.4
  • python-jose ==3.3.0
  • python-multipart ==0.0.5
  • uvicorn ==0.14.0
requirements.txt pypi
  • Cython ==0.29.23
  • asgiref ==3.4.1
  • clara ==1.0
  • click ==8.0.3
  • ecdsa ==0.17.0
  • fastapi ==0.65.2
  • h11 ==0.12.0
  • importlib-metadata ==4.8.1
  • passlib ==1.7.4
  • pyasn1 ==0.4.8
  • pycparser ==2.20
  • pydantic ==1.8.2
  • python-jose ==3.3.0
  • python-multipart ==0.0.5
  • rsa ==4.7.2
  • six ==1.16.0
  • starlette ==0.14.2
  • typing-extensions ==3.10.0.2
  • uvicorn ==0.14.0
  • zipp ==3.6.0
  • zss ==1.2.0
setup.py pypi
  • pycparser *
  • zss *
Dockerfile docker
  • python 3.7-bullseye build
docker-compose.yml docker
  • clara latest