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
| # -*- coding: utf-8 -*-
"""
Created on Tue Jan 31 13:30:22 2012
@author:
"""
import lxml.etree as et
import os,re
def filtreImages(files):
filtlist=[]
#a file name like 1.TIF or 1.tif
regex=re.compile('([1-9]+)\.(TIF|tif)$')
if len(files)>0:
for f in files:
result=regex.search(f)
if result<>None:
#print f
filtlist.append(f)
#print filtlist
return filtlist
def makeNodes(node_dirs, root, leveldirlist, root_level,files):
code={0:'slide',1:'field',2:'fluorochrome',3:'TooDeep'}
for d in leveldirlist:
#child = et.Element("node{0}".format(root_level), name=d)
child = et.Element(code[root_level], name=d)
if code[root_level]=='field':
child.set('ROI','x0,y0,x1,y1')
nodes_dirs[os.path.join(root, d)] = child
nodes_dirs[root].append(child)
if len(files)>0:
for image in files:
print " root",root," root_level",root_level," image",image
child=et.Element("image",name=image, position='-1,-1', exposure='0.0')
nodes_dirs[os.path.join(root, d)] = child
nodes_dirs[root].append(child)
level={}
if __name__ == '__main__':
topdir = '/home/claire/Applications/ImagesTest/CytoProject'
projetxml = et.Element('CytoGenet') # racine
parent = projetxml
nodes_dirs = {topdir: parent}
ln_root = len(topdir)
for root, dirs, files in os.walk(topdir):
lvl = root[ln_root:].count(os.path.sep)
#print nodes_dirs
filtered=filtreImages(files)
#print filtered
makeNodes(nodes_dirs, root, dirs, lvl,filtered)
print(et.tostring(projetxml,pretty_print=True))
print projetxml.getchildren()[0].get("name")
print projetxml.getchildren()[1].get("name")
slides=projetxml.getchildren()
metaphases1=slides[0].getchildren()
metaphases2=slides[1].getchildren()
for m in metaphases2:
print m.get("name") |
Partager