Usage

First, importing:

[1]:
from solarmach import SolarMACH, print_body_list, get_sw_speed

1. Minimal example

Necessary options are a list of wanted spacecraft/bodies and the date of interest.

Note that since version 0.2.3, you don’t need to provide a list with solar wind speeds (in km/s) corresponding to the spacecraft/bodies, but you can. If vsw_list is not provided (or as an empty list, vsw_list=[]), it is automatically tried to obtain measured solar wind speeds per spacecraft. If this does not succeed for a spacecraft, a default solar wind speed of 400 km/s is assumed (this can be adjusted with default_vsw, e.g., default_vsw=300).

[2]:
body_list = ['Earth', 'Solar Orbiter', 'PSP']
date = '2022-3-1 12:00:00'

Initialize the SolarMACH object for these options:

[3]:
sm1 = SolarMACH(date, body_list)
No solar wind speeds defined, trying to obtain measurements...
Using 'ACE' measurements for 'Earth'.

And produce the final plot:

[4]:
sm1.plot(plot_sun_body_line=True)
_images/usage_7_0.png

This plot shows a view from the top on the ecliptic plane with the Sun in the center and the Earth (indicated by green symbol) at “6 o’clock”. The solid lines give estimations of single field lines of an ideal Parker heliospheric magnetic field connecting the corresponding observers to the Sun, while the dashed lines just indicate the line of sight from each of them to the Sun.

If you do not want or need that the solar wind speeds are obtained from online sources, you can manually define them with vsw_list. Note that each speed corresponds position-wise with the corresponding spacecraft/bodies list:

[6]:
vsw_list = [400, 400, 400]    # position-sensitive solar wind speed per body in body_list
body_list = ['Earth', 'Solar Orbiter', 'PSP']
date = '2022-3-1 12:00:00'

sm1a = SolarMACH(date, body_list, vsw_list)
sm1a.plot(plot_sun_body_line=True)
_images/usage_10_0.png

2. Example with all the details

First, get a list of available bodies/spacecraft:

[7]:
print(print_body_list().index)
Index(['Earth', 'ACE', 'BepiColombo', 'Cassini', 'JUICE', 'Juno', 'Jupiter',
       'L1', 'Mars', 'Mars Express', 'MAVEN', 'Mercury', 'MESSENGER', 'PSP',
       'Pioneer10', 'Pioneer11', 'Rosetta', 'SOHO', 'Solar Orbiter',
       'STEREO B', 'STEREO A', 'Ulysses', 'Venus', 'Voyager1', 'Voyager2',
       'WIND'],
      dtype='object', name='Key')

Provide the necessary options, this time for more spacecraft:

[2]:
body_list = ['Mercury', 'Venus', 'Earth', 'Mars', 'STEREO A', 'STEREO B', 'Solar Orbiter', 'PSP', 'BepiColombo']
date = '2021-6-1 12:00:00'

Leave the position-sensitive solar wind speed list empty, so that they are obtained from actual measurements, and define the solar wind speed that should be used if no measurements can be obtained for a spacecraft:

[3]:
vsw_list = []
default_vsw = 350  # km/s

The default coordinate system is Carrington coordinates, alternatively one could select the Earth-centered Stonyhurst coordinate system:

[4]:
coord_sys = 'Carrington'     # 'Carrington' (default) or 'Stoneyhurst'

Now we also want to indicate the position and direction of a flare, and the (assumed) solar wind speed at its location:

[5]:
reference_long = 0            # Carrington longitude of reference (None to omit)
reference_lat = 0             # Carrington latitude of reference (None to omit)
reference_vsw = 400           # define solar wind speed at reference in km/s

In addition, we explicitly provide all availabe plotting options:

[6]:
plot_spirals = True           # plot Parker spirals for each body
plot_sun_body_line = False    # plot straight line between Sun and body
long_offset = 0               # longitudinal offset for polar plot; defines where Earth's longitude is (by default 270, i.e., at "6 o'clock")
transparent = False           # make output figure background transparent
markers = 'numbers'           # use 'numbers' or 'letters' for the body markers (use False for colored squares)
filename = f'Solar-MACH_{date.replace(" ", "_")}.png'  # define filename of output figure

Finally, initializing and plotting with these options. If outfile is provided, the plot will be saved next to the Notebook with the provided filename.

[7]:
sm2 = SolarMACH(date, body_list, vsw_list, reference_long, reference_lat, coord_sys, default_vsw)

