Metadata-Version: 2.1
Name: hepy
Version: 0.0.2
Summary: A tool to manage experiment
Home-page: https://github.com/JunguangJiang/Happy-Experiments/settings
Author: Junguang Jiang
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: click
Requires-Dist: colorama
Requires-Dist: sh
Requires-Dist: jsonpickle
Requires-Dist: prettytable
Requires-Dist: pandas

# Happy Experiments in Python (HEPY)

### 中文介绍
HE是一个针对命令行实验的管理工具。主要对实验中的三个部分进行管理：
1. 实验代码版本管理。对每个实验（Experiment），HE会维护一个代码版本，用户可以随时切换到过去的代码版本进行实验。
对于需要频繁修改代码的实验而言，HE可以节省实验者大量的精力，同时提高了实验的可复现性。

2. 实验（超）参数管理。每个实验只有一份代码，但是可能包含多个试验（Trial）。
每个试验的命令行参数不同，命令行参数决定了这次试验的实验参数。HE在每次试验的开始，会记录这次试验的超参数。

3. 实验结果的管理。HE可以将实验结果自动保存到对应的实验文件夹下。也支持在实验结果中的评价指标进行正则匹配。

### 安装方式
```shell script
pip install hepy
```
或者
```shell script
pip install git+https://github.com/JunguangJiang/Happy-Experiments.git@master
```

### 使用教程
##### 注意事项 
由于代码版本管理时会复制代码目录下的文件，用户首先需要：
1. 创建.heignore文件，这个文件的语法和.gitignore相似。在进行代码版本管理时，会忽略.heignore中匹配的文件。
2. 确保所有相对路径的数据文件夹都是软连接。否则复制数据文件夹会消耗大量的资源。

##### 正式的教程
1. 进入代码目录下
2. 初始化
    ```shell script
    he init
    ```
    在代码目录下会出现文件夹he_workspace。

3. 运行一个试验
    ```shell script
    he run --exp ${experiment_name} -- ${script}
    ```
    ${experiment_name}是你给这个实验取的名字， ${script}是运行这个实验的脚本。
    比如运行
    ```shell script
    he run --exp test -- ls -l
    ```
    会得到下列输出
    ```text
    Create new experiment: test

    Running script: ls -l
    total 44
    ....

    Finish experiment: test
    ```
    在he_workspace文件夹下出现了一个新的文件夹test。
    test/code中包含了当前时刻的代码。test/0.txt包含了第一次试验的结果。
    - 如果不指定实验名称，默认会采用当前的时间作为实验名称。
    - 如果指定的实验名称与此前的重复，则会**使用过去实验时刻的代码**。

4. 展示实验结果
```shell script
he show ${experiment_names}
```



