spacepy.LANLstar

Lstar and Lmax calculation using artificial neural network (ANN) technique.

Authors: Steve Morley, Josef Koller, Yiqun Yu, Aaron Hendry Contact: smorley@lanl.gov, yiqunyu17@gmail.com

Copyright 2012 Los Alamos National Security, LLC.

Functions

LANLmax(inputdict, extMag)

Calculate last closed drift shell (Lmax)

LANLstar(inputdict, extMag)

Calculate Lstar

addPA(indict, PA)

Function to add pitch angle to input dictionary from, e.g., omni module

spacepy.LANLstar.LANLmax(inputdict, extMag)[source]

Calculate last closed drift shell (Lmax)

Based on the L* artificial neural network (ANN) trained from different magnetospheric field models.

Parameters:
extMaglist of string(s)

containing one or more of the following external Magnetic field models: ‘OPDYN’, ‘OPQUIET’, ‘T89’, ‘T96’, ‘T01QUIET’, ‘T01STORM’, ‘T05’

inputdictdictionary

containing the following keys, each entry is a list or array. Note the keys for the above models are different.

– For OPDYN:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘dens’, ‘velo’, ‘BzIMF’, ‘PA’]

– For OPQUIET:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘dens’, ‘velo’, ‘BzIMF’, ‘PA’]

– For T89:

[‘Year’, ‘DOY’, ‘Hr’, ‘Kp’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘PA’]

– For T96:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’,’PA’]

– For T01QUIET:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘G1’, ‘G2’,’PA’]

– For T01STORM:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘G2’, ‘G3’, ‘PA’]

– For T05:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘W1’,’W2’,’W3’,’W4’,’W5’,’W6’, ‘PA’]

Dictionaries with numpy vectors are allowed.

Returns:
outdictionary

Lmax array for each key which corresponds to the specified magnetic field model.

Examples

>>> import spacepy.LANLstar as LS
>>> inputdict = {}
>>> inputdict['Kp']     = [2.7      ]            # Kp index
>>> inputdict['Dst']    = [7.7777   ]            # Dst index (nT)
>>> inputdict['dens']   = [4.1011   ]            # solar wind density (/cc)
>>> inputdict['velo']   = [400.1011 ]            # solar wind velocity (km/s)
>>> inputdict['Pdyn']   = [4.1011   ]            # solar wind dynamic pressure (nPa)
>>> inputdict['ByIMF']  = [3.7244   ]            # GSM y component of IMF magnetic field (nT)  
>>> inputdict['BzIMF']  = [-0.1266  ]            # GSM z component of IMF magnetic field (nT)
>>> inputdict['G1']     = [1.029666 ]            # as defined in Tsganenko 2003 
>>> inputdict['G2']     = [0.549334 ]
>>> inputdict['G3']     = [0.813999 ]                
>>> inputdict['W1']     = [0.122444 ]            # as defined in Tsyganenko and Sitnov 2005
>>> inputdict['W2']     = [0.2514   ]                                                                                      
>>> inputdict['W3']     = [0.0892   ]
>>> inputdict['W4']     = [0.0478   ]
>>> inputdict['W5']     = [0.2258   ]
>>> inputdict['W6']     = [1.0461   ]
>>> # now add date
>>> inputdict['Year']   = [1996     ]
>>> inputdict['DOY']    = [6        ]
>>> inputdict['Hr']     = [1.2444   ]
>>> # and pitch angle, which doesn't come if taking params from OMNI
>>> inputdict['PA']     = [57.3874  ]             # pitch angle [deg]
>>> # and then call the neural network
>>> LS.LANLmax(inputdict, ['OPDYN','OPQUIET','T01QUIET','T01STORM','T89','T96','T05'])
{'OPDYN': array([10.6278]),
 'OPQUIET': array([9.3352]),
 'T01QUIET': array([10.0538]),
 'T01STORM': array([9.9300]), 
 'T89': array([8.2888]),
 'T96': array([9.2410]),
 'T05': array([9.9295])}
spacepy.LANLstar.LANLstar(inputdict, extMag)[source]

Calculate Lstar

Based on the L* artificial neural network (ANN) trained from different magnetospheric field models.

Parameters:
extMaglist of string(s)

containing one or more of the following external magnetic field models: ‘OPDYN’, ‘OPQUIET’, ‘T89’, ‘T96’, ‘T01QUIET’, ‘T01STORM’, ‘T05’

inputdictdictionary

containing the following keys, each entry is a list or array. Note the keys for the above models are different.

—For OPDYN: [‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘dens’, ‘velo’, ‘BzIMF’, ‘Lm’, ‘Bmirr’, ‘PA’, ‘rGSM’, ‘latGSM’, ‘lonGSM’]

– For OPQUIET:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘dens’, ‘velo’, ‘BzIMF’, ‘Lm’, ‘Bmirr’, ‘PA’, ‘rGSM’, ‘latGSM’, ‘lonGSM’]

