opt=dict(getopt.getopt(sys.argv[1:], "s:f:o:a:b")[0])

smilesFilename=opt.get("-s",None) or smilesFilename
fragmetnsFilename=opt.get("-f", None) or fragmentsFilename
outputFilename=opt.get("-o", None) or outputFilename
attrName=opt.get("-a", 1)
binary=opt.has_key("-b")

smilesData=orange.ExampleTable(smilesFilename)
smilesData=smilesData.filter(orange.Filter(lambda e:not e[attrName].isSpecial()))
#smilesDict=dict([(str(e[0]), str(e[1])) for e in smilesData])
#revSmilesDict=dict([(val, key) for key, val in smilesDict.items()])
smilesCodes=[str(e[attrName]) for e in smilesData]

fragments=map(lambda s:s.strip(), open(fragmetnsFilename).read().split("\n"))
fragmentMap=orngChem.map_fragments(fragments, smilesCodes, binary)

vars=[orange.FloatVariable(frag) for frag in fragments]
mid=orange.newmetaid()
cvar=orange.StringVariable("chemical")
vars=smilesData.domain.attributes+vars+(smilesData.domain.classVar and [smilesData.domain.classVar] or [])

domain=orange.Domain(vars,1)
domain.addmetas(smilesData.domain.getmetas())
#domain.addmeta(mid,cvar)
table=orange.ExampleTable(domain)
for e in smilesData:
    ex=orange.Example(domain)
    for v in smilesData.domain.variables+smilesData.domain.getmetas().values():
        ex[v]=e[v]
    fragmap=fragmentMap[str(e[attrName])]