<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_dipole_gwb(psr, dist=1, ngw=1000, seed=None, flow=1e-8, fhigh=1e-5, gwAmp=1e-20, alpha=-0.66, logspacing=True, dipoleamps=None, dipoledir=None, dipolemag=None):
 """Add a stochastic background from inspiraling binaries distributed according to a pure dipole distribution, using the tempo2 code that underlies the GWdipolebkgrd plugin. The basic use is identical to that of 'add_gwb': Here 'dist' is the pulsar distance [in kpc]; 'ngw' is the number of binaries, 'seed' (a negative integer) reseeds the GWbkgrd pseudorandom-number-generator, 'flow' and 'fhigh' [Hz] determine the background band, 'gwAmp' and 'alpha' determine its amplitude and exponent, and setting 'logspacing' to False will use linear spacing for the individual sources. Additionally, the dipole component can be specified by using one of two methods: 1) Specify the dipole direction as three dipole amplitudes, in the vector dipoleamps 2) Specify the direction of the dipole as a magnitude dipolemag, and a vector dipoledir=[dipolephi, dipoletheta] It is also possible to create a background object with gwb = GWB(ngw,seed,flow,fhigh,gwAmp,alpha,logspacing) then call the method gwb.add_gwb(pulsar[i],dist) repeatedly to get a consistent background for multiple pulsars. Returns the GWB object """


    gwb = GWB(ngw, seed, flow, fhigh, gwAmp, alpha, logspacing,
              dipoleamps, dipoledir, dipolemag)
    gwb.add_gwb(psr,dist)
    
    return gwb