—For T89: [‘Year’, ‘DOY’, ‘Hr’, ‘Kp’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘Lm’, ‘Bmirr’, ‘PA’, ‘rGSM’, ‘latGSM’, ‘lonGSM’]

– For T96:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘Lm’, ‘Bmirr’, ‘PA’, ‘rGSM’, ‘latGSM’, ‘lonGSM’]

—For T01QUIET: [‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘G1’, ‘G2’, ‘Lm’, ‘Bmirr’, ‘PA’, ‘rGSM’, ‘latGSM’, ‘lonGSM’]

– For T01STORM:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘G2’, ‘G3’, ‘Lm’, ‘Bmirr’, ‘PA’, ‘rGSM’, ‘latGSM’, ‘lonGSM’]

—For T05: [‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘W1’,’W2’,’W3’,’W4’,’W5’,’W6’, ‘Lm’, ‘Bmirr’, ‘PA’, ‘rGSM’, ‘latGSM’, ‘lonGSM’]

– For RAMSCB:

[‘Year’, ‘DOY’, ‘Hr’, ‘Dst’, ‘Pdyn’, ‘ByIMF’, ‘BzIMF’, ‘PA’, ‘SMx’,’SMy’,’SMz’]

Dictionaries with numpy vectors are allowed.

Returns:
outdictionary

Lstar array for each key which corresponds to the specified magnetic field model.

Examples

>>> import spacepy.LANLstar as LS
>>> inputdict = {}
>>> inputdict['Kp']     = [2.7      ]            # Kp index
>>> inputdict['Dst']    = [7.7777   ]            # Dst index (nT)
>>> inputdict['dens']   = [4.1011   ]            # solar wind density (/cc)
>>> inputdict['velo']   = [400.1011 ]            # solar wind velocity (km/s)
>>> inputdict['Pdyn']   = [4.1011   ]            # solar wind dynamic pressure (nPa)
>>> inputdict['ByIMF']  = [3.7244   ]            # GSM y component of IMF magnetic field (nT)  
>>> inputdict['BzIMF']  = [-0.1266  ]            # GSM z component of IMF magnetic field (nT)
>>> inputdict['G1']     = [1.029666 ]            # as defined in Tsganenko 2003 
>>> inputdict['G2']     = [0.549334 ]
>>> inputdict['G3']     = [0.813999 ]                
>>> inputdict['W1']     = [0.122444 ]            # as defined in Tsyganenko and Sitnov 2005
>>> inputdict['W2']     = [0.2514   ]                                                                                      
>>> inputdict['W3']     = [0.0892   ]
>>> inputdict['W4']     = [0.0478   ]
>>> inputdict['W5']     = [0.2258   ]
>>> inputdict['W6']     = [1.0461   ]
>>> # now add date
>>> inputdict['Year']   = [1996     ]
>>> inputdict['DOY']    = [6        ]
>>> inputdict['Hr']     = [1.2444   ]
>>> # and pitch angle, which doesn't come if taking params from OMNI
>>> inputdict['Lm']     = [4.9360   ]             # McIllwain L
>>> inputdict['Bmirr']  = [315.6202 ]             # magnetic field strength at the mirror point
>>> inputdict['rGSM']   = [4.8341   ]             # radial coordinate in GSM [Re]
>>> inputdict['lonGSM'] = [-40.2663 ]             # longitude coodrinate in GSM [deg]
>>> inputdict['latGSM'] = [36.44696 ]             # latitude coordiante in GSM [deg]
>>> inputdict['PA']     = [57.3874  ]             # pitch angle [deg]
>>> inputdict['SMx']    = [3.9783   ]
>>> inputdict['SMy']    = [-2.51335 ]
>>> inputdict['SMz']    = [1.106617 ]
>>> # and then call the neural network
>>> LS.LANLstar(inputdict, ['OPDYN','OPQUIET','T01QUIET','T01STORM','T89','T96','T05','RAMSCB'])
{'OPDYN': array([4.7171]),
 'OPQUIET': array([4.6673]),
 'T01QUIET': array([4.8427]),
 'T01STORM': array([4.8669]), 
 'T89': array([4.5187]),
 'T96': array([4.6439]),
 'TS05': array([4.7174]),
 'RAMSCB','array([5.9609])}
spacepy.LANLstar.addPA(indict, PA)[source]

Function to add pitch angle to input dictionary from, e.g., omni module

Parameters:
indictdictionary-like

containing keys required for LANLstar and LANLmax

PAfloat

pitch angle

Returns:
outdictionary

input dictionary with input pitch angle added as ‘PA’ key having the length of other inputs

Examples

>>> import spacepy.LANLstar as LS
>>> inputdict = {}
>>> inputdict['Year']
>>> # additional keys would be defined here
>>> LS.addPA(indict, PA)