예제 #1
0
    def calcDifferences(self):
        dataIO = DataIO()
        self.wellTopDf = dataIO.readCSVZeroIndex(self.wellTopPath)
        wellTopDict = dataIO.getData(self.wellTopDf, self.negativeZ)

        self.gridDf = dataIO.readCSVZeroIndex(self.gridPath)
        gridDict = dataIO.getData(self.gridDf, self.negativeZ)

        deltaList = []
        for gridList in gridDict.values():
            for gridModel in gridList:
                for topList in wellTopDict.values():
                    for topModel in topList:
                        if gridModel.well == topModel.well:
                            if gridModel.surfaceName == topModel.surfaceName:
                                deltaModel = DeltaModel()
                                deltaModel.well = gridModel.well
                                deltaModel.surfaceName = gridModel.surfaceName
                                deltaModel.gridTwt = gridModel.twtAuto
                                deltaModel.wellTwt = topModel.twtAuto
                                deltaModel.gridZ = gridModel.z
                                deltaModel.wellZ = topModel.z
                                deltaModel.deltaTWT = gridModel.twtAuto - topModel.twtAuto
                                deltaModel.deltaZ = ((-1) * gridModel.z) - (
                                    (-1) * topModel.z)
                                deltaList.append(deltaModel.getDataList())
        if len(deltaList) > 0:
            deltaList.insert(0, DeltaModel.HEADERS)
            dataIO.writeIsoModels(deltaList, DELTACALCSPATH, "DeltaCalcs",
                                  False)
        else:
            logger.debug("No matching surfaces found")
예제 #2
0
 def test_getData(self):
     logger.debug(">test_getData()")
     dataIO = DataIO()
     markersPD = dataIO.readCSVZeroIndex(self.markersPath)
     markerData = dataIO.getData(markersPD)
     angelSurfs = markerData.get("ANGEL_1")
     self.assertEqual("DELA", angelSurfs[0].surfaceName)
     self.assertEqual("ANGEL_1", angelSurfs[0].well)
     #self.assertEqual("marker", angelSurfs[0].surfaceType)
     self.assertEqual(79.9, angelSurfs[0].z)
     self.assertEqual(146.5, angelSurfs[0].twtAuto)
예제 #3
0
    def test_writeIsoModels(self):
        dataIO = DataIO()
        markersDf = dataIO.readCSVZeroIndex(self.markersPath)
        markersData = dataIO.getData(markersDf)

        topsDf = dataIO.readCSVZeroIndex(self.topsPath)
        topsList = ["DUMMY", "DELA", "BARE"]

        wellSurfaces = dataIO.checkMissingSurfaces(markersData, topsList)
        surfacesList = wellSurfaces["ANGEL_1"]
        self.assertEquals("DUMMY", surfacesList[0])
예제 #4
0
 def test_calcDiffTWT(self):
     dataIO = DataIO()
     markersPD = dataIO.readCSVZeroIndex(self.isoCalcsMarkersPath)
     markerData = dataIO.getData(markersPD)
     well = "ADAMS_1"
     surface = SurfaceModel()
     topSurface = surface.getSurface(markerData[well], "BARE")
     baseSurface = surface.getSurface(markerData[well], "TREL")
     npt.assert_allclose(430.09, topSurface.twtAuto, rtol=1e-5)
     npt.assert_allclose(803.45, baseSurface.twtAuto, rtol=1e-5)
     calculations = Calculations()
     deltaVal = calculations.calcIsochron(baseSurface, topSurface)
     calcFunction = calculations.getZoneText(baseSurface, topSurface)
     logger.debug("--test_calcDiffTWT() fn:{0}".format(calcFunction))
     self.assertEqual("BARE-TREL", calcFunction)
     npt.assert_allclose(373.36, deltaVal, rtol=1e-5)
예제 #5
0
    def test_computeSingleDiff(self):
        dataIO = DataIO()
        markersPD = dataIO.readCSVZeroIndex(self.isoCalcsMarkersPath)
        markerData = dataIO.getData(markersPD)

        calculations = Calculations()
        resultObject = IsoModel()
        resultObject.calcDomain = "TWT"
        domain = "TWT"
        well = "ADAMS_1"
        surface = SurfaceModel()
        topSurface = surface.getSurface(markerData[well], "BARE")
        baseSurface = surface.getSurface(markerData[well], "MAND")
        self.assertEqual("BARE", topSurface.surfaceName)
        self.assertEqual("MAND", baseSurface.surfaceName)
        resultObject = calculations.computeSingleDiff(well, baseSurface, topSurface)
        logger.debug("fn:{0}".format(resultObject.calcFunction))
        self.assertEqual("BARE-MAND", resultObject.calcFunction)
        npt.assert_allclose(880.75, resultObject.isochron, rtol=1e-5)
예제 #6
0
    def runCalcs(self):
        dataIO = DataIO()
        self.wellDataDf = dataIO.readCSVZeroIndex(self.wellDataPath)
        markerModels = dataIO.getData(self.wellDataDf, self.negativeZ)

        functionsDf = dataIO.readCSVZeroIndex(self.isoCalcFunctions)
        self.functionList = dataIO.functionReader(functionsDf)
        calculations = Calculations()
        allModels = []
        isoFunctionName = ""
        for function in self.functionList:
            modelList = []
            isoModels = calculations.doIsoCalculations(function, markerModels)
            if len(isoModels) > 0:
                isoFunctionName = isoModels[0].calcFunction
            for item in isoModels:
                modelList.append(item.getDataList())
            modelList.insert(0, IsoModel.HEADERS)
            dataIO.writeIsoModels(modelList, ISOCALCSOUTPUTPATH,
                                  isoFunctionName, False)
예제 #7
0
    def findMissingMarkers(self):
        if self.markersPath == "":
            logger.error("Markers file has not been specified")
            return
        elif self.topsPath == "":
            logger.error("TopsModel file has not been specified")
            return
        dataIO = DataIO()
        markersDf = dataIO.readCSVZeroIndex(self.markersPath)
        if len(markersDf.index)==0:
            logger.error("Markers data is empty")
            return
        markersData = dataIO.getData(markersDf)

        topsDf = dataIO.readCSVZeroIndex(self.topsPath)
        if len(topsDf.index)==0:
            logger.error("TopsModel data is empty")
            return
        topsList = dataIO.topsReader(topsDf)

        wellSurfaces = dataIO.checkMissingSurfaces(markersData, topsList)
        dataIO.writeDictToCSV(wellSurfaces, MISSINGCALCSPATH+"MissingSurfaces_Output.csv")