示例#1
0
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)
示例#2
0
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)
示例#3
0
        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()

示例#4
0
    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()
示例#6
0
                    # 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()
示例#7
0
                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()
示例#8
0
                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()
示例#9
0
                          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()
示例#10
0
        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()

示例#11
0
                    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()
示例#12
0
        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()
示例#13
0
                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()