From 58024d5e6f66caea6f78f44c7278a2ac0f57dea1 Mon Sep 17 00:00:00 2001 From: "nikola.milosevic86@gmail.com" Date: Wed, 9 Nov 2016 15:12:53 +0000 Subject: [PATCH] Started implementation for new extraction method that will support knowledge of where to look for data and CUI annotations --- .settings/org.eclipse.core.resources.prefs | 1 + QueryDBClass.py | 2 +- QueryDBClass.pyc | Bin 31197 -> 31186 bytes Wizard/EditRule.py | 46 ++++++++++++++++++--- Wizard/EditRule.pyc | Bin 7485 -> 9013 bytes Wizard/FileManipulationHelper.py | 14 ++++++- Wizard/FileManipulationHelper.pyc | Bin 8639 -> 9147 bytes Wizard/RuleClasses_Rule.py | 4 ++ 8 files changed, 59 insertions(+), 8 deletions(-) diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index bd8cd5b..b565f6f 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -3,6 +3,7 @@ encoding//DefaultSintacticRules/StatisticalValues=UTF-8 encoding//DrugDrugInteraction/AnalyzePattern.py=utf-8 encoding//DrugDrugInteraction/Categories.txt=UTF-8 encoding//Wizard/Process_Data.py=UTF-8 +encoding/AnalyzePattern.py=utf-8 encoding/CreateMLDatasetPatientNum.py=utf-8 encoding/GetAdverseEvents.py=utf-8 encoding/GetNumPatients.py=utf-8 diff --git a/QueryDBClass.py b/QueryDBClass.py index d5cd0d5..b6a97ba 100644 --- a/QueryDBClass.py +++ b/QueryDBClass.py @@ -602,7 +602,7 @@ def SaveAttribute(self,documentID,Option,tableId,TableName,PMC,AttributeName,Att intValue = float(AttributeValue) except: intValue = None - sql = "INSERT into IEAttribute (documentId, PMC,idTable,TableName,Class,SubClass,VOption,Target, StringValue,IntValue, Unit) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" + sql = "INSERT into IEAttribute (documentId, PMC,idTable,TableName,Class,SubClass,VOption,Source, StringValue,IntValue, Unit) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" cursor.execute(sql,(documentID,PMC,tableId,TableName,AttributeName,AttributeSubClass,Option,Target,AttributeValue,intValue,Unit)) self.db.commit() return cursor.lastrowid diff --git a/QueryDBClass.pyc b/QueryDBClass.pyc index 034fead47cda078612e1216e9818dd663b8e7fd2..da716ee73bb78573887e083ad10e34a82c55f32b 100644 GIT binary patch delta 45 zcmV+|0Mh^6^8wQH0SE*04GQ3E99XdkT@L{ilhF+q0XdWG4J5Oz5B*(}EpQ^U%xw`2 DnAQ@2(Z)|0=eGejD22^2k PXJvGgC~zFJ!EF%?usIeO diff --git a/Wizard/EditRule.py b/Wizard/EditRule.py index 7d141b9..7b890cc 100644 --- a/Wizard/EditRule.py +++ b/Wizard/EditRule.py @@ -56,10 +56,19 @@ def AddEditRule(project_name,vRuleName,vRuleType,RuleNameView,RulesListBox): PosUnitLabel = Label(itemsFrame,text="Select rule creation mechanism").grid(row=11,column=0,sticky='w') Radiobutton(itemsFrame, text="Lexical (White List+Black list)", variable=vLexSemRule, value="Lexical").grid(row=12,sticky='w') Radiobutton(itemsFrame, text="Semantic (UMLS Sem. type+Black list)", variable=vLexSemRule, value="Semantic").grid(row=13,sticky='w') - save = Button(itemsFrame, text="Save", fg="black",command=lambda:SaveRule(project_name,rule_name,add,vClsIn,vDefUnit,vPosUnit,pragVar,RulesListBox,vRuleType,vLexSemRule)).grid(row=14,column=1,sticky='w') + where_to_look = Label(itemsFrame,text="Where to look for data?").grid(row=2,column=1,sticky='w') + wl_look_head = IntVar() + WLHeaderCB = Checkbutton(itemsFrame,text="Header",variable = wl_look_head).grid(row=3,column=1,sticky='w') + wl_look_stub = IntVar() + WLStubCB = Checkbutton(itemsFrame,text="Stub",variable = wl_look_stub).grid(row=4,column=1,sticky='w') + wl_look_super = IntVar() + WLSuperRowCB = Checkbutton(itemsFrame,text="Super-row",variable = wl_look_super).grid(row=5,column=1,sticky='w') + wl_look_data = IntVar() + WLDataCB = Checkbutton(itemsFrame,text="Data",variable = wl_look_data).grid(row=6,column=1,sticky='w') + save = Button(itemsFrame, text="Save", fg="black",command=lambda:SaveRule(project_name,rule_name,add,vClsIn,vDefUnit,vPosUnit,pragVar,RulesListBox,vRuleType,vLexSemRule,wl_look_head,wl_look_stub,wl_look_super,wl_look_data)).grid(row=14,column=1,sticky='w') -def SaveRuleEdit(project_name,rule_name,add,vClsIn,vDefUnit,vPosUnit,pragVar,ruleType,ruleMech): +def SaveRuleEdit(project_name,rule_name,add,vClsIn,vDefUnit,vPosUnit,pragVar,ruleType,ruleMech,wl_look_head,wl_look_stub,wl_look_super,wl_look_data): global currentWhiteList global currentBlackList rule_path = "Projects/"+project_name+"/"+rule_name @@ -68,17 +77,17 @@ def SaveRuleEdit(project_name,rule_name,add,vClsIn,vDefUnit,vPosUnit,pragVar,rul vLexSemRule = StringVar() vRuleType.set(ruleType) vLexSemRule.set(ruleMech) - FileManipulationHelper.MakeRuleCFGFile(rule_path, vClsIn,vDefUnit,vPosUnit,pragVar,vRuleType,vLexSemRule) + FileManipulationHelper.MakeRuleCFGFile(rule_path, vClsIn,vDefUnit,vPosUnit,pragVar,vRuleType,vLexSemRule,wl_look_head,wl_look_stub,wl_look_super,wl_look_data) add.withdraw() -def SaveRule(project_name,rule_name,add,vClsIn,vDefUnit,vPosUnit,pragVar,RulesListBox,vRuleType,vLexSemRule): +def SaveRule(project_name,rule_name,add,vClsIn,vDefUnit,vPosUnit,pragVar,RulesListBox,vRuleType,vLexSemRule,wl_look_head,wl_look_stub,wl_look_super,wl_look_data): global currentWhiteList global currentBlackList rule_path = "Projects/"+project_name+"/"+rule_name FileManipulationHelper.CreateFoderIfNotExist(rule_path) #FileManipulationHelper.SaveWhiteList(rule_path, currentWhiteList) #FileManipulationHelper.SaveBlackList(rule_path, currentBlackList) - FileManipulationHelper.MakeRuleCFGFile(rule_path,vClsIn,vDefUnit,vPosUnit,pragVar,vRuleType,vLexSemRule) + FileManipulationHelper.MakeRuleCFGFile(rule_path,vClsIn,vDefUnit,vPosUnit,pragVar,vRuleType,vLexSemRule,wl_look_head,wl_look_stub,wl_look_super,wl_look_data) RulesListBox.insert(RulesListBox.size(),rule_name) add.withdraw() if(vLexSemRule.get()=="Lexical"): @@ -128,6 +137,31 @@ def EditRule(project_name,Lb1): vPosUnit = StringVar() PosUnInput = Entry(itemsFrame,textvariable=vPosUnit).grid(row=8,sticky='w') ruleMech = cfg['RuleCreationMech'].replace('\n','') + where_to_look = Label(itemsFrame,text="Where to look for data?").grid(row=2,column=1,sticky='w') + wl_look_head = IntVar() + if('DataInHeader' in cfg.keys() and cfg['DataInHeader']!=None and cfg['DataInHeader']=='1'): + wl_look_head.set(1) + else: + wl_look_head.set(0) + WLHeaderCB = Checkbutton(itemsFrame,text="Header",variable = wl_look_head).grid(row=3,column=1,sticky='w') + wl_look_stub = IntVar() + if('DataInStub' in cfg.keys() and cfg['DataInStub']!=None and cfg['DataInStub']=='1'): + wl_look_stub.set(1) + else: + wl_look_stub.set(0) + WLStubCB = Checkbutton(itemsFrame,text="Stub",variable = wl_look_stub).grid(row=4,column=1,sticky='w') + wl_look_super = IntVar() + if('DataInSuperRow' in cfg.keys() and cfg['DataInSuperRow']!=None and cfg['DataInSuperRow']=='1'): + wl_look_super.set(1) + else: + wl_look_super.set(0) + WLSuperRowCB = Checkbutton(itemsFrame,text="Super-row",variable = wl_look_super).grid(row=5,column=1,sticky='w') + wl_look_data = IntVar() + if('DataInData' in cfg.keys() and cfg['DataInData']!=None and cfg['DataInData']=='1'): + wl_look_data.set(1) + else: + wl_look_data.set(0) + WLDataCB = Checkbutton(itemsFrame,text="Data",variable = wl_look_data).grid(row=6,column=1,sticky='w') if ruleMech == 'Lexical': editWhiteList = Button(itemsFrame,text="Edit Lexical Cue List",command=lambda:WhiteListWindowEdit(project_name,rule_name)).grid(row=1,column=0,sticky='w') else: @@ -152,4 +186,4 @@ def EditRule(project_name,Lb1): PragLabel = Label(itemsFrame,text="Pragmatic class").grid(row=7,column=1,sticky='w') drop = OptionMenu(itemsFrame,pragVar,*prags) drop.grid(row=8,column=1,sticky='w') - save = Button(itemsFrame, text="Save", fg="black",command=lambda:SaveRuleEdit(project_name,rule_name,add,vClsIn,vDefUnit,vPosUnit,pragVar,ruleType,ruleMech)).grid(row=9,column=1,sticky='w') \ No newline at end of file + save = Button(itemsFrame, text="Save", fg="black",command=lambda:SaveRuleEdit(project_name,rule_name,add,vClsIn,vDefUnit,vPosUnit,pragVar,ruleType,ruleMech,wl_look_head,wl_look_stub,wl_look_super,wl_look_data)).grid(row=9,column=1,sticky='w') \ No newline at end of file diff --git a/Wizard/EditRule.pyc b/Wizard/EditRule.pyc index 9f1aeef8c9abe0145bf738b19c4781d3b1662fc1..7d13f9053ecaf1bdc3e1d12c7a9b196c290efe3d 100644 GIT binary patch delta 3448 zcmb_eOK)366h7CEUB6@EB({^Zb(%h$q)n4P(xea4Hc1~S6gq)ED3H3oHzZE5i+$6o z=mx7QA};D~SRx@Lgb)kV60rm!Sg=4U`~j9_#RjoMU2wj+zK$Iuy1~+Xo;fq;&NpYy zoO8ZC`pp@i`>$}|_d|VG9{HYVtw|#4;O6F5>h!EX)joBX{bYGa-$MEj-P5#OfOJ3U z`$-Ry9wj|QdYJB!do@O8oI7+sNM^!O874hVl^`p+s)}t*itUbKs7`T2DTY|F>}bZC zG&>y4aGmA>rOBLXTXr@nb~=iII>m!ZF;J%%hhksDDdS`&ox>d>{V?gHq#uzFJ=@3E z0<;#SwGgd^X+A>w7=1weF?aRg<4r6Qq!Z1ikFG!UOu1%CaW?wp1*2%B%tC6pP*_UM z7m6u8V`e56T|8%c8O|9Q-6)zZ+?_R7Zj}7!tlTt;`-+9zN<761@}zHnpp~a$+)5+z zj&Em#Z=n*RN|-8q#EAUFm(n8gd*6rCW{4NvUY^62bJ(syu)rHO2ui%I8Lm?)VS8Cl zoRDk&aC8bga-+ovL%M7IGr!O-p3j??GDS1UqR9m#yL4m4Gz)okqSLCIhUnKOoVo)1O}oX02*QtuotioFeL9Lj>%i04(+;p5V}|% z(EQqPL(76;lpFS*iB)~&+yj%`mYp1V970 z8PXvCEURHjFF?6Znt0QHv!R%0gH0b2DPB6ut<=V#Eao26I<&H83$%Qe;4TQ3&x{ADtBN($+mf^LX4uxH$?^Z#E1F%h`qlrkXLxhvao<<_yDI$An zL^j4Yk?-6b$r_22ZGrthHi)DZ5j*+VM4B@})FHxotiO@SnHE^2zeZ$ZY!f-t!tqoQ zDc4M53pNuOP(+Z-9E&8IEb^Q~gp=!FBaz37$Y71g#@HtExZG0lZ!(EJ-b`e#BI2(j z($z$yjVf-^_o++2OgWf*0DWC`Qu2d)#aSP>z5yp z=VGaJj4CapA5;$ZTiv%glh!XjEPsim%I%cr=g4u6gCS@7DCH7V;n=9rD(CMc<+{k? z3mv5-{*KsxWA@)TCGWM+Dzk}Gu3LQ~QT^6^jVc)3h0Dy~j!dMo@YFnN{q zW7S!ov;4R%U|!JJrZhhCR%-JnHs-yK&hxfxPe8 zzuUWGH5;BJ{S@h^**GXLMr#GeJbUw`Q(f4eJ=JuN-F9^`z5Y(eNv-_s>H>inx$u0x zT4Ny8jR=*OJGrZJtGxgTRdhjyC|;GJ3gEoDsUkr_<^>`CEY^u`9?M6asg~{Nj3xGW zAgI|%7rkmkl~&@EXFrcWmvixq7j=QyRTF+8Ly6pG;g|A<#LZrWN3j*KjUmfT{lHVz zLPK&k*}K4@tXdB7TL^OvhO=H!DBj|(%?HWb&W3&HDG~;H93q(xU{jiGDiHV>WgO#M zZgy3Kl#^Bjhw*_Cz(K$vz+u2B;0Rz0fOM^jm+VThWGow5bFq*YQ|8^~0x5ZR(IIS<5C@gWKrH|#4?ic$}#U0S1uCS`*{-Y;Hdd_;4$tL7`Jww~? cf~E(6LS0-3z?nn}a8Lf+^R{QqAM!u<4`CZ)p8x;= delta 1892 zcmbVNOK%%h6h7DE=Qwf3c49lh&pan7sq<=@K9!I(l(Y@xHf=#&py2C(-H-%(5)c|I zNJfo8-N0psDgld1mDnH)iA}qK6+-+1RD=*)HeIl(5a-;QNCGUsY*`jbLEdUlk8I1vK05Hpi^+HXDJtYXX4rL8&pK{wl_2PG8G0{zl zHu_QVfbFGl466G;e%+R5Q}UO#wD%-_m!JF8NDLlB%~S(491Cqw4(sqXQJ84wx}bpfRsK>#hnTD1&|F`Y%2 zfl_dxHI8DC7o{5VG=GnL@9J-8AaZca1(g=fih}I|;Rn$Tq6c3cS&pJL1qG~6Ht;Fbmz`P72uv%!P%ZX&zW2J6@*yghiu46qC+w?hMO9D`aI ztPUv0zz%~Lf=+rIa~{t-k74MnyP*~VI|AjnS|Yl))<+B)3~+eymg0DK(nY3S#Z{R@ z?uO5C?$G2rUjKghh-1KgQAS#2EVvs7{?S9fcRy#$vEiidb#EL?VC7a2$REjnkw-gN z35sl-!7+=%9T(I(z{YBwgw)XlcG&U>5GO!PVlR=alEbS=PAB)d%E_KOnq7-ITy?5> zscV|aSTgHQ;`z(Fsk|&D+q}-;(H-&-m3%0FNUj_;-j?sA%14b2IgsAWbz%Bs!NTb%bD)fCxwNXkn{TEv^*{R%v6MpCgx=#4*yw2_^_m5KPIx zGCgcsKFTDnokxR7)8mjd&ClgGM)@pRW)Lj0Y;IKf99b^xTMDah@_DknNN|zhB?6jL zen~#a&MsXh^$Niv!OH}%5G*15uMT};oQ?P~`GP1}^tW*n^=d^nb64b0_q_KsEj}f; oyN?g9k?J8Jp5mN<4u%t#aGZd>4LI!jMb0B5J!wxq&=Ls$1L?^Gk z=UKlQ)nsoi30?sF2(1~VEx(r8# z?dB#hK?!pqJ4SN!T;vc?$8&5M_9@mW8I@65_orDye9)cDpFw=s zwU3V@KB9YtG2El=!e!+>`XQLR@e1jCVRy?yKMGC^@_rbc6x3D$L?QxtCk?j)(7yE_ z;KOz_a5B*0aWI@7fOQE!83yYEa8|;f8MbBZqg!VOXhYI<*%vo@6gHr?UI)Ieb61T@ zj((ijS@OgW*gp;zIT5$TOuYEPniz~Xav1KGMR6)6r)U;z!q_ z`Qlkk!!(Zed70LWU+@jhl-{C4ze=05`$ni3iFfr7yO)e0X7pMUW zu`)C>FfgVtFa&GxO+F;Ha`HxT6-JK9*Tf?xJ4xg+icQ`iA-VaYgf$~$!)9J7Ek?%H z%@)$ijEr5AV`P*VohH}ISaY&4*03