wrong_cases = set() for file_name in xmls: if Util.get_file_extension(file_name) != ".xml": continue # Open volume volFile = "{0}/{1}.nhdr".format(vols_dir, file_name.replace("_parenchymaTraining.xml", "")) v = slicer.util.loadVolume(volFile, returnNode=True)[1] # print(volFile) dims = v.GetImageData().GetDimensions() p = path.join(xmls_dir, file_name) with open(p, "r+b") as f: xml = f.read() geom = gtd.GeometryTopologyData.from_xml(xml) for point in geom.points: ras = Util.lps_to_ras(point.coordinate) ijk = Util.ras_to_ijk(v, ras) for i in range(3): if ijk[i] < 0 or ijk[i] >= dims[i]: # Flip just the second coord # point.coordinate[1] = -point.coordinate[1] wrong_points.append((file_name, point.coordinate, ijk)) wrong_cases.add(file_name) # if file_name in wrong_cases: # print("Added " + file_name) # ras = point.coordinate # point.coordinate = Util.ras_to_lps(ras) ## Change sign # for case in wrong_cases: # p = path.join(xmls_dir, case) # print ("Processing {0}...".format(p))