...
 
Commits (33)
#!/usr/bin/env python3.6
import sys
import prrt
......
1. Clone the branch:
git clone --single-branch --branch feature/hecClasses https://git.nt.uni-saarland.de/LARN/PRRT.git
2. Find a pattern in files
grep -rnw '/path/to/somewhere/' -e 'pattern'
r = recursive i.e, search subdirectories within the current directory
n = to print the line numbers to stdout
i = case insensitive search
\ No newline at end of file
app_max_latency,app_max_residual_loss_rate,app_data_rate,app_pkt_length,ch_loss_rate,ch_rtt_prop_fwd,ch_data_rate_btl_fwd,sys_block_coding_dly,sys_red_pkt_trans_dly,sys_proc_dly,sys_pkt_loss_detection_dly,sys_src_pkt_interval
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,0.0005,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,0.0005,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,0.0005,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,0.0005,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,0.00014,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,0.00014,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,0.00014,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,0.00014,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,4e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,4e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,4e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,4e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,1e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,1e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,1e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0027,400.0,1e-06,3e-05,1e-05,1e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,0.0005,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,0.0005,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,0.0005,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,0.0005,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,0.00014,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,0.00014,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,0.00014,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,0.00014,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,4e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,4e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,4e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,4e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,1e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,1e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,1e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.0005,1e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,0.0005,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,0.0005,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,0.0005,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,0.0005,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,0.00014,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,0.00014,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,0.00014,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,0.00014,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,4e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,4e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,4e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,4e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,1e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,1e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,1e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,0.00014,1e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,0.0005,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,0.0005,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,0.0005,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,0.0005,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,0.00014,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,0.00014,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,0.00014,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,0.00014,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,4e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,4e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,4e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,4e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,1e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,1e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,1e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,4e-05,1e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,0.0005,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,0.0005,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,0.0005,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,0.0005,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,0.00014,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,0.00014,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,0.00014,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,0.00014,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,4e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,4e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,4e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,4e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,1e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,1e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,1e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,30.0,1e-05,1e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,0.0005,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,0.0005,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,0.0005,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,0.0005,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,0.00014,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,0.00014,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,0.00014,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,0.00014,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,4e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,4e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,4e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,4e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,1e-05,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,1e-05,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,1e-05,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.0005,1e-05,0.0001
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.00014,0.0005,0.5
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.00014,0.0005,0.0292
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.00014,0.0005,0.0017
1.0,0.00073681,10000000.0,428.0,2.71e-06,0.0001,10000000.0,0.01,0.30652,0.00014,0.0005,0.0001
This diff is collapsed.
app_max_latency,app_max_residual_loss_rate,app_data_rate,app_pkt_length,ch_loss_rate,ch_rtt_prop_fwd,ch_data_rate_btl_fwd,sys_block_coding_dly,sys_red_pkt_trans_dly,sys_proc_dly,sys_pkt_loss_detection_dly,sys_src_pkt_interval
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,0.00014,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,0.00014,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,0.00014,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,0.00014,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,4e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,4e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,4e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,4e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,1e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,1e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,1e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,0.00014,1e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,0.0005,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,0.0005,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,0.0005,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,0.0005,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,0.00014,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,0.00014,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,0.00014,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,0.00014,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,4e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,4e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,4e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,4e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,1e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,1e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,1e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,4e-05,1e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,0.0005,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,0.0005,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,0.0005,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,0.0005,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,0.00014,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,0.00014,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,0.00014,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,0.00014,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,4e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,4e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,4e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,4e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,1e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,1e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,1e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,0.00313,1e-05,1e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,0.0005,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,0.0005,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,0.0005,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,0.0005,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,0.00014,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,0.00014,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,0.00014,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,0.00014,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,4e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,4e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,4e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,4e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,1e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,1e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,1e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.0005,1e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,0.0005,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,0.0005,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,0.0005,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,0.0005,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,0.00014,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,0.00014,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,0.00014,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,0.00014,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,4e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,4e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,4e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,4e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,1e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,1e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,1e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,0.00014,1e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,0.0005,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,0.0005,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,0.0005,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,0.0005,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,0.00014,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,0.00014,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,0.00014,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,0.00014,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,4e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,4e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,4e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,4e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,1e-05,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,1e-05,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,1e-05,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,4e-05,1e-05,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,1e-05,0.0005,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,1e-05,0.0005,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,1e-05,0.0005,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,1e-05,0.0005,0.0001
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,1e-05,0.00014,0.5
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,1e-05,0.00014,0.0292
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,1e-05,0.00014,0.0017
10.0,0.00073681,10000000.0,428.0,0.2,0.0737,10000000.0,0.01,3e-05,1e-05,0.00014,0.0001
import prrt
import math
import numpy as np
import restricted_integer_composition as ric
import prrt_utils
class HECSearch:
def __init__(self, searchType, n_p_min, n_p_max, prrtApplicationParameters, prrtChannelParameters,
prrtSystemParameters):
self.n_max = 255
self.n_min = 1
self.step_size = 1 # Step size in the estimation of the optimum code word length
self.n_p_min = n_p_min
self.n_p_max = n_p_max
self.prrtApplicationParameters = prrtApplicationParameters
self.prrtChannelParameters = prrtChannelParameters
self.prrtSystemParameters = prrtSystemParameters
self.searchType = searchType
pass
def search(self):
ri_opt = math.inf
k_opt = 0
n_opt = 0
n_p_opt = []
n_c_cap = 10
fec_balance = -1
n_c_max = math.ceil((self.prrtApplicationParameters.max_latency - self.get_fec_delay_min()) /
(self.prrtChannelParameters.rtt_prop_fwd +
self.prrtSystemParameters.redundancy_packet_transmission_delay))
n_c_max = min(n_c_max, n_c_cap)
# print("n_c_max=" + str(n_c_max))
arq_delay_i = self.prrtChannelParameters.rtt_prop_fwd \
+ self.prrtSystemParameters.redundancy_packet_transmission_delay
# self.k_lim = somewhat(prrtApplicationParameters.loss_tolerance, self.n_max)
#
# if self.searchType == "FullSearch":
# for n_c in range(n_c_max + 1):
# # Eq.5.11, k(Nc, D_T), page 125
# k_max = min(self.get_k(n_c, arq_delay), self.get_k_lim(1, self.n_max))
# for k in range(1, k_max + 1):
# n = self.estimate_n_for_k(k)
# repair_schedules = ric.gen_repair_schedules(n - k, n_c, self.n_p_min, self.n_p_max, False)
# for repair_schedule in repair_schedules:
# coding_conf = prrt.PrrtCodingConfiguration(n, k, repair_schedule,
# self.prrtApplicationParameters,
# self.prrtChannelParameters,
# self.prrtSystemParameters)
# ri = coding_conf.get_redundant_information()
# if ri < ri_opt:
# ri_opt = ri
# k_opt = k
# n_opt = n
# n_p_opt = repair_schedule
# return prrt.PrrtCodingConfiguration(n_opt, k_opt, n_p_opt)
get_k_lim = self.get_k_lim(self.n_min, self.n_max)
if self.searchType == "GreedySearch":
for n_c in range(1, n_c_max + 1):
get_k = self.get_k(n_c, arq_delay_i)
# print(str(get_k) + " " + str(get_k_lim))
k_max = min(get_k, get_k_lim)
if k_max == 0:
continue
# print("k_max: " + str(k_max))
for k in [1, k_max]:
n = self.estimate_n_for_k(k, min(self.n_max, n_c * self.n_p_max))
redundancy = n - k
if redundancy * self.n_p_min < n_c:
continue
repair_schedule = ric.gen_repair_schedule(redundancy, n_c, self.n_p_min, self.n_p_max)
coding_conf = prrt.PrrtCodingConfiguration(n, k, repair_schedule, self.prrtApplicationParameters,
self.prrtChannelParameters, self.prrtSystemParameters)
# print("k=" + str(k) + " r=" + str(redundancy) + " n_c=" + str(n_c) + " n_p=" + str(repair_schedule))
coding_conf_validation_result = coding_conf.is_valid_for()
if not (coding_conf_validation_result[0] and coding_conf_validation_result[1]):
# print("Coding conf is not valid: " + str(coding_conf_validation_result))
continue
ri = coding_conf.get_redundant_information()
# print("k=" + str(k) + " r=" + str(redundancy) + " n_c=" + str(n_c) + " n_p=" + str(repair_schedule) + "RI= " + str(ri))
if ri < ri_opt:
ri_opt = ri
k_opt = k
n_opt = n
n_p_opt = repair_schedule
# print("k_opt=" + str(k_opt) + " n_opt=" + str(n_opt) + " n_p_opt=" + str(n_p_opt) + "RI= " + str(ri_opt))
if len(n_p_opt) != 0:
fec_balance = self.get_balance_delay_fec(n_p_opt[0], k_opt)
return [k_opt, n_opt, n_p_opt, fec_balance]
def get_k(self, n_c, arq_delay_i):
return math.ceil((self.prrtApplicationParameters.max_latency -
self.prrtChannelParameters.rtt_prop_fwd -
n_c * arq_delay_i) / max(self.prrtSystemParameters.redundancy_packet_transmission_delay, self.prrtSystemParameters.source_packet_interval))
def get_k_lim(self, smallestK, biggestK):
if biggestK < smallestK:
return smallestK
mid_point = math.ceil((biggestK + smallestK) / 2)
p_r = np.around(
self.residual_packet_erasure_rate(mid_point, self.n_max, self.prrtChannelParameters.loss_rate_fwd),
8) # Pr(k, n_max)
if p_r == self.prrtApplicationParameters.max_residual_loss_rate:
return int(mid_point)
elif p_r > self.prrtApplicationParameters.max_residual_loss_rate:
return self.get_k_lim(smallestK, mid_point - 1)
else:
return self.get_k_lim(mid_point + 1, biggestK)
def estimate_n_for_k(self, k, n_max):
n = k + 1
while self.residual_packet_erasure_rate(k, n,
self.prrtChannelParameters.loss_rate_fwd) > self.prrtApplicationParameters.max_residual_loss_rate \
and n <= n_max - self.step_size:
n = n + self.step_size
return n
def residual_packet_erasure_rate(self, k, n, ch_loss_rate):
# codingConf = prrt.PrrtCodingConfiguration(1,1,[0])
total_packet_erasure = 0
for i in range(1, k + 1):
for j in range(max(n - k + 1, i), n - k + i + 1):
packet_erasure_at_i = i * prrt_utils.hypergeometric_distribution(n, k, i, j) \
* prrt_utils.get_error_prob(j, n, ch_loss_rate)
total_packet_erasure += packet_erasure_at_i
# Pr(k, n)
residual_packet_erasure_rate = (1 / k) * total_packet_erasure
return residual_packet_erasure_rate
def get_fec_delay_min(self):
return max(self.prrtSystemParameters.redundancy_packet_transmission_delay,
self.prrtSystemParameters.source_packet_interval) \
+ self.prrtChannelParameters.rtt_prop_fwd
def get_fec_delay(self, np_zero, k):
return k * max(self.prrtSystemParameters.redundancy_packet_transmission_delay, self.prrtSystemParameters.source_packet_interval) + \
np_zero * (self.prrtSystemParameters.block_coding_delay + self.prrtSystemParameters.redundancy_packet_transmission_delay) + \
self.prrtChannelParameters.rtt_prop_fwd
def get_balance_delay_fec(self, np_zero, k):
return self.get_fec_delay(np_zero, k) / self.prrtApplicationParameters.max_latency
\ No newline at end of file
This diff is collapsed.
from scipy.special import comb
# TODO: Maybe running in parallel to optimize runtime
# Pm(e, m), Eq. 3.45, Page 91
def get_error_prob(j, sent_packets_item, p_e):
return comb(sent_packets_item, j) * (p_e ** j) * ((1 - p_e) ** (sent_packets_item - j))
# TODO
# Check if it is able to fulfill application parameters given channel parameters.
def hypergeometric_distribution(n, k, i, j):
return (comb(k, i) * comb(n - k, j - i)) / comb(n, j)
\ No newline at end of file
# import pyximport; pyximport.install()
import itertools
def generate_ric(redundancy, positions, min, max):
cdef c_redundancy = redundancy
cdef c_positions = positions
cdef c_min = min
cdef c_max = max
if c_positions < 1:
raise StopIteration
if c_positions == 1:
if c_redundancy >= c_min and c_redundancy <= c_max:
yield (c_redundancy,)
raise StopIteration
for i in range(c_min, c_redundancy + 1):
for result in generate_ric(c_redundancy - i, c_positions - 1, i, c_max):
if i <= c_max:
yield (i,) + result
# is_order_ascending = False for full search.
def gen_repair_schedules(redundancy, positions, min, max, is_order_ascending):
arbitrary_schedules = []
ordered_schedules = set()
f = generate_ric(redundancy, positions, min, max)
for i in f:
arbitrary_schedules.append(i)
if not is_order_ascending:
for i in arbitrary_schedules:
ordered_schedules.add(itertools.permutations(i))
return list(ordered_schedules)
else:
return arbitrary_schedules
def gen_repair_schedule(redundancy, numberOfCycles, minPossibleRedundancy, maxPossibleRedundancy):
if minPossibleRedundancy > maxPossibleRedundancy:
# raise Exception("Illegal input combinations. Make sure the minPossibleRedundancy < maxPossibleRedundancy.")
return []
# Only proactive cycle.
if numberOfCycles == 0:
return [redundancy]
optRepairSchedule = [0]
positionsToFill = 1
# fill all reactive cycles with minimum possible amount of redundancies: minPossibleRedundancy
while redundancy > 0 and positionsToFill <= numberOfCycles:
optRepairSchedule += [minPossibleRedundancy]
redundancy -= minPossibleRedundancy
positionsToFill += 1
# insert the rest of redundancy packets to the very last rounds if possible.
while redundancy > 0 and numberOfCycles > 0:
if optRepairSchedule[numberOfCycles] < maxPossibleRedundancy:
optRepairSchedule[numberOfCycles] += 1
redundancy -= 1
else:
numberOfCycles -= 1
# if all the reactive cycles filled with maxPossibleRedundancy and still some redundancies left, insert them in the proactive cycle (0).
if redundancy > 0:
optRepairSchedule[0] += redundancy
return optRepairSchedule
\ No newline at end of file
import os
import prrt
import time
import hec_search
import numpy as np
import pandas as pd
from multiprocessing import Pool
# ds_basename = os.listdir("../../hecps/code/ML/data/")
# ds_rel_input_path = "../../hecps/code/ML/data/"
# ds_rel_output_path = "documents/bigdata/"
#['documents/1','documents/2','documents/3','documents/4','documents/5','documents/6']
# ds_basename = os.listdir("documents/input/")
ds_basename = ["LONG_in_12_param_4_sz_zzelqt"]
ds_rel_input_path = "documents/input/"
ds_rel_output_path = "documents/output/"
columns_order = ["app_max_latency", "app_max_residual_loss_rate", "app_data_rate", "app_pkt_length",
"ch_loss_rate", "ch_rtt_prop_fwd", "ch_data_rate_btl_fwd",
"sys_red_pkt_trans_dly", "sys_src_pkt_interval",
"time", "config", "fec_balance"]
def get_n_p_max(rtt_prop_fwd, pkt_length, data_rate_btl_fwd):
return rtt_prop_fwd * data_rate_btl_fwd / pkt_length
def evaluate(searchAlgorithm, appParams, channelParams, systemParams):
n_p_min = 1
n_p_max = np.round(get_n_p_max(channelParams.rtt_prop_fwd, appParams.pkt_length, channelParams.data_rate_btl_fwd), 0)
if n_p_min <= n_p_max:
# print("n_p_max: " + str(n_p_max))
start = time.time()
search = hec_search.HECSearch(searchAlgorithm, n_p_min, n_p_max, appParams, channelParams, systemParams)
search_result = search.search()
duration = time.time() - start
print("Duration: " + str(duration))
return [search_result, duration]
else:
return []
def test_case(dataset_basename):
counter = 0
save_result_to = pd.DataFrame()
# Load dataset in chunk
for df_in_chunk in pd.read_csv(ds_rel_input_path + dataset_basename, sep=',', chunksize=100):
print(dataset_basename + " started.")
for index, row in df_in_chunk.iterrows():
if index == 1:
print(str(index))
appParams = prrt.PrrtApplicationParameters(row['app_max_latency'], row['app_max_residual_loss_rate'], row['app_data_rate'], row['app_pkt_length'])
chnlParams = prrt.PrrtChannelParameters(row['ch_loss_rate'], 0, row['ch_rtt_prop_fwd'], 0, row['ch_data_rate_btl_fwd'], 0)
sysParams = prrt.PrrtSystemParameters(0, np.round(row['sys_red_pkt_trans_dly'], 5), 0, 0, row['sys_src_pkt_interval'])
for searchAlgorithm in ["GreedySearch"]:
# print("index: " + str(index))
# print(str(row['app_max_latency']) + ":" + str(row['app_max_residual_loss_rate']) + ":" + str(row['app_data_rate'] )+ ":" + str(row['app_pkt_length']) + ":" +
# str(row['ch_loss_rate']) + ":" + str(row['ch_rtt_prop_fwd']) + str(row['ch_data_rate_btl_fwd']) + ":" + str(np.round(row['sys_red_pkt_trans_dly'], 5)) + ":" +
# str(np.round(row['sys_red_pkt_trans_dly'], 5)) + ":" + str(row['sys_src_pkt_interval']))
search_result = evaluate(searchAlgorithm, appParams, chnlParams, sysParams)
if len(search_result) != 0:
config = search_result[0]
save_result_to = save_result_to.append({'app_max_latency': row['app_max_latency'],
'app_max_residual_loss_rate': row['app_max_residual_loss_rate'],
'app_data_rate' : row['app_data_rate'],
'app_pkt_length' : row['app_pkt_length'],
'ch_loss_rate' : row['ch_loss_rate'],
'ch_rtt_prop_fwd' : row['ch_rtt_prop_fwd'],
'ch_data_rate_btl_fwd' : row['ch_data_rate_btl_fwd'],
# 'sys_block_coding_dly' : row['sys_block_coding_dly'],
'sys_red_pkt_trans_dly' : np.round(row['sys_red_pkt_trans_dly'], 5),
# 'sys_proc_dly' : row['sys_proc_dly'],
# 'sys_pkt_loss_detection_dly' : row['sys_pkt_loss_detection_dly'],
'sys_src_pkt_interval' : row['sys_src_pkt_interval'],
'time': np.around(search_result[1], 0),
# 'search': searchAlgorithm,
'config': [config[0], config[1], config[2]],
'fec_balance': config[3]}, ignore_index=True, sort=False)
else:
save_result_to = save_result_to.append({'app_max_latency': row['app_max_latency'],
'app_max_residual_loss_rate': row['app_max_residual_loss_rate'],
'app_data_rate' : row['app_data_rate'],
'app_pkt_length' : row['app_pkt_length'],
'ch_loss_rate' : row['ch_loss_rate'],
'ch_rtt_prop_fwd' : row['ch_rtt_prop_fwd'],
'ch_data_rate_btl_fwd' : row['ch_data_rate_btl_fwd'],
# 'sys_block_coding_dly' : row['sys_block_coding_dly'],
'sys_red_pkt_trans_dly' : np.round(row['sys_red_pkt_trans_dly'], 5),
# 'sys_proc_dly' : row['sys_proc_dly'],
# 'sys_pkt_loss_detection_dly' : row['sys_pkt_loss_detection_dly'],
'sys_src_pkt_interval' : row['sys_src_pkt_interval'],
# 'search': searchAlgorithm,
'time' : 0,
'config': ["INV_PRM_NPM"],
'fec_balance': config[3]}, ignore_index=True, sort=False)
counter += 1
#print("Chunk round: " + str(counter))
save_result_to.to_csv(ds_rel_output_path + dataset_basename.replace("in", "out", 1), sep=',', index = False, columns = columns_order)
print(dataset_basename + " finished.")
# test_case(ds_basename)
if __name__ == '__main__':
pool = Pool(processes=1)
pool.map(test_case, ds_basename, chunksize=1)
......@@ -4,9 +4,15 @@ from Cython.Build import cythonize
import os, errno
import versioneer
ext = Extension(name='prrt', language="c", sources=["prrt/*.pyx"])
ext = [Extension(name='prrt', language="c", sources=["prrt/prrt.pyx"]),
Extension(name='restricted_integer_composition', language="c", sources=["prrt/restricted_integer_composition.pyx"]),
Extension(name='prrt_utils', language="c", sources=["prrt/prrt_utils.pyx"])
]
try:
os.remove(os.path.join(os.path.dirname(os.path.realpath(__file__)), "prrt/prrt.c"))
os.remove(os.path.join(os.path.dirname(os.path.realpath(__file__)), "prrt/restricted_integer_composition.c"))
os.remove(os.path.join(os.path.dirname(os.path.realpath(__file__)), "prrt/prrt_utils.c"))
except OSError as e:
if e.errno != errno.ENOENT:
raise
......
import unittest
import math
# import os, sys
# import pyximport
# pyximport.install()
# sys.path.append(os.path.join(os.path.dirname(__file__), '/home/local/Documents/thesis/hecps/code/PRRT/prrt'))
import prrt
# print(sys.path)
# print(dir(prrt.__path__))
# print(prrt.__file__)
class TestPrrtCodingConfiguration(unittest.TestCase):
def test_ri_01(self):
prrt_cp_obj = prrt.PrrtChannelParameters(0.1, 0, 0, 0, 0, 0)
prrt_cc_obj = prrt.PrrtCodingConfiguration(5, 2, [0, 1, 2])
ri = prrt_cc_obj.get_redundant_information(prrt_cp_obj)
print("RI for test config: (n, k, n_p)=(5, 2, [0, 1, 2]) , p_e = 0.1 >> ", ri)
assert math.isclose(ri, 0.01445, rel_tol=1e-03)
def test_ri_02(self):
prrt_cp_obj = prrt.PrrtChannelParameters(0.01, 0, 0, 0, 0, 0)
prrt_cc_obj = prrt.PrrtCodingConfiguration(5, 2, [0, 1, 2])
ri = prrt_cc_obj.get_redundant_information(prrt_cp_obj)
print("RI for test config: (n, k, n_p)=(5, 2, [0, 1, 2]), p_e = 0.01 >> ", ri)
assert math.isclose(ri, 0.0001490496, rel_tol=1e-03)
def test_ri_03(self):
prrt_cp_obj = prrt.PrrtChannelParameters(0.1, 0, 0, 0, 0, 0)
prrt_cc_obj = prrt.PrrtCodingConfiguration(8, 2, [1, 1, 2, 2])
ri = prrt_cc_obj.get_redundant_information(prrt_cp_obj)
print("RI for test config: (n, k, n_p)=(8, 2, [1, 1, 2, 2]), p_e = 0.1 >> ", ri)
assert math.isclose(ri, 0.50190719, rel_tol=1e-03)
if __name__ == '__main__':
unittest.main()
\ No newline at end of file