(np.invert(cumsumpos.isnull())) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) useneg = ((cumsumneg > 2. * cumsumpos) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) | ((cumsumpos.isnull()) & (np.invert(cumsumneg.isnull())) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) omni.loc[:, 'usepos'] = usepos omni.loc[:, 'useneg'] = useneg omni.loc[:, 'milanlong'] = omni.milan.rolling( window, min_periods=window, center=False).mean() #average IMF data #omni = omni.drop(['bxlong','bzlong','byneg','bypos','PC_N_INDEX','Beta','E','Mach_num','Mgs_mach_num','y'],axis=1) #need to drop PC index as it contain a lot of nans. Also other fields will exclude data when we later use dropna() #Combine omni and sophie list sophiexp.loc[:, 'tilt'] = dipole.dipole_tilt(sophiexp.index) omni.loc[:, 'tilt'] = dipole.dipole_tilt(omni.index) omni2 = omni.reindex(index=sophiexp.index, method='nearest', tolerance='30sec') sophiexp.loc[:, 'bylong'] = omni2.bylong sophiexp.loc[:, 'milanlong'] = omni2.milanlong sophiexp.loc[:, 'substorm'] = sophiexp.ssphase == 2 bybins = np.append(np.append([-50], np.linspace(-9, 9, 10)), [50]) bybincenter = np.linspace(-10, 10, 11) sgroup = sophiexp.groupby([pd.cut(sophiexp.tilt, bins=np.array([-35,-10,10,35])), \ pd.cut(sophiexp.bylong, bins=bybins)]) ogroup = omni.groupby([pd.cut(omni.tilt, bins=np.array([-35,-10,10,35])), \ pd.cut(omni.bylong, bins=bybins)]) #Plotting fig = plt.figure(figsize=(15, 15))
nobsinwindow = omni.milan.rolling(window).count() cumsumneg = milanneg.rolling(window,min_periods=1).sum() cumsumpos = milanpos.rolling(window,min_periods=1).sum() omni.loc[:,'bxlong'] = omni.BX_GSE.rolling(window,min_periods=1).mean() omni.loc[:,'bzlong'] = omni.BZ_GSM.rolling(window,min_periods=1).mean() omni.loc[:,'bylong'] = omni.BY_GSM.rolling(window,min_periods=1).mean() bxlim = 200 usepos = ((cumsumpos>2.*cumsumneg) & (nobsinwindow==window) & (np.abs(omni.bxlong)<bxlim)) | ((cumsumneg.isnull()) & (np.invert(cumsumpos.isnull())) & (nobsinwindow==window) & (np.abs(omni.bxlong)<bxlim)) useneg = ((cumsumneg>2.*cumsumpos) & (nobsinwindow==window) & (np.abs(omni.bxlong)<bxlim)) | ((cumsumpos.isnull()) & (np.invert(cumsumneg.isnull())) & (nobsinwindow==window) & (np.abs(omni.bxlong)<bxlim)) omni.loc[:,'usepos'] = usepos omni.loc[:,'useneg'] = useneg omni.loc[:,'milanlong'] = omni.milan.rolling(window, min_periods=window, center=False).mean() #average IMF data #omni = omni.drop(['bxlong','bzlong','byneg','bypos','PC_N_INDEX','Beta','E','Mach_num','Mgs_mach_num','y'],axis=1) #need to drop PC index as it contain a lot of nans. Also other fields will exclude data when we later use dropna() omnicopy = omni.copy() omni2 = omni.reindex(index=dtimes, method='nearest',tolerance='30sec') #new ocb omni2.loc[:,'tilt'] = dipole.dipole_tilt(omni2.index) #Sophie list statistics sophie = pd.read_hdf('sophie75.h5') use = (sophie.index>=dtimes[0]) & (sophie.index<=dtimes[-1]) sophie = sophie[use].copy() exp = sophie.ssphase == 2 sophiexp = sophie[exp].copy() #begin experimental sophiexp.loc[:,'tilt'] = dipole.dipole_tilt(sophiexp.index) omni3 = omni.reindex(index=sophiexp.index, method='nearest', tolerance='30sec') use = (omni.index>=sophiexp.index[0]) & (omni.index<=sophiexp.index[-1]) omni4 = omni[use].copy() chunk = 1e6 n = len(omni4)
bxlim = 200 usepos = ((cumsumpos > 2. * cumsumneg) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) | ((cumsumneg.isnull()) & (np.invert(cumsumpos.isnull())) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) useneg = ((cumsumneg > 2. * cumsumpos) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) | ((cumsumpos.isnull()) & (np.invert(cumsumneg.isnull())) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) omni.loc[:, 'usepos'] = usepos omni.loc[:, 'useneg'] = useneg omni.loc[:, 'milanlong'] = omni.milan.rolling( window, min_periods=window, center=False).mean() #average IMF data fuvlist.loc[:, 'tilt'] = dipole.dipole_tilt(fuvlist.index) omni.loc[:, 'tilt'] = dipole.dipole_tilt(omni.index) omni_fuvlist = omni.reindex(index=fuvlist.index, method='nearest', tolerance='30sec') fuvlist.loc[:, 'bylong'] = omni_fuvlist.bylong fuvlist.loc[:, 'milanlong'] = omni_fuvlist.milanlong fuvlist.loc[:, 'substorm'] = True #bybins = np.append(np.append([-50],np.linspace(-9,9,10)),[50]) #bybincenter = np.linspace(-10,10,11) #plot substorm occurrence from the sophie-75 list fig = plt.figure(figsize=(10, 15)) #Negative dipole tilt ax = fig.add_subplot(311)
bxlim = 200 usepos = ((cumsumpos > 2. * cumsumneg) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) | ((cumsumneg.isnull()) & (np.invert(cumsumpos.isnull())) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) useneg = ((cumsumneg > 2. * cumsumpos) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) | ((cumsumpos.isnull()) & (np.invert(cumsumneg.isnull())) & (nobsinwindow == window) & (np.abs(omni.bxlong) < bxlim)) omni.loc[:, 'usepos'] = usepos omni.loc[:, 'useneg'] = useneg omni.loc[:, 'milanlong'] = omni.milan.rolling( window, min_periods=window, center=False).mean() #average IMF data supermag.loc[:, 'tilt'] = dipole.dipole_tilt(supermag.index) omni.loc[:, 'tilt'] = dipole.dipole_tilt(omni.index) omni_supermag = omni.reindex(index=supermag.index, method='nearest', tolerance='30sec') supermag.loc[:, 'bylong'] = omni_supermag.bylong supermag.loc[:, 'milanlong'] = omni_supermag.milanlong supermag.loc[:, 'substorm'] = True #bybins = np.append(np.append([-50],np.linspace(-9,9,10)),[50]) #bybincenter = np.linspace(-10,10,11) #plot substorm occurrence from the sophie-75 list fig = plt.figure(figsize=(10, 15)) #Negative dipole tilt ax = fig.add_subplot(321)