https://github.com/pierre-guillou/pdiags_bench
Tip revision: b422e92c24a1485aa93e8a70474973787bd0eee5 authored by Pierre Guillou on 05 March 2021, 13:57:05 UTC
WiP
WiP
Tip revision: b422e92
convert_datasets.py
import sys
from paraview import simple
def write_output(outp, fname, out_dir, explicit):
if out_dir:
fname = out_dir + "/" + fname
if explicit:
# vtkUnstructuredGrid (TTK)
simple.SaveData(fname + ".vtu", proxy=outp)
else:
# Perseus Cubical Grid (Gudhi)
simple.SaveData(fname + ".pers", proxy=outp)
# Dipha Explicit Complex or Image Data (Dipha, CubicalRipser)
simple.SaveData(fname + ".dipha", proxy=outp)
def main(raw_file, out_dir=""):
extent, dtype = raw_file.split(".")[0].split("_")[-2:]
extent = [int(dim) for dim in extent.split("x")]
dtype_pv = {
"uint8": "unsigned char",
"int16": "short",
"uint16": "unsigned short",
"float32": "float",
"float64": "double",
}
raw = simple.ImageReader(FileNames=[raw_file])
raw.DataScalarType = dtype_pv[dtype]
raw.DataExtent = [0, extent[0] - 1, 0, extent[1] - 1, 0, extent[2] - 1]
raw_stem = raw_file.split(".")[0].split("/")[-1]
# convert input scalar field to float
pdc = simple.TTKPointDataConverter(Input=raw)
pdc.PointDataScalarField = ["POINTS", "ImageFile"]
pdc.OutputType = "Float"
# compute order field
arrprec = simple.TTKArrayPreconditioning(Input=pdc)
arrprec.PointDataArrays = ["ImageFile"]
# trash input scalar field, save order field
pa = simple.PassArrays(Input=arrprec)
pa.PointDataArrays = ["ImageFile_Order"]
# tetrahedralize grid
tetrah = simple.Tetrahedralize(Input=pa)
# save explicit mesh
write_output(tetrah, raw_stem + "_order_expl", out_dir, True)
print("Converted " + raw_file + " to VTU and Dipha")
if __name__ == "__main__":
if len(sys.argv) >= 1:
main(*sys.argv[1:3])