import xml.etree.ElementTree as ET, json
from fractions import Fraction as F
root=ET.parse('source.xml').getroot()
t=[t for t in root.iter('table-wrap') if t.get('id')=='tbl0015'][0]
cap=' '.join(' '.join(t.find('caption').itertext()).split()) if t.find('caption') is not None else ''
print('CAPTION:',cap[:300])
for i,r in enumerate(t.iter('tr')):
    print(i,[' '.join(' '.join(c.itertext()).split()) for c in r])
rows={'primary_3':(2157,1766,1265,1806,1486,993),'primary_6':(2157,1750,1301,1806,1455,1037),'primary_12':(2157,1848,1431,1806,1533,1113),'sensitivity_3':(2250,1769,1267,1869,1490,996),'sensitivity_6':(2250,1753,1304,1869,1461,1042),'sensitivity_12':(2250,1853,1436,1869,1540,1120)}
tot=0
for k,(A,n,a,B,k2,b) in rows.items():
    m,l=A-n,B-k2
    vals=[F(a+x,A)-F(b+y,B) for x in (0,m) for y in (0,l)]
    lo=F(a,A)-F(b+l,B); hi=F(a+m,A)-F(b,B)
    cl=min(F(a,A)-F(b,B),F(a+m,A)-F(b+l,B)); cu=max(F(a,A)-F(b,B),F(a+m,A)-F(b+l,B))
    qc=F(b,k2); qt=(A*(F(b)+l*qc)/B-a)/m
    tot+=(m+1)*(l+1)
    print(k,[round(float(v)*100,3) for v in (F(a,n)-F(b,k2),lo,hi,cl,cu,qc,qt,qc-qt)], lo<=0<=hi, cl>0)
print('pairs',tot)