sm2.plot(plot_spirals=plot_spirals,
         plot_sun_body_line=plot_sun_body_line,
         long_offset=long_offset,
         reference_vsw=reference_vsw,
         transparent=transparent,
         markers=markers,
         outfile=filename
         )
You are requesting vpbulk_stb outside of its definition range <DateTimeRange: 2007-03-01T00:00:12+00:00 -> 2014-10-31T23:59:30+00:00>
No solar wind speeds defined, trying to obtain measurements...
Body 'Mercury' not supported, assuming default Vsw value of 350 km/s.
Body 'Venus' not supported, assuming default Vsw value of 350 km/s.
Using 'ACE' measurements for 'Earth'.
Body 'Mars' not supported, assuming default Vsw value of 350 km/s.
No Vsw data found for 'STEREO B' on 2021-06-01 12:00:00, assuming default Vsw value of 350 km/s.
No Vsw data found for 'Solar Orbiter' on 2021-06-01 12:00:00, assuming default Vsw value of 350 km/s.
Body 'BepiColombo' not supported, assuming default Vsw value of 350 km/s.
_images/usage_24_2.png

All the data can also be obtained as a Pandas DataFrame for further use. Note that here you can also see the actually measured solar wind speeds at some spacecraft (Vsw):

[9]:
df = sm2.coord_table
display(df)
Spacecraft/Body Carrington longitude (°) Carrington latitude (°) Heliocentric distance (AU) Longitudinal separation to Earth's longitude Latitudinal separation to Earth's latitude Vsw Magnetic footpoint longitude (Carrington) Longitudinal separation between body and reference_long Longitudinal separation between body's mangetic footpoint and reference_long Latitudinal separation between body and reference_lat
0 Mercury 64.572366 -3.374752 0.456577 -17.161028 -2.767176 350.000000 96.911462 64.572366 96.911462 -3.374752
1 Venus 304.308841 -2.405230 0.718663 -137.424553 -1.797654 350.000000 355.463238 -55.691159 -4.536762 -2.405230
2 Earth 81.733394 -0.607576 1.014084 0.000000 0.000000 299.720001 166.282213 81.733394 166.282213 -0.607576
3 Mars 328.690673 -4.569037 1.657439 -113.042721 -3.961461 350.000000 86.722920 -31.309327 86.722920 -4.569037
4 STEREO A 31.671472 -5.969301 0.963303 -50.061921 -5.361726 321.267857 106.021566 31.671472 106.021566 -5.969301
5 STEREO B 126.320990 4.463536 1.085839 44.587597 5.071112 350.000000 203.548635 126.320990 -156.451365 4.463536
6 Solar Orbiter 342.893742 -1.038420 0.952075 -98.839652 -0.430845 350.000000 50.838628 -17.106258 50.838628 -1.038420
7 PSP 142.038810 3.210198 0.715577 60.305417 3.817774 501.488275 177.552209 142.038810 177.552209 3.210198
8 BepiColombo 331.970837 -3.538780 0.807266 -109.762557 -2.931204 350.000000 29.390736 -28.029163 29.390736 -3.538780
[10]:
df['Heliocentric distance (AU)'].values
[10]:
array([0.45657717, 0.71866253, 1.0140839 , 1.65743876, 0.9633026 ,
       1.08583866, 0.95207518, 0.7155775 , 0.80726552])

3. Example using Stonyhurst coordinates for reference

Let’s take a look at the situation at the first ground-level enhancement (GLE) of solar cycle 25 on 28 October 2021

First, we just provide some options as before:

[2]:
body_list = ['STEREO-A', 'Earth', 'BepiColombo', 'PSP', 'Solar Orbiter', 'Mars']
vsw_list = [340, 300, 350, 350, 320, 350]        # position-sensitive solar wind speed per body in body_list
date = '2021-10-28 15:20:00'
coord_sys = 'Stoneyhurst'

# optional parameters
plot_spirals = True           # plot Parker spirals for each body
plot_sun_body_line = True     # plot straight line between Sun and body
transparent = False           # make output figure background transparent
markers = 'letters'           # use 'numbers' or 'letters' for the body markers (use False for colored squares)
filename = f'Solar-MACH_{date.replace(" ", "_")}.png'  # define filename of output figure

But now we want to provide the coordinates of the flare in Stonyhurst coordinates (instead of Carrington).

