@@ -678,15 +678,50 @@ def overlapcalc(self, result, values, overwrite):
678678
679679 def add_annotations (self , annolist ):
680680 #match up with existing values and get value id
681- #get df with only ValueID and AnnotationID
682- #remove any duplicates
683- #save df to db
681+
684682 print ("ANNOTATIONS ARE ATTEMPTED TO ADD" )
685- query = "SELECT resultid, datetime FROM TSRV"
686- pd .read_sql (query , self ._session_factory .engine )
683+ engine = self .memDB .series_service ._session_factory .engine
684+
685+ q = self .memDB .series_service ._session .query (TimeSeriesResultValues ) \
686+ .filter (TimeSeriesResultValues .ResultID == int (min (annolist ["resultid" ])))
687+
688+ query = q .statement .compile (dialect = engine .dialect )
689+ # data = pd.read_sql_query(sql=query, con=self._session_factory.engine,
690+ # params=query.params)
691+ # query = "SELECT ValueID, ResultID, ValueDateTime FROM TimeSeriesResultValues Where ResultID="+annolist["ResultID"][0]
692+
693+ vals = pd .read_sql_query (sql = query , con = engine ,params = query .params )
694+ # remove any duplicates
695+ annolist .drop_duplicates (["resultid" , "annotationid" , "valuedatetime" ], keep = 'last' , inplace = True )
696+ newdf = pd .merge (annolist , vals , how = 'left' , on = ["resultid" , "valuedatetime" ], indicator = True )
697+ print "after merge"
698+ print newdf
699+ # newdf = newdf(newdf['_merge'], axis = 1, inplace = True)
700+ # print "after filter"
701+ # print newdf
702+
703+ #get only AnnotationID and ValueID
704+ print "after column selection"
705+ mynewdf = newdf [["valueid_y" ,"annotationid" ]]
706+ print "rename columns"
707+ mynewdf .columns = ["ValueID" , "AnnotationID" ]
708+ print newdf
709+
710+
711+ # save df to db
712+ print "save to db"
713+ self .memDB .series_service .add_annotations (mynewdf )
714+ print "done"
715+
716+
717+ # df.drop_duplicates(dup_cols, keep='last', inplace=True)
718+ # newdf = pd.merge(df, pd.read_sql(query, engine), how='left', on=dup_cols, indicator=True)
719+ # newdf = newdf[newdf['_merge'] == 'left_only']
720+ # newdf.drop(['_merge'], axis=1, inplace=True)
721+ # return df[df['valuedatetime'].isin(newdf['valuedatetime'])]
722+
687723
688724
689- pass
690725
691726
692727 #
0 commit comments