def generateXmlFromCommandLineArgs(args): """ Main routine used to generate the :samp:`'<install_prefix>/share/pymango.xml'` XML file which describes main-driver filters and data-types. XML description are generated for filter classes which are registered with the :obj:`mango.application.main_driver` module. The :samp:`{args}` argument is required to have the following attributes: :samp:`{args.loggingLevel}` (:obj:`str`) The logging level string, one of :samp:`'INFO', 'DEBUG', 'WARN', 'ERROR', 'CRITICAL', 'NONE'`. :samp:`{args.xmlPart1}` (:obj:`str`) XML string pre-pended to individual filter XML descriptions. :samp:`{args.xmlPart2}` (:obj:`str`) XML string appended after the individual filter XML descriptions. :samp:`{args.outputFileName}` (:obj:`str`) Name of the file in which the generated XML string is written. :type args: object :param args: Parameter object, see above. """ logLevel = getattr(logging, args.loggingLevel) mpi.initialiseLoggers([ __name__, "mango.core", "mango.image", "mango.io", "mango.application" ], logLevel=getattr(logging, args.loggingLevel)) xmlPartsFileNames = [args.xmlPart1, args.xmlPart2] xmlPartsStrings = [ None, ] * len(xmlPartsFileNames) for i in range(0, len(xmlPartsFileNames)): xmlPartFileName = xmlPartsFileNames[i] if (xmlPartFileName != None): xmlPartsStrings[i] = open(xmlPartFileName, 'r').read() xmlString = generatePyMangoFilterDescriptionXml(xmlPartsStrings[0], xmlPartsStrings[1]) if (args.outputFileName != None): if (mpi.rank == 0): rootLogger.info("Writing XML to file %s..." % args.outputFileName) open(args.outputFileName, 'w').write(xmlString) rootLogger.info("Done writing XML to file %s." % args.outputFileName) else: print(xmlString)
def generateXmlFromCommandLineArgs(args): """ Main routine used to generate the :samp:`'<install_prefix>/share/pymango.xml'` XML file which describes main-driver filters and data-types. XML description are generated for filter classes which are registered with the :obj:`mango.application.main_driver` module. The :samp:`{args}` argument is required to have the following attributes: :samp:`{args.loggingLevel}` (:obj:`str`) The logging level string, one of :samp:`'INFO', 'DEBUG', 'WARN', 'ERROR', 'CRITICAL', 'NONE'`. :samp:`{args.xmlPart1}` (:obj:`str`) XML string pre-pended to individual filter XML descriptions. :samp:`{args.xmlPart2}` (:obj:`str`) XML string appended after the individual filter XML descriptions. :samp:`{args.outputFileName}` (:obj:`str`) Name of the file in which the generated XML string is written. :type args: object :param args: Parameter object, see above. """ logLevel=getattr(logging, args.loggingLevel) mpi.initialiseLoggers( [__name__, "mango.core", "mango.image", "mango.io", "mango.application"], logLevel=getattr(logging, args.loggingLevel) ) xmlPartsFileNames = [args.xmlPart1, args.xmlPart2] xmlPartsStrings = [None,]*len(xmlPartsFileNames) for i in range(0, len(xmlPartsFileNames)): xmlPartFileName= xmlPartsFileNames[i] if (xmlPartFileName != None): xmlPartsStrings[i] = open(xmlPartFileName, 'r').read() xmlString = generatePyMangoFilterDescriptionXml(xmlPartsStrings[0], xmlPartsStrings[1]) if (args.outputFileName != None): if (mpi.rank == 0): rootLogger.info("Writing XML to file %s..." % args.outputFileName) open(args.outputFileName, 'w').write(xmlString) rootLogger.info("Done writing XML to file %s." % args.outputFileName) else: print(xmlString)
from matplotlib import pyplot as plt plt.ioff() hd = HistData() hd.edges = [sp.arange(0, 104, 1), sp.arange(0, 104, 1)] hd.x = (hd.edges[0][1:] + hd.edges[0][0:-1])*0.5 hd.y = (hd.edges[1][1:] + hd.edges[1][0:-1])*0.5 xx,yy = np.meshgrid(hd.x, hd.y) hd.hist2dData = mockHistData(xx,yy) hd.hist1dData0 = sp.sum(hd.hist2dData, axis=0) hd.hist1dData1 = sp.sum(hd.hist2dData, axis=1) plt.pcolor(xx,yy,hd.hist2dData) self.histData = hd def testTernaryPlot(self): """ Tests ternary plotting of 2D histogram data. """ figList = mango.application.shale.generateShaleTernaryPlot(self.histData) self.assertLess(2, len(figList)) # plt.show() if __name__ == "__main__": mpi.initialiseLoggers( [__name__, "mango.application"], logLevel=logging.DEBUG ) unittest.main()
else: parser = optparse.OptionParser(description=descStr) for arg in argList: addOptionDict = dict(arg) del addOptionDict['cmdLine'] parser.add_option(*arg['cmdLine'], **addOptionDict) return parser if (__name__ == "__main__"): argParser = getArgumentParser() if haveArgParse: args = argParser.parse_args() else: (args, argv) = argParser.parse_args() mpi.initialiseLoggers([__name__, "mango.io", "mango.application"], logLevel=getattr(logging, args.loggingLevel)) bdsp = \ BatchDownsampler( mdssSrcRootDir=args.mdssSrc, mdssDstRootDir=args.mdssDst, mdssPrj=args.mdssPrj, loclSrcRootDir=args.loclSrc, loclDstRootDir=args.loclDst, voxelSizeTuples=(parseVoxelSizes(args.voxelSizes.split(","))) ) bdsp()
return outputArr class ConvolutionFilterTest(NeighbourhoodFilterTest,_NeighbourhoodFilterTestImpl): def setUp(self): NeighbourhoodFilterTest.setUp(self) self.diffTol = 1 def getWeights(self, se): shape = se.toFootprint().shape return mango.image.discrete_gaussian_kernel(sigma=np.min(shape)/(2*3.25)) def callMangoFilter(self, input, se, stride=(1,1,1), boffset=(0,0,0), eoffset=(0,0,0)): output = mango.image.convolve(input, self.getWeights(se), mode=self.mode, stride=stride, boffset=boffset, eoffset=eoffset) return output def callScipyFilter(self, inDds, se): kernel = self.getWeights(se) rootLogger.info("Num kernel elements = %s" % sp.sum(sp.where(kernel, 1, 0))) rootLogger.info("kernel.shape = %s" % (kernel.shape,)) outputArr = sp.ndimage.convolve(inDds.asarray(), weights=kernel, mode=self.mode) return outputArr if __name__ == "__main__": mpi.initialiseLoggers( [__name__, "mango.mpi", "mango.image", "mango.imageTest"], logLevel=logging.INFO ) unittest.main()
# Calculate the sp.array slicing for the non-halo (exclusive) # part of the subdomain. slc = [] for d in range(len(haloSz)): slc.append( slice(haloSz[d], slcDds.asarray().shape[d] - haloSz[d])) slc = tuple(slc) self.assertEqual(np.min(slcDds.asarray()[slc]), slcGlbIndex) self.assertEqual(np.max(slcDds.asarray()[slc]), slcGlbIndex) self.assertTrue( sp.all(slcDds.asarray()[slc] == slcGlbIndex)) def testGatherSliceWithHalo0(self): self.doTestGatherSliceWithHalo(0) def testGatherSliceWithHalo2(self): self.doTestGatherSliceWithHalo(4) if __name__ == "__main__": mango.setLoggingVerbosityLevel("high") mpi.initialiseLoggers( [__name__, "mango.mpi", "mango.image", "mango.imageTest"], logLevel=logging.INFO) unittest.main()
input0 = mnDds, input1 = sdDds, centre=imgDds.shape*0.5, radius=np.min(imgDds.shape)*0.40, axislen = imgDds.shape[0]+2, bins=(bins0, bins1) ) if (mpi.rank == 0): import matplotlib import matplotlib.pyplot as plt y = (bins0[1:]+bins0[0:-1])*0.5 x = (bins1[1:]+bins1[0:-1])*0.5 plt.plot(y, sp.sum(H, axis=1), linewidth=7) plt.plot(y, H01, linewidth=3) plt.plot(y, H02, linewidth=3) #plt.show() if __name__ == "__main__": #mango.setLoggingVerbosityLevel("high") mpi.initialiseLoggers( [__name__, "mango.unittest", "mango.mpi", "mango.fmm", "mango.fmmTest"], logLevel=logging.DEBUG ) random.seed((mpi.rank+1)*23456243) numpy.random.seed((mpi.rank+1)*23456134) mango.unittest.main()
input0 = mnDds, input1 = sdDds, centre=imgDds.shape*0.5, radius=np.min(imgDds.shape)*0.40, axislen = imgDds.shape[0]+2, bins=(bins0, bins1) ) if (mpi.rank == 0): import matplotlib import matplotlib.pyplot as plt y = (bins0[1:] + bins0[0:-1]) * 0.5 x = (bins1[1:] + bins1[0:-1]) * 0.5 plt.plot(y, sp.sum(H, axis=1), linewidth=7) plt.plot(y, H01, linewidth=3) plt.plot(y, H02, linewidth=3) #plt.show() if __name__ == "__main__": #mango.setLoggingVerbosityLevel("high") mpi.initialiseLoggers([ __name__, "mango.unittest", "mango.mpi", "mango.fmm", "mango.fmmTest" ], logLevel=logging.DEBUG) random.seed((mpi.rank + 1) * 23456243) numpy.random.seed((mpi.rank + 1) * 23456134) mango.unittest.main()
writehistogram=False) def testDdsWriteAndRead(self): outDir = self.createTmpDir("testDdsWriteAndRead") dds = mango.data.gaussian_noise(shape=self.shape, mtype="float64", mean=0.0, stdd=20000.) outFileName = mango.io.writeDds( os.path.join(outDir, "float64Noise.nc"), dds) readDds = mango.io.readDds(outFileName, mpidims=dds.mpi.shape) self.assertTrue(sp.all(dds.asarray() == readDds.asarray())) if (mango.haveFloat16): dds = mango.data.gaussian_noise(shape=self.shape, mtype="float16", mean=0.0, stdd=2000.) outFileName = mango.io.writeDds(os.path.join( outDir, "float16Noise.nc"), dds, writehistogram=True) readDds = mango.io.readDds(outFileName, mpidims=dds.mpi.shape) self.assertTrue(sp.all(dds.asarray() == readDds.asarray())) if __name__ == "__main__": mango.setLoggingVerbosityLevel("high") mpi.initialiseLoggers([__name__, "mango.io"], logLevel=logging.DEBUG) mango.unittest.main()
if (failed): self.fail("Did not throw exception for mango.io.splitpath('%s')" % path) def testWriteDdsWithHistogram(self): outDir = self.createTmpDir("testWriteDdsWithHistogram") dds = mango.data.gaussian_noise(shape=self.shape, mtype="tomo_float", mean=0.0, stdd=0.02) mango.io.writeDds(os.path.join(outDir, "tomo_floatWithHistogram.nc"), dds, writehistogram=True) mango.io.writeDds(os.path.join(outDir, "tomo_floatWithOutHistogram.nc"), dds, writehistogram=False) def testDdsWriteAndRead(self): outDir = self.createTmpDir("testDdsWriteAndRead") dds = mango.data.gaussian_noise(shape=self.shape, mtype="float64", mean=0.0, stdd=20000.) outFileName = mango.io.writeDds(os.path.join(outDir, "float64Noise.nc"), dds) readDds = mango.io.readDds(outFileName, mpidims=dds.mpi.shape) self.assertTrue(sp.all(dds.asarray() == readDds.asarray())) if (mango.haveFloat16): dds = mango.data.gaussian_noise(shape=self.shape, mtype="float16", mean=0.0, stdd=2000.) outFileName = mango.io.writeDds(os.path.join(outDir, "float16Noise.nc"), dds, writehistogram=True) readDds = mango.io.readDds(outFileName, mpidims=dds.mpi.shape) self.assertTrue(sp.all(dds.asarray() == readDds.asarray())) if __name__ == "__main__": mango.setLoggingVerbosityLevel("high") mpi.initialiseLoggers( [__name__, "mango.io"], logLevel=logging.DEBUG ) mango.unittest.main()
coordsys="abs", unit=img.md.getVoxelSizeUnit()) img.subd.asarray()[...] += mango.data.gaussian_noise_like( img, mean=0, stdd=300).subd.asarray() mango.io.writeDds(os.path.join(dir, "tomoCyl3.nc"), img) rootLogger.info("Done generating synthetic image.") fit, cylImg = \ cylinder_fit_multi_res( img, 3, resolutions=[64, 128, 512], retcylimg=True, metricThreshRelTol=0.50 ) mango.io.writeDds(os.path.join(dir, "segmentedCyl3AnnularMsk.nc"), cylImg) rootLogger.info("Voxel size = %s %s" % (img.md.getVoxelSize(), img.md.getVoxelSizeUnit())) for i in range(len(cList)): rootLogger.info("c%s=%s, r%s=%s, a%s=%s" % (i, cList[i], i, rList[i], i, aList[i])) rootLogger.info("Fit Results:\n%s" % ("\n".join(map(str, fit)), )) if __name__ == "__main__": mpi.initialiseLoggers([__name__, "mango.application"], logLevel=logging.INFO) mango.setLoggingVerbosityLevel("high") mango.unittest.main()
for arg in argList: addOptionDict = dict(arg) del addOptionDict['cmdLine'] parser.add_option(*arg['cmdLine'], **addOptionDict) return parser if (__name__ == "__main__"): argParser = getArgumentParser() if haveArgParse: args = argParser.parse_args() else: (args, argv) = argParser.parse_args() mpi.initialiseLoggers( [__name__, "mango.io", "mango.application"], logLevel=getattr(logging, args.loggingLevel) ) bdsp = \ BatchDownsampler( mdssSrcRootDir=args.mdssSrc, mdssDstRootDir=args.mdssDst, mdssPrj=args.mdssPrj, loclSrcRootDir=args.loclSrc, loclDstRootDir=args.loclDst, voxelSizeTuples=(parseVoxelSizes(args.voxelSizes.split(","))) ) bdsp()
mvmvDirName = os.path.join(mvDstDir, os.path.split(mvDirName)[1]) mvmvFileName = os.path.join(mvDstDir, os.path.split(mvFileName)[1]) mdss.mv([mvFileName, mvDirName], mvDstDir) self.assertFalse(mdss.exists(mvDirName)) self.assertFalse(mdss.exists(mvFileName)) self.assertTrue(mdss.exists(mvmvDirName)) self.assertTrue(mdss.isdir(mvmvDirName)) self.assertTrue(mdss.exists(mvmvFileName)) self.assertTrue(mdss.isfile(mvmvFileName)) fileList = mdss.listdir(mvDstDir) self.assertEqual(2, len(fileList)) self.assertTrue(os.path.split(mvmvFileName)[1] in fileList) self.assertTrue(os.path.split(mvmvDirName)[1] in fileList) duList = mdss.du(os.path.join(mvDstDir, "*")) rootLogger.info("du %s = %s" % (mvDstDir, duList)) self.assertEqual(2, len(duList)) if (mpi.haveMpi4py): mpi.world.barrier() if __name__ == "__main__": mpi.initialiseLoggers( [__name__, "mango.application.mdss"], logLevel=logging.DEBUG ) unittest.main()