[3]:
reference_long = 2            # Stonyhurst longitude of reference (None to omit)
reference_lat = 26            # Stonyhurst latitude of reference (None to omit)
reference_vsw = 300           # define solar wind speed at reference

Finally, initializing and plotting with these options:

[4]:
sm3 = SolarMACH(date, body_list, vsw_list, reference_long, reference_lat, coord_sys)
sm3.plot(plot_spirals=plot_spirals,
         plot_sun_body_line=plot_sun_body_line,
         reference_vsw=reference_vsw,
         transparent=transparent,
         markers=markers,
         outfile=filename
         )
_images/usage_34_0.png

4. Only obtain data as Pandas DataFrame

We can also just obtain a table with the spatial data, without producing a plot at all.

First provide necessary options:

[13]:
body_list = ['STEREO-A', 'Earth', 'BepiColombo', 'PSP', 'Solar Orbiter', 'Mars']
vsw_list = []  # leave empty to obtain measurements
date = '2022-3-1 12:00:00'

Then initialize SolarMACH and obtain data as Pandas DataFrame:

[14]:
sm4 = SolarMACH(date, body_list, vsw_list)
df = sm4.coord_table
display(df)
No solar wind speeds defined, trying to obtain measurements...
Using 'ACE' measurements for 'Earth'.
Body 'BepiColombo' not supported, assuming default Vsw value of 400.0 km/s.
Body 'Mars' not supported, assuming default Vsw value of 400.0 km/s.
Spacecraft/Body Carrington longitude (°) Carrington latitude (°) Heliocentric distance (AU) Longitudinal separation to Earth's longitude Latitudinal separation to Earth's latitude Vsw Magnetic footpoint longitude (Carrington)
0 STEREO-A 44.772913 -5.741163 0.967315 -34.187292 1.481141 474.333333 95.370053
1 Earth 78.960205 -7.222304 0.990840 0.000000 0.000000 527.239990 125.402266
2 BepiColombo 3.679356 2.294885 0.342656 -75.280849 9.517189 400.000000 24.870641
3 PSP 185.175551 0.771163 0.203645 106.215346 7.993467 291.739344 202.298232
4 Solar Orbiter 70.614031 -4.042220 0.570316 -8.346174 3.180084 443.230915 102.544135
5 Mars 186.262634 0.369636 1.460183 107.302429 7.591940 400.000000 277.616908

If we also provide the reference information, it will be available in the table, too:

[15]:
sm4 = SolarMACH(date, body_list, vsw_list, reference_long=273, reference_lat=7)
df = sm4.coord_table
display(df)
No solar wind speeds defined, trying to obtain measurements...
Using 'ACE' measurements for 'Earth'.
Body 'BepiColombo' not supported, assuming default Vsw value of 400.0 km/s.
Body 'Mars' not supported, assuming default Vsw value of 400.0 km/s.
Spacecraft/Body Carrington longitude (°) Carrington latitude (°) Heliocentric distance (AU) Longitudinal separation to Earth's longitude Latitudinal separation to Earth's latitude Vsw Magnetic footpoint longitude (Carrington) Longitudinal separation between body and reference_long Longitudinal separation between body's mangetic footpoint and reference_long Latitudinal separation between body and reference_lat
0 STEREO-A 44.772913 -5.741163 0.967315 -34.187292 1.481141 474.333333 95.370053 -228.227087 -177.629947 -12.741163
1 Earth 78.960205 -7.222304 0.990840 0.000000 0.000000 527.239990 125.402266 -194.039795 -147.597734 -14.222304
2 BepiColombo 3.679356 2.294885 0.342656 -75.280849 9.517189 400.000000 24.870641 -269.320644 111.870641 -4.705115
3 PSP 185.175551 0.771163 0.203645 106.215346 7.993467 291.739344 202.298232 -87.824449 -70.701768 -6.228837
4 Solar Orbiter 70.614031 -4.042220 0.570316 -8.346174 3.180084 443.230915 102.544135 -202.385969 -170.455865 -11.042220
5 Mars 186.262634 0.369636 1.460183 107.302429 7.591940 400.000000 277.616908 -86.737366 4.616908 -6.630364

Note again that by default all coordinates are given in Carrington coordinates (as indicated in the column titles). To have this data in Stoneyhurst coordinates, define the coord_sys when initilizing SolarMACH:

