Argument `--upgrade` (re)installs the package, even if the version number hasn't changed.
## Usage
**TODO:** Add instructions for how to obtain and prepare the involved data. See also `preprocessing/README.md`.
1. Obtain and prepare data
1. Run `mu-moss --help` for arguments that can/must be configured. Afterwards, run `mu-moss` as desired.
`mu-moss` connects to the Moss service, uploads submissions and downloads the generated report.
1. Run `mu-revise`.
**NOTE:**`mu-revise` is not yet configurable and expects `mu-moss` to have used its default file and directory names!
`mu-revise` improves the previously downloaded HTML report, e.g. by making the table sortable, and generates a CSV file with the report data.
1. Run `mu-cluster`.
**NOTE:**`mu-cluster` is not yet configurable and expects `mu-revise` to have used its default file and directory names!
`mu-cluster` computes clusters of plagiarism, creates as DOT and SVG files (by running GraphViz, which *must be in the path*), and creates a summarising CSV file.
1. Run `mu-aggr`.
**NOTE:**`mu-aggr` is not yet configurable and expects `mu-cluster` to have used its default file and directory names!
`mu-aggr` combines the cluster data with exports from eDoz and Code Expert, and generates a cluster report as an HTML file.
## Python Package Tutorials
I've used the following tutorials to get started with developing a Python package:
* Replace `<python3>/Lib/site-packages/mossum/mossum.py` with `MODIFIED-mossum.py`
* http://networkx.github.io/
*`pip install networkx`
## Tidying up files and directories
*`cx-dump_bonus-exercise-1_2020-04-17.zip` contains the latest submission from each user
* Execute next commands on the level of the user directories, e.g. in `./bonus_exercise_1`, so that, e.g. `./bonus_exercise_1/<user>` are the individual user directories
* Assumption: relevant files per submission are `<user>/details.json` and `<user>/files/main.cpp`, whereas all other files and directories can be deleted:
* Delete irrelevant files, and directory `cx_data`:
* Rename directories from user names to Legi numbers before submitting data to Moss, e.g. rename `scmalte` to `01-234-567`. The file `<user>/details.json` provides the Legi number.
* Execute `rename_to_legi.sh` from e.g. `./bonus_exercise_1/`:
```plain
$ cd ./bonus_exercise_1
$ ../rename_to_legi.sh
```
The script prompts for confirmation before the first renaming is executed.
## Moss
### moss.py
* Edit `moss.py` and check configuration
* Execute `moss.py` from e.g. `./bonus_exercise_1/`:
```plain
$ cd ./bonus_exercise_1/
$ python ../moss.py
```
* If not configured otherwise, open `./bonus_exercise_1/moss-report.html` in your browser
### clusters.py
* Edit `clusters.py` and check configuration
* Execute `clusters.py` from e.g. `./bonus_exercise_1/`:
```plain
$ cd ./bonus_exercise_1/
$ python ../clusters.py
```
* If not configured otherwise, open `./bonus_exercise_1/clusters.html` in your browser