All Projects → NetManAIOps → Squeeze

NetManAIOps / Squeeze

Licence: other
ISSRE 2019: Generic and Robust Localization of Multi-Dimensional Root Cause

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to Squeeze

eaf-linter
🤪 A linter, prettier, and test suite that does everything as-simple-as-possible.
Stars: ✭ 17 (-66.67%)
Mutual labels:  code
IosCodeSpecification
Ios best practices, Ios development specification, ios 开发规范,ios 最佳实践,ios编码规范
Stars: ✭ 43 (-15.69%)
Mutual labels:  code
bcp-47-normalize
Normalize, canonicalize, and format BCP 47 tags
Stars: ✭ 16 (-68.63%)
Mutual labels:  code
awesome-course
Create awesome courses that let your audience learn by coding ⌨️
Stars: ✭ 224 (+339.22%)
Mutual labels:  code
malwinx
Just a normal flask web app to understand win32api with code snippets and references.
Stars: ✭ 76 (+49.02%)
Mutual labels:  code
BeautifulMakie
https://lazarusa.github.io/BeautifulMakie/
Stars: ✭ 281 (+450.98%)
Mutual labels:  code
OneDayOneAlgo
Learn one algorithm each day, code it, and upload
Stars: ✭ 27 (-47.06%)
Mutual labels:  code
GStreamer-Python
Fetch RTSP Stream using GStreamer in Python and get image in Numpy
Stars: ✭ 81 (+58.82%)
Mutual labels:  code
dev-log
A comprehensive list of links and resources about anything programming related
Stars: ✭ 55 (+7.84%)
Mutual labels:  code
react-native-codeditor
React Native component to display code editor using WebView and CodeMirror
Stars: ✭ 21 (-58.82%)
Mutual labels:  code
vuepress-plugin-demo-code
📝 Demo and code plugin for vuepress
Stars: ✭ 119 (+133.33%)
Mutual labels:  code
hackdisrupt
[private beta] comece a aprender programação com uma experiência nova
Stars: ✭ 14 (-72.55%)
Mutual labels:  code
sourcegraph-vscode
*️⃣+ 🆚 = ❤️
Stars: ✭ 84 (+64.71%)
Mutual labels:  code
HacktoberFest21
A beginner friendly repository for HacktoberFest 2021
Stars: ✭ 45 (-11.76%)
Mutual labels:  code
tempat-kontributor
Merupakan tempat bagi kalian untuk berkontributor bersama kami
Stars: ✭ 33 (-35.29%)
Mutual labels:  code
CodeEditorView
Code Editor UITextView
Stars: ✭ 20 (-60.78%)
Mutual labels:  code
CounterView
一个数字变化效果的计数器视图控件
Stars: ✭ 38 (-25.49%)
Mutual labels:  code
KodeEditor
A simple code editor with syntax highlighting and pinch to zoom
Stars: ✭ 60 (+17.65%)
Mutual labels:  code
codesnip
A code bank designed with Pascal in mind
Stars: ✭ 62 (+21.57%)
Mutual labels:  code
hackerrank-solutions-javascript
hacker rank javascript solutions
Stars: ✭ 20 (-60.78%)
Mutual labels:  code

Squeeze

Implementation and datasets for ISSRE 2019 REG paper 'Generic and Robust Localization of Multi-Dimensional Root Cause'.

Requirements

At least python>=3.6, <3.7 is required. Though Python should be backward-compatible, there is no built wheel for some requirements like SciPy for a higher Python version.

pip install -r requirements.txt

Datasets

Datasets A, B0, B1, B2, B3, B4, D in Table VII are on Tsinghua Cloud. The ground truth root cause sets are in injection_info.csv in each subfolder.

Usage

$python run_algorithm.py --help
Usage: run_algorithm.py [OPTIONS]

  :param name: :param input_path: :param output_path: :param num_workers:
  :param kwargs: :return:

Options:
  --name TEXT            name of this setting
  --input-path TEXT      will read data from {input_path}/{name}
  --output-path TEXT     if {output_path} is a dir, save to
                         {output_path}/{name}.json; otherwise save to
                         {output_path}
  --num-workers INTEGER  num of processes
  --derived              means we should read {timestamp}.a.csv and
                         {timestamp}.b.csv
  --help                 Show this message and exit.
$python run_evaluation.py --help
Usage: run_evaluation.py [OPTIONS]

Options:
  -i, --injection-info TEXT  injection_info.csv file
  -p, --predict TEXT         output json file
  -c, --config TEXT          config json file
  -o, --output-path TEXT     output path
  --help                     Show this message and exit.

The config json file should contain the attribute names, e.g.:

{
  "columns": [
    "a", "b", "c", "d"
  ]
}

Example

  1. Download B3.tgz and extract B3.tgz into B3.

  2. Run this command:

python run_algorithm.py --name B_cuboid_layer_2_n_ele_2 --input-path B3 --output-path output/ --num-workers 10

​ Then the results are summarized in output/B_cuboid_layer_2_n_ele_2.json:

[
    {
        "timestamp": 1450653900,
        "elapsed_time": 10.794443607330322,
        "root_cause": "b=b31&d=d2;a=a1&b=b11"
    },
    {
        "timestamp": 1450666800,
        "elapsed_time": 15.272005081176758,
        "root_cause": "b=b21&c=c1;a=a4&b=b9&c=c4"
    },
    {
        "timestamp": 1450667700,
        "elapsed_time": 15.22673487663269,
        "root_cause": "b=b11&c=c4;a=a2&d=d1"
    },
    ...
]
  1. Run evaluation scripts
python run_evaluation.py -i B3/B_cuboid_layer_2_n_ele_2/injection_info.csv -p output/B_cuboid_layer_2_n_ele_2.json -c columns.json

columns.json should contain all the attributes.

{
  "columns": [
    "a", "b", "c", "d"
  ]
}

Then we get the output (F1-score, precision, recall):

......
0.7858942065491183 0.7918781725888325 0.78

Known Issues

This version of codes is faithful to the published version. However, two known severe issues are harming the localization performance.

  1. The calculation of _a1 and _a2 in squeeze/squeeze.py:184 is incorrect, which is not following the description in the paper. It should be corrected as follows
     reduced_data_p, _ = self.get_derived_dataframe(
         frozenset(elements[:partition]), cuboid=cuboid,
         reduction="sum", return_complement=True,
         subset_indices=np.concatenate([indices, self.normal_indices]))
     if len(reduced_data_p):
         _a1, _a2 = data_p.predict.values * (
                 reduced_data_p.real.item() / reduced_data_p.predict.item()
         ), data_n.predict.values
     else:
         # print(elements[:partition], data_p, reduced_data_p)
         assert len(data_p) == 0
         _a1 = 0
         _a2 = data_n.predict.values   
  2. The calculation of score_weight in squeeze/suqeeze.py:256 may produce negative values, which will cause incorrect localization results. Different from 1, the calculation here is faithful to the paper. See #6

See also our extended version

Citation

@inproceedings{squeeze,
  title={Generic and Robust Localization of Multi-Dimensional Root Causes},
  author={Li, Zeyan and Luo, Chengyang and Zhao, Yiwei and Sun, Yongqian and Sui, Kaixin and Wang, Xiping and Liu, Dapeng and Jin, Xing and Wang, Qi and Pei, Dan},
  booktitle={2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE)},
  year={2019},
  organization={IEEE}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].