[16]:
sm4a = SolarMACH(date, body_list, vsw_list, coord_sys='Stoneyhurst')
df = sm4a.coord_table
display(df)
No solar wind speeds defined, trying to obtain measurements...
Using 'ACE' measurements for 'Earth'.
Body 'BepiColombo' not supported, assuming default Vsw value of 400.0 km/s.
Body 'Mars' not supported, assuming default Vsw value of 400.0 km/s.
Spacecraft/Body Stonyhurst longitude (°) Stonyhurst latitude (°) Heliocentric distance (AU) Longitudinal separation to Earth's longitude Latitudinal separation to Earth's latitude Vsw Magnetic footpoint longitude (Stonyhurst)
0 STEREO-A -3.418729e+01 -5.741163 0.967315 -34.187292 1.481141 474.333333 16.409848
1 Earth -9.587279e-08 -7.222304 0.990840 0.000000 0.000000 527.239990 46.442061
2 BepiColombo -7.528085e+01 2.294885 0.342656 -75.280849 9.517189 400.000000 -54.089564
3 PSP 1.062153e+02 0.771163 0.203645 106.215346 7.993467 291.739344 123.338027
4 Solar Orbiter -8.346174e+00 -4.042220 0.570316 -8.346174 3.180084 443.230915 23.583930
5 Mars 1.073024e+02 0.369636 1.460183 107.302429 7.591940 400.000000 198.656703

5. Advanced plotting options

