Commit 7f32fddc authored by Qusai Al Shidi's avatar Qusai Al Shidi 💬
Browse files

html documentation through pydoc

parent f53e5c51
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module swmfpy.io</title>
<meta charset="utf-8">
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="swmfpy.html"><font color="#ffffff">swmfpy</font></a>.io</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/qusai/Documents/Code/swmfpy/swmfpy/io.py">/home/qusai/Documents/Code/swmfpy/swmfpy/io.py</a></font></td></tr></table>
<p><tt>Input/Output&nbsp;tools<br>
&nbsp;<br>
Input/Output<br>
============<br>
&nbsp;<br>
Here&nbsp;are&nbsp;tools&nbsp;to&nbsp;read&nbsp;and&nbsp;write&nbsp;files&nbsp;relating&nbsp;to&nbsp;SWMF.<br>
&nbsp;<br>
TODO:&nbsp;Move&nbsp;pandas&nbsp;dependancy&nbsp;elsewhere.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="datetime.html">datetime</a><br>
</td><td width="25%" valign=top><a href="numpy.html">numpy</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-read_gm_log"><strong>read_gm_log</strong></a>(filename, colnames<font color="#909090">=None</font>, dtypes<font color="#909090">=None</font>, index_time<font color="#909090">=True</font>)</dt><dd><tt>Make&nbsp;a&nbsp;dictionary&nbsp;out&nbsp;of&nbsp;the&nbsp;indeces&nbsp;outputted<br>
from&nbsp;the&nbsp;GM&nbsp;model&nbsp;log.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;(str):&nbsp;The&nbsp;relative&nbsp;filename&nbsp;as&nbsp;a&nbsp;string.&nbsp;(or&nbsp;file&nbsp;handle&nbsp;no.)<br>
&nbsp;&nbsp;&nbsp;&nbsp;colnames&nbsp;([str]):&nbsp;(default:&nbsp;None)&nbsp;Supply&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;columns.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;None&nbsp;it&nbsp;will&nbsp;use&nbsp;second&nbsp;line<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;log&nbsp;file.<br>
&nbsp;&nbsp;&nbsp;&nbsp;dtypes&nbsp;([types]):&nbsp;(default:&nbsp;None)&nbsp;Provide&nbsp;types&nbsp;for&nbsp;the&nbsp;columns,&nbsp;if<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;None&nbsp;then&nbsp;all&nbsp;will&nbsp;be&nbsp;float.<br>
&nbsp;&nbsp;&nbsp;&nbsp;index_time&nbsp;(bool):&nbsp;(default:&nbsp;True)&nbsp;Make&nbsp;a&nbsp;column&nbsp;of&nbsp;dt.datetime&nbsp;objects<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;dictionary&nbsp;key&nbsp;'Time&nbsp;[UT]'.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;&nbsp;&nbsp;Dictionary&nbsp;of&nbsp;the&nbsp;log&nbsp;file<br>
&nbsp;<br>
Examples:<br>
&nbsp;&nbsp;&nbsp;&nbsp;To&nbsp;plot&nbsp;AL&nbsp;and&nbsp;Dst&nbsp;get&nbsp;the&nbsp;log&nbsp;files<br>
&nbsp;&nbsp;&nbsp;&nbsp;```<br>
&nbsp;&nbsp;&nbsp;&nbsp;geo&nbsp;=&nbsp;swmfpy.io.<a href="#-read_gm_log">read_gm_log</a>('run/GM/IO2/geoindex_e20140215-100500.log')<br>
&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;=&nbsp;swmfpy.io.<a href="#-read_gm_log">read_gm_log</a>('run/GM/IO2/log_e20140215-100500.log')<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Plot&nbsp;AL&nbsp;indeces<br>
&nbsp;&nbsp;&nbsp;&nbsp;plt.plot(geo['times',&nbsp;geo['AL'])<br>
&nbsp;&nbsp;&nbsp;&nbsp;```</tt></dd></dl>
<dl><dt><a name="-read_omni_csv"><strong>read_omni_csv</strong></a>(filename, filtering<font color="#909090">=False</font>, **kwargs)</dt><dd><tt>Take&nbsp;an&nbsp;OMNI&nbsp;csv&nbsp;file&nbsp;from&nbsp;cdaweb.sci.gsfc.nasa.gov<br>
and&nbsp;turn&nbsp;it&nbsp;into&nbsp;a&nbsp;pandas.DataFrame.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;&nbsp;&nbsp;fnames&nbsp;(dict):&nbsp;dict&nbsp;with&nbsp;filenames&nbsp;from&nbsp;omni&nbsp;.lst&nbsp;files.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;keys&nbsp;must&nbsp;be:&nbsp;density,&nbsp;temperature,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;magnetic_field,&nbsp;velocity<br>
&nbsp;&nbsp;&nbsp;&nbsp;filtering&nbsp;(bool):&nbsp;default=False&nbsp;Remove&nbsp;points&nbsp;where&nbsp;the&nbsp;value<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;&gt;sigma&nbsp;(default:&nbsp;sigma=3)&nbsp;from&nbsp;mean.<br>
&nbsp;&nbsp;&nbsp;&nbsp;**kwargs:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coarseness&nbsp;(int):&nbsp;default=3,&nbsp;Number&nbsp;of&nbsp;standard&nbsp;deviations<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;above&nbsp;which&nbsp;to&nbsp;remove&nbsp;if&nbsp;filtering=True.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clean&nbsp;(bool):&nbsp;default=True,&nbsp;Clean&nbsp;the&nbsp;omni&nbsp;data&nbsp;of&nbsp;bad&nbsp;data&nbsp;points<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;&nbsp;&nbsp;pandas.DataFrame:&nbsp;object&nbsp;with&nbsp;solar&nbsp;wind&nbsp;data<br>
&nbsp;<br>
Make&nbsp;sure&nbsp;to&nbsp;download&nbsp;the&nbsp;csv&nbsp;files&nbsp;with&nbsp;cdaweb.sci.gsfc.nasa.gov<br>
the&nbsp;header&nbsp;seperated&nbsp;into&nbsp;a&nbsp;json&nbsp;file&nbsp;for&nbsp;safety.<br>
&nbsp;<br>
This&nbsp;only&nbsp;tested&nbsp;with&nbsp;OMNI&nbsp;data&nbsp;specifically.</tt></dd></dl>
<dl><dt><a name="-read_wdc_ae"><strong>read_wdc_ae</strong></a>(wdc_filename)</dt><dd><tt>Read&nbsp;an&nbsp;auroral&nbsp;electrojet&nbsp;(AE)&nbsp;indeces&nbsp;from&nbsp;Kyoto's&nbsp;World&nbsp;Data&nbsp;Center<br>
&nbsp;&nbsp;&nbsp;text&nbsp;file&nbsp;into&nbsp;a&nbsp;dictionary&nbsp;of&nbsp;lists.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;&nbsp;&nbsp;wdc_filename&nbsp;(str):&nbsp;Filename&nbsp;of&nbsp;wdc&nbsp;data&nbsp;from<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://wdc.kugi.kyoto-u.ac.jp/">http://wdc.kugi.kyoto-u.ac.jp/</a><br>
Returns:<br>
&nbsp;&nbsp;&nbsp;&nbsp;dict:&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auroral&nbsp;indeces&nbsp;'AL',&nbsp;'AE',&nbsp;'AO',&nbsp;'AU'&nbsp;(int):&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'times'&nbsp;(datetime.datetime):&nbsp;List&nbsp;of&nbsp;datetime&nbsp;objects<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;corresponding&nbsp;to&nbsp;time&nbsp;in&nbsp;UT.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'values'&nbsp;(int):&nbsp;List&nbsp;of&nbsp;indeces.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</tt></dd></dl>
<dl><dt><a name="-read_wdc_asy_sym"><strong>read_wdc_asy_sym</strong></a>(wdc_filename)</dt><dd><tt>Reads&nbsp;a&nbsp;WDC&nbsp;file&nbsp;for&nbsp;ASY/SYM&nbsp;data.<br>
&nbsp;<br>
Reads&nbsp;an&nbsp;ASY/SYM&nbsp;file&nbsp;downloaded&nbsp;from<br>
<a href="http://wdc.kugi.kyoto-u.ac.jp/aeasy/index.html">http://wdc.kugi.kyoto-u.ac.jp/aeasy/index.html</a><br>
and&nbsp;puts&nbsp;it&nbsp;into&nbsp;a&nbsp;dictionary.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;&nbsp;&nbsp;wdc_filename&nbsp;(str):&nbsp;Relative&nbsp;filename&nbsp;(or&nbsp;file&nbsp;handle&nbsp;no.)&nbsp;to&nbsp;read.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;&nbsp;&nbsp;dict:&nbsp;of&nbsp;values.<br>
&nbsp;&nbsp;&nbsp;&nbsp;{'[ASY-SYM]-[D-H]':&nbsp;'times':&nbsp;[],&nbsp;'values':&nbsp;[]}<br>
&nbsp;<br>
Examples:<br>
&nbsp;&nbsp;&nbsp;&nbsp;```<br>
&nbsp;&nbsp;&nbsp;&nbsp;indeces&nbsp;=&nbsp;swmfpy.io.<a href="#-read_wdc_asy_sym">read_wdc_asy_sym</a>('wdc.dat')<br>
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Plot&nbsp;data<br>
&nbsp;&nbsp;&nbsp;&nbsp;plt.plot(indeces['SYM-H']['times'],<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indeces['SYM-H']['values'],<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label='SYM-H&nbsp;[nT]'<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;plt.xlabel('Time&nbsp;[UT]')<br>
&nbsp;&nbsp;&nbsp;&nbsp;```<br>
&nbsp;<br>
Important&nbsp;to&nbsp;note&nbsp;if&nbsp;there&nbsp;is&nbsp;bad&nbsp;data&nbsp;it&nbsp;will&nbsp;be&nbsp;filled&nbsp;as&nbsp;None.</tt></dd></dl>
<dl><dt><a name="-write_imf_input"><strong>write_imf_input</strong></a>(data, outfilename<font color="#909090">='IMF.dat'</font>, enable_rb<font color="#909090">=True</font>, **kwargs)</dt><dd><tt>Writes&nbsp;the&nbsp;pandas.DataFrame&nbsp;into&nbsp;an&nbsp;input&nbsp;file<br>
that&nbsp;SWMF&nbsp;can&nbsp;read&nbsp;as&nbsp;input&nbsp;IMF&nbsp;(IMF.dat).<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;pandas.DataFrame&nbsp;object&nbsp;with&nbsp;solar&nbsp;wind&nbsp;data<br>
&nbsp;&nbsp;&nbsp;&nbsp;outfilename:&nbsp;The&nbsp;output&nbsp;file&nbsp;name&nbsp;for&nbsp;ballistic&nbsp;solar&nbsp;wind&nbsp;data.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(default:&nbsp;"IMF.dat")<br>
&nbsp;&nbsp;&nbsp;&nbsp;enable_rb:&nbsp;Enables&nbsp;solar&nbsp;wind&nbsp;input&nbsp;for&nbsp;the&nbsp;radiation&nbsp;belt&nbsp;model.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(default:&nbsp;True)<br>
&nbsp;<br>
Other&nbsp;paramaters:<br>
&nbsp;&nbsp;&nbsp;&nbsp;gse:&nbsp;(default=False)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;GSE&nbsp;coordinate&nbsp;system&nbsp;for&nbsp;the&nbsp;file&nbsp;instead&nbsp;of&nbsp;GSM&nbsp;default.</tt></dd></dl>
</td></tr></table>
</body></html>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module swmfpy.paramin</title>
<meta charset="utf-8">
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="swmfpy.html"><font color="#ffffff">swmfpy</font></a>.paramin</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/qusai/Documents/Code/swmfpy/swmfpy/paramin.py">/home/qusai/Documents/Code/swmfpy/swmfpy/paramin.py</a></font></td></tr></table>
<p><tt>PARAM.in&nbsp;Tools<br>
--------------<br>
&nbsp;<br>
These&nbsp;tools&nbsp;are&nbsp;to&nbsp;help&nbsp;script&nbsp;the&nbsp;editing&nbsp;of&nbsp;PARAM.in&nbsp;files.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="logging.html">logging</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-read_command"><strong>read_command</strong></a>(command, paramin_file<font color="#909090">='PARAM.in'</font>, **kwargs)</dt><dd><tt>Get&nbsp;parameters&nbsp;of&nbsp;a&nbsp;certain&nbsp;command&nbsp;in&nbsp;PARAM.in&nbsp;file.<br>
&nbsp;<br>
This&nbsp;will&nbsp;find&nbsp;the&nbsp;#COMMAND&nbsp;and&nbsp;return&nbsp;a&nbsp;list&nbsp;of&nbsp;values&nbsp;for&nbsp;the&nbsp;parameters.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;&nbsp;&nbsp;command&nbsp;(str):&nbsp;This&nbsp;is&nbsp;the&nbsp;#COMMAND&nbsp;you're&nbsp;looking&nbsp;for.<br>
&nbsp;&nbsp;&nbsp;&nbsp;paramin_file&nbsp;(str):&nbsp;(default:&nbsp;'PARAM.in')&nbsp;The&nbsp;file&nbsp;in&nbsp;which&nbsp;you're<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;looking&nbsp;for&nbsp;the&nbsp;command&nbsp;values.<br>
&nbsp;&nbsp;&nbsp;&nbsp;**kwargs:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_of_values&nbsp;(int):&nbsp;(default:&nbsp;None)&nbsp;Number&nbsp;of&nbsp;values&nbsp;to&nbsp;take&nbsp;from<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;&nbsp;&nbsp;list:&nbsp;Values&nbsp;found&nbsp;for&nbsp;the&nbsp;#COMMAND&nbsp;in&nbsp;file.&nbsp;Index&nbsp;0&nbsp;is&nbsp;#COMMAND&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;values&nbsp;follow&nbsp;(1&nbsp;for&nbsp;first&nbsp;argument...)<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;&nbsp;&nbsp;ValueError:&nbsp;When&nbsp;the&nbsp;#COMMAND&nbsp;is&nbsp;not&nbsp;found.<br>
&nbsp;<br>
Examples:<br>
&nbsp;&nbsp;&nbsp;&nbsp;start_time&nbsp;=&nbsp;swmfpy.paramin.<a href="#-read_command">read_command</a>('#STARTTIME')<br>
&nbsp;&nbsp;&nbsp;&nbsp;end_time&nbsp;=&nbsp;swmfpy.paramin.<a href="#-read_command">read_command</a>('#ENDTIME')<br>
&nbsp;&nbsp;&nbsp;&nbsp;print('Starting&nbsp;month&nbsp;is&nbsp;',&nbsp;start_time[1])<br>
&nbsp;&nbsp;&nbsp;&nbsp;print('Ending&nbsp;month&nbsp;is&nbsp;',&nbsp;end_time[1])<br>
&nbsp;<br>
This&nbsp;will&nbsp;treat&nbsp;all&nbsp;following&nbsp;lines&nbsp;as&nbsp;values&nbsp;for&nbsp;the&nbsp;command.&nbsp;To&nbsp;suppress<br>
this,&nbsp;try&nbsp;using&nbsp;the&nbsp;`num_of_values`&nbsp;keyword.&nbsp;This&nbsp;is&nbsp;helpful&nbsp;if&nbsp;your<br>
PARAM.in&nbsp;is&nbsp;comment&nbsp;heavy.</tt></dd></dl>
<dl><dt><a name="-replace_command"><strong>replace_command</strong></a>(parameters, input_file, output_file<font color="#909090">='PARAM.in'</font>)</dt><dd><tt>Replace&nbsp;values&nbsp;for&nbsp;the&nbsp;parameters&nbsp;in&nbsp;a&nbsp;PARAM.in&nbsp;file.<br>
&nbsp;<br>
Note,&nbsp;if&nbsp;you&nbsp;have&nbsp;repeat&nbsp;commands&nbsp;this&nbsp;will&nbsp;replace&nbsp;all&nbsp;the&nbsp;repeats.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;&nbsp;&nbsp;parameters&nbsp;(dict):&nbsp;Dictionary&nbsp;of&nbsp;strs&nbsp;with&nbsp;format<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replace&nbsp;=&nbsp;{'#COMMAND':&nbsp;['value',&nbsp;'comments',&nbsp;...]}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;case&nbsp;sensitive.<br>
&nbsp;&nbsp;&nbsp;&nbsp;input_file&nbsp;(str):&nbsp;String&nbsp;of&nbsp;PARAM.in&nbsp;file&nbsp;name.<br>
&nbsp;&nbsp;&nbsp;&nbsp;output_file&nbsp;(str):&nbsp;(default&nbsp;'PARAM.in')&nbsp;The&nbsp;output&nbsp;file&nbsp;to&nbsp;write&nbsp;to.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;value&nbsp;of&nbsp;None&nbsp;will&nbsp;not&nbsp;output&nbsp;a&nbsp;file.<br>
Returns:<br>
&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;list&nbsp;of&nbsp;lines&nbsp;of&nbsp;the&nbsp;PARAM.in&nbsp;file&nbsp;that&nbsp;would&nbsp;be&nbsp;outputted.<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;&nbsp;&nbsp;TypeError:&nbsp;If&nbsp;a&nbsp;value&nbsp;given&nbsp;couldn't&nbsp;be&nbsp;converted&nbsp;to&nbsp;string.<br>
&nbsp;<br>
Examples:<br>
&nbsp;&nbsp;&nbsp;&nbsp;```<br>
&nbsp;&nbsp;&nbsp;&nbsp;change['#SOLARWINDFILE']&nbsp;=&nbsp;[['T',&nbsp;'UseSolarWindFile'],<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;['new_imf.dat',&nbsp;'NameSolarWindFile']]<br>
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;This&nbsp;will&nbsp;overwrite&nbsp;PARAM.in<br>
&nbsp;&nbsp;&nbsp;&nbsp;swmfpy.paramin.replace('PARAM.in.template',&nbsp;change)<br>
&nbsp;&nbsp;&nbsp;&nbsp;```</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>__all__</strong> = ['read_command', 'replace_command']<br>
<strong>__author__</strong> = 'Qusai Al Shidi'<br>
<strong>__email__</strong> = 'qusai@umich.edu'</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#7799ee">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Qusai&nbsp;Al&nbsp;Shidi</td></tr></table>
</body></html>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module swmfpy.web</title>
<meta charset="utf-8">
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="swmfpy.html"><font color="#ffffff">swmfpy</font></a>.web</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/qusai/Documents/Code/swmfpy/swmfpy/web.py">/home/qusai/Documents/Code/swmfpy/swmfpy/web.py</a></font></td></tr></table>
<p><tt>Tools&nbsp;to&nbsp;retrieve&nbsp;and&nbsp;send&nbsp;data&nbsp;on&nbsp;the&nbsp;web.<br>
&nbsp;<br>
SWMF&nbsp;Web&nbsp;Tools<br>
==============<br>
&nbsp;<br>
Here&nbsp;are&nbsp;a&nbsp;collection&nbsp;of&nbsp;tools&nbsp;to&nbsp;work&nbsp;with&nbsp;data&nbsp;on&nbsp;the&nbsp;internet.&nbsp;Thus,<br>
this&nbsp;module&nbsp;mostly&nbsp;requires&nbsp;an&nbsp;internet&nbsp;connection.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="datetime.html">datetime</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-download_magnetogram_adapt"><strong>download_magnetogram_adapt</strong></a>(time, map_type<font color="#909090">='fixed'</font>, **kwargs)</dt><dd><tt>This&nbsp;routine&nbsp;downloads&nbsp;GONG&nbsp;ADAPT&nbsp;magnetograms.<br>
&nbsp;<br>
Downloads&nbsp;ADAPT&nbsp;magnetograms&nbsp;from&nbsp;<a href="ftp://gong2.nso.edu/adapt/maps/gong/">ftp://gong2.nso.edu/adapt/maps/gong/</a><br>
to&nbsp;a&nbsp;local&nbsp;directory.&nbsp;It&nbsp;will&nbsp;download&nbsp;all&nbsp;maps&nbsp;with&nbsp;the&nbsp;regex&nbsp;file<br>
pattern:&nbsp;adapt4[0,1]3*yyyymmddhh<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;&nbsp;&nbsp;time&nbsp;(datetime.datetime):&nbsp;Time&nbsp;in&nbsp;which&nbsp;you&nbsp;want&nbsp;the&nbsp;magnetogram.<br>
&nbsp;&nbsp;&nbsp;&nbsp;map_type&nbsp;(str):&nbsp;(default:&nbsp;'fixed')<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Choose&nbsp;either&nbsp;'fixed'&nbsp;or&nbsp;'central'&nbsp;for<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;map&nbsp;type&nbsp;you&nbsp;want.<br>
&nbsp;&nbsp;&nbsp;&nbsp;**kwargs:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;download_dir&nbsp;(str):&nbsp;(default&nbsp;is&nbsp;current&nbsp;dir)&nbsp;Relative&nbsp;directory<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;you&nbsp;want&nbsp;the&nbsp;maps&nbsp;to&nbsp;be&nbsp;downloaded.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;&nbsp;&nbsp;str:&nbsp;First&nbsp;unzipped&nbsp;filename&nbsp;found.<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;&nbsp;&nbsp;NotADirectoryError:&nbsp;If&nbsp;the&nbsp;adapt&nbsp;maps&nbsp;directory<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;not&nbsp;found&nbsp;on&nbsp;the&nbsp;server.<br>
&nbsp;&nbsp;&nbsp;&nbsp;ValueError:&nbsp;If&nbsp;map_type&nbsp;is&nbsp;not&nbsp;recognized.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(i.e.&nbsp;not&nbsp;'fixed'&nbsp;or&nbsp;'central')<br>
&nbsp;&nbsp;&nbsp;&nbsp;FileNotFoundError:&nbsp;If&nbsp;maps&nbsp;were&nbsp;not&nbsp;found.<br>
&nbsp;<br>
Examples:<br>
&nbsp;&nbsp;&nbsp;&nbsp;```python<br>
&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;datetime&nbsp;as&nbsp;dt<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Use&nbsp;datetime&nbsp;objects&nbsp;for&nbsp;the&nbsp;time<br>
&nbsp;&nbsp;&nbsp;&nbsp;time_flare&nbsp;=&nbsp;dt.datetime(2018,&nbsp;2,&nbsp;12,&nbsp;hour=10)<br>
&nbsp;&nbsp;&nbsp;&nbsp;swmfpy.web.<a href="#-download_magnetogram_adapt">download_magnetogram_adapt</a>(time=time_flare,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map_type='central',<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;download_dir='./mymaps/')<br>
&nbsp;&nbsp;&nbsp;&nbsp;```</tt></dd></dl>
<dl><dt><a name="-get_omni_data"><strong>get_omni_data</strong></a>(time_from, time_to, **kwargs)</dt><dd><tt>Retrieve&nbsp;omni&nbsp;solar&nbsp;wind&nbsp;data&nbsp;over&nbsp;http.<br>
&nbsp;<br>
This&nbsp;will&nbsp;download&nbsp;omni&nbsp;data&nbsp;from&nbsp;https://spdf.gsfc.nasa.gov/pub/data/omni<br>
and&nbsp;put&nbsp;it&nbsp;into&nbsp;a&nbsp;dictionary.&nbsp;If&nbsp;your&nbsp;data&nbsp;is&nbsp;large,&nbsp;then&nbsp;make&nbsp;a&nbsp;csv&nbsp;and<br>
use&nbsp;swmfpy.io.read_omni_data().<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;&nbsp;&nbsp;time_from&nbsp;(datetime.datetime):&nbsp;The&nbsp;start&nbsp;time&nbsp;of&nbsp;the&nbsp;solar&nbsp;wind<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;that&nbsp;you&nbsp;want&nbsp;to&nbsp;receive.<br>
&nbsp;&nbsp;&nbsp;&nbsp;time_to&nbsp;(datetime.datetime):&nbsp;The&nbsp;end&nbsp;time&nbsp;of&nbsp;the&nbsp;solar&nbsp;wind&nbsp;data<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;you&nbsp;want&nbsp;to&nbsp;receive.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;&nbsp;&nbsp;dict:&nbsp;This&nbsp;will&nbsp;be&nbsp;a&nbsp;list&nbsp;of&nbsp;*all*&nbsp;columns<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;available&nbsp;in&nbsp;the&nbsp;omni&nbsp;data&nbsp;set.<br>
&nbsp;<br>
Examples:<br>
&nbsp;&nbsp;&nbsp;&nbsp;```python<br>
&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;datetime<br>
&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;swmfpy.web<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;storm_start&nbsp;=&nbsp;datetime.datetime(year=2000,&nbsp;month=1,&nbsp;day=1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;storm_end&nbsp;=&nbsp;datetime.datetime(year=2000,&nbsp;month=2,&nbsp;day=15)<br>
&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;swmfpy.web.<a href="#-get_omni_data">get_omni_data</a>(time_from=storm_start,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time_to=storm_end)<br>
&nbsp;&nbsp;&nbsp;&nbsp;```</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>__author__</strong> = 'Qusai Al Shidi'<br>
<strong>__email__</strong> = 'qusai@umich.edu'</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#7799ee">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Qusai&nbsp;Al&nbsp;Shidi</td></tr></table>
</body></html>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment