Skip to content
Snippets Groups Projects
Commit 5e6bb738 authored by Maël Madon's avatar Maël Madon
Browse files

more tests for distance. All tests pass now

parent 0edf36bf
No related branches found
No related tags found
No related merge requests found
*__pycache__
\ No newline at end of file
......@@ -66,10 +66,14 @@ def lateness_distance(s1, s2):
return np.sum([y-x for x, y in zip(s1, s2)])
def normalized_euclidian_distance(s1, s2):
"""Return the euclidien distance normalized by the l2 norm of the vectors"""
"""Return the euclidien distance normalized by the l2 norm of the vectors,
or None if one of the vectors is the null vector (undefined)"""
n1, n2 = l2_norm(s1), l2_norm(s2)
if n1==0 or n2==0:
return None
eucl_dist = euclidean_distance(s1, s2)
return eucl_dist**2 / (l2_norm(s1) * l2_norm(s2))
return eucl_dist**2 / (n1 * n2)
def l2_norm(s):
"""Return the l2 norm of the series s"""
......
File deleted
job_id,workload_name,profile,submission_time,requested_number_of_resources,requested_time,success,final_state,starting_time,execution_time,finish_time,waiting_time,turnaround_time,stretch,allocated_resources,consumed_energy,metadata
1216,user11,362,30,1,86400.000000,1,COMPLETED_SUCCESSFULLY,30,362.000000,80,0.000000,362.000000,1.000000,2,62671.250000,
247,user5,57102,0,8,432000.000000,1,COMPLETED_SUCCESSFULLY,0,57102.000000,0,0.000000,57102.000000,1.000000,0,12391134.000000,
1242,user11,9620,40,1,86400.000000,1,COMPLETED_SUCCESSFULLY,40,9620.000000,60,0.000000,9620.000000,1.000000,2,1665462.500000,
\ No newline at end of file
......@@ -32,6 +32,7 @@ def test_normalized_euclidean_distance():
####### Integration tests #######
three_jobs = "test/input/3jobs.csv"
three_jobs_w_session = "test/input/3jobs_w_sessions.csv"
three_jobs_zero = "test/input/3jobs_zeros.csv"
three_jobs_one_unsuccessful = "test/input/3jobs_1unsuccessful.csv"
......@@ -43,38 +44,43 @@ def test_cleaning():
# Clean unsuccessful jobs:
with pytest.warns(UserWarning):
distances(three_jobs_w_session, three_jobs_one_unsuccessful)
distances(three_jobs, three_jobs_one_unsuccessful)
# Complain if no matching job_ids:
with pytest.raises(KeyError):
distances(three_jobs_w_session, mc_10days_a60)
distances(three_jobs, mc_10days_a60)
def test_some_distances():
fin, sub, start = ["finish_time"], ["submission_time"], ["starting_time"]
# d(u,u) == 0 for all distances
assert distances(three_jobs_w_session, three_jobs_w_session,
field=sub) == 0
assert distances(three_jobs_w_session, three_jobs_w_session,
field=fin) == 0
assert distances(three_jobs_w_session, three_jobs_w_session,
euclidean=False, norm_eucl=True, field=fin) == 0
assert distances(three_jobs_w_session, three_jobs_w_session,
euclidean=False, lateness=True, field=fin) == 0
assert distances(three_jobs, three_jobs, field=sub) == 0
assert distances(three_jobs, three_jobs, field=fin) == 0
assert distances(three_jobs, three_jobs,
euclidean=False, norm_eucl=True, field=fin) == 0
assert distances(three_jobs, three_jobs,
euclidean=False, lateness=True, field=fin) == 0
# Eucl distance
assert distances(three_jobs_w_session, three_jobs_zero,
field=sub) == 50
assert distances(three_jobs_zero, three_jobs_w_session,
field=start) == 50
assert distances(three_jobs_w_session, three_jobs_zero,
field=fin) == 100
assert distances(three_jobs, three_jobs_zero, field=sub) == 50
assert distances(three_jobs_zero, three_jobs, field=start) == 50
assert distances(three_jobs, three_jobs_zero, field=fin) == 100
assert distances(three_jobs, three_jobs_w_session, field=sub) == 0
assert distances(three_jobs, three_jobs_w_session, field=start) == 0
assert distances(three_jobs, three_jobs_w_session, field=fin) == 20 * np.sqrt(2)
# Normalized eucl distance
assert distances(three_jobs_w_session, three_jobs_zero,
euclidean=False, norm_eucl=True, field=sub) == 1
assert distances(three_jobs_zero, three_jobs_w_session,
euclidean=False, norm_eucl=True, field=start) == 1
assert distances(three_jobs_w_session, three_jobs_zero,
euclidean=False, norm_eucl=True, field=fin) == 1
\ No newline at end of file
assert distances(three_jobs, three_jobs_zero,
euclidean=False, norm_eucl=True, field=sub) == None
assert distances(three_jobs, three_jobs_w_session,
euclidean=False, norm_eucl=True, field=sub) == 0
norm_dis_A_B = distances(three_jobs, three_jobs_w_session,
euclidean=False, norm_eucl=True, field=fin)
norm_dis_B_A = distances(three_jobs, three_jobs_w_session,
euclidean=False, norm_eucl=True, field=fin)
expected = 800 / (100*100)
assert norm_dis_A_B == norm_dis_B_A
assert norm_dis_B_A - expected < 1e-8
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment