コード例 #1
0
def singleRundBdt(runname,
                  searchpatt='mag_grid_e20100405-0[89][0-5][0-9][03]0.out',
                  outdir='dBdt_maps',
                  links=True):
    useProject = ccrs.PlateCarree  #Projection to use for plotting, e.g., ccrs.AlbersEqualArea
    plotprojection = useProject(central_longitude=-90.0)

    pdata = {
        'plotvar': 'dBdth',
        'dataprojection': ccrs.PlateCarree(),
        'plotprojection': plotprojection,
    }

    #add transmission lines from ArcGIS shapefile
    #fname = 'txlines/Transmission_lines.shp'
    #txshapes = list(shapereader.Reader(fname).geometries())
    #albers = ccrs.AlbersEqualArea(central_longitude=-96.0,
    #                              central_latitude=23.0,
    #                              standard_parallels=(29.5,45.5))
    #txinpc = [plotprojection.project_geometry(ii, albers) for ii in txshapes]
    pdata['shapes'] = None  #txinpc

    rundir = runname[4:]
    globterm = os.path.join(runname, 'RESULTS', rundir, 'GM', searchpatt)
    globterm = os.path.join(runname, searchpatt)
    tstep = 60  #30 #diff between subsequent files in seconds
    allfiles = sorted(glob.glob(globterm))

    #startpoint, forward diff.
    infiles = allfiles

    #all except endpoints, central diff
    for idx, fname in enumerate(infiles[1:-1], start=1):
        minusone = bats.MagGridFile(infiles[idx - 1])  #, format='ascii')
        mdata = bats.MagGridFile(fname)  #, format='ascii')
        plusone = bats.MagGridFile(infiles[idx + 1])  #, format='ascii')
        mdata['dBdtn'] = dm.dmarray(gmdtools.centralDiff(
            minusone['dBn'], plusone['dBn'], tstep),
                                    attrs={'units': 'nT/s'})
        mdata['dBdte'] = dm.dmarray(gmdtools.centralDiff(
            minusone['dBe'], plusone['dBe'], tstep),
                                    attrs={'units': 'nT/s'})
        mdata['dBdth'] = dm.dmarray(np.sqrt(mdata['dBdtn']**2 +
                                            mdata['dBdte']**2),
                                    attrs={'units': 'nT/s'})
        ax = gmdtools.plotFilledContours(mdata, pdata, addTo=None)
        #windows can't handle colons in filenames...
        isotime = mdata.attrs['time'].isoformat()
        plt.savefig(os.path.join(
            outdir, r'{0}_{1}.png'.format(pdata['plotvar'],
                                          isotime.replace(':', ''))),
                    dpi=300)
        plt.close()
    if links:
        gmdtools.makeSymlinks(outdir, kind='dBdt')
コード例 #2
0
    def testOpen(self):
        # Open both binary and ascii versions of same data.
        # Ensure expected values are loaded.
        m1 = pbs.MagGridFile('data/pybats_test/mag_grid_ascii.out',
                             format='ascii')
        m2 = pbs.MagGridFile('data/pybats_test/mag_grid_binary.out')

        self.assertAlmostEqual(self.knownDbnMax, m1['dBn'].max())
        self.assertAlmostEqual(self.knownPedMax, m1['dBnPed'].max())
        self.assertAlmostEqual(self.knownDbnMax, m2['dBn'].max())
        self.assertAlmostEqual(self.knownPedMax, m2['dBnPed'].max())
コード例 #3
0
ファイル: test_pybats.py プロジェクト: vikashkodati/spacepy
    def testOpenTypeGuess(self):
        # Open both binary and ascii versions of same data
        # without specifying the type.
        # Ensure expected values are loaded.
        m1 = pbs.MagGridFile('data/pybats_test/mag_grid_ascii.out')
        m2 = pbs.MagGridFile('data/pybats_test/mag_grid_binary.out')

        self.assertAlmostEqual(self.knownDbnMax, m1['dBn'].max())
        self.assertAlmostEqual(self.knownPedMax, m1['dBnPed'].max())
        self.assertAlmostEqual(self.knownDbnMax, m2['dBn'].max())
        self.assertAlmostEqual(self.knownPedMax, m2['dBnPed'].max())
コード例 #4
0
    def testCalc(self):
        # Open both binary and ascii versions of same data.
        # Ensure calculations give expected values.
        m1 = pbs.MagGridFile('data/pybats_test/mag_grid_ascii.out',
                             format='ascii')
        m2 = pbs.MagGridFile('data/pybats_test/mag_grid_binary.out')

        # Calculation of H-component:
        m1.calc_h()
        m2.calc_h()
        self.assertAlmostEqual(self.knownDbhMax, m1['dBh'].max())
        self.assertAlmostEqual(self.knownDbhMax, m2['dBh'].max())
コード例 #5
0
ファイル: test_pybats.py プロジェクト: asher-m/spacepy
    def testCalc(self):
        # Open both binary and ascii versions of same data.
        # Ensure calculations give expected values.
        m1 = pbs.MagGridFile(
            os.path.join(spacepy_testing.datadir, 'pybats_test',
                         'mag_grid_ascii.out'))
        m2 = pbs.MagGridFile(
            os.path.join(spacepy_testing.datadir, 'pybats_test',
                         'mag_grid_binary.out'))

        # Calculation of H-component:
        m1.calc_h()
        m2.calc_h()
        self.assertAlmostEqual(self.knownDbhMax, m1['dBh'].max())
        self.assertAlmostEqual(self.knownDbhMax, m2['dBh'].max())
コード例 #6
0
ファイル: test_pybats.py プロジェクト: asher-m/spacepy
    def testOpen(self):
        # Open both binary and ascii versions of same data.
        # Ensure expected values are loaded.

        m1 = pbs.MagGridFile(
            os.path.join(spacepy_testing.datadir, 'pybats_test',
                         'mag_grid_ascii.out'))
        m2 = pbs.MagGridFile(
            os.path.join(spacepy_testing.datadir, 'pybats_test',
                         'mag_grid_binary.out'))

        self.assertAlmostEqual(self.knownDbnMax, m1['dBn'].max())
        self.assertAlmostEqual(self.knownPedMax, m1['dBnPed'].max())
        self.assertAlmostEqual(self.knownDbnMax, m2['dBn'].max())
        self.assertAlmostEqual(self.knownPedMax, m2['dBnPed'].max())
コード例 #7
0
def ensembleThresh(searchpatt='mag_grid_e20100405-083[12][0-5]0.out',
                   outdir='dBdt_images'):
    useProject = ccrs.PlateCarree  #Projection to use for plotting, e.g., ccrs.AlbersEqualArea
    plotprojection = useProject(central_longitude=-90.0)

    pdata = {
        'thresh': 2.0,  #nT/s
        'plotvar': 'dBdth',
        'dataprojection': ccrs.PlateCarree(),
        'plotprojection': plotprojection,
    }

    #add transmission lines from ArcGIS shapefile
    fname = 'txlines/Transmission_lines.shp'
    txshapes = list(shapereader.Reader(fname).geometries())
    albers = ccrs.AlbersEqualArea(central_longitude=-96.0,
                                  central_latitude=23.0,
                                  standard_parallels=(29.5, 45.5))
    txinpc = [plotprojection.project_geometry(ii, albers) for ii in txshapes]
    pdata['shapes'] = txinpc

    members = {
        'run_fullmag_001': [],
        'run_fullmag_002': [],
        'run_fullmag_030': [],
        'run_fullmag_042': [],
        #'run_fullmag_043': [],
        'run_fullmag_044': [],
    }
    colors = {
        'run_fullmag_001': 'firebrick',
        'run_fullmag_002': 'goldenrod',
        'run_fullmag_030': 'olive',
        'run_fullmag_042': 'skyblue',
        #'run_fullmag_043': 'slateblue',
        'run_fullmag_044': 'brown',
    }
    for key in members.keys():
        rundir = key[4:]
        globterm = os.path.join(key, 'RESULTS', rundir, 'GM', searchpatt)
        members[key] = sorted(glob.glob(globterm))
    tstep = 10  #diff between subsequent files in seconds
    allruns = list(members.keys())
    #following code assumes that same files are found by glob for each ensemble
    #member, so we'll check that here to avoid mixing timesteps
    tmplist = [os.path.basename(fn) for fn in members[allruns[0]]]
    for memb in allruns[1:]:
        complist = [os.path.basename(fn) for fn in members[memb]]
        try:
            assert tmplist == complist
        except AssertionError:
            print(memb)
            raise AssertionError

    #startpoint, forward diff.
    baseline = allruns.pop()
    infiles = members[baseline]
    pdata['ccolor'] = colors[baseline]

    mdata = bats.MagGridFile(infiles[0])
    plusone = bats.MagGridFile(infiles[1])
    plustwo = bats.MagGridFile(infiles[2])
    mdata['dBdtn'] = dm.dmarray(forwardDiff(mdata['dBn'], plusone['dBn'],
                                            plustwo['dBn'], tstep),
                                attrs={'units': 'nT/s'})
    mdata['dBdte'] = dm.dmarray(forwardDiff(mdata['dBe'], plusone['dBe'],
                                            plustwo['dBe'], tstep),
                                attrs={'units': 'nT/s'})
    mdata['dBdth'] = dm.dmarray(np.sqrt(mdata['dBdtn']**2 + mdata['dBdte']**2),
                                attrs={'units': 'nT/s'})
    ax = gmdtools.plotContour(mdata, pdata, addTo=None)

    for memb in allruns:
        mfiles = members[memb]
        pdata['ccolor'] = colors[memb]
        mdata = bats.MagGridFile(mfiles[0])
        plusone = bats.MagGridFile(mfiles[1])
        plustwo = bats.MagGridFile(mfiles[2])
        mdata['dBdtn'] = dm.dmarray(forwardDiff(mdata['dBn'], plusone['dBn'],
                                                plustwo['dBn'], tstep),
                                    attrs={'units': 'nT/s'})
        mdata['dBdte'] = dm.dmarray(forwardDiff(mdata['dBe'], plusone['dBe'],
                                                plustwo['dBe'], tstep),
                                    attrs={'units': 'nT/s'})
        mdata['dBdth'] = dm.dmarray(np.sqrt(mdata['dBdtn']**2 +
                                            mdata['dBdte']**2),
                                    attrs={'units': 'nT/s'})
        ax = gmdtools.plotContour(mdata, pdata, addTo=ax)
    #windows can't handle colons in filenames...
    isotime = mdata.attrs['time'].isoformat()
    plt.savefig(os.path.join(
        outdir, r'{0}_{1}.png'.format(pdata['plotvar'],
                                      isotime.replace(':', ''))),
                dpi=300)
    plt.close()

    #all except endpoints, central diff
    for idx, fname in enumerate(infiles[1:-1], start=1):
        pdata['ccolor'] = colors[baseline]
        minusone = bats.MagGridFile(infiles[idx - 1])
        mdata = bats.MagGridFile(fname)
        plusone = bats.MagGridFile(infiles[idx + 1])
        mdata['dBdtn'] = dm.dmarray(centralDiff(minusone['dBn'],
                                                plusone['dBn'], tstep),
                                    attrs={'units': 'nT/s'})
        mdata['dBdte'] = dm.dmarray(centralDiff(minusone['dBe'],
                                                plusone['dBe'], tstep),
                                    attrs={'units': 'nT/s'})
        mdata['dBdth'] = dm.dmarray(np.sqrt(mdata['dBdtn']**2 +
                                            mdata['dBdte']**2),
                                    attrs={'units': 'nT/s'})
        ax = plotContour(mdata, pdata, addTo=None)
        for memb in allruns:
            mfiles = members[memb]
            pdata['ccolor'] = colors[memb]
            minusone = bats.MagGridFile(mfiles[idx - 1])
            mdata = bats.MagGridFile(mfiles[idx])
            plusone = bats.MagGridFile(mfiles[idx + 1])
            mdata['dBdtn'] = dm.dmarray(centralDiff(minusone['dBn'],
                                                    plusone['dBn'], tstep),
                                        attrs={'units': 'nT/s'})
            mdata['dBdte'] = dm.dmarray(centralDiff(minusone['dBe'],
                                                    plusone['dBe'], tstep),
                                        attrs={'units': 'nT/s'})
            mdata['dBdth'] = dm.dmarray(np.sqrt(mdata['dBdtn']**2 +
                                                mdata['dBdte']**2),
                                        attrs={'units': 'nT/s'})
            ax = gmdtools.plotContour(mdata, pdata, addTo=ax)
        #windows can't handle colons in filenames...
        isotime = mdata.attrs['time'].isoformat()
        plt.savefig(os.path.join(
            outdir, r'{0}_{1}.png'.format(pdata['plotvar'],
                                          isotime.replace(':', ''))),
                    dpi=300)
        plt.close()

    #final point, backwards diff.
    pdata['ccolor'] = colors[baseline]
    minustwo = bats.MagGridFile(infiles[-3])
    minusone = bats.MagGridFile(infiles[-2])
    mdata = bats.MagGridFile(infiles[-1])
    mdata['dBdtn'] = dm.dmarray(backwardsDiff(minustwo['dBn'], minusone['dBn'],
                                              mdata['dBn'], tstep),
                                attrs={'units': 'nT/s'})
    mdata['dBdte'] = dm.dmarray(backwardsDiff(minustwo['dBn'], minusone['dBe'],
                                              mdata['dBe'], tstep),
                                attrs={'units': 'nT/s'})
    mdata['dBdth'] = dm.dmarray(np.sqrt(mdata['dBdtn']**2 + mdata['dBdte']**2),
                                attrs={'units': 'nT/s'})
    ax = gmdtools.plotContour(mdata, pdata, addTo=None)
    for memb in allruns:
        mfiles = members[memb]
        pdata['ccolor'] = colors[memb]
        minustwo = bats.MagGridFile(mfiles[-3])
        minusone = bats.MagGridFile(mfiles[-2])
        mdata = bats.MagGridFile(mfiles[-1])
        mdata['dBdtn'] = dm.dmarray(backwardsDiff(minustwo['dBn'],
                                                  minusone['dBn'],
                                                  mdata['dBn'], tstep),
                                    attrs={'units': 'nT/s'})
        mdata['dBdte'] = dm.dmarray(backwardsDiff(minustwo['dBe'],
                                                  minusone['dBe'],
                                                  mdata['dBn'], tstep),
                                    attrs={'units': 'nT/s'})
        mdata['dBdth'] = dm.dmarray(np.sqrt(mdata['dBdtn']**2 +
                                            mdata['dBdte']**2),
                                    attrs={'units': 'nT/s'})
        ax = gmdtools.plotContour(mdata, pdata, addTo=ax)
    #windows can't handle colons in filenames...
    isotime = mdata.attrs['time'].isoformat()
    plt.savefig(os.path.join(
        outdir, r'{0}_{1}.png'.format(pdata['plotvar'],
                                      isotime.replace(':', ''))),
                dpi=300)
    plt.close()

    #make symlinks to images with numeric naming so it can be easily passed to ffmpeg
    gmdtools.makeSymlinks(outdir, kind='dBdt')
コード例 #8
0
ファイル: calc_ae.py プロジェクト: evandegriff/5391-shtuff
# looping through thousands of files takes a loooooong time
# for the debug case, specify small subset of magnetometer files to use
if debug:
    mag_files = [
        f'./{args.magdir}/mag_grid_e20170906-180250.out',
        f'./{args.magdir}/mag_grid_e20170907-210350.out',
        f'./{args.magdir}/mag_grid_e20170908-170530.out'
    ]

# create dict with empty arrays for calculated values and time
ae_dict = {'epochs': [], 'al': [], 'au': [], 'ae': [], 'ao': []}

# loop through all mag files and calculate AL, AU, AE, and AO
for mag_file in mag_files:
    # use spacepy to open mag file
    mag = pbs.MagGridFile(mag_file)
    # get file time from attributes
    epoch = mag.attrs['time']
    # more debugging print statements
    if debug:
        print(epoch)
        print(mag['Lat'][0], mag['Lat'][-1])
    # get dBn array for selected latitudes only
    dBn = mag['dBn'][:, lower_lat:upper_lat + 1]
    # resample data to specific number of magnetometers
    dBn = resample(dBn, resample_rate)
    total_mags = resample_rate * (upper_lat - lower_lat + 1)
    if debug:
        print(f'resample rate = {resample_rate}')
        print(f'total mags = {total_mags}')
    # more debugging print statements