-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmonotinicity_annotate.py
More file actions
99 lines (91 loc) · 3.29 KB
/
monotinicity_annotate.py
File metadata and controls
99 lines (91 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from rdflib import Literal, URIRef, BNode
from rdflib.namespace import RDF
def monotonic_annotate(input_graph,s13,latest_measure_df,comparator_bnode):
back_up_df=latest_measure_df
s14=s13
p14=URIRef('http://purl.obolibrary.org/obo/RO_0000091')
latest_measure_df=latest_measure_df.reset_index(drop=True)
idx= latest_measure_df.groupby(['measure'])['month'].nlargest(3) .reset_index()
l=idx['level_1'].tolist()
latest_measure_df = latest_measure_df[latest_measure_df.index.isin(l)]
latest_measure_df = latest_measure_df.reset_index(drop=True)
m1=latest_measure_df["Performance_Rate"][1]-latest_measure_df["Performance_Rate"][0]
m2=latest_measure_df["Performance_Rate"][2]-latest_measure_df["Performance_Rate"][1]
if(m1>0 and m2 <0)or(m1<0 and m2>0):
ac=BNode(latest_measure_df["measure"][0])
av=comparator_bnode
o14=BNode()
input_graph.add((s14,p14,o14))
input_graph=annotate_non_monotonic_trend(input_graph,o14,ac,av)
if(m1>0 and m2>0) or (m1<0 and m2<0):
ac=BNode(latest_measure_df["measure"][0])
av=comparator_bnode
o14=BNode()
if(m1>0 and m2>0):
mono="positive"
number= find_number(back_up_df,mono)
if(m1<0 and m2<0):
mono="negative"
number= find_number(back_up_df,mono)
input_graph.add((s14,p14,o14))
input_graph=annotate_monotonic_trend(input_graph,o14,ac,av,number)
#back_up_df.to_csv('slope22.csv')
#print(trend_sign)
return input_graph
def annotate_non_monotonic_trend(a,s16,measure_Name,o16):
p15=RDF.type
o15=URIRef('http://example.com/slowmo#NonMonotonicTrend')
a.add((s16,p15,o15))
p16=URIRef('http://example.com/slowmo#RegardingComparator')
a.add((s16,p16,o16))
p17=URIRef('http://example.com/slowmo#RegardingMeasure')
o17=measure_Name
a.add((s16,p17,o17))
# p18=URIRef('http://example.com/slowmo#TimeSinceLastAcheivement')
# o18=Literal(number)
# a.add((s16,p18,o18))
return a
def annotate_monotonic_trend(a,s16,measure_Name,o16,number):
p15=RDF.type
o15=URIRef('http://example.com/slowmo#MonotonicTrend')
a.add((s16,p15,o15))
p16=URIRef('http://example.com/slowmo#RegardingComparator')
a.add((s16,p16,o16))
p17=URIRef('http://example.com/slowmo#RegardingMeasure')
o17=measure_Name
a.add((s16,p17,o17))
p18=URIRef('http://example.com/slowmo#Timeofmonotonicity')
o18=Literal(number)
a.add((s16,p18,o18))
return a
def find_number(backup_df,trend_sign1):
if(trend_sign1=="negative"):
x=2
lista=[]
lista=backup_df["Performance_Rate"].tolist()
count=0
y=-1
z=y-1
for x in range(len(lista)):
if lista[z]<=lista[y]:
return count
if(lista[z]>lista[y]):
count=count+1
y=y-1
z=y-1
return count
if(trend_sign1=="positive"):
x=2
lista=[]
lista=backup_df["Performance_Rate"].tolist()
count=0
y=-1
z=y-1
for x in range(len(lista)):
if lista[z]>=lista[y]:
return count
if(lista[z]<lista[y]):
count=count+1
y=y-1
z=y-1
return count