Since version 0.1.6, solarmach provides the option to color a cone-shaped area or an area between two Parker spirals in the heliographic plane. For this, SolarMACH.plot() has three new options:

  • long_sector: list of 2 numbers: start and stop longitude of a shaded area; e.g. [350, 20] to get a cone from 350 to 20 degree longitude (for long_sector_vsw=None`).

  • long_sector_vsw: list of 2 numbers: Solar wind speed used to calculate Parker spirals (at start and stop longitude provided by long_sector) between which a reference cone should be drawn; e.g. [400, 400] to assume for both edges of the fill area a Parker spiral produced by solar wind speeds of 400 km/s. If None, instead of Parker spirals, straight lines are used, i.e. a simple cone will be plotted. By default, None.

  • long_sector_color: String defining the matplotlib color used for the shading defined by long_sector. By default, 'red'.

In addition, it is now possible to plot a set of evenly distributed Parker spirals in the background, see 5.3 Example 3: plot background Parker spirals.

5.1 Example 1: plot cone-shaped area

[ ]:
body_list = ['STEREO-A', 'Earth', 'BepiColombo', 'PSP', 'Solar Orbiter']
vsw_list = [400, 400, 400, 400, 400]
date = '2022-3-11 12:00:00'

sm5a = SolarMACH(date, body_list, vsw_list)
sm5a.plot(long_sector=[290, 328], long_sector_vsw=None, long_sector_color='red')
_images/usage_46_0.png

5.2 Example 2: shade area between two Parker spirals

[ ]:
body_list = ['STEREO-A', 'Earth', 'BepiColombo', 'PSP', 'Solar Orbiter']
vsw_list = [400, 400, 400, 400, 400]
date = '2022-3-11 12:00:00'

sm5b = SolarMACH(date, body_list, vsw_list)
sm5b.plot(long_sector=[290, 328], long_sector_vsw=[400,600], long_sector_color='cyan')
_images/usage_48_0.png

Note that there still is a bug if the speeds in long_sector_vsw differ to some extent; then the plotting might not work as intended.

5.3 Example 3: plot background Parker spirals

Since version 0.1.6, solarmach provides the option to plot a set of evenly distributed Parker spirals in the background, using the option background_spirals in SolarMACH.plot():

background_spirals: list of 2 numbers (and 3 optional strings). If defined, plot evenly distributed Parker spirals over 360°. background_spirals[0] defines the number of spirals, background_spirals[1] the solar wind speed in km/s used for their calculation.

Optionally, background_spirals[2], background_spirals[3], and background_spirals[4] change the plotting line style, color, and alpha setting, respectively (default values ':', 'grey', and 0.1).

[ ]:
body_list = ['STEREO-A', 'Earth', 'BepiColombo', 'PSP', 'Solar Orbiter']
vsw_list = [400, 400, 400, 400, 400]
date = '2022-3-11 12:00:00'

sm = SolarMACH(date, body_list, vsw_list)
sm.plot(background_spirals=[6, 600])
_images/usage_51_0.png
[ ]:
body_list = ['STEREO-A', 'Earth', 'BepiColombo', 'PSP', 'Solar Orbiter']
vsw_list = [400, 400, 400, 400, 400]
date = '2022-3-11 12:00:00'

sm = SolarMACH(date, body_list, vsw_list)
sm.plot(background_spirals=[6, 600, '-', 'red', 0.5])
_images/usage_52_0.png

6. Advanced: edit the figure

Let’s produce again the figure for the Oct 2021 GLE event.

[74]:
body_list = ['STEREO-A', 'Earth', 'BepiColombo', 'PSP', 'Solar Orbiter', 'Mars']
vsw_list = [340, 300, 350, 350, 320, 350]  # position-sensitive solar wind speed per body in body_list
date = '2021-10-28 15:20:00'
reference_long = 130           # Carrington longitude of reference (None to omit)
reference_lat = 0             # Carrington latitude of reference (None to omit)
reference_vsw = 400           # define solar wind speed at reference
sm6 = SolarMACH(date, body_list, vsw_list, reference_long, reference_lat)

But now we prodive the option return_plot_object=True to the plot() call, so that the matplotlib figure and axis object will be returned:

[80]:
fig, ax = sm6.plot(plot_spirals=True,
                   plot_sun_body_line=True,
                   transparent=False,
                   markers='numbers',
                   return_plot_object=True
                  )
_images/usage_56_0.png

Now we can make some post-adjustments to the figure (requires of course some Python knowledge):

[81]:
ax.set_title("What's that?! A new title!", pad=60)
[81]:
Text(0.5, 1.0, "What's that?! A new title!")
[82]:
fig
[82]:
_images/usage_59_0.png

We can also add another red reference arrow to the figure, e.g., to indicate another flare:

[83]:
new_reference_long = 60

arrow_dist = min([sm6.max_dist/3.2, 2.])  # arrow length
ax.arrow(np.deg2rad(new_reference_long), 0.01, 0, arrow_dist, head_width=0.2, head_length=0.07, edgecolor='red', facecolor='red', lw=1.8, zorder=5, overhang=0.2)
ax.set_rmax(sm6.max_dist + 0.3)  # re-set max. radial dist. of plot
[84]:
fig
[84]:
_images/usage_62_0.png

7. Ideas for further usage

7.1 Loop over multiple datetimes (plots)

This might be useful to either:

  • read-in an event catalog, and loop over those datetimes to quickly get the constellations of all these events,

  • create a series of daily constellation plots, and combine them into one animation:

[4]:
body_list = ['Mercury', 'Venus', 'Earth', 'Mars', 'STEREO A', 'STEREO B', 'Solar Orbiter', 'PSP', 'BepiColombo']
vsw_list = len(body_list) * [350]   # position-sensitive solar wind speed per body in body_list
plot_spirals = True                 # plot Parker spirals for each body
plot_sun_body_line = False          # plot straight line between Sun and body
transparent = False                 # make output figure background transparent
markers = 'numbers'                 # use 'numbers' or 'letters' for the body markers (use False for colored squares)

for i in range(2,19,1):
    j = str(i).rjust(2, '0')
    date = f'2022-6-{j} 12:00:00'
    filename = f'animate_{date[:-9]}.png'        # define filename of output figure

    sm7 = SolarMACH(date, body_list, vsw_list, coord_sys='Stoneyhurst')
    sm7.plot(plot_spirals=plot_spirals,
             plot_sun_body_line=plot_sun_body_line,
             transparent=transparent,
             markers=markers,
             outfile=filename
             )

Get a sorted list of the files just created using glob:

[9]:
import glob
files = sorted(glob.glob(filename.replace(f'{i}', '*')))

Build an animated GIF out of these files using imageio:

[11]:
import imageio
images_data = []
for filename in files:
    data = imageio.v2.imread(filename)
    images_data.append(data)

# write to animated gif; duration (in ms) defines how fast the animation is.
imageio.mimwrite('solarmach.gif', images_data, format= '.gif', duration=100, loop=0)

When completed, this will have created an animated GIF file solarmach.gif in the same directory as this notebook (as well as a series of files animate_DATE.png that can be deleted).

7.2 Loop over multiple datetimes (only data)

For example, to look for spacecraft alignments, like “When are PSP and Solar Orbiter at the same magnetic footpoint?”

[33]:
body_list = ['Mercury', 'Venus', 'Earth', 'Mars', 'STEREO A', 'Solar Orbiter', 'PSP', 'BepiColombo']
vsw_list = len(body_list) * [350]  # position-sensitive solar wind speed per body in body_list

df = []
dates = []
for i in range(1,31,1):
    date = f'2022-6-{i} 12:00:00'

    sm8 = SolarMACH(date, body_list, vsw_list)
    df = df + [sm8.coord_table]
    dates = dates + [date]
[34]:
display(df[0])
display(df[1])
display(df[2])
Spacecraft/Body Carrington longitude (°) Carrington latitude (°) Heliocentric distance (AU) Longitudinal separation to Earth's longitude Latitudinal separation to Earth's latitude Vsw Magnetic footpoint longitude (Carrington)
0 STEREO-A 233.080604 7.169518 0.958294 -37.595981 2.455532 340 302.733100
1 Earth 270.676585 4.713986 0.993489 0.000000 0.000000 300 353.039432
2 BepiColombo 0.634907 0.905419 0.411322 -270.041678 -3.808567 350 29.801105
3 PSP 217.026554 3.853925 0.623148 -53.650031 -0.860061 350 261.252554
4 Solar Orbiter 267.858104 2.189101 0.803886 -2.818480 -2.524885 320 330.499586
5 Mars 79.738619 -4.884758 1.610970 -190.937966 -9.598744 350 194.379501
Spacecraft/Body Carrington longitude (°) Carrington latitude (°) Heliocentric distance (AU) Longitudinal separation to Earth's longitude Latitudinal separation to Earth's latitude Vsw Magnetic footpoint longitude (Carrington)
0 STEREO-A 233.080604 7.169518 0.958294 -37.595981 2.455532 340 302.733100
1 Earth 270.676585 4.713986 0.993489 0.000000 0.000000 300 353.039432
2 BepiColombo 0.634907 0.905419 0.411322 -270.041678 -3.808567 350 29.801105
3 PSP 217.026554 3.853925 0.623148 -53.650031 -0.860061 350 261.252554
4 Solar Orbiter 267.858104 2.189101 0.803886 -2.818480 -2.524885 320 330.499586
5 Mars 79.738619 -4.884758 1.610970 -190.937966 -9.598744 350 194.379501
Spacecraft/Body Carrington longitude (°) Carrington latitude (°) Heliocentric distance (AU) Longitudinal separation to Earth's longitude Latitudinal separation to Earth's latitude Vsw Magnetic footpoint longitude (Carrington)
0 STEREO-A 233.080604 7.169518 0.958294 -37.595981 2.455532 340 302.733100
1 Earth 270.676585 4.713986 0.993489 0.000000 0.000000 300 353.039432
2 BepiColombo 0.634907 0.905419 0.411322 -270.041678 -3.808567 350 29.801105
3 PSP 217.026554 3.853925 0.623148 -53.650031 -0.860061 350 261.252554
4 Solar Orbiter 267.858104 2.189101 0.803886 -2.818480 -2.524885 320 330.499586
5 Mars 79.738619 -4.884758 1.610970 -190.937966 -9.598744 350 194.379501
[35]:
display(dates)
['2022-6-1 12:00:00',
 '2022-6-2 12:00:00',
 '2022-6-3 12:00:00',
 '2022-6-4 12:00:00',
 '2022-6-5 12:00:00',
 '2022-6-6 12:00:00',
 '2022-6-7 12:00:00',
 '2022-6-8 12:00:00',
 '2022-6-9 12:00:00',
 '2022-6-10 12:00:00',
 '2022-6-11 12:00:00',
 '2022-6-12 12:00:00',
 '2022-6-13 12:00:00',
 '2022-6-14 12:00:00',
 '2022-6-15 12:00:00',
 '2022-6-16 12:00:00',
 '2022-6-17 12:00:00',
 '2022-6-18 12:00:00',
 '2022-6-19 12:00:00',
 '2022-6-20 12:00:00',
 '2022-6-21 12:00:00',
 '2022-6-22 12:00:00',
 '2022-6-23 12:00:00',
 '2022-6-24 12:00:00',
 '2022-6-25 12:00:00',
 '2022-6-26 12:00:00',
 '2022-6-27 12:00:00',
 '2022-6-28 12:00:00',
 '2022-6-29 12:00:00',
 '2022-6-30 12:00:00']