Failed rifting and fast drifting: a state-of-the-art compilation of the Logan Loop and Keweenawan Track

This notebook contains code and visualizations associated with the following paper:

Swanson-Hysell, N.L., Ramenzani, J., Fairchild, L.M. and Rose, I., Failed rifting and fast drifting: Midcontinent Rift development, Laurentia's rapid motion and the driver of Grenvillian orogenesis, Geological Society of America Bulletin, doi:10.1130/B31944.1.

Corresponding Author: Nicholas L. Swanson-Hysell (swanson-hysell@berkeley.edu)

Introduction

This Jupyter notebook developed using a Python 3.6 kernel contains a compilation and analysis of the apparent polar wander path of the continent of Laurentia (cratonic North America) from ca. 1110 Ma to ca. 1085 Ma. The apex of this path has long been known as the Logan Loop after the Logan Sills of Ontario. From the apex of the Logan Loop, the poles continue on a path that has been referred to as the Keweenawan Track given that the majority of the poles come from the Keweenawan Midcontinent Rift.

In this analysis, we calculate paleomagnetic poles as the mean of virtual geomagnetic poles (VGP) where each VGP is a single igneous cooling unit. For some data sets, VGPs were provided in the original publication, while in other cases they need to be calculated from the available data. Having the data at the VGP level allows for a robust mean and associated 95% confidence ellipse (A$_{95}$) to be calculated using Fisher statistics. The main text provides the rationale for favoring this approach over calculating the mean in directional space and its associated $\alpha_{95}$ error in directional space and than transforming the error ellipse to pole space where it is expressed with a semi-minor and semi-major axis (dp/dm).

Import libraries for data analysis

This code blocks imports necessary libraries and defines functions that will be used in the data analysis below. The code below the pmag.py and ipmag.py modules of the the PmagPy software package (https://github.com/PmagPy/PmagPy). The other modules are currently included with standard scientific python distributions.

In [1]:
import pmagpy.pmag as pmag
import pmagpy.ipmag as ipmag

import matplotlib.pyplot as plt
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_colwidth', -1)
from IPython.core.display import HTML
import numpy as np
import scipy as sp
from scipy import special
import warnings
warnings.filterwarnings('ignore')

This notebook runs with figures inline (instead of opening up in another window) that are in svg format by executing these commands:

In [2]:
%matplotlib inline
%config InlineBackend.figure_formats = {'svg',}

Throughout this analysis there will be maps that show pole positions. The pole_figure_appearance function controls aspects of the appearance of these plots and eliminates the need to make these customizations for every plot.

In [3]:
from mpl_toolkits.basemap import Basemap

def pole_figure_appearance():
    plt.figure(figsize=(6, 6))
    m.drawcoastlines(linewidth=0.25)
    m.fillcontinents(color='bisque',lake_color='white',zorder=1)
    m.drawmapboundary(fill_color='white')
    m.drawmeridians(np.arange(0,360,30))
    m.drawparallels(np.arange(-90,90,30))

Let's create an empty dataframe that will be populated with pole means called 'pole_means'.

PoleName | SLat | SLon | PLat | Plon | A95 | PolarityZone | PmagRef | AgeNominal | AgeLower | AgeUpper | AgeInfo | Q

Pole_name = Name of pole which corresponds to volcanic group
SLat = Sample area decimal latitude (e.g. -56.2)
SLon = Sample area decimal longitude (e.g. 134.8)
PLat = Palaeomagnetic pole decimal latitude (e.g. -56.2)
PLon = Palaeomagnetic pole decimal longitude (e.g. 134.8)
A95 = 95% confidence limit on pole in degrees (e.g. 6.2)
k = Fisher precision parameter (e.g. 42.5)
N = Number of VGPs used to calculate the mean
PolarityZone = Assigned polarity zone
AgeNominal = Mean / representative age of sampled formation (e.g. 1105.1)
AgeLower = Estimate lower bound on age uncertainty (e.g. 1103.2)
AgeUpper = Estimate upper bound on age uncertainty (e.g. 1107.4)
Gaussian_2sigma = 2sigma error if Gaussian Distribution is to be used
GaussianOrUniform = Distribution type used for Bayesian inversion
Q = Van der Voo quality criteria (0 - 7)

In [4]:
pole_means = pd.DataFrame(columns=['PoleName','SLat','SLon','PLat','PLon',
                                   'A95','K','N','PolarityZone','PmagRef',
                                   'AgeNominal','AgeLower','AgeUpper',
                                   'AgeInfo','AgeRef','Gaussian_2sigma',
                                   'GaussianOrUniform','Q','color'])

Data compilation by volcanic group

Osler Volcanic Group

As described in the main text, the Osler Volcanic Group is a sequence of Midcontinent Rift lava flows exposed on Black Bay Peninsula and the Lake Superior Archipelago in northern Lake Superior. The Osler Volcanic Group is dominantly of reversed polarity with a paleomagnetic reversal very near to the top of the exposed stratigraphy (Halls, 1974). This reversal is associated with the deposition of a conglomerate unit and an angular unconformity.

Data from both Halls (1974), Swanson-Hysell et al. (2014b) and this study can be used to develop mean paleomagnetic poles for the group. This compilation takes the approach used in Swanson-Hysell et al. (2014b) wherein data from the Swanson-Hysell et al. (2014b) study are binned on the basis of their position within the stratigraphic succession. Data from the lower third of the Simpson Island stratigraphic succession from Swanson-Hysell et al. (2014b) are considered independently while data from the upper third are combined with the reversed data of Halls (1974) and this study from near the top of the succesion in the Nipigon Strait region. These reversed polarity lavas from high in the succession are in close stratigraphic proximity to a sequence of felsic flows at Agate Point---one of which was dated by Davis and Green (1997) with a resulting $^{207}$Pb/$^{206}$Pb date on zircon of 1105.3±2.1 Ma. In this study, we present a new CA-ID-TIMS $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on zircon from one of the Agate Point rhyolite flows. Data from nine zircon grains yield a weighted mean $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1105.15 ± 0.33/0.56 Ma. This date provides an excellent constraint on the age of the upper reversed pole.

Let's unpack the data using the ipmag.download_magic() function and then import these data into Pandas dataframes:

Halls, H. (1974), A paleomagnetic reversal in the Osler Volcanic Group, northern Lake Superior, Can. J. Earth Sci., 11, 1200–1207, doi:10.1139/e74-113.

Link to MagIC contribution: http://earthref.org/MAGIC/doi/10.1139/e74-113

and

Swanson-Hysell, N. L., A. A. Vaughan, M. R. Mustain, and K. E. Asp (2014), Confirmation of progressive plate motion during the Midcontinent Rift’s early magmatic stage from the Osler Volcanic Group, Ontario, Canada, Geochem. Geophys. Geosyst., 15, 2039–2047, doi:10.1002/2013GC005180.

Link to MagIC contribution: http://earthref.org/MAGIC/doi/10.1002/2013GC005180

In addition to the data previously developed in Swanson-Hysell et al. (2014) and Halls (1974), we have developed new data from 5 more basaltic lava flows from the Agate Point section where the dated AP71 sample was also collected. These flows are from the upper portion of the reversed stratigraphy and should be added to OslerR_upper pole. We have also developed data from 2 flows of normal polarity above the angular unconformity.

Import Halls (1974) data

In [5]:
%%capture
ipmag.download_magic('Halls1974.txt',
                     dir_path='../Data_Compiled/Halls1974',
                     input_dir_path='../Data_Compiled/Halls1974',
                     overwrite=True,print_progress=False,data_model=3.0)
Halls1974_sites = pd.read_csv('../Data_Compiled/Halls1974/sites.txt',sep='\t',header=1)

We are interested in using tilt-corrected data so will filter the DataFrame such that only data with dir_tilt_correction of 100 are included. We also wish to consider data from reversed and normal flows separately so will create DataFrames for each polarity.

In [6]:
Halls1974_sites_tc = Halls1974_sites[Halls1974_sites['dir_tilt_correction']==100]
Halls1974_sites_r = Halls1974_sites_tc[Halls1974_sites_tc['location']=='Osler Volcanics, Nipigon Strait, Lower Reversed']
Halls1974_sites_n = Halls1974_sites_tc[Halls1974_sites_tc['location']=='Osler Volcanics, Nipigon Strait, Upper Normal']

Import Swanson-Hysell et al. (2014b) data

In [7]:
%%capture
ipmag.download_magic('magic_contribution_11088_model3.txt',
                     dir_path='../Data_Compiled/Swanson-Hysell2014b',
                     input_dir_path='../Data_Compiled/Swanson-Hysell2014b',
                     overwrite=True,print_progress=False,data_model=3.0)
SH2014_sites = pd.read_csv('../Data_Compiled/Swanson-Hysell2014b/sites.txt',sep='\t',header=1)

Split Swanson-Hysell et al. (2014b) data by stratigraphic posiition into the lower and upper third and then combine the data from the upper third with the reversed data from the Halls (1974) Nipigon Strait region study as done in Swanson-Hysell et al. (2014b) using the same stratigraphic levels.

In [8]:
SH2014_OslerR_lower = SH2014_sites[SH2014_sites.height<1041]
SH2014_OslerR_upper = SH2014_sites[SH2014_sites.height>2082]

Import new Osler results

In [9]:
%%capture
ipmag.download_magic('AgatePointPuff_Feb6_MagIC3.txt',
                     dir_path='../Data_New/Paleomagnetism/Agate_Point/',
                     input_dir_path='../Data_New/Paleomagnetism/Agate_Point/',
                     overwrite=True,print_progress=False,data_model=3.0)
new_Osler_sites = pd.read_csv('../Data_New/Paleomagnetism/Agate_Point/sites.txt',
                              sep='\t',skiprows=1)
new_Osler_sites_tiltcorrected = new_Osler_sites.ix[new_Osler_sites.dir_tilt_correction == 100]
new_Osler_sites_AP = new_Osler_sites_tiltcorrected.ix[new_Osler_sites_tiltcorrected.location == 'Agate Point']
new_Osler_sites_Puff = new_Osler_sites_tiltcorrected.ix[new_Osler_sites_tiltcorrected.location == 'Puff Island']
In [10]:
new_Osler_sites_AP.to_latex(columns=['site','dir_n_samples','dir_dec','dir_inc','dir_k','dir_r','dir_alpha95','vgp_lat','vgp_lon'])
Out[10]:
'\\begin{tabular}{llrrrrrrrr}\n\\toprule\n{} & site &  dir\\_n\\_samples &  dir\\_dec &  dir\\_inc &  dir\\_k &   dir\\_r &  dir\\_alpha95 &  vgp\\_lat &  vgp\\_lon \\\\\n\\midrule\n1 &  AP1 &  8 &  102.9 & -73.3 &  535 &  7.9869 &  2.4 & -46.0 &  45.6 \\\\\n3 &  AP2 &  8 &  94.4 & -64.7 &  562 &  7.9875 &  2.3 & -35.4 &  34.6 \\\\\n5 &  AP3 &  8 &  105.4 & -59.0 &  358 &  7.9804 &  2.9 & -37.9 &  21.8 \\\\\n7 &  AP4 &  8 &  89.5 & -69.1 &  177 &  7.9603 &  4.2 & -36.3 &  42.9 \\\\\n9 &  AP5 &  8 &  53.9 & -75.4 &  75 &  7.9062 &  6.5 & -29.0 &  66.5 \\\\\n\\bottomrule\n\\end{tabular}\n'
In [11]:
new_Osler_sites_Puff.to_latex(columns=['site','dir_n_samples','dir_dec','dir_inc','dir_k','dir_r','dir_alpha95','vgp_lat','vgp_lon'])
Out[11]:
'\\begin{tabular}{llrrrrrrrr}\n\\toprule\n{} &  site &  dir\\_n\\_samples &  dir\\_dec &  dir\\_inc &  dir\\_k &   dir\\_r &  dir\\_alpha95 &  vgp\\_lat &  vgp\\_lon \\\\\n\\midrule\n11 &  Puf1 &  8 &  303.4 &  25.2 &  219 &  7.9680 &  3.8 &  31.7 &  164.8 \\\\\n13 &  Puf2 &  7 &  296.9 &  24.7 &  293 &  6.9795 &  3.5 &  27.3 &  170.1 \\\\\n\\bottomrule\n\\end{tabular}\n'
In [12]:
SH2014_OslerR_lower_vgps = ipmag.make_di_block(SH2014_OslerR_lower['vgp_lon'].tolist(),
                              SH2014_OslerR_lower['vgp_lat'].tolist())
SH2014_OslerR_upper_vgps = ipmag.make_di_block(SH2014_OslerR_upper['vgp_lon'].tolist(),
                              SH2014_OslerR_upper['vgp_lat'].tolist())
Halls1974_OslerR_vgps = ipmag.make_di_block(Halls1974_sites_r['vgp_lon'].tolist(),
                              Halls1974_sites_r['vgp_lat'].tolist())
AgatePoint_OslerR_vgps = ipmag.make_di_block(new_Osler_sites_AP['vgp_lon'].tolist(),
                              new_Osler_sites_AP['vgp_lat'].tolist())
AgatePoint_OslerR_vgps = ipmag.do_flip(di_block=AgatePoint_OslerR_vgps)

Osler reverse (R1; lower Alona Bay reversed-polarity zone) pole

In [13]:
Osler_lowerR_pole = pmag.fisher_mean(SH2014_OslerR_lower_vgps)
ipmag.print_pole_mean(Osler_lowerR_pole)
Plon: 218.6  Plat: 40.9
Number of directions in mean (n): 30
Angular radius of 95% confidence (A_95): 4.8
Precision parameter (k) estimate: 31.5

Osler reverse (R2; upper Alona Bay reversed-polarity zone) pole

In [14]:
Osler_upperR_pole_old = pmag.fisher_mean(SH2014_OslerR_upper_vgps+Halls1974_OslerR_vgps)
ipmag.print_pole_mean(Osler_upperR_pole_old)
Plon: 201.6  Plat: 42.5
Number of directions in mean (n): 59
Angular radius of 95% confidence (A_95): 3.7
Precision parameter (k) estimate: 25.7
In [15]:
Osler_upperR_pole_new = pmag.fisher_mean(SH2014_OslerR_upper_vgps+Halls1974_OslerR_vgps+AgatePoint_OslerR_vgps)
ipmag.print_pole_mean(Osler_upperR_pole_new)
Plon: 203.4  Plat: 42.3
Number of directions in mean (n): 64
Angular radius of 95% confidence (A_95): 3.7
Precision parameter (k) estimate: 24.4
In [16]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,SH2014_OslerR_lower['vgp_lon'].tolist(),
               SH2014_OslerR_lower['vgp_lat'].tolist(),
               color='Orange',label='Osler R1 (S-H et al., 2014)')
ipmag.plot_vgp(m,SH2014_OslerR_upper['vgp_lon'].tolist()+Halls1974_sites_r['vgp_lon'].tolist(),
               SH2014_OslerR_upper['vgp_lat'].tolist()+Halls1974_sites_r['vgp_lat'].tolist(),
               color='DarkRed',label='Osler R2 (Halls, 1974; S-H et al., 2014)')
ipmag.plot_vgp(m,di_block=AgatePoint_OslerR_vgps,
               color='Red',label='Osler R2 (new Agate Point data)')
ipmag.plot_pole(m,Osler_lowerR_pole['dec'],Osler_lowerR_pole['inc'],
                Osler_lowerR_pole['alpha95'],marker='s',color='Orange')
ipmag.plot_pole(m,Osler_upperR_pole_new['dec'],Osler_upperR_pole_new['inc'],
                Osler_upperR_pole_new['alpha95'],marker='s',color='r')
m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.legend(loc=8)
#plt.savefig('./Plots/vpgs_Osler.svg')
plt.show()

These mean poles can be added to the pole_means dataframe. In terms of Q factor, a fold test on the Osler R2 pole utilizing the directional data of both Halls (1974) and Swanson-Hysell et al. (2014b) passes Tauxe and Watson (1994) and McFadden and McElhinny (1990) fold tests (Tauxe et al., 2016). Given evidence for early tilting (e.g. the angular unconformity associated with the syn-rift volcanism Puff Island Conglomerate), this test provided evidence for a primary origin of magnetization. The Osler reverse (lower) data have no such test, although there are younger dikes of normal polarity within the reversed volcanics (that likely correspond to Portage Lake normal-polarity zone) providing additional evidence that the reversed volcanics have not be remagnetized. Buchan et al. (2001) considered the reversed Osler Volcanic Group pole to be a "key pole" and made the additional argument that the unconformity test provides strong evidence for a primary origin of remanence:

Remanence is considered primary because the position of the prominent Keweenawan polarity reversal in the Upper Osler lavas coincides exactly with the position of an unconformity in the sequence (Halls, 1974).

In [17]:
pole_means.loc['Osler_R1'] = pd.Series({'PoleName' : 'Osler reverse (lower)',
                                        'SLat' : 48.80,
                                        'SLon' : 360-87.66,
                                        'PLat' : round(Osler_lowerR_pole['inc'],1),
                                        'PLon' : round(Osler_lowerR_pole['dec'],1),
                                        'A95' : round(Osler_lowerR_pole['alpha95'],1),
                                        'K' : round(Osler_lowerR_pole['k'],1),
                                        'N' : int(Osler_lowerR_pole['n']),
                                        'PolarityZone' : 'Alona Bay reversed-polarity zone',
                                        'PmagRef' : 'Swanson-Hysell et al., 2014b',
                                        'AgeNominal' : 1108,
                                        'AgeLower' : 1105.15,
                                        'AgeUpper' : 1110,
                                        'AgeInfo' : 'Older than 1105.15 $\pm$ 0.33 Ma Osler reverse (upper) pole, perhaps similar in age in Logan Sills ($^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1109 $\pm$ 1 Ma)',
                                        'AgeRef' : 'Davis and Sutcliffe, 1985; this study',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : 7,
                                        'color' : '#B82431'})

pole_means.loc['Osler_R2'] = pd.Series({'PoleName' : 'Osler reverse (upper)',
                                        'SLat' : 48.59,
                                        'SLon' : 360-88.19,
                                        'PLat' : round(Osler_upperR_pole_new['inc'],1),
                                        'PLon' : round(Osler_upperR_pole_new['dec'],1),
                                        'A95' : round(Osler_upperR_pole_new['alpha95'],1),
                                        'N' : int(Osler_upperR_pole_new['n']),
                                        'K' : round(Osler_upperR_pole_new['k'],1),
                                        'PolarityZone' : 'Alona Bay reversed-polarity zone',
                                        'PmagRef' : 'Halls, 1974; Swanson-Hysell et al., 2014b; this study',
                                        'AgeNominal' : 1105.15,
                                        'AgeLower' : 1104.82,
                                        'AgeUpper' : 1105.48,
                                        'AgeInfo' : '$^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1105.15 $\pm$ 0.33 Ma for a rhyolite at Agate Point (this study)',
                                        'AgeRef' : 'this study',
                                        'GaussianOrUniform' : 'gaussian',
                                        'Gaussian_2sigma' : 0.33,
                                        'Q' : 7,
                                        'color' : '#F2A07E'})

Osler normal pole

The study of Halls (1974) included 5 normal sites and previous poles utilizing these data have calculated a mean pole wherein each of these sites is equally weighted (e.g. Halls and Pesonen, 1982). However, field mapping by Swanson-Hysell and Fairchild in July 2014 of the Osler Volcanic Group in the vicinity of Puff Island in the Lake Superior Archipelago revealed that the 5 normal sites of Halls (1974) are from a total of two flows. Sites 1, 2 and 5 are all from the first thick flow above the Puff Island conglomerate while sites 3 and 4 are from a single flow that forms the SSE shoreline of Puff Island and Tremblay Island.

In [18]:
Halls1974_sites_n = Halls1974_sites[Halls1974_sites['location']=='Osler Volcanics, Nipigon Strait, Upper Normal']

To deal with the multiple sites from the same flow, we can calculate the mean direction of the Halls (1974) "sites" for each flow and then calculate the VGP from that mean direction. This method isn't ideal as it would be preferable to calculate Fisher means from the sample level data, but these data are not published.

In [19]:
#Halls flow #1 is sites 1, 2 and 5 which we can separate out into a new list of directions
Halls_N_flow1_directions=[]
Halls_N_flow1_directions.append([Halls1974_sites_n.dir_dec[0], Halls1974_sites_n.dir_inc[0]])
Halls_N_flow1_directions.append([Halls1974_sites_n.dir_dec[1], Halls1974_sites_n.dir_inc[1]])
Halls_N_flow1_directions.append([Halls1974_sites_n.dir_dec[4], Halls1974_sites_n.dir_inc[4]])

#take the Fisher mean of flow 1 directions
Halls_N_flow1_mean=pmag.fisher_mean(Halls_N_flow1_directions)

#Halls flow #2 is sites 3 and 4 which we can separate out into a new list of directions
Halls_N_flow2_directions=[]
Halls_N_flow2_directions.append([Halls1974_sites_n.dir_dec[2], Halls1974_sites_n.dir_inc[2]])
Halls_N_flow2_directions.append([Halls1974_sites_n.dir_dec[3], Halls1974_sites_n.dir_inc[3]])

#take the Fisher mean of flow 2 directions
Halls_N_flow2_mean = pmag.fisher_mean(Halls_N_flow2_directions)

#create a new data frame and insert the data for the two flows (making sure that the values are floats)
Halls1974_Osler_Data_N_new = pd.DataFrame(columns=['name','site_lat','site_lon','dec_tc','inc_tc'])

Halls1974_Osler_Data_N_new.loc[0]=pd.Series({'name':'Halls_N_flow1', 
                                   'site_lat':Halls1974_sites_n.lat[0],
                                   'site_lon':Halls1974_sites_n.lon[0],
                                   'dec_tc':Halls_N_flow1_mean['dec'],
                                   'inc_tc':Halls_N_flow1_mean['inc']})

Halls1974_Osler_Data_N_new.loc[1]=pd.Series({'name':'Halls_N_flow2', 
                                   'site_lat':Halls1974_sites_n.lat[2],
                                   'site_lon':Halls1974_sites_n.lon[2],
                                   'dec_tc':Halls_N_flow2_mean['dec'],
                                   'inc_tc':Halls_N_flow2_mean['inc']})

Halls1974_Osler_Data_N_new['dec_tc'] = Halls1974_Osler_Data_N_new['dec_tc'].astype(float)
Halls1974_Osler_Data_N_new['inc_tc'] = Halls1974_Osler_Data_N_new['inc_tc'].astype(float)
Halls1974_Osler_Data_N_new['site_lat'] = Halls1974_Osler_Data_N_new['site_lat'].astype(float)
Halls1974_Osler_Data_N_new['site_lon'] = Halls1974_Osler_Data_N_new['site_lon'].astype(float)

#calculate VGPs from the directional data
ipmag.vgp_calc(Halls1974_Osler_Data_N_new)

OslerN_VGPs_Halls=[]
OslerN_Plong_Halls=[]
OslerN_Plat_Halls=[]

for n in range(0,len(Halls1974_Osler_Data_N_new)): 
    Plong,Plat=Halls1974_Osler_Data_N_new['vgp_lon'][n],Halls1974_Osler_Data_N_new['vgp_lat'][n]
    OslerN_Plong_Halls.append(Plong)
    OslerN_Plat_Halls.append(Plat)
    OslerN_VGPs_Halls.append([Plong,Plat,1.])

In addition to the two flows above the angular unconformity studied by Halls (1974), we identified, sampled and developed data from two other flows exposed above the unconformity on Puff Island. After calculating each VGP, we can calculate a new mean pole for the Osler normal polarity volcanics. There are only 4 VGPs from which the Osler normal pole can be calculated making it so that the pole is not robust. There is little prospect for significant improvement of the pole as there only appear to be four flows in total exposed above the Puff Island conglomerate at the current water level of Lake Superior.

In [20]:
new_Osler_sites_Puff
Out[20]:
age age_high age_low age_sigma age_unit citations criteria dir_alpha95 dir_comp_name dir_dec dir_inc dir_k dir_n_samples dir_n_specimens dir_n_specimens_lines dir_n_specimens_planes dir_polarity dir_r dir_tilt_correction lat location lon method_codes result_quality result_type samples site software_packages specimens vgp_dm vgp_dp vgp_lat vgp_lon
11 1105.0 1106.0 1104.0 1.0 Ma This study ACCEPT 3.8 mag 303.4 25.2 219 8 8 8 0 t 7.9680 100 48.7 Puff Island -88.0 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i Puf1-1:Puf1-2:Puf1-3:Puf1-4:Puf1-5:Puf1-6:Puf1-7:Puf1-8 Puf1 pmagpy-3.4.1: demag_gui.v.3.0 Puf1-1a:Puf1-2a:Puf1-3a:Puf1-4a:Puf1-5a:Puf1-6a:Puf1-7a:Puf1-8a 4.1 2.2 31.7 164.8
13 1105.0 1106.0 1104.0 1.0 Ma This study ACCEPT 3.5 mag 296.9 24.7 293 7 7 7 0 t 6.9795 100 48.7 Puff Island -88.0 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i Puf2-1:Puf2-2:Puf2-3:Puf2-4:Puf2-5:Puf2-6:Puf2-7 Puf2 pmagpy-3.4.1: demag_gui.v.3.0 Puf2-1a:Puf2-2a:Puf2-3a:Puf2-4a:Puf2-5a:Puf2-6a:Puf2-7a 3.8 2.0 27.3 170.1
In [21]:
PuffIsland_OslerN_vgps = ipmag.make_di_block(new_Osler_sites_Puff['vgp_lon'].tolist(),
                              new_Osler_sites_Puff['vgp_lat'].tolist())

OslerN_pole = pmag.fisher_mean(OslerN_VGPs_Halls+PuffIsland_OslerN_vgps) 
ipmag.print_pole_mean(OslerN_pole)
Plon: 171.9  Plat: 32.0
Number of directions in mean (n): 4
Angular radius of 95% confidence (A_95): 9.7
Precision parameter (k) estimate: 90.9
In [22]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,OslerN_Plong_Halls,OslerN_Plat_Halls,label='Osler N (Halls, 1974)',
                color='lightblue')
ipmag.plot_vgp(m,new_Osler_sites_Puff['vgp_lon'].tolist(),
               new_Osler_sites_Puff['vgp_lat'].tolist(),label='Osler N (Puff Island; this study)',
                color='blue')
ipmag.plot_pole(m,OslerN_pole['dec'],OslerN_pole['inc'],
                OslerN_pole['alpha95'],marker='s',color='Blue')
m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.legend(loc=8)
plt.show()
In [23]:
pole_means.loc['Osler_N'] = pd.Series({'PoleName' : 'Osler normal',
                                        'SLat' : 48.64,
                                        'SLon' : 271.91,
                                        'PLat' : round(OslerN_pole['inc'],1),
                                        'PLon' : round(OslerN_pole['dec'],1),
                                        'A95' : round(OslerN_pole['alpha95'],1),
                                        'K' : round(OslerN_pole['k'],1),
                                        'N' : int(OslerN_pole['n']),
                                        'PolarityZone' : 'Portage Lake normal-polarity zone',
                                        'PmagRef' : 'Halls, 1974; this study',
                                        'AgeNominal' : 1095,
                                        'AgeLower' : 1080,
                                        'AgeUpper' : 1100,
                                        'AgeInfo' : 'Poorly known, significantly younger than the ca. 1105 Ma Agate Point Rhyolite date, pole position similiar to Portage Lake normal-polarity zone poles and distinct from Flour Bay normal-polarity zone pole and therefore likely younger than 1100 Ma date in the Alona Bay reversed-polarity zone',
                                        'AgeRef' : '',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : 7,
                                        'color' : '#0000FF'})

Combined Osler figure

In [24]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,SH2014_OslerR_lower['vgp_lon'].tolist(),
               SH2014_OslerR_lower['vgp_lat'].tolist(),
               color=pole_means['color']['Osler_R1'],
               label='Osler R1 (S-H et al., 2014b)')
ipmag.plot_pole(m,pole_means['PLon']['Osler_R1'],
                pole_means['PLat']['Osler_R1'],
                pole_means['A95']['Osler_R1'],marker='s',
                color=pole_means['color']['Osler_R1'],
                markersize=30)

ipmag.plot_vgp(m,SH2014_OslerR_upper['vgp_lon'].tolist()+Halls1974_sites_r['vgp_lon'].tolist(),
               SH2014_OslerR_upper['vgp_lat'].tolist()+Halls1974_sites_r['vgp_lat'].tolist(),
               color=pole_means['color']['Osler_R2'],label='Osler R2 (Halls, 1974; S-H et al., 2014b)')
ipmag.plot_vgp(m,di_block=AgatePoint_OslerR_vgps,
               color=pole_means['color']['Osler_R2'],marker='^',
               label='Osler R2 (Agate Point; this study)')
ipmag.plot_pole(m,pole_means['PLon']['Osler_R2'],
                pole_means['PLat']['Osler_R2'],
                pole_means['A95']['Osler_R2'],marker='s',
                color=pole_means['color']['Osler_R2'],
                markersize=30)

ipmag.plot_vgp(m,OslerN_Plong_Halls,OslerN_Plat_Halls,
               label='Osler N (Halls, 1974)',
               color=pole_means['color']['Osler_N'])
ipmag.plot_vgp(m,new_Osler_sites_Puff['vgp_lon'].tolist(),
               new_Osler_sites_Puff['vgp_lat'].tolist(),
               label='Osler N (Puff Island; this study)',
               color=pole_means['color']['Osler_N'],marker='^')
ipmag.plot_pole(m,pole_means['PLon']['Osler_N'],
                pole_means['PLat']['Osler_N'],
                pole_means['A95']['Osler_N'],marker='s',
                color=pole_means['color']['Osler_N'],
                markersize=30)

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
#plt.legend(bbox_to_anchor=(0.85, 0.25))
plt.legend(loc=8)
plt.title('Osler Volcanic Group',fontsize=16)
#plt.savefig('./Plots/vgps_Osler.svg')
plt.show()

Mamainse Point Volcanics

The succession of basalt flows at Mamainse Point, Ontario in the easternmost portion of the Lake Superior basin is interpretted to be the most time-complete record of extrusive volcanism in the Midcontinent Rift. Paleomagnetic data developed in stratigraphic context from the succession at Mamainse Point published in Swanson-Hysell et al. (2009) and Swanson-Hysell et al. (2014a) are imported below.

Swanson-Hysell, N. L., Maloof, A. C., Weiss, B. P., and Evans, D. A. D., 2009, No asymmetry in geomagnetic reversals recorded by 1.1-billion-year-old Keweenawan basalts: Nature Geoscience, vol. 2, pp. 713–717, doi:10.1038/ngeo622.

Swanson-Hysell, N. L., Burgess, S. D., Maloof, A. C., and Bowring, S. A., 2014a, Magmatic activity and plate motion during the latent stage of Midcontinent Rift development: Geology, vol. 42, pp. 475–478, doi:10.1130/G35271.1.

Link to MagIC contribution: https://earthref.org/MagIC/16333 or http://earthref.org/MAGIC/doi/10.1130/G35271.1

In [25]:
%%capture
ipmag.download_magic('MamainseMagIC.txt',
                     dir_path='../Data_Compiled/Swanson-Hysell2014a',
                     input_dir_path='../Data_Compiled/Swanson-Hysell2014a',
                     overwrite=True,print_progress=False,data_model=3.0)
MP_sites = pd.read_csv('../Data_Compiled/Swanson-Hysell2014a/sites.txt',sep='\t',header=1)

There are significant changes in pole position recorded in the succession at Mamainse Point. As a result, poles need to be calculated from subsets of the VGPs. These divisions are made by stratigraphic intervals as was done in Swanson-Hysell et al. (2009, 2014a) with four resulting poles:

  • Mamainse Point lower R1 (the stratigraphically lowest 600 meters; older portion of the Alona Bay reversed-polarity zone)
  • Mamainse Point lower R2 (flows between meters 1080 and 1301; the younger portion of the Alona Bay reversed-polarity zone)
  • Mamainse Point lower N and upper R (flows within the Flour Bay normal-polarity zone and the Flour Bay reversed-polarity zone)
  • Mamainse Point upper N (flows within the Portage Lake normal-polarity zone; all studied flows stratigraphically above the "Great Conglomerate")

Mamainse Point lower R1 (lower Alona Bay reversed-polarity zone)

In [26]:
MP_sites_lowerR1 = MP_sites[MP_sites.height<600]
MPlowerR1_mean = ipmag.fisher_mean(dec=MP_sites_lowerR1.vgp_lon.tolist(),
                                   inc=MP_sites_lowerR1.vgp_lat.tolist())
ipmag.print_pole_mean(MPlowerR1_mean)
Plon: 227.0  Plat: 49.5
Number of directions in mean (n): 24
Angular radius of 95% confidence (A_95): 5.3
Precision parameter (k) estimate: 31.7

Mamainse Point lower R2 (upper Alona Bay reversed-polarity zone)

In [27]:
MP_sites_lowerR2 = MP_sites[(MP_sites.height > 1070) & (MP_sites.height < 1350)]
MPlowerR2_mean = ipmag.fisher_mean(dec=MP_sites_lowerR2.vgp_lon.tolist(),
                                   inc=MP_sites_lowerR2.vgp_lat.tolist())
ipmag.print_pole_mean(MPlowerR2_mean)
Plon: 205.2  Plat: 37.5
Number of directions in mean (n): 14
Angular radius of 95% confidence (A_95): 4.5
Precision parameter (k) estimate: 78.6

Mamainse Point lower N and upper R (Flour Bay normal and reversed polarity zones)

In [28]:
MP_sites_lowerN = MP_sites[(MP_sites.height > 1350) & (MP_sites.height < 1810)]
MP_sites_upperR = MP_sites[(MP_sites.height > 1860) & (MP_sites.height < 2100)]
MPlower_N_upper_R_mean = ipmag.fisher_mean(dec=MP_sites_lowerN.vgp_lon.tolist()+MP_sites_upperR.vgp_lon.tolist(),
                                           inc=MP_sites_lowerN.vgp_lat.tolist()+MP_sites_upperR.vgp_lat.tolist())
ipmag.print_pole_mean(MPlower_N_upper_R_mean)
Plon: 189.7  Plat: 36.1
Number of directions in mean (n): 24
Angular radius of 95% confidence (A_95): 4.9
Precision parameter (k) estimate: 37.3

Mamainse Point upper N (Portage Lake polarity zone)

Note that two upper N poles are presented in Swanson-Hysell et al., 2014a. The other one doesn't include the uppermost portion of the stratigraphy (the MP306 section)

In [29]:
MP_sites_upperN = MP_sites[MP_sites.height > 2400]
MPupperN_mean = ipmag.fisher_mean(dec=MP_sites_upperN.vgp_lon.tolist(),
                                   inc=MP_sites_upperN.vgp_lat.tolist())
ipmag.print_pole_mean(MPupperN_mean)
Plon: 183.2  Plat: 31.2
Number of directions in mean (n): 34
Angular radius of 95% confidence (A_95): 2.5
Precision parameter (k) estimate: 94.4
In [30]:
pole_means.loc['MP_lowerR1'] = pd.Series({'PoleName' : 'Mamainse lower reversed 1',
                                        'SLat' : round(MP_sites_lowerR1.lat[0],2),
                                        'SLon' : round(MP_sites_lowerR1.lon[0],2),
                                        'PLat' : round(MPlowerR1_mean['inc'],1),
                                        'PLon' : round(MPlowerR1_mean['dec'],1),
                                        'A95' : round(MPlowerR1_mean['alpha95'],1),
                                        'K' : round(MPlowerR1_mean['k'],1),
                                        'N' : int(MPlowerR1_mean['n']),
                                        'PolarityZone' : 'Alona Bay reversed-polarity zone',
                                        'PmagRef' : 'Swanson-Hysell et al., 2014a',
                                        'AgeNominal' : 1109,
                                        'AgeLower' : 1106,
                                        'AgeUpper' : 1112,
                                        'AgeInfo' : 'Likely older than ca. 1105 Ma given distinct higher latitude pole position from Osler R1 and similar position to ca. 1107 Ma Siemens Creek Volcanic Pole',
                                        'AgeRef' : '',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '7',
                                        'color' : '#930E26'})

pole_means.loc['MP_lowerR2'] = pd.Series({'PoleName' : 'Mamainse lower reversed 2',
                                        'SLat' : round(MP_sites_lowerR2.lat.tolist()[0],2),
                                        'SLon' : round(MP_sites_lowerR2.lon.tolist()[0],2),
                                        'PLat' : round(MPlowerR2_mean['inc'],1),
                                        'PLon' : round(MPlowerR2_mean['dec'],1),
                                        'A95' : round(MPlowerR2_mean['alpha95'],1),
                                        'K' : round(MPlowerR2_mean['k'],1),
                                        'N' : int(MPlowerR2_mean['n']),
                                        'PolarityZone' : 'Alona Bay reversed-polarity zone',
                                        'PmagRef' : 'Swanson-Hysell, 2014a',
                                        'AgeNominal' : 1105,
                                        'AgeLower' : 1100.4,
                                        'AgeUpper' : 1109,
                                        'AgeInfo' : 'Older than $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1100.4 Ma based on stratigraphic position; likely ca. 1105 Ma based on comparison with paleomagnetic data from the Osler Volcanic Group',
                                        'AgeRef' : 'Swanson-Hysell, 2014a',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '7',
                                        'color' : '#F8C1A6'})

pole_means.loc['MP_lowerNupperR'] = pd.Series({'PoleName' : 'Mamainse lower normal and upper reversed',
                                        'SLat' : round(MP_sites_upperR.lat.tolist()[0],2),
                                        'SLon' : round(MP_sites_upperR.lon.tolist()[0],2),
                                        'PLat' : round(MPlower_N_upper_R_mean['inc'],1),
                                        'PLon' : round(MPlower_N_upper_R_mean['dec'],1),
                                        'A95' : round(MPlower_N_upper_R_mean['alpha95'],1),
                                        'K' : round(MPlower_N_upper_R_mean['k'],1),
                                        'N' : int(MPlower_N_upper_R_mean['n']),
                                        'PolarityZone' : 'Flour Bay normal and reversed polarity zones',
                                        'PmagRef' : 'Swanson-Hysell, 2014a',
                                        'AgeNominal' : 1100.36,
                                        'AgeLower' : 1100.10,
                                        'AgeUpper' : 1100.61,
                                        'AgeInfo' : 'Age constrained by $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1100.36 $\pm$ 0.25 Ma on Flour Bay tuff',
                                        'AgeRef' : 'Swanson-Hysell, 2014a',
                                        'GaussianOrUniform' : 'gaussian',
                                        'Gaussian_2sigma' : 0.25,
                                        'Q' : '7',
                                        'color' : '#6A579A'})

pole_means.loc['MP_upperN'] = pd.Series({'PoleName' : 'Mamainse upper normal',
                                        'SLat' : round(MP_sites_upperN.lat.tolist()[0],2),
                                        'SLon' : round(MP_sites_upperN.lon.tolist()[0],2),
                                        'PLat' : round(MPupperN_mean['inc'],1),
                                        'PLon' : round(MPupperN_mean['dec'],1),
                                        'A95' : round(MPupperN_mean['alpha95'],1),
                                        'K' : round(MPupperN_mean['k'],1),
                                        'N' : int(MPupperN_mean['n']),
                                        'PolarityZone' : 'Portage Lake normal-polarity zone',
                                        'PmagRef' : 'Swanson-Hysell, 2014a',
                                        'AgeNominal' : 1094,
                                        'AgeLower' : 1090,
                                        'AgeUpper' : 1100,
                                        'AgeInfo' : 'Likely ca. 1094 Ma based on similar pole position to the Portage Lake Polarity Zone upper NE limb North Shore Volcanic Group poles',
                                        'AgeRef' : '',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '7',
                                        'color' : '#3B7185'})
In [31]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,MP_sites_lowerR1['vgp_lon'].tolist(),
               MP_sites_lowerR1['vgp_lat'].tolist(),
               color=pole_means['color']['MP_lowerR1'],
               label='Mamainse lower R1 (S-H et al., 2014a)')
ipmag.plot_pole(m,pole_means['PLon']['MP_lowerR1'],
                pole_means['PLat']['MP_lowerR1'],
                pole_means['A95']['MP_lowerR1'],
                marker='s',color=pole_means['color']['MP_lowerR1'],
                edgecolor='k',markersize=30)

ipmag.plot_vgp(m,MP_sites_lowerR2['vgp_lon'].tolist(),
               MP_sites_lowerR2['vgp_lat'].tolist(),
               color=pole_means['color']['MP_lowerR2'],
               label='Mamainse lower R2 (S-H et al., 2014a)')
ipmag.plot_pole(m,pole_means['PLon']['MP_lowerR2'],
                pole_means['PLat']['MP_lowerR2'],
                pole_means['A95']['MP_lowerR2'],
                marker='s',color=pole_means['color']['MP_lowerR2'],
                edgecolor='k',markersize=30)

ipmag.plot_vgp(m,MP_sites_lowerN.vgp_lon.tolist()+MP_sites_upperR.vgp_lon.tolist(),
                 MP_sites_lowerN.vgp_lat.tolist()+MP_sites_upperR.vgp_lat.tolist(),
                 color=pole_means['color']['MP_lowerNupperR'],
               label='Mamainse lower N & upper R (S-H et al., 2014a)')
ipmag.plot_pole(m,pole_means['PLon']['MP_lowerNupperR'],
                pole_means['PLat']['MP_lowerNupperR'],
                pole_means['A95']['MP_lowerNupperR'],
                marker='s',color=pole_means['color']['MP_lowerNupperR'],
                edgecolor='k',markersize=30)

ipmag.plot_vgp(m,MP_sites_upperN['vgp_lon'].tolist(),
               MP_sites_upperN['vgp_lat'].tolist(),
               color=pole_means['color']['MP_upperN'],
               label='Mamainse upper N (S-H et al., 2014a)')
ipmag.plot_pole(m,pole_means['PLon']['MP_upperN'],
                pole_means['PLat']['MP_upperN'],
                pole_means['A95']['MP_upperN'],
                marker='s',color=pole_means['color']['MP_upperN'],
                edgecolor='k',markersize=30)

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
#plt.legend(bbox_to_anchor=(1, 0.25))
plt.legend(loc=8)
plt.title('Mamainse Point Volcanics',fontsize=16)
#plt.savefig('./Plots/vgps_Mamainse.svg')
plt.show()

North Shore Volcanic Group and Schroeder-Lutsen Basalts

Tauxe and Kodama (2009) published data from sites of the North Shore Volcanic Group that was the first study of the North Shore Volcanic Group to publish data from these lava flows using modern methods. Books (1968, 1972) and Palmer (1970) also developed data that can largely be considered to be superseded by the Tauxe and Kodama results. However, we will consider some of the Books data from the Grand Portage basalts since only one of those flows was sampled by Tauxe and Kodama (2009) and the generally single component remanence of these lava flows makes it such that the single AF cleaning step methods of those researchers likely isolated robust site means. The Tauxe data can be unpacked from the MagIC contribution and be imported into a dataframe.

Import Tauxe and Kodama (2009)

Tauxe, L. and Kodama, K., 2009, Paleosecular variation models for ancient times: Clues from Keweenawan lava flows: Physics of the Earth and Planetary Interiors, vol. 177, pp. 31–45, doi:10.1016/j.pepi.2009.07.006.

Link to MagIC contribution: http://earthref.org/MAGIC/doi/j.pepi.2009.07.006

In [32]:
%%capture
ipmag.download_magic('zmab0099887tmp01.txt',
                     dir_path='../Data_Compiled/Tauxe2009',
                     input_dir_path='../Data_Compiled/Tauxe2009',
                     overwrite=True,print_progress=False)
In [33]:
NSVG_Data=pd.read_csv('../Data_Compiled/Tauxe2009/pmag_results.txt',sep='\t',skiprows=1)

Assign Tauxe and Kodama (2009) sites to lava sequences

There are a few sites from intrusive units within the Tauxe and Kodama (2009) data set. Sites ns027 and ns029 are from the Brule Lake Hovland Gabbro. ns025 is from the Monker River Diabase. ns041 is from the Stony Point Diabase. The focus here is on extrusive flows so let's split the data into groups related to the sequence of lava flows they are from using the terminology from Minnesota Geological Survey mapping (Duluth Complex overviewmap). The sequence codes are as follows:

  • 'nnel' is the lower northeast sequence of the North Shore Volcanic Group
  • 'nneu' is the upper northeast sequence of the North Shore Volcanic Group
  • 'nswu' is the upper southwest sequence of the North Shore Volcanic Group
  • 'nsl' is the Schroeder-Lutsen basalts above the North Shore Volcanic Group

These codes are assigned to the sites in the code cell below.

In [34]:
nnel_site_list = ['ns024',
                  'ns026']
nneu_site_list = ['ns002',
                  'ns003',
                  'ns004',
                  'ns005',
                  'ns016',
                  'ns018',
                  'ns019',
                  'ns020',
                  'ns021',
                  'ns022',
                  'ns023',
                  'ns028',
                  'ns030',
                  'ns031',
                  'ns032']
nswu_site_list = ['ns034',
                  'ns035',
                  'ns036',
                  'ns037',
                  'ns038',
                  'ns039',
                  'ns040',
                  'ns042',
                  'ns043',
                  'ns044',
                  'ns045',
                  'ns046',
                  'ns047',
                  'ns048',
                  'ns049',
                  'ns050',
                  'ns051',
                  'ns052',
                  'ns053',
                  'ns054',
                  'ns055',
                  'ns056',
                  'ns057',
                  'ns058',
                  'ns059',
                  'ns060',
                  'ns061',
                  'ns062',
                  'ns063',
                  'ns064',
                  'ns065',
                  'ns066',
                  'ns067',
                  'ns068',
                  'ns071',
                  'ns072',
                  'ns073',
                  'ns074',
                  'ns075',
                  'ns077',
                  'ns078',
                  'ns079',
                  'ns080',
                  'ns081',
                  'ns083',
                  'ns085',
                  'ns087']
nsl_site_list = ['ns006',
                 'ns007',
                 'ns008',
                 'ns009',
                 'ns010',
                 'ns011',
                 'ns012',
                 'ns013',
                 'ns014',
                 'ns015']

nnel_data = NSVG_Data.loc[NSVG_Data['er_site_names'].isin(nnel_site_list)]
nneu_data = NSVG_Data.loc[NSVG_Data['er_site_names'].isin(nneu_site_list)]
nswu_data = NSVG_Data.loc[NSVG_Data['er_site_names'].isin(nswu_site_list)]
nsl_data = NSVG_Data.loc[NSVG_Data['er_site_names'].isin(nsl_site_list)]

NSVG Southwest Sequence

In addition to assigning sequences, these sites can be divided into the lithostratigraphic units described in Green et al. 2011 that are used in maps of the Minnesota Geological Survey such as GEOLOGIC MAP OF THE DULUTH COMPLEX AND RELATED ROCKS, NORTHEASTERN MINNESOTA (Miller et al., 2001) as well as the more detailed quadrangles. The codes of those map are used here as follows.

  • 'nlwb' is the Lakewood Basalts of the upper southwest sequence
  • 'nsrb' is the Sucker River Basalts of the upper southwest sequence
  • 'nlmb' is the Larsmont Basalts of the upper southwest sequence
  • 'nthb' is the Two Harbors Basalts of the upper southwest sequence

Note that there are no sites from Tauxe and Kodama (2009) within the following lithostratigraphic units of the upper Southwest Sequence: Leif Erickson Park lavas, Lakeside lavas, Gooseberry River Basalts, Belmore Bay lavas.

  • 'ngpb' is the Grand Portage Basalts of the lower northeast sequence
  • 'ndba' is the Deronda Bay Andesite of the lower northeast sequence
  • 'nmil' is the Marr Island Lavas of the upper northeast sequence
  • 'nkcr' is the Kimball Creek felsites of the upper northeast sequence
  • 'nrcb' is the Red Cliff basalts of the upper northeast sequence
  • 'ncvb' is the Croftville basalts of the upper northeast sequence
  • 'nbwb' is the Breakwater basalts of the upper northeast sequence
  • 'ngha' is the Good Harbor Bay andesites of the upper northeast sequence
  • 'ntpb' is the Terrace Point basalt flow of the upper northeast sequence
  • 'norl'is the Onion River lavas of the upper northeast sequence
In [35]:
nneu_nlwb_sites = ['ns053',
                   'ns055',
                   'ns057',
                   'ns060',
                   'ns061',
                   'ns062',
                   'ns063',
                   'ns064',
                   'ns065',
                   'ns066',
                   'ns067',
                   'ns068',
                   'ns071',
                   'ns072',
                   'ns073',
                   'ns074',
                   'ns075',
                   'ns077',
                   'ns078',
                   'ns079',
                   'ns080',
                   'ns081',
                   'ns083',
                   'ns085',
                   'ns087']
        
nswu_nsrb_sites =  ['ns040',
                    'ns042',
                    'ns043',
                    'ns044',
                    'ns045',
                    'ns046',
                    'ns047',
                    'ns048',
                    'ns049',
                    'ns050',
                    'ns051',
                    'ns052',
                    'ns054',
                    'ns056',
                    'ns058',
                    'ns059']

nswu_nlmb_sites = ['ns038',
                   'ns039']

nswu_nthb_sites = ['ns034',
                   'ns035',
                   'ns036',
                   'ns037']

#Brule_Lake_Hovland_Gabbro
bhrd = ['ns027']
nnel_ngpb_sites = ['ns024']
nnel_ndba_sites = ['ns026']
nneu_nmil_sites = ['ns030']
nneu_nkcr_sites = ['ns022']
nneu_nrcb_sites = ['ns020',
                   'ns023',
                   'ns018',
                   'ns021']
nneu_ncvb_sites = ['ns031',
                   'ns028']
nneu_nbwb_sites = ['ns016',
                   'ns019']
nneu_ngha_sites = ['ns003',
                   'ns002',
                   'ns004',
                   'ns032']
nneu_ntpb_sites = ['ns005']

Import Books (1968)

The study of Books (1968) developed data from the Powder Mill Group and the Grand Portage Basalts. In this compilation, we have developed a MagIC database contribution for the Books (1968) data. The VGPs were not reported in the study. The code below imports a version of the MagIC contribution without the VGPs and calculates the VGPs using the ipmag.vgpcalc() function. These calculated VGPs were added to the Books (1968) dataset and included in the MagIC contribution that we uploaded.

Books, K., 1968, Magnetization of the lowermost Keweenawan lava flows in the Lake Superior area, Geological Survey research 1968, chapter D: U.S. Geological Survey Professional Paper, vol. P 0600-D, pp. 248–254.

Link to MagIC contribution: http://earthref.org/MagIC/11860

In [36]:
Books1968 = pd.read_csv('../Data_Compiled/Books1968/Books1968.txt',sep='\t',skiprows=10)
ipmag.vgp_calc(Books1968,site_lon='lon',site_lat='lat',
               dec_tc='dir_dec',inc_tc='dir_inc')
Books1968.vgp_lat = Books1968.vgp_lat_rev
Books1968.vgp_lon = Books1968.vgp_lon_rev
#Books1968.to_csv('../Data_Compiled/Books1968/Books1968_vgps.csv')
In [37]:
%%capture
ipmag.download_magic('Books1968_MagIC.txt',
                     dir_path='../Data_Compiled/Books1968',
                     input_dir_path='../Data_Compiled/Books1968',
                     overwrite=True,print_progress=False)
In [38]:
Books1968_sites = pd.read_csv('../Data_Compiled/Books1968/sites.txt',sep='\t',header=1)
Books1968_ngpb_sites = Books1968_sites[Books1968_sites.location == 'Grand Portage']

Import Books (1972)

The study of Books (1972) developed data from throughout the Lake Superior region including the upper northeast sequence of the North Shore Volcanic Group.

Books, K., 1972, Paleomagnetism of some Lake Superior Keweenawan rocks: U.S. Geological Survey Professional Paper, vol. P 0760, p. 42.

In [39]:
%%capture
ipmag.download_magic('Books1972_MagIC.txt',
                     dir_path='../Data_Compiled/Books1972',
                     input_dir_path='../Data_Compiled/Books1972',
                     overwrite=True,print_progress=False)
In [40]:
Books1972_sites = pd.read_csv('../Data_Compiled/Books1972/sites.txt',sep='\t',header=1)
Books1972_MN_sites = Books1972_sites[Books1972_sites.location == 'North Shore Volcanic Group:Minnesota']

The Books 1972 sites can be divided by lithostratigraphic unit using the same codes as above.

In [41]:
nneu_nmil_sites_B72 = ['NS269','NS378','NS227']
nneu_nkcr_sites_B72 = ['NS229','NS375']
nneu_nrcb_sites_B72 = ['NS226']
nneu_ncvb_sites_B72 = ['NS362','NS365']
nneu_ngha_sites_B72 = ['NS367','NS265']
nneu_ntpb_sites_B72 = ['NS368',
                       'NS369',
                       'NS374',
                       'NS376',
                       'NS377',
                       'NS169',
                       'NS170',
                       'NS171']
#Note that the Terrace Point Basalt is a single flow
nneu_norl_sites_B72 = ['NS370',
                       'NS371',
                       'NS372']
nsl_sites_B72 = ['NS264',
                 'NS257',
                 'NS258',
                 'NS259',
                 'NS260',
                 'NS261',
                 'NS262',
                 'NS263',
                 'NS256',
                 'NS255',
                 'NS254',
                 'NS379',
                 'NS380',
                 'NS381',
                 'NS382']

nneu_B72_site_list = nneu_nmil_sites_B72 + nneu_nkcr_sites_B72 + nneu_nrcb_sites_B72 + nneu_ncvb_sites_B72 + nneu_ngha_sites_B72 + nneu_norl_sites_B72 
nneu_data_B72 = Books1972_MN_sites.loc[Books1972_MN_sites['site'].isin(nneu_B72_site_list)]
nsl_data_B72 = Books1972_MN_sites.loc[Books1972_MN_sites['site'].isin(nsl_sites_B72)]

Given that the Terrace Point Basalt is a single flow and that Tauxe and Kodama (2009) also developed data from this flow, these data are not included in the upper Northeast sequence sites.

Import Fairchild et al. (2017)

Fairchild et al. (2017) developed data from Schroeder-Lutsen Basalt flows along the Two Island River in northern Minnesota that can be combined with data from Tauxe and Kodama (2009) in order to develop a pole for the Schroeder-Lutsen Basalts. This study also developed data for the Michipicoten Island Formation which are used below.

Fairchild, L. M., Swanson-Hysell, N. L., Ramezani, J., Sprain, C. J., and Bowring, S. A., 2017, The end of Midcontinent Rift magmatism and the paleogeography of Laurentia: Lithosphere, vol. 9, pp. 117–133, doi:10.1130/L580.1.

Link to MagIC contribution: http://earthref.org/MAGIC/doi/10.1130/L580.1

In [42]:
%%capture
ipmag.download_magic('magic_contribution_11883.txt',
                     dir_path='../Data_Compiled/Fairchild2017',
                     input_dir_path='../Data_Compiled/Fairchild2017',
                     overwrite=True,print_progress=False,data_model=3.0)
Fairchild2017_sites = pd.read_csv('../Data_Compiled/Fairchild2017/sites.txt',sep='\t',header=1)
In [43]:
Fairchild2017_SLB = Fairchild2017_sites[Fairchild2017_sites['location'] == 'Two Island River']
Fairchild2017_SLB = Fairchild2017_SLB[Fairchild2017_SLB['dir_comp_name'] == 'mag']
Fairchild2017_SLB = Fairchild2017_SLB[Fairchild2017_SLB['dir_tilt_correction'] == 100.0]

North Shore Volcanic Group northeast limb poles

Grand Portage Basalts Pole

The Grand Portage Basalts are reversed polarity lava flows in the lower portion of the lower northeast sequence of the North Shore Volcanic Group and are stratigraphically below the Red Rock Rhyolite. The Tauxe and Kodama (2009) data include one flow from the Grand Portage Basalts (ns024) and data from the overlying Deronda Bay Andesite (ns026) that is the flow below the Red Rock Rhyolite and will be included here in the Grand Portage mean. Data from these flows are combined with the Grand Portage Basalt data from the Books (1968) study.

We have developed a new U-Pb date from the Red Rock Rhyolite which provides an age of 1105.60 +/- 0.32 Ma. This age provides a minimum age constraint on the pole and it is likely close to the absolute pole age.

In [44]:
Books1968_vgps = ipmag.make_di_block(Books1968_ngpb_sites.vgp_lon.tolist(),
                                     Books1968_ngpb_sites.vgp_lat.tolist())
NSVG_nnel_vgps_r = ipmag.make_di_block(nnel_data.vgp_lon.tolist(),
                                     nnel_data.vgp_lat.tolist())
NSVG_nnel_vgps = ipmag.do_flip(di_block=NSVG_nnel_vgps_r)
Grand_Portage_vgps = Books1968_vgps + NSVG_nnel_vgps
Grand_Portage_mean=pmag.fisher_mean(Grand_Portage_vgps)
ipmag.print_pole_mean(Grand_Portage_mean)
Plon: 201.7  Plat: 46.0
Number of directions in mean (n): 13
Angular radius of 95% confidence (A_95): 6.8
Precision parameter (k) estimate: 38.3
In [45]:
pole_means.loc['Grand Portage Basalts'] = pd.Series({'PoleName' : 'Grand Portage Basalts',
                                        'SLat' : 47.93,
                                        'SLon' : 270.28,
                                        'PLat' : round(Grand_Portage_mean['inc'],1),
                                        'PLon' : round(Grand_Portage_mean['dec'],1),
                                        'A95' : round(Grand_Portage_mean['alpha95'],1),
                                        'K' : round(Grand_Portage_mean['k'],1),
                                        'N' : int(Grand_Portage_mean['n']),
                                        'PolarityZone' : 'Alona Bay reversed-polarity zone',
                                        'PmagRef' : 'Books, 1968; Tauxe and Kodama, 2009',
                                        'AgeNominal' : 1106,
                                        'AgeLower' : 1105.28,
                                        'AgeUpper' : 1108,
                                        'AgeInfo' : 'Close to, but slightly older than, $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U 1105.60 $\pm$ 0.32 Ma based on date from Red Rock Rhyolite',
                                        'AgeRef' : 'this study',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '5',
                                        'color' : '#E0785F'})

North Shore Volcanic Group upper northeast limb pole

In [46]:
nneu_combined_vgp_lon = nneu_data_B72.vgp_lon.tolist() + nneu_data.vgp_lon.tolist()
nneu_combined_vgp_lat = nneu_data_B72.vgp_lat.tolist() + nneu_data.vgp_lat.tolist()


nneu_VGPs = ipmag.make_di_block(nneu_combined_vgp_lon,
                                nneu_combined_vgp_lat)
nneu_mean=pmag.fisher_mean(nneu_VGPs)
ipmag.print_pole_mean(nneu_mean)
Plon: 181.7  Plat: 31.1
Number of directions in mean (n): 28
Angular radius of 95% confidence (A_95): 4.2
Precision parameter (k) estimate: 42.2
In [47]:
pole_means.loc['NSVG_nneu'] = pd.Series({'PoleName' : 'North Shore Volcanic Group (upper NE sequence)',
                                        'SLat' : round(nneu_data_B72.lat.tolist()[0],2),
                                        'SLon' : 360+round(nneu_data_B72.lon.tolist()[0],2),
                                        'PLat' : round(nneu_mean['inc'],1),
                                        'PLon' : round(nneu_mean['dec'],1),
                                        'A95' : round(nneu_mean['alpha95'],1),
                                        'K' : round(nneu_mean['k'],1),
                                        'N' : int(nneu_mean['n']),
                                        'PolarityZone' : 'Portage Lake normal-polarity zone',
                                        'PmagRef' : 'Books, 1972; Tauxe and Kodama, 2009',
                                        'AgeNominal' : 1095,
                                        'AgeLower' : 1092,
                                        'AgeUpper' : 1098,
                                        'AgeInfo' : "Younger than the the Devil's Kettle Rhyolite $^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1097.7 $\pm$ 2.2 Ma, the new $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U 1093.38 $\pm$ 0.55 Ma date from the Grand Marais Rhyolite is near the top of the sequence with paleomagnetic data",
                                        'AgeRef' : 'Davis and Green, 1997; Fairchild et al., 2017',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '6',
                                        'color' : '#35474E'})
In [48]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,Books1968_ngpb_sites.vgp_lon.tolist(),
               Books1968_ngpb_sites.vgp_lat.tolist(),
               color=pole_means['color']['Grand Portage Basalts'],marker='o',
               label='Grand Portage basalts (Books, 1968)')
ipmag.plot_vgp(m,di_block=NSVG_nnel_vgps,
               color=pole_means['color']['Grand Portage Basalts'],marker='^',
               label='Grand Portage / Deronda Bay andesite (T&K, 2009)')
ipmag.plot_pole(m,pole_means['PLon']['Grand Portage Basalts'],
               pole_means['PLat']['Grand Portage Basalts'],
               pole_means['A95']['Grand Portage Basalts'],
               marker='s',color=pole_means['color']['Grand Portage Basalts'],
               edgecolor='k',markersize=30)

ipmag.plot_vgp(m,nneu_data_B72.vgp_lon.tolist(),
               nneu_data_B72.vgp_lat.tolist(),
               color=pole_means['color']['NSVG_nneu'],marker='o',
               label='upper northeast NSVG (Books, 1972)')
ipmag.plot_vgp(m,nneu_data.vgp_lon.tolist(),
               nneu_data.vgp_lat.tolist(),
               color=pole_means['color']['NSVG_nneu'],marker='^',
               label='upper northeast NSVG (T&K, 2009)')
ipmag.plot_pole(m,pole_means['PLon']['NSVG_nneu'],
               pole_means['PLat']['NSVG_nneu'],
               pole_means['A95']['NSVG_nneu'],
               marker='s',color=pole_means['color']['NSVG_nneu'],
               edgecolor='k',markersize=30)

plt.title('North Shore Volcanic Group northeast limb',fontsize=16)
m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
#plt.legend(bbox_to_anchor=(1.05, 0.25))
plt.legend(loc=8)
#plt.savefig('./Plots/vgps_NSVG_NE.svg')
plt.show()

North Shore Volcanic Group southwest limb pole

Import new Gooseberry Basalts data

In [49]:
GB_Data = pd.read_csv('../Data_New/Paleomagnetism/Gooseberry/sites.txt',sep='\t',skiprows=1)
GB_Data_tc = GB_Data[GB_Data['dir_tilt_correction'] == 100.0]
GB_Data_HT = GB_Data[GB_Data['dir_comp_name'] == 'HT']
GB_Data_HT = GB_Data_HT[GB_Data_HT['dir_tilt_correction'] == 100.0]
GB_Data_HT
Out[49]:
age age_high age_low age_sigma age_unit citations criteria dir_alpha95 dir_comp_name dir_dec dir_inc dir_k dir_n_samples dir_n_specimens dir_n_specimens_lines dir_n_specimens_planes dir_polarity dir_r dir_tilt_correction lat location lon method_codes result_quality result_type samples site software_packages specimens vgp_dm vgp_dp vgp_lat vgp_lon
1 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 4.5 HT 299.4 47.9 154 8 8 8 0 n 7.9545 100 47.2 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB1-1:GB1-2:GB1-3:GB1-4:GB1-5:GB1-6:GB1-7:GB1-8 GB1 pmagpy-3.8.9-2: demag_gui.v.3.0 GB1-1a:GB1-2a:GB1-3a:GB1-4a:GB1-5a:GB1-6a:GB1-7a:GB1-8a 5.9 3.8 40.3 179.5
3 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.2 HT 301.1 42.1 466 10 10 10 0 n 9.9807 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB10-10:GB10-1:GB10-2:GB10-3:GB10-4:GB10-5:GB10-6:GB10-7:GB10-8:GB10-9 GB10 pmagpy-3.8.9-2: demag_gui.v.3.0 GB10-10a:GB10-1a:GB10-2a:GB10-3a:GB10-4a:GB10-5a:GB10-6a:GB10-7a:GB10-8a:GB10-9a 2.7 1.7 38.5 173.8
5 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 4.7 HT 303.2 38.3 168 7 7 7 0 n 6.9643 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB11-1:GB11-2:GB11-3:GB11-4:GB11-7:GB11-8:GB11-9 GB11 pmagpy-3.8.9-2: demag_gui.v.3.0 GB11-1a:GB11-2a:GB11-3a:GB11-4a:GB11-7a:GB11-8a:GB11-9a 5.6 3.3 38.0 169.5
7 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 1.8 HT 303.0 41.0 1112 7 7 7 0 n 6.9946 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB12-1:GB12-2:GB12-3:GB12-5:GB12-6:GB12-7:GB12-8 GB12 pmagpy-3.8.9-2: demag_gui.v.3.0 GB12-1a:GB12-2a:GB12-3a:GB12-5a:GB12-6a:GB12-7a:GB12-8a 2.2 1.3 39.2 171.5
9 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.0 HT 295.1 42.3 742 8 8 8 0 t 7.9906 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB13-1:GB13-2:GB13-3:GB13-4:GB13-5:GB13-6:GB13-7:GB13-8 GB13 pmagpy-3.8.9-2: demag_gui.v.3.0 GB13-1a:GB13-2a:GB13-3a:GB13-4a:GB13-5a:GB13-6a:GB13-7a:GB13-8a 2.5 1.5 34.5 178.4
11 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 3.8 HT 298.3 42.4 249 7 7 7 0 n 6.9759 100 47.1 Gooseberry 268.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB14-1:GB14-2:GB14-3:GB14-4:GB14-5:GB14-6:GB14-7 GB14 pmagpy-3.8.9-2: demag_gui.v.3.0 GB14-1a:GB14-2a:GB14-3a:GB14-4a:GB14-5a:GB14-6a:GB14-7a 4.7 2.9 36.7 176.1
13 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.1 HT 302.5 45.0 835 7 7 7 0 n 6.9928 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB15-1:GB15-3:GB15-4:GB15-5:GB15-6:GB15-7:GB15-8 GB15 pmagpy-3.8.9-2: demag_gui.v.3.0 GB15-1a:GB15-3a:GB15-4a:GB15-5a:GB15-6a:GB15-7a:GB15-8a 2.7 1.7 40.9 174.9
15 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.8 HT 295.0 41.6 382 8 8 8 0 t 7.9817 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB16-1:GB16-2:GB16-3:GB16-4:GB16-5:GB16-6:GB16-7:GB16-8 GB16 pmagpy-3.8.9-2: demag_gui.v.3.0 GB16-1a:GB16-2a:GB16-3a:GB16-4a:GB16-5a:GB16-6a:GB16-7a:GB16-8a 3.4 2.1 34.1 178.0
17 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 3.1 HT 300.8 46.3 464 6 6 6 0 n 5.9892 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB17-1:GB17-2:GB17-4:GB17-5:GB17-7:GB17-8 GB17 pmagpy-3.8.9-2: demag_gui.v.3.0 GB17-1a:GB17-2a:GB17-4a:GB17-5a:GB17-7a:GB17-8a 4.0 2.5 40.4 177.2
19 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 4.3 HT 306.7 41.9 239 6 6 6 0 n 5.9791 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB18-2:GB18-3:GB18-5:GB18-6:GB18-7:GB18-8 GB18 pmagpy-3.8.9-2: demag_gui.v.3.0 GB18-2a:GB18-3a:GB18-5a:GB18-6a:GB18-7a:GB18-8a 5.3 3.2 42.1 169.1
21 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 1.7 HT 299.5 44.7 1107 8 8 8 0 n 7.9937 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB19-1:GB19-2:GB19-3:GB19-4:GB19-5:GB19-6:GB19-7:GB19-8 GB19 pmagpy-3.8.9-2: demag_gui.v.3.0 GB19-1a:GB19-2a:GB19-3a:GB19-4a:GB19-5a:GB19-6a:GB19-7a:GB19-8a 2.1 1.4 38.7 176.9
23 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.0 HT 299.3 47.2 793 8 8 8 0 n 7.9912 100 47.2 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB2-1:GB2-2:GB2-3:GB2-4:GB2-5:GB2-6:GB2-7:GB2-8 GB2 pmagpy-3.8.9-2: demag_gui.v.3.0 GB2-1a:GB2-2a:GB2-3a:GB2-4a:GB2-5a:GB2-6a:GB2-7a:GB2-8a 2.6 1.7 39.9 179.0
25 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 3.2 HT 299.4 45.3 361 7 7 7 0 n 6.9834 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB20-2:GB20-3:GB20-4:GB20-5:GB20-6:GB20-7:GB20-8 GB20 pmagpy-3.8.9-2: demag_gui.v.3.0 GB20-2a:GB20-3a:GB20-4a:GB20-5a:GB20-6a:GB20-7a:GB20-8a 4.1 2.6 38.9 177.5
27 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.2 HT 301.5 42.9 633 8 8 8 0 n 7.9889 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB21-1:GB21-2:GB21-3:GB21-4:GB21-5:GB21-6:GB21-7:GB21-8 GB21 pmagpy-3.8.9-2: demag_gui.v.3.0 GB21-1a:GB21-2a:GB21-3a:GB21-4a:GB21-5a:GB21-6a:GB21-7a:GB21-8a 2.7 1.7 39.1 174.0
29 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.6 HT 302.6 41.1 469 8 8 8 0 n 7.9851 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB22-1:GB22-2:GB22-3:GB22-4:GB22-5:GB22-6:GB22-7:GB22-8 GB22 pmagpy-3.8.9-2: demag_gui.v.3.0 GB22-1a:GB22-2a:GB22-3a:GB22-4a:GB22-5a:GB22-6a:GB22-7a:GB22-8a 3.2 1.9 39.0 171.9
31 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 4.2 HT 299.7 44.3 177 8 8 8 0 n 7.9605 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB23-10:GB23-11:GB23-1:GB23-3:GB23-4:GB23-5:GB23-7:GB23-8 GB23 pmagpy-3.8.9-2: demag_gui.v.3.0 GB23-10a:GB23-11a:GB23-1a:GB23-3a:GB23-4a:GB23-5a:GB23-7a:GB23-8a 5.3 3.3 38.6 176.5
33 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.9 HT 296.7 45.1 283 10 10 10 0 n 9.9682 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB24-10:GB24-1:GB24-2:GB24-3:GB24-4:GB24-5:GB24-6:GB24-7:GB24-8:GB24-9 GB24 pmagpy-3.8.9-2: demag_gui.v.3.0 GB24-10a:GB24-1a:GB24-2a:GB24-3a:GB24-4a:GB24-5a:GB24-6a:GB24-7a:GB24-8a:GB24-9a 3.7 2.3 37.0 179.3
35 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 5.8 HT 296.0 45.7 111 7 7 7 0 n 6.9460 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB25-1:GB25-3:GB25-4:GB25-5:GB25-6:GB25-7:GB25-8 GB25 pmagpy-3.8.9-2: demag_gui.v.3.0 GB25-1a:GB25-3a:GB25-4a:GB25-5a:GB25-6a:GB25-7a:GB25-8a 7.4 4.7 36.8 180.3
37 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.1 HT 303.0 37.8 725 8 8 8 0 n 7.9903 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB26-1:GB26-2:GB26-3:GB26-4:GB26-6:GB26-7:GB26-8:GB26-9 GB26 pmagpy-3.8.9-2: demag_gui.v.3.0 GB26-1a:GB26-2a:GB26-3a:GB26-4a:GB26-6a:GB26-7a:GB26-8a:GB26-9a 2.5 1.5 37.6 169.4
39 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.3 HT 302.9 41.5 584 8 8 8 0 n 7.9880 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB27-1:GB27-2:GB27-3:GB27-4:GB27-5:GB27-6:GB27-7:GB27-8 GB27 pmagpy-3.8.9-2: demag_gui.v.3.0 GB27-1a:GB27-2a:GB27-3a:GB27-4a:GB27-5a:GB27-6a:GB27-7a:GB27-8a 2.8 1.7 39.4 171.9
41 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.0 HT 302.2 42.8 1163 6 6 6 0 n 5.9957 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB28-1:GB28-2:GB28-3:GB28-4:GB28-5:GB28-6 GB28 pmagpy-3.8.9-2: demag_gui.v.3.0 GB28-1a:GB28-2a:GB28-3a:GB28-4a:GB28-5a:GB28-6a 2.5 1.5 39.6 173.4
43 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 3.5 HT 299.0 39.3 297 7 7 7 0 n 6.9798 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB29-1:GB29-2:GB29-3:GB29-4:GB29-5:GB29-6:GB29-7 GB29 pmagpy-3.8.9-2: demag_gui.v.3.0 GB29-1a:GB29-2a:GB29-3a:GB29-4a:GB29-5a:GB29-6a:GB29-7a 4.2 2.5 35.7 173.5
45 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.1 HT 302.8 43.0 720 8 8 8 0 n 7.9903 100 47.2 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB3-1:GB3-2:GB3-3:GB3-4:GB3-5:GB3-6:GB3-7:GB3-8 GB3 pmagpy-3.8.9-2: demag_gui.v.3.0 GB3-1a:GB3-2a:GB3-3a:GB3-4a:GB3-5a:GB3-6a:GB3-7a:GB3-8a 2.6 1.6 40.1 173.0
47 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 7.6 HT 325.5 39.0 64 7 7 7 0 n 6.9063 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB30-1:GB30-2:GB30-3:GB30-4:GB30-5:GB30-6:GB30-7 GB30 pmagpy-3.8.9-2: demag_gui.v.3.0 GB30-1a:GB30-2a:GB30-3a:GB30-4a:GB30-5a:GB30-6a:GB30-7a 9.1 5.4 52.6 148.4
49 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 1.7 HT 286.1 36.9 1285 7 7 7 0 t 6.9953 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB31-2:GB31-3:GB31-5:GB31-6:GB31-7:GB31-8:GB31-9 GB31 pmagpy-3.8.9-2: demag_gui.v.3.0 GB31-2a:GB31-3a:GB31-5a:GB31-6a:GB31-7a:GB31-8a:GB31-9a 2.0 1.2 25.7 181.6
51 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.3 HT 284.5 45.6 560 8 8 8 0 t 7.9875 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB32-1:GB32-2:GB32-3:GB32-4:GB32-5:GB32-6:GB32-7:GB32-8 GB32 pmagpy-3.8.9-2: demag_gui.v.3.0 GB32-1a:GB32-2a:GB32-3a:GB32-4a:GB32-5a:GB32-6a:GB32-7a:GB32-8a 2.9 1.9 29.0 188.1
53 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 3.9 HT 290.9 49.3 202 8 8 8 0 n 7.9653 100 47.2 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB4-1:GB4-2:GB4-3:GB4-4:GB4-5:GB4-6:GB4-7:GB4-8 GB4 pmagpy-3.8.9-2: demag_gui.v.3.0 GB4-1a:GB4-2a:GB4-3a:GB4-4a:GB4-5a:GB4-6a:GB4-7a:GB4-8a 5.2 3.4 35.3 186.6
55 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.1 HT 352.4 -54.2 845 7 7 7 0 t 6.9929 100 47.2 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB5-1:GB5-3:GB5-4:GB5-5:GB5-6:GB5-7:GB5-8 GB5 pmagpy-3.8.9-2: demag_gui.v.3.0 GB5-1a:GB5-3a:GB5-4a:GB5-5a:GB5-6a:GB5-7a:GB5-8a 3.0 2.1 7.8 94.8
57 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.6 HT 316.7 48.1 383 9 9 9 0 n 8.9791 100 47.2 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB6-1:GB6-2:GB6-3:GB6-4:GB6-5:GB6-6:GB6-7:GB6-8:GB6-9 GB6 pmagpy-3.8.9-2: demag_gui.v.3.0 GB6-1a:GB6-2a:GB6-3a:GB6-4a:GB6-5a:GB6-6a:GB6-7a:GB6-8a:GB6-9a 3.4 2.2 52.1 165.7
59 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 4.6 HT 298.4 37.4 126 9 9 9 0 t 8.9363 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB7-10:GB7-1:GB7-2:GB7-3:GB7-4:GB7-5:GB7-6:GB7-8:GB7-9 GB7 pmagpy-3.8.9-2: demag_gui.v.3.0 GB7-10a:GB7-1a:GB7-2a:GB7-3a:GB7-4a:GB7-5a:GB7-6a:GB7-8a:GB7-9a 5.4 3.2 34.3 172.8
61 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 2.3 HT 298.5 38.6 486 9 9 9 0 t 8.9835 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB8-1:GB8-2:GB8-3:GB8-4:GB8-5:GB8-6:GB8-7:GB8-8:GB8-9 GB8 pmagpy-3.8.9-2: demag_gui.v.3.0 GB8-1a:GB8-2a:GB8-3a:GB8-4a:GB8-5a:GB8-6a:GB8-7a:GB8-8a:GB8-9a 2.7 1.6 35.0 173.4
63 1095.25 1095.8 1094.7 0.55 Years Cal BP This study ACCEPT 3.9 HT 301.0 34.7 238 7 7 7 0 t 6.9748 100 47.1 Gooseberry -91.5 LP-DIR-T:DE-BFL:DA-DIR-TILT:LP-DC4:DE-FM:DA-DIR-GEO g i GB9-2:GB9-4:GB9-5:GB9-6:GB9-7:GB9-8:GB9-9 GB9 pmagpy-3.8.9-2: demag_gui.v.3.0 GB9-2a:GB9-4a:GB9-5a:GB9-6a:GB9-7a:GB9-8a:GB9-9a 4.5 2.6 34.8 169.1
In [50]:
plt.figure(num=1,figsize=(5,5))
ipmag.plot_net(1)

for i in list(GB_Data_HT.index.values):
    ipmag.plot_di_mean(GB_Data_HT['dir_dec'][i], GB_Data_HT['dir_inc'][i],
                       GB_Data_HT['dir_alpha95'][i])
    
plt.title('Gooseberry HT directions')
plt.show()
In [51]:
GB_Data_HT.to_latex(columns=['site','dir_n_samples','dir_dec','dir_inc','dir_k','dir_r','dir_alpha95','vgp_lat','vgp_lon'])
Out[51]:
'\\begin{tabular}{llrrrrrrrr}\n\\toprule\n{} &  site &  dir\\_n\\_samples &  dir\\_dec &  dir\\_inc &  dir\\_k &   dir\\_r &  dir\\_alpha95 &  vgp\\_lat &  vgp\\_lon \\\\\n\\midrule\n1  &  GB1 &  8 &  299.4 &  47.9 &  154 &  7.9545 &  4.5 &  40.3 &  179.5 \\\\\n3  &  GB10 &  10 &  301.1 &  42.1 &  466 &  9.9807 &  2.2 &  38.5 &  173.8 \\\\\n5  &  GB11 &  7 &  303.2 &  38.3 &  168 &  6.9643 &  4.7 &  38.0 &  169.5 \\\\\n7  &  GB12 &  7 &  303.0 &  41.0 &  1112 &  6.9946 &  1.8 &  39.2 &  171.5 \\\\\n9  &  GB13 &  8 &  295.1 &  42.3 &  742 &  7.9906 &  2.0 &  34.5 &  178.4 \\\\\n11 &  GB14 &  7 &  298.3 &  42.4 &  249 &  6.9759 &  3.8 &  36.7 &  176.1 \\\\\n13 &  GB15 &  7 &  302.5 &  45.0 &  835 &  6.9928 &  2.1 &  40.9 &  174.9 \\\\\n15 &  GB16 &  8 &  295.0 &  41.6 &  382 &  7.9817 &  2.8 &  34.1 &  178.0 \\\\\n17 &  GB17 &  6 &  300.8 &  46.3 &  464 &  5.9892 &  3.1 &  40.4 &  177.2 \\\\\n19 &  GB18 &  6 &  306.7 &  41.9 &  239 &  5.9791 &  4.3 &  42.1 &  169.1 \\\\\n21 &  GB19 &  8 &  299.5 &  44.7 &  1107 &  7.9937 &  1.7 &  38.7 &  176.9 \\\\\n23 &  GB2 &  8 &  299.3 &  47.2 &  793 &  7.9912 &  2.0 &  39.9 &  179.0 \\\\\n25 &  GB20 &  7 &  299.4 &  45.3 &  361 &  6.9834 &  3.2 &  38.9 &  177.5 \\\\\n27 &  GB21 &  8 &  301.5 &  42.9 &  633 &  7.9889 &  2.2 &  39.1 &  174.0 \\\\\n29 &  GB22 &  8 &  302.6 &  41.1 &  469 &  7.9851 &  2.6 &  39.0 &  171.9 \\\\\n31 &  GB23 &  8 &  299.7 &  44.3 &  177 &  7.9605 &  4.2 &  38.6 &  176.5 \\\\\n33 &  GB24 &  10 &  296.7 &  45.1 &  283 &  9.9682 &  2.9 &  37.0 &  179.3 \\\\\n35 &  GB25 &  7 &  296.0 &  45.7 &  111 &  6.9460 &  5.8 &  36.8 &  180.3 \\\\\n37 &  GB26 &  8 &  303.0 &  37.8 &  725 &  7.9903 &  2.1 &  37.6 &  169.4 \\\\\n39 &  GB27 &  8 &  302.9 &  41.5 &  584 &  7.9880 &  2.3 &  39.4 &  171.9 \\\\\n41 &  GB28 &  6 &  302.2 &  42.8 &  1163 &  5.9957 &  2.0 &  39.6 &  173.4 \\\\\n43 &  GB29 &  7 &  299.0 &  39.3 &  297 &  6.9798 &  3.5 &  35.7 &  173.5 \\\\\n45 &  GB3 &  8 &  302.8 &  43.0 &  720 &  7.9903 &  2.1 &  40.1 &  173.0 \\\\\n47 &  GB30 &  7 &  325.5 &  39.0 &  64 &  6.9063 &  7.6 &  52.6 &  148.4 \\\\\n49 &  GB31 &  7 &  286.1 &  36.9 &  1285 &  6.9953 &  1.7 &  25.7 &  181.6 \\\\\n51 &  GB32 &  8 &  284.5 &  45.6 &  560 &  7.9875 &  2.3 &  29.0 &  188.1 \\\\\n53 &  GB4 &  8 &  290.9 &  49.3 &  202 &  7.9653 &  3.9 &  35.3 &  186.6 \\\\\n55 &  GB5 &  7 &  352.4 & -54.2 &  845 &  6.9929 &  2.1 &  7.8 &  94.8 \\\\\n57 &  GB6 &  9 &  316.7 &  48.1 &  383 &  8.9791 &  2.6 &  52.1 &  165.7 \\\\\n59 &  GB7 &  9 &  298.4 &  37.4 &  126 &  8.9363 &  4.6 &  34.3 &  172.8 \\\\\n61 &  GB8 &  9 &  298.5 &  38.6 &  486 &  8.9835 &  2.3 &  35.0 &  173.4 \\\\\n63 &  GB9 &  7 &  301.0 &  34.7 &  238 &  6.9748 &  3.9 &  34.8 &  169.1 \\\\\n\\bottomrule\n\\end{tabular}\n'

The site means all form a coherent cluster with the exception of the GB5 site mean which is north and up in orientation rather than NE and down. We interpret this flow to be recording an excursion and therefore exclude it from the calculation of a new pole.

In [52]:
GB_Data_HT_filtered = GB_Data_HT[GB_Data_HT.site != 'GB5']
In [53]:
GB_mean_pole = ipmag.fisher_mean(GB_Data_HT_filtered['vgp_lon'].tolist(),GB_Data_HT_filtered['vgp_lat'].tolist())
ipmag.print_pole_mean(GB_mean_pole)

m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()
ipmag.plot_vgp(m,GB_Data_HT_filtered['vgp_lon'].tolist(),GB_Data_HT_filtered['vgp_lat'].tolist(),
               color='DarkBlue',label='Gooseberry VGPs')
Plon: 174.9  Plat: 38.4
Number of directions in mean (n): 31
Angular radius of 95% confidence (A_95): 2.3
Precision parameter (k) estimate: 125.8

Combine data for North Shore Volcanic Group upper southwest limb pole

The North Shore Volcanic Group (NSVG) is comprised of two main limbs with distinct stratigraphy and radiometric age control. The southwest limb of the NSVG ('nswu') was particularly well-sampled by Tauxe and Kodama (2009) and we now add data from 31 additional flows of the Gooseberry Basalts. All of these sites can be bracketed with U-Pb dates from the Lakewood icelandite and the Palisade rhyolite.

In [54]:
nswu_vgp_lons = nswu_data.vgp_lon.tolist() + GB_Data_HT_filtered.vgp_lon.tolist()
nswu_vgp_lats = nswu_data.vgp_lat.tolist() + GB_Data_HT_filtered.vgp_lat.tolist()

nswu_VGPs = ipmag.make_di_block(nswu_vgp_lons,nswu_vgp_lats)
nswu_mean=pmag.fisher_mean(nswu_VGPs)
ipmag.print_pole_mean(nswu_mean)
Plon: 179.3  Plat: 36.9
Number of directions in mean (n): 78
Angular radius of 95% confidence (A_95): 2.1
Precision parameter (k) estimate: 56.8
In [55]:
pole_means.loc['NSVG_nswu'] = pd.Series({'PoleName' : 'North Shore Volcanic Group (upper SW sequence)',
                                        'SLat' : round(GB_Data_HT.lat.tolist()[0],2),
                                        'SLon' : round((360+GB_Data_HT.lon.tolist()[0]),2),
                                        'PLat' : round(nswu_mean['inc'],1),
                                        'PLon' : round(nswu_mean['dec'],1),
                                        'A95' : round(nswu_mean['alpha95'],1),
                                        'K' : round(nswu_mean['k'],1),
                                        'N' : int(nswu_mean['n']),
                                        'PolarityZone' : 'Portage Lake normal-polarity zone',
                                        'PmagRef' : 'Tauxe and Kodama, 2009; this study',
                                        'AgeNominal' : 1096.18,
                                        'AgeLower' : 1093.94,
                                        'AgeUpper' : 1096.75,
                                        'AgeInfo' : '$^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on 40th Ave. Icelandite (1096.75 $\pm$ 0.28) provides a lower bound, the $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on the Two Harbors Icelandite is within the sequence (1096.18 $\pm$ 0.32) and the Palisade Rhyolite (1093.94 $\pm$ 0.28) provides an upper bound',
                                        'AgeRef' : 'this study',
                                        'GaussianOrUniform' : 'gaussian',
                                        'Gaussian_2sigma' : round(((1096.18-1093.94)/2),2),
                                        'Q' : '6',
                                        'color' : '#154F8D'})
In [56]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,nswu_data['vgp_lon'].tolist(),nswu_data['vgp_lat'].tolist(),
               color=pole_means['color']['NSVG_nswu'],label='upper SW NSVG (T&K, 2009)')
ipmag.plot_vgp(m,GB_Data_HT_filtered['vgp_lon'].tolist(),
               GB_Data_HT_filtered['vgp_lat'].tolist(),
               color=pole_means['color']['NSVG_nswu'],marker='^',
               label='upper SW NSVG; Gooseberry Basalts (this study)')
ipmag.plot_pole(m,pole_means['PLon']['NSVG_nswu'],
                pole_means['PLat']['NSVG_nswu'],
                pole_means['A95']['NSVG_nswu'],
                marker='s',color=pole_means['color']['NSVG_nswu'],
                edgecolor='k',markersize=30)

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
#plt.legend(bbox_to_anchor=(1.0, 0.25))
plt.legend(loc=8)
plt.title('North Shore Volcanic Group southwest limb',fontsize=16)
#plt.savefig('./Plots/vgps_NSVG_SW.svg')
plt.show()

Schroeder Lutsen Basalts

The pole published for the Schroeder-Lutsen Basalts in Fairchild et al., 2017 combined data from 40 new sites with data from 10 sites within the basalts developed by Tauxe and Kodama (2009).

In [57]:
combined_SLB_lon = nsl_data['vgp_lon'].tolist() + Fairchild2017_SLB['vgp_lon'].tolist()
combined_SLB_lat = nsl_data['vgp_lat'].tolist() + Fairchild2017_SLB['vgp_lat'].tolist()
SLB_pole = ipmag.fisher_mean(combined_SLB_lon,combined_SLB_lat)
ipmag.print_pole_mean(SLB_pole)
Plon: 188.0  Plat: 26.9
Number of directions in mean (n): 50
Angular radius of 95% confidence (A_95): 3.0
Precision parameter (k) estimate: 45.4

In addition to the sites in the pole above, sites were developed by Books (1972) from the Schroeder-Lutsen Basalts that can be added to the pole.

In [58]:
combined_SLB_lon_new = nsl_data['vgp_lon'].tolist() + Fairchild2017_SLB['vgp_lon'].tolist() + nsl_data_B72['vgp_lon'].tolist()
combined_SLB_lat_new = nsl_data['vgp_lat'].tolist() + Fairchild2017_SLB['vgp_lat'].tolist() + nsl_data_B72['vgp_lat'].tolist()
SLB_pole_new = ipmag.fisher_mean(combined_SLB_lon_new,combined_SLB_lat_new)
ipmag.print_pole_mean(SLB_pole_new)
Plon: 187.6  Plat: 28.3
Number of directions in mean (n): 65
Angular radius of 95% confidence (A_95): 2.5
Precision parameter (k) estimate: 50.5
In [59]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_pole(m,SLB_pole['dec'],
                SLB_pole['inc'],
                SLB_pole['alpha95'],
                marker='s',color='DarkBlue',
                label='pole in Fairchild et al. 2017')
ipmag.plot_pole(m,SLB_pole_new['dec'],
                SLB_pole_new['inc'],
                SLB_pole_new['alpha95'],
                marker='s',color='Blue',
                label='updated pole with Books (1972) data')
m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.legend(loc=8)
plt.title('Schroeder-Lutsen Basalts')
plt.show()
In [60]:
pole_means.loc['SLB'] = pd.Series({'PoleName' : 'Schroeder Lutsen Basalts',
                                        'SLat' : 47.54,
                                        'SLon' : 269.10,
                                        'PLat' : round(SLB_pole_new['inc'],1),
                                        'PLon' : round(SLB_pole_new['dec'],1),
                                        'A95' : round(SLB_pole_new['alpha95'],1),
                                        'K' : round(SLB_pole_new['k'],1),
                                        'N' : int(SLB_pole_new['n']),
                                        'PolarityZone' : 'Portage Lake normal-polarity zone',
                                        'PmagRef' : 'Books, 1972; Tauxe and Kodama, 2009; Fairchild et al., 2017',
                                        'AgeNominal' : 1090,
                                        'AgeLower' : 1085,
                                        'AgeUpper' : 1091.5,
                                        'AgeInfo' : '$^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of of 1091.48 $\pm$ 0.21 Ma on Beaver Bay Complex aplite provides maximum age constraint',
                                        'AgeRef' : 'Fairchild et al., 2017',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '6',
                                        'color' : '#8DC2DC'})
In [61]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,nsl_data_B72['vgp_lon'].tolist(),nsl_data_B72['vgp_lat'].tolist(),
               color=pole_means['color']['SLB'],marker='o',label='SLB (Books, 1972)')
ipmag.plot_vgp(m,nsl_data['vgp_lon'].tolist(),nsl_data['vgp_lat'].tolist(),
               color=pole_means['color']['SLB'],marker='^',label='SLB (Tauxe & Kodama, 2009)')
ipmag.plot_vgp(m,Fairchild2017_SLB['vgp_lon'].tolist(),Fairchild2017_SLB['vgp_lat'].tolist(),
               color=pole_means['color']['SLB'],marker='>',label='SLB (Fairchild et al., 2017)')
ipmag.plot_pole(m,pole_means['PLon']['SLB'],
                pole_means['PLat']['SLB'],
                pole_means['A95']['SLB'],
                marker='s',color=pole_means['color']['SLB'],
                edgecolor='k',markersize=30)

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.legend(loc=8)
plt.title('Schroeder-Lutsen Basalts',fontsize=16)
#plt.savefig('./Plots/vgps_SLB.svg')
plt.show()

Portage Lake Volcanics and Lake Shore Traps

Books (1972) and Hnat et al. (2006) published paleomagnetic data from the lava flows of the Portage Lake Volcanics. We seek to calculate a pole from these data that are constrained by our new dates from the Copper City Flow and the Greenstone Flow. These stratigraphic position of the sites needs to be considered in order to select such sites. Additionally, flows such as the Greenstone Flow were sampled repeatedly by Books (1972) and Hnat et al. (2006). Such data need to be combined such that data from an individual cooling units are not considered as multiple sites for the calculation of the poel.

Books (1972) data

The data from Books (1972) was unpacked from the MagIC database file above and below the data from the Portage Lake Volcanics are extracted from that site level data.

In [62]:
Books1972_PLV_sites = Books1972_sites[Books1972_sites.formation == 'Portage Lake Volcanics']

Import Hnat et al. (2006)

The data from Hnat et al. (2006) can be unpacked from the MagIC database file.

Hnat, J. S., van der Pluijm, B. A., and Van der Voo, R., 2006, Primary curvature in the Mid-Continent Rift: Paleomagnetism of the Portage Lake Volcanics (northern Michigan, USA): Tectonophysics, vol. 425, pp. 71–82, doi:10.1016/j.tecto.2006.07.006.

Link to MagIC contribution: http://earthref.org/MAGIC/doi/10.1016/j.tecto.2006.07.006

In [63]:
%%capture
ipmag.download_magic('Hnat2006_MagIC.txt',
                     dir_path='../Data_Compiled/Hnat2006',
                     input_dir_path='../Data_Compiled/Hnat2006',
                     overwrite=True,print_progress=False)
In [64]:
Hnat2006_sites = pd.read_csv('../Data_Compiled/Hnat2006/sites.txt',sep='\t',header=1)
In [65]:
#Flows between CC and GS inclusive of the CC flow
PLV_CCtoGS = ['PL343',
              'PL61',
              'PL325',
              'PL60',
              'PL58',
              'PL57',
              'PL60',
              'PL327',
              'PL326',
              'PL56',
              'PL55',
              'PL324',
              'PL53',
              'PL323',
              'PL52',
              'PL330',
              'PL51',
              'PL344',
              'PL331',
              'PL50',
              'PL150',
              'PL1',
              'PL3',
              'PL6',
              'PL5',
              'PL4',
              'PL7',
              'PL35',
              'PL158',
              'PL160',
              'PL159',
              'PL157'
              'PL154',
              'PL153']
        
              
#Kearsarge Flow is between CC and GS and has two books sites within it
PLV_Kearsarge = ['PL54',
                 'PL335']

#Scales Creek Flow is between CC and GS and has two books sites within it
PLV_Scales = ['PL59',
              'PL341']

#There are many Books sites within the Greenstone Flow
PLV_GS = ['PL34',
          'PL33',
          'PL32'
          'PL345',
          'PL346',
          'PL347',
          'PL348',
          'PL349']

#PLV flows between the GS flow and Conglomerate No. 16 (all within ~1000 ft)
PLV_GS_16 = ['PL8',
             'PL9',
             'PL10',
             'PL11',
             'PL12',
             'PL13',
             'PL14',
             'PL19',
             'PL20',
             'PL22',
             'PL24',
             'PL25',
             'PL26',
             'PL27'] 

#PLV flows above Conglomerate No. 16 1000 feet and more above GS flow
PLV_16_top = ['PL49',
              'PL333',
              'PL44']

#Ashbed Flow has a lot of sites in it that Books used to test for curvature.
#The Ashbed Flow is above Conglomerate No. 16
PLV_Ashbed = ['PL329',
              'PL43',
              'PL340',
              'PL338',
              'PL339',
              'PL342']
In [66]:
#Two of the Hnat flows are to the NE of the Copper City Flow, but appear to be below it
Hnat_bottom_CC = ['H_PL10',
                  'H_PL17']

#PL26, PL27, PL28, PL29, PL30, PL31, PL32 are to the SW of the CC and GS flow. 
#They appear to be in the middle of the PLV and likely between the units in time
#Note that H_PL33 is not in the PLV
Hnat_CC_GS = ['H_PL15',
             'H_PL21',
             'H_PL13',
             'H_PL11',
             'H_PL06',
             'H_PL04',
             'H_PL03',
             'H_PL02',
             'H_PL01',
             'H_PL08',
             'H_PL24',
             'H_PL25',
             'H_PL19',
             'H_PL26',
             'H_PL27',
             'H_PL28',
             'H_PL29',
             'H_PL30',
             'H_PL31',
             'H_PL32']
              
Hnat_GS_top = ['H_PL22',
             'H_PL23',
             'H_PL07',
             'H_PL05',
             'H_PL12']
             
Hnat_GS = ['H_PL14','H_PL16','H_PL20']

Books (1972) sampled flows like the Greenstone Flow multiple times which each sample locality being called a site. Given that these sites are from the same cooling unit they should be combined into a single flow mean. Hnat et al. (2006) sampled this flow as well. Other flows were samples multiple times. The mean VGPs for these multiply sampled flows are calculated below.

In [67]:
PLV_Ashbed_B72 = Books1972_PLV_sites.loc[Books1972_PLV_sites['site'].isin(PLV_Ashbed)]
PLV_Ashbed_B72_mean_vgp = ipmag.fisher_mean(dec=PLV_Ashbed_B72.vgp_lon.tolist(),
                                            inc=PLV_Ashbed_B72.vgp_lat.tolist()) 

PLV_Greenstone_B72 = Books1972_PLV_sites.loc[Books1972_PLV_sites['site'].isin(PLV_GS)]
PLV_Greenstone_H06 = Hnat2006_sites.loc[Hnat2006_sites['site'].isin(Hnat_GS)]
PLV_Greenstone_mean_vgp = ipmag.fisher_mean(dec=PLV_Greenstone_B72.vgp_lon.tolist()+PLV_Greenstone_H06.vgp_lon.tolist(),
                                            inc=PLV_Greenstone_B72.vgp_lat.tolist()+PLV_Greenstone_H06.vgp_lat.tolist()) 

PLV_Kearsarge_B72 = Books1972_PLV_sites.loc[Books1972_PLV_sites['site'].isin(PLV_Kearsarge)]
PLV_Kearsarge_B72_mean_vgp = ipmag.fisher_mean(dec=PLV_Kearsarge_B72.vgp_lon.tolist(),
                                            inc=PLV_Kearsarge_B72.vgp_lat.tolist()) 

PLV_Scales_B72 = Books1972_PLV_sites.loc[Books1972_PLV_sites['site'].isin(PLV_Scales)]
PLV_Scales_B72_mean_vgp = ipmag.fisher_mean(dec=PLV_Scales_B72.vgp_lon.tolist(),
                                            inc=PLV_Scales_B72.vgp_lat.tolist()) 
In [68]:
PLV_CCtoGS_B72 = Books1972_PLV_sites.loc[Books1972_PLV_sites['site'].isin(PLV_CCtoGS)]

PLV_GS_16_B72 = Books1972_PLV_sites.loc[Books1972_PLV_sites['site'].isin(PLV_GS_16)]

PLV_16_top_B72 = Books1972_PLV_sites.loc[Books1972_PLV_sites['site'].isin(PLV_16_top)]

PLV_bottom_CC_H06 = Hnat2006_sites.loc[Hnat2006_sites['site'].isin(Hnat_bottom_CC)]

PLV_CCtoGS_H06 = Hnat2006_sites.loc[Hnat2006_sites['site'].isin(Hnat_CC_GS)]

PLV_GS_top_H06 = Hnat2006_sites.loc[Hnat2006_sites['site'].isin(Hnat_GS_top)]
In [69]:
PLV_pole_lons = []
PLV_pole_lons = \
PLV_bottom_CC_H06['vgp_lon'].tolist()\
+ PLV_CCtoGS_H06['vgp_lon'].tolist()\
+ PLV_GS_top_H06['vgp_lon'].tolist()\
+ PLV_CCtoGS_B72['vgp_lon'].tolist()\
+ PLV_GS_16_B72['vgp_lon'].tolist()\
+ PLV_16_top_B72['vgp_lon'].tolist()\
+ [PLV_Kearsarge_B72_mean_vgp['dec'],PLV_Greenstone_mean_vgp['dec'],PLV_Scales_B72_mean_vgp['dec'],PLV_Ashbed_B72_mean_vgp['dec']]\

PLV_pole_lats = \
PLV_bottom_CC_H06['vgp_lat'].tolist()\
+ PLV_CCtoGS_H06['vgp_lat'].tolist()\
+ PLV_GS_top_H06['vgp_lat'].tolist()\
+ PLV_CCtoGS_B72['vgp_lat'].tolist()\
+ PLV_GS_16_B72['vgp_lat'].tolist()\
+ PLV_16_top_B72['vgp_lat'].tolist()\
+ [PLV_Kearsarge_B72_mean_vgp['inc'],PLV_Greenstone_mean_vgp['inc'],PLV_Scales_B72_mean_vgp['inc'],PLV_Ashbed_B72_mean_vgp['inc']]\

PLV_pole = ipmag.fisher_mean(dec=PLV_pole_lons,inc=PLV_pole_lats)
ipmag.print_pole_mean(PLV_pole)
Plon: 182.5  Plat: 27.5
Number of directions in mean (n): 78
Angular radius of 95% confidence (A_95): 2.3
Precision parameter (k) estimate: 48.7

To have a mean flow effectively bracketed by dates from the Copper City and Greenstone flows, we combine the flows from Books 1972 and Hnat 2006 from between and including the two flows. Flows between the Greenstone Flow and that were densely sampled by Books (1972) in the ~300 meters above the Greenstone Flow.

In [70]:
PLV_CC_GS_pole_lons = []
PLV_CC_GS_pole_lons = PLV_CCtoGS_H06['vgp_lon'].tolist()\
+ PLV_CCtoGS_B72['vgp_lon'].tolist()\
+ [PLV_Kearsarge_B72_mean_vgp['dec'],PLV_Greenstone_mean_vgp['dec'],PLV_Scales_B72_mean_vgp['dec']]\

PLV_CC_GS_pole_lats = []
PLV_CC_GS_pole_lats = PLV_CCtoGS_H06['vgp_lat'].tolist()\
+ PLV_CCtoGS_B72['vgp_lat'].tolist()\
+ [PLV_Kearsarge_B72_mean_vgp['inc'],PLV_Greenstone_mean_vgp['inc'],PLV_Scales_B72_mean_vgp['inc']]

PLV_CC_Cong16_pole_lons = []
PLV_CC_Cong16_pole_lons = PLV_CCtoGS_H06['vgp_lon'].tolist()\
+ PLV_CCtoGS_B72['vgp_lon'].tolist()\
+ PLV_GS_16_B72['vgp_lon'].tolist()\
+ [PLV_Kearsarge_B72_mean_vgp['dec'],PLV_Greenstone_mean_vgp['dec'],PLV_Scales_B72_mean_vgp['dec']]\

PLV_CC_Cong16_pole_lats = []
PLV_CC_Cong16_pole_lats = PLV_CCtoGS_H06['vgp_lat'].tolist()\
+ PLV_CCtoGS_B72['vgp_lat'].tolist()\
+ PLV_GS_16_B72['vgp_lat'].tolist()\
+ [PLV_Kearsarge_B72_mean_vgp['inc'],PLV_Greenstone_mean_vgp['inc'],PLV_Scales_B72_mean_vgp['inc']]

PLV_CC_GS_pole = ipmag.fisher_mean(dec=PLV_CC_GS_pole_lons,inc=PLV_CC_GS_pole_lats)
PLV_CC_Cong16_pole = ipmag.fisher_mean(dec=PLV_CC_Cong16_pole_lons,inc=PLV_CC_Cong16_pole_lats)
ipmag.print_pole_mean(PLV_CC_GS_pole)
print('')
ipmag.print_pole_mean(PLV_CC_Cong16_pole)
Plon: 184.2  Plat: 26.2
Number of directions in mean (n): 53
Angular radius of 95% confidence (A_95): 3.0
Precision parameter (k) estimate: 44.8

Plon: 183.5  Plat: 27.0
Number of directions in mean (n): 67
Angular radius of 95% confidence (A_95): 2.5
Precision parameter (k) estimate: 49.9
In [71]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_pole(m,PLV_pole['dec'],
                PLV_pole['inc'],
                PLV_pole['alpha95'],
                marker='s',color='DarkBlue',
                label='all PLV VGPs pole')
ipmag.plot_pole(m,PLV_CC_GS_pole['dec'],
                PLV_CC_GS_pole['inc'],
                PLV_CC_GS_pole['alpha95'],
                marker='s',color='Blue',
                label='Copper City to Greenstone VGPs pole')
ipmag.plot_pole(m,PLV_CC_Cong16_pole['dec'],
                PLV_CC_Cong16_pole['inc'],
                PLV_CC_Cong16_pole['alpha95'],
                marker='s',color='LightBlue',
                label='Copper City to Conglomerate 16 VGPs pole')
m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.legend(loc=8)
plt.title('Portage Lake Volcanics')
plt.show()
In [72]:
pole_means.loc['PLV'] = pd.Series({'PoleName' : 'Portage Lake Volcanics',
                                        'SLat' : round(PLV_CCtoGS_B72.lat.tolist()[0],2),
                                        'SLon' : 360+round(PLV_CCtoGS_B72.lon.tolist()[0],2),
                                        'PLat' : round(PLV_pole['inc'],1),
                                        'PLon' : round(PLV_pole['dec'],1),
                                        'A95' : round(PLV_pole['alpha95'],1),
                                        'K' : round(PLV_pole['k'],1),
                                        'N' : int(PLV_pole['n']),
                                        'PolarityZone' : 'Portage Lake normal-polarity zone',
                                        'PmagRef' : 'Books, 1972; Hnat et al., 2006',
                                        'AgeNominal' : round(((1093.36+1091.67)/2),2),
                                        'AgeLower' : 1091.59,
                                        'AgeUpper' : 1093.37,
                                        'AgeInfo' : '$^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U dates on Copper City flow 1093.37 $\pm$ 0.53 Ma and Greenstone Flow 1091.59 $\pm$ 0.27 Ma provide a lower and upper bound',
                                        'AgeRef' : 'this study',
                                        'GaussianOrUniform' : 'gaussian',
                                        'Gaussian_2sigma' : round(((1093.37-1091.59)/2),2),
                                        'Q' : '6',
                                        'color' : '#409BBE'})
In [73]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,PLV_CCtoGS_B72['vgp_lon'].tolist(),PLV_CCtoGS_B72['vgp_lat'].tolist(),
               color='LightBlue',marker='8',label='PLV CC to GS (Books, 1972)')
ipmag.plot_vgp(m,PLV_GS_16_B72['vgp_lon'].tolist(),PLV_GS_16_B72['vgp_lat'].tolist(),
               color='LightBlue',marker='p',label='PLV GS to cong 16 (Books, 1972)')
ipmag.plot_vgp(m,PLV_16_top_B72['vgp_lon'].tolist(),PLV_16_top_B72['vgp_lat'].tolist(),
               color='LightBlue',marker='h',label='PLV cong 16 to top (Books, 1972)')

ipmag.plot_vgp(m,PLV_bottom_CC_H06['vgp_lon'].tolist(),PLV_bottom_CC_H06['vgp_lat'].tolist(),
               color=pole_means['color']['PLV'],marker='^',label='PLV bottom to CC (Hnat et al., 2006)')
ipmag.plot_vgp(m,PLV_CCtoGS_H06['vgp_lon'].tolist(),PLV_CCtoGS_H06['vgp_lat'].tolist(),
               color=pole_means['color']['PLV'],marker='>',label='PLV CC to GS (Hnat et al., 2006)')
ipmag.plot_vgp(m,PLV_GS_top_H06['vgp_lon'].tolist(),PLV_GS_top_H06['vgp_lat'].tolist(),
               color=pole_means['color']['PLV'],marker='<',label='PLV GS to top (Hnat et al., 2006)')

ipmag.plot_vgp(m,PLV_Kearsarge_B72_mean_vgp['dec'],PLV_Kearsarge_B72_mean_vgp['inc'],
               color='BlueViolet',marker='*',label='PLV Kearsarge Flow (Books, 1972)')
ipmag.plot_vgp(m,PLV_Greenstone_mean_vgp['dec'],PLV_Greenstone_mean_vgp['inc'],
               color='Violet',marker='*',label='PLV Greenstone Flow (B1972; H2006)')
ipmag.plot_vgp(m,PLV_Ashbed_B72_mean_vgp['dec'],PLV_Ashbed_B72_mean_vgp['inc'],
               color='Magenta',marker='*',label='PLV Ashbed Flow (Books, 1972)')
ipmag.plot_vgp(m,PLV_Scales_B72_mean_vgp['dec'],PLV_Scales_B72_mean_vgp['inc'],
               color='Maroon',marker='*',label='PLV Scales Creek Flow (Books, 1972)')

ipmag.plot_pole(m,pole_means['PLon']['PLV'],
                pole_means['PLat']['PLV'],
                pole_means['A95']['PLV'],
                marker='s',color=pole_means['color']['PLV'],
                edgecolor='k',markersize=30)

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.legend(bbox_to_anchor=(1.56, .55))
plt.title('Portage Lake Volcanics',fontsize=16)
#plt.savefig('./Plots/vgps_PLV.svg')
plt.show()

Lake Shore traps pole

Diehl and Haig (1994) data

The Lake Shore Traps site data developed by Diehl and Haig (1994) were contributed to the MagIC database as part of this compilation effort and can be found here: https://earthref.org/MagIC/16334

In [74]:
%%capture
ipmag.download_magic('magic_contribution_16334.txt',
                     dir_path='../Data_Compiled/Diehl1994',
                     input_dir_path='../Data_Compiled/Diehl1994',
                     overwrite=True,print_progress=False,data_model=3.0)
In [75]:
Diehl1994a_sites = pd.read_csv('../Data_Compiled/Diehl1994/sites.txt',sep='\t',header=1)
Diehl1994a_sites
Out[75]:
bed_dip bed_dip_direction dir_alpha95 dir_dec dir_inc dir_k dir_n_samples dir_tilt_correction lat lon member site vgp_lat vgp_lon
0 24 22 3.8 301.3 38.7 184.7 9 100 47.43 -87.71 Middle LST LST1 36.9 175.8
1 24 22 4.8 302.5 37.6 162.8 7 100 47.43 -87.71 Middle LST LST2 37.1 173.2
2 24 22 2.4 302.5 36.7 620.2 7 100 47.43 -87.71 Middle LST LST3 36.7 172.6
3 24 22 2.1 300.1 36.8 681.1 8 100 47.43 -87.71 Middle LST LST4 35.2 174.6
4 24 22 2.4 302.0 34.8 630.0 7 100 47.43 -87.71 Middle LST LST5 35.5 171.9
5 24 22 3.4 300.4 35.1 228.2 9 100 47.43 -87.71 Middle LST LST6 34.6 173.4
6 24 22 2.0 295.5 35.6 581.8 10 100 47.43 -87.71 Middle LST LST7 31.5 177.6
7 24 22 3.9 299.7 35.2 207.3 8 100 47.43 -87.71 Middle LST LST8 34.1 174.0
8 24 22 3.9 295.8 27.6 206.4 8 100 47.43 -87.71 Middle LST LST9 28.1 173.2
9 24 22 2.1 300.7 30.7 863.3 7 100 47.43 -87.71 Middle LST LST10 32.7 170.8
10 24 22 3.1 289.9 20.9 379.3 7 100 47.43 -87.71 Middle LST LST11 21.4 174.9
11 24 22 4.5 285.3 42.4 155.4 8 100 47.43 -87.71 Middle LST LST13 27.9 189.1
12 24 22 2.7 278.7 42.6 358.8 9 100 47.43 -87.71 Middle LST LST16 23.6 193.7
13 24 22 3.3 278.9 43.9 292.0 8 100 47.43 -87.71 Middle LST LST17 24.4 194.4
14 24 22 3.1 282.5 39.9 331.1 8 100 47.43 -87.71 Middle LST LST19 24.8 189.5
15 24 22 2.0 276.9 41.9 786.0 8 100 47.43 -87.71 Middle LST LST23 22.1 194.5
16 24 22 5.5 271.9 41.9 103.5 8 100 47.43 -87.71 Middle LST LST26 18.8 197.9
17 24 22 3.9 276.4 32.4 207.2 8 100 47.43 -87.71 Middle LST LST28 17.1 189.9
18 24 22 2.1 276.2 39.5 592.9 9 100 47.43 -87.71 Middle LST LST29 20.4 193.6
19 24 22 3.9 274.2 40.2 208.3 8 100 47.43 -87.71 Middle LST LST31 19.4 195.4
20 29 298 2.4 295.4 12.9 656.2 7 100 47.30 -88.45 Middle LST Lt 1 21.9 166.8
21 29 298 3.4 281.8 22.3 321.6 7 100 47.30 -88.45 Middle LST Lt 2 16.5 180.9
22 25 295 6.1 281.3 8.9 83.6 8 100 47.34 -88.45 Outer LST OT1 10.9 176.3
23 25 295 5.8 275.4 3.9 109.0 7 100 47.34 -88.45 Outer LST OT2 5.1 178.9
24 25 295 4.2 275.3 1.5 206.6 7 100 47.34 -88.45 Outer LST OT3 4.1 178.2
25 25 295 6.4 278.4 3.6 109.7 6 100 47.34 -88.45 Outer LST OT4 7.0 176.6
26 25 295 3.0 276.5 4.7 394.1 7 100 47.34 -88.45 Outer LST OT5 6.1 178.3
27 25 295 4.5 275.9 2.9 182.8 7 100 47.34 -88.45 Outer LST OT6 5.1 178.2
28 25 295 5.8 283.9 10.2 83.6 9 100 47.34 -88.45 Outer LST OT7 13.2 174.8
29 25 295 2.1 275.6 5.8 863.3 7 100 47.34 -88.45 Outer LST OT8 5.9 179.4
In [76]:
LST_Diehl_VGPs=ipmag.make_di_block(Diehl1994a_sites['vgp_lon'],
                                   Diehl1994a_sites['vgp_lat'])
LST_Diehl_mean = pmag.fisher_mean(LST_Diehl_VGPs)
ipmag.print_pole_mean(LST_Diehl_mean)
Plon: 180.8  Plat: 22.2
Number of directions in mean (n): 30
Angular radius of 95% confidence (A_95): 4.5
Precision parameter (k) estimate: 35.0

Kulakov et al. (2013) data

The Lake Shore Traps site data developed by Kulakov et al. (2013) were contributed to the MagIC database as part of this compilation effort and can be found here: https://earthref.org/MagIC/16335

In [77]:
%%capture
ipmag.download_magic('magic_contribution_16335.txt',
                     dir_path='../Data_Compiled/Kulakov2013',
                     input_dir_path='../Data_Compiled/Kulakov2013',
                     overwrite=True,print_progress=False,data_model=3.0)
In [78]:
Kulakov2013a_LST_Sites = pd.read_csv('../Data_Compiled/Kulakov2013/sites.txt',sep='\t',header=1)
LST_Kulakov_VGPs=ipmag.make_di_block(Kulakov2013a_LST_Sites['vgp_lon'],
                                     Kulakov2013a_LST_Sites['vgp_lat'])
LST_Kulakov_mean=pmag.fisher_mean(LST_Kulakov_VGPs)
print('Mean of Kulakov et al. (2013) VGPs: \n')
ipmag.print_pole_mean(LST_Kulakov_mean)
Mean of Kulakov et al. (2013) VGPs: 

Plon: 192.9  Plat: 23.9
Number of directions in mean (n): 21
Angular radius of 95% confidence (A_95): 3.3
Precision parameter (k) estimate: 95.3

Kulakov et al. (2013) reported data for the flow LST28 that supersedes the Diehl direction which should accordingly be dropped in order to calculate a combined mean.

In [79]:
Diehl1994a_sites_filtered = Diehl1994a_sites.drop(17)
Diehl1994a_sites_filtered.reset_index(inplace=True)

LST_Diehl_VGPs_pruned=ipmag.make_di_block(Diehl1994a_sites_filtered['vgp_lon'],
                                   Diehl1994a_sites_filtered['vgp_lat'])

LST_VGPs=np.concatenate((LST_Diehl_VGPs_pruned,LST_Kulakov_VGPs))

LST_all_mean=pmag.fisher_mean(LST_VGPs)

print('\nCombined Diehl and Haig (1994) + Kulakov et al. (2013) mean: \n')
ipmag.print_pole_mean(LST_all_mean)
Combined Diehl and Haig (1994) + Kulakov et al. (2013) mean: 

Plon: 185.7  Plat: 23.1
Number of directions in mean (n): 50
Angular radius of 95% confidence (A_95): 3.3
Precision parameter (k) estimate: 38.8
In [80]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',
            area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,Diehl1994a_sites['vgp_lon'].tolist(),
               Diehl1994a_sites['vgp_lat'].tolist(),
              label='LST (Diehl and Haig, 1994)',color='lightblue')
ipmag.plot_vgp(m,Kulakov2013a_LST_Sites['vgp_lon'].tolist(),
               Kulakov2013a_LST_Sites['vgp_lat'].tolist(),
              label='LST (Kulakov et al., 2013)',color='darkblue')
ipmag.plot_pole(m,LST_all_mean['dec'],LST_all_mean['inc'],
                LST_all_mean['alpha95'], color='darkblue',label='LST mean pole (Diehl+Kulakov)',marker='s')
ipmag.plot_pole(m,LST_Diehl_mean['dec'],LST_Diehl_mean['inc'],
                LST_Diehl_mean['alpha95'], color='blue',
                label='LST mean pole (Diehl)', marker='s')
m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.title('Lake Shore Traps',fontsize=16)
plt.legend(loc=8)
#plt.savefig('./Plots/vgps_LST.svg')
plt.show()
In [81]:
pole_means.loc['LST'] = pd.Series({'PoleName' : 'Lake Shore Traps',
                                        'SLat' : round(Diehl1994a_sites.lat.tolist()[0],2),
                                        'SLon' : 360+round(Diehl1994a_sites.lon.tolist()[0],2),
                                        'PLat' : round(LST_Diehl_mean['inc'],1),
                                        'PLon' : round(LST_Diehl_mean['dec'],1),
                                        'A95' : round(LST_Diehl_mean['alpha95'],1),
                                        'K' : round(LST_Diehl_mean['k'],1),
                                        'N' : int(LST_Diehl_mean['n']),
                                        'PolarityZone' : 'Portage Lake normal-polarity zone',
                                        'PmagRef' : 'Diehl and Haig, 1994',
                                        'AgeNominal' : 1085.47,
                                        'AgeLower' : 1084,
                                        'AgeUpper' : 1091,
                                        'AgeInfo' : 'Younger than Greenstone Flow, $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on Lake Shore Trap andesitic flow of 1085.47 $\pm$ 0.32 Ma',
                                        'AgeRef' : 'Fairchild et al., 2017; this study',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '6',
                                        'color' : '#76C1C3'})
In [82]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',
            area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,Diehl1994a_sites['vgp_lon'].tolist(),
               Diehl1994a_sites['vgp_lat'].tolist(),
               label='LST (Diehl and Haig, 1994)',
               color=pole_means['color']['LST'],marker='o')
ipmag.plot_vgp(m,Kulakov2013a_LST_Sites['vgp_lon'].tolist(),
               Kulakov2013a_LST_Sites['vgp_lat'].tolist(),
              label='LST (Kulakov et al., 2013)',color='darkblue',marker='^')
ipmag.plot_pole(m,LST_all_mean['dec'],LST_all_mean['inc'],
                LST_all_mean['alpha95'], color='darkblue',
                edgecolor='k',markersize=30,
                label='LST mean pole (Diehl+Kulakov)',marker='s')
ipmag.plot_pole(m,pole_means['PLon']['LST'],
                pole_means['PLat']['LST'],
                pole_means['A95']['LST'],
                marker='s',color=pole_means['color']['LST'],
                edgecolor='k',markersize=30,
                label='LST mean pole (Diehl)')

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.title('Lake Shore Traps',fontsize=16)
plt.legend(loc=8)
#plt.savefig('./Plots/vgps_LST.svg')
plt.show()

Powder Mill Group Volcanics

Sites 11 and 12 are from the Portage Lake Volcanics. Sites 42, 43 and 44 are in rocks where the is pervasive development of amphibole development and partial obliteration of original igneous texture.

Palmer and Halls split their data into three main structural panels: (1) steep dips, ENE strike,(2) steep dips, E to ENE strike and,(3) moderate to shallow dips, east strike. They argue that the 3rd panel is the best constrained and provides the most reliable pole position. This panel is comprised of sites 15-24.

In view of the uncertainty in structural correction to be applied to those sections of the Powder Mill volcanics that are close to the basement ridge,the most reliable estimate of the Powder Mill pole may be that from segment 3, although a relatively small stratigraphic interval has been sampled,thus increasing the risk that secular variation has not been averaged out.

As shown in the common mean test below, the data from panel 3 and the data from panels 1 and 2 are consistent with sharing a common mean. This result weakens the conclusion of Palmer and Halls (1986) that the data from panels 1 and 2 are more unreliable due to the need to structurally correct a steep panel. However, an additional benefit of calculating a pole solely based on the data from panel 3 is that all of the flows are within the Siemens Creek Volcanics rather than spanning both those volcanics and the Kallander Creek Volcanics. Therefore, we use this subset in the pole compilation.

Note that in this compilation, we do not include the combined site of 1-3 as the samples were collected from multiple lava flows. This combined site is not in panel 3.

In [83]:
Palmer1986 = pd.read_csv('../Data_Compiled/Palmer1986/Palmer1986_site.csv',sep=',')
Palmer1986_PM = Palmer1986[Palmer1986['site'] != 11]
Palmer1986_PM = Palmer1986_PM[Palmer1986_PM['site'] != 12]
Palmer1986_PM = Palmer1986_PM[Palmer1986_PM['site'] != 42]
Palmer1986_PM = Palmer1986_PM[Palmer1986_PM['site'] != 43]
Palmer1986_PM = Palmer1986_PM[Palmer1986_PM['site'] != 44]

third_panel_sites = [15,16,17,18,19,20,21,22,23,24]
other_sites = [4,6,7,8,9,10,13,14,25,28,29,30,31,33,34,35,36,37,38,39,40,41]
Palmer1986_PM_reliable = Palmer1986_PM.loc[Palmer1986_PM['site'].isin(third_panel_sites)]
Palmer1986_PM_unreliable = Palmer1986_PM.loc[Palmer1986_PM['site'].isin(other_sites)]
In [84]:
Powder_Mill_VGPs = ipmag.make_di_block(Palmer1986_PM['vgp_lon'].tolist(),
                                   Palmer1986_PM['vgp_lat'].tolist())
Powder_Mill_Pole = ipmag.fisher_mean(di_block=Powder_Mill_VGPs)
ipmag.print_pole_mean(Powder_Mill_Pole)
Plon: 217.0  Plat: 38.5
Number of directions in mean (n): 32
Angular radius of 95% confidence (A_95): 5.6
Precision parameter (k) estimate: 21.4
In [85]:
Powder_Mill_VGPs_reliable = ipmag.make_di_block(Palmer1986_PM_reliable['vgp_lon'].tolist(),
                                   Palmer1986_PM_reliable['vgp_lat'].tolist())
Powder_Mill_Pole_reliable = ipmag.fisher_mean(di_block=Powder_Mill_VGPs_reliable)
ipmag.print_pole_mean(Powder_Mill_Pole_reliable)
Plon: 214.0  Plat: 45.8
Number of directions in mean (n): 10
Angular radius of 95% confidence (A_95): 9.2
Precision parameter (k) estimate: 28.3
In [86]:
Powder_Mill_VGPs_unreliable = ipmag.make_di_block(Palmer1986_PM_unreliable['vgp_lon'].tolist(),
                                   Palmer1986_PM_unreliable['vgp_lat'].tolist())
Powder_Mill_Pole_unreliable = ipmag.fisher_mean(di_block=Powder_Mill_VGPs_unreliable)
ipmag.print_pole_mean(Powder_Mill_Pole_unreliable)
Plon: 218.2  Plat: 35.1
Number of directions in mean (n): 22
Angular radius of 95% confidence (A_95): 7.0
Precision parameter (k) estimate: 20.8
In [87]:
ipmag.common_mean_bootstrap(Powder_Mill_VGPs_unreliable,Powder_Mill_VGPs_reliable)
In [88]:
pole_means.loc['PM'] = pd.Series({'PoleName' : 'Siemens Creek Volcanics',
                                        'SLat' : 46.5,
                                        'SLon' : 360-90.2,
                                        'PLat' : round(Powder_Mill_Pole_reliable['inc'],1),
                                        'PLon' : round(Powder_Mill_Pole_reliable['dec'],1),
                                        'A95' : round(Powder_Mill_Pole_reliable['alpha95'],1),
                                        'K' : round(Powder_Mill_Pole_reliable['k'],1),
                                        'N' : int(Powder_Mill_Pole_reliable['n']),
                                        'PolarityZone' : 'Alona Bay reversed-polarity zone',
                                        'PmagRef' : 'Palmer and Halls, 1986',
                                        'AgeNominal' : 1108,
                                        'AgeLower' : 1105,
                                        'AgeUpper' : 1111,
                                        'AgeInfo' : 'Older than the $^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1107.3 $\pm$ 1.6 Ma from a rhyolite in the Kallander Creek Volcanics',
                                        'AgeRef' : 'Davis and Green, 1997',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '6',
                                        'color' : '#CD4F45'})
In [89]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',
            area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,di_block=Powder_Mill_VGPs_reliable,
               label='Powder Mill most reliable structural panel',
               color='darkred', markersize=30)
ipmag.plot_vgp(m,di_block=Powder_Mill_VGPs,
               label='Powder Mill (Palmer and Halls, 1986)',
               color=pole_means['color']['PM'],markersize=15)
ipmag.plot_pole(m,Powder_Mill_Pole['dec'],Powder_Mill_Pole['inc'],
                Powder_Mill_Pole['alpha95'], marker='s',
                color=pole_means['color']['PM'],markersize=15)

ipmag.plot_pole(m,pole_means['PLon']['PM'],
                pole_means['PLat']['PM'],
                pole_means['A95']['PM'],
                marker='s',color=pole_means['color']['PM'],
                edgecolor='k',markersize=30)

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.title('Powder Mill Group',fontsize=16)
plt.legend(loc=8)
#plt.savefig('./Plots/vgps_PM.svg')
plt.show()

Michopicoten Island

The geology of Michipicoten Island can be divided into three distinct magmatic intervals:

  • the basal interval consists primarily of sub-ophitic to ophitic olivine tholeiitic basalt flows (correlated by Annells [1974] to the main stage volcanics of the Mamainse Point Formation)
  • hypabyssal quartz porphyry, granophyre, and intermediate intrusions emplaced into the Quebec Mine Member basalt flows
  • Michipicoten Island Formation which unconformably overlies the intrusions and comprises: conglomerate/agglomerate deposits, thick intermediate to felsic flows, and tholeiitic basalt flows

Fairchild et al. (2017) presented new CA-ID-TIMS $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U zircon dates from a Michipicoten Island Formation tuff (1084.35 ± 0.20 Ma) and rhyolite (1083.52 ± 0.23 Ma) along with new paleomagnetic data from intervening flows which are bracketed by these dates.

Palmer and Davis (1987) dated a quartz-feldspar porphyry intrusion with a reported Concordia intercept U-Pb zircon date for the porphyry of 1086.5 + 1.3/- 3.0 Ma. With the interpretation of the dated unit having intruded prior to the eruption of the flows of the Michipicoten Island Formation, the Michipicoten Island Formation pole is the youngest pole from a volcanic unit in the Midcontinent Rift.

Import Palmer and Davis (1997) data

https://earthref.org/MagIC/13470

In [90]:
%%capture
ipmag.download_magic('Palmer1987a.v24.txt',
                     dir_path='../Data_Compiled/Palmer1987',
                     input_dir_path='../Data_Compiled/Palmer1987',
                     overwrite=True,print_progress=False)

lower Michipicoten Island Quebec Mine Member basalts

Palmer and Davis (1987) developed data from 8 sites with the sub-ophitic to ophitic olivine tholeiitic basalt flows of the Quebec Mine Member stratigraphically below the Michipicoten Island intrusions that Annells interpreted to correlate to the Mamainse Point Formation. They also report data from a site "KM" for which samples came from multiple flows and will not be included here as it does not met the definition of a site as a single cooling unit.

In [91]:
Palmer1987_results = pd.read_csv('../Data_Compiled/Palmer1987/pmag_results.txt',sep='\t',skiprows=1)
Palmer1987_QM = Palmer1987_results[Palmer1987_results.er_location_names=='Mamainse Point Formation, Michipicoten Island']
Palmer1987_QM_sites = Palmer1987_QM[Palmer1987_QM.data_type=='i']
Palmer1987_QM_sites = Palmer1987_QM_sites[Palmer1987_QM_sites.er_site_names!='KM']
In [92]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,Palmer1987_QM_sites['vgp_lon'].tolist(),Palmer1987_QM_sites['vgp_lat'].tolist(),
               color='LightBlue',marker='*',label='Quebec Mine Member (Palmer and Davis, 1987)')

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.legend(loc=8)
plt.title('Quebec Mine Member')
plt.show()

Site 18 appears to be an outlier and perhaps should be removed from the the calculation of the mean.

In [93]:
Palmer1987_QM_sites = Palmer1987_QM_sites[Palmer1987_QM_sites.er_site_names!='18']
In [94]:
Palmer1987_QM_sites = Palmer1987_QM_sites[Palmer1987_QM_sites.er_site_names!='KM']
In [95]:
MI_QM_VGPs = ipmag.make_di_block(Palmer1987_QM_sites.vgp_lon.tolist(),
                                 Palmer1987_QM_sites.vgp_lat.tolist())
MI_QM_mean=pmag.fisher_mean(MI_QM_VGPs)
ipmag.print_pole_mean(MI_QM_mean)
Plon: 185.6  Plat: 36.9
Number of directions in mean (n): 7
Angular radius of 95% confidence (A_95): 13.4
Precision parameter (k) estimate: 21.2

Import Fairchild et al. (2017)

We have imported data from Fairchild et al. (2017) from the MagIC contribution in the Fairchild2017_results dataframe. Filtering this dataframe by location, component and tilt correction gets the results needed for the pole.

In [96]:
Fairchild2017_MIF = pd.read_csv('../Data_Compiled/Fairchild2017/pmag_results_Michipicoten.txt',sep='\t',header=1)
Fairchild2017_MIF = Fairchild2017_MIF[Fairchild2017_MIF['pole_comp_name'] == 'HT']
Fairchild2017_MIF = Fairchild2017_MIF[Fairchild2017_MIF['tilt_correction'] == 100.0]
Fairchild2017_MIF = Fairchild2017_MIF[Fairchild2017_MIF['er_site_names'] != 'CM1']
Fairchild2017_MIF = Fairchild2017_MIF[Fairchild2017_MIF['er_site_names'] != 'CM2']
In [97]:
Quebec_Harbour_Member_Palmer87 = [171.701143, 40.970516] 
Davieaux_Island_Member_Palmer87 = [178.210301, 18.732965]

combined_MIF_lon = Fairchild2017_MIF['vgp_lon'].tolist()
combined_MIF_lon.append(Quebec_Harbour_Member_Palmer87[0])
combined_MIF_lon.append(Davieaux_Island_Member_Palmer87[0])

combined_MIF_lat = Fairchild2017_MIF['vgp_lat'].tolist()
combined_MIF_lat.append(Quebec_Harbour_Member_Palmer87[1])
combined_MIF_lat.append(Davieaux_Island_Member_Palmer87[1])

MIF_pole = ipmag.fisher_mean(combined_MIF_lon,combined_MIF_lat)
ipmag.print_pole_mean(MIF_pole)
Plon: 174.7  Plat: 17.0
Number of directions in mean (n): 23
Angular radius of 95% confidence (A_95): 4.4
Precision parameter (k) estimate: 48.2
In [98]:
pole_means.loc['QM'] = pd.Series({'PoleName' : 'Quebec Mine Member (Michipicoten Island)',
                                        'SLat' : 47.80,
                                        'SLon' : 274.25,
                                        'PLat' : round(MI_QM_mean['inc'],1),
                                        'PLon' : round(MI_QM_mean['dec'],1),
                                        'A95' : round(MI_QM_mean['alpha95'],1),
                                        'K' : round(MI_QM_mean['k'],1),
                                        'N' : int(MI_QM_mean['n']),
                                        'PolarityZone' : 'Portage Lake normal-polarity zone',
                                        'PmagRef' : 'Palmer and Davis, 1987',
                                        'AgeNominal' : 1095,
                                        'AgeLower' : 1086.5,
                                        'AgeUpper' : 1100,
                                        'AgeInfo' : 'Older than ca. 1086.5 Ma $^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date on Michipicoten intrusive porphyry',
                                        'AgeRef' : 'Palmer and Davis, 1987',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '5',
                                        'color' : '#385C6A'})

pole_means.loc['MI'] = pd.Series({'PoleName' : 'Michipicoten Island Formation',
                                        'SLat' : 47.70,
                                        'SLon' : 360-85.85,
                                        'PLat' : round(MIF_pole['inc'],1),
                                        'PLon' : round(MIF_pole['dec'],1),
                                        'A95' : round(MIF_pole['alpha95'],1),
                                        'K' : round(MIF_pole['k'],1),
                                        'N' : MIF_pole['n'],
                                        'PolarityZone' : 'Portage Lake normal-polarity zone',
                                        'PmagRef' : 'Palmer and Davis, 1987); Fairchild et al., 2017',
                                        'AgeNominal' : round(((1084.39+1083.52)/2),2),
                                        'AgeLower' : 1083.52,
                                        'AgeUpper' : 1084.39,
                                        'AgeInfo' : '$^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U dates on the West Sand Bay tuff 1084.39 $\pm$ 0.21 Ma and the Davieux Island Rhyolite 1083.52 $\pm$ 0.23 Ma bracket the VGPs',
                                        'AgeRef' : 'Fairchild et al., 2017',
                                        'GaussianOrUniform' : 'gaussian',
                                        'Gaussian_2sigma' : round(((1084.39-1083.52)/2),2),
                                        'Q' : '6',
                                        'color' : '#9FD6BD'})
In [99]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,Palmer1987_QM_sites['vgp_lon'].tolist(),Palmer1987_QM_sites['vgp_lat'].tolist(),
               color=pole_means['color']['QM'],label='Quebec Mine Member (Palmer and Davis, 1987')
ipmag.plot_pole(m,pole_means['PLon']['QM'],
                pole_means['PLat']['QM'],
                pole_means['A95']['QM'],
                marker='s',color=pole_means['color']['QM'],
                edgecolor='k',markersize=30)

ipmag.plot_vgp(m,Quebec_Harbour_Member_Palmer87[0],Quebec_Harbour_Member_Palmer87[1],
               color=pole_means['color']['MI'],marker='^',label='Michipicoten Island Formation (Palmer and Davis, 1987)')
ipmag.plot_vgp(m,Davieaux_Island_Member_Palmer87[0],Davieaux_Island_Member_Palmer87[1],
               color=pole_means['color']['MI'],marker='^',)
ipmag.plot_vgp(m,Fairchild2017_MIF['vgp_lon'].tolist(),Fairchild2017_MIF['vgp_lat'].tolist(),
               color=pole_means['color']['MI'],label='Michipicoten Island Formation (Fairchild et al. 2017)')
ipmag.plot_pole(m,pole_means['PLon']['MI'],
                pole_means['PLat']['MI'],
                pole_means['A95']['MI'],
                marker='s',color=pole_means['color']['MI'],
                edgecolor='k',markersize=30)

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.legend(loc=8)
plt.title('Michipicoten Island Volcanics',fontsize=16)
#plt.savefig('./Plots/vgps_Mich.svg')
plt.show()

Midcontinent Rift sedimentary poles

Sedimentary poles are taken as the site mean poles of Henry et al., 1977.

In [100]:
Nonesuch_pole = pmag.dia_vgp(276.8,8.1,7.8,46.7,-89.9)
Nonesuch_A95 = np.sqrt(Nonesuch_pole[2]*Nonesuch_pole[3])

Freda_pole = pmag.dia_vgp(272.4,1.5,5.9,46.7,-89.9)
Freda_A95 = np.sqrt(Freda_pole[2]*Freda_pole[3])
In [101]:
pole_means.loc['Nonesuch'] = pd.Series({'PoleName' : 'Nonesuch Formation',
                                        'SLat' : 46.7,
                                        'SLon' : 360-89.9,
                                        'PLat' : 7.6,
                                        'PLon' : 178.1,
                                        'A95' : round(Nonesuch_A95,1),
                                        'N' : 11,
                                        'PolarityZone' : 'Portage Lake normal-polarity zone (sed)',
                                        'PmagRef' : 'Henry et al., 1977',
                                        'AgeNominal' : 1080,
                                        'AgeLower' : 1070,
                                        'AgeUpper' : 1083.5,
                                        'AgeInfo' : 'Likely younger than Michipicoten Island Formation. Deposited prior to eruption of Bear Lake Volcanics in lower Freda Sandstone',
                                        'AgeRef' : '',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '',
                                        'color' : '#B3D566'})
In [102]:
pole_means.loc['Freda'] = pd.Series({'PoleName' : 'Freda Formation',
                                        'SLat' : 46.7,
                                        'SLon' : 360-89.9,
                                        'PLat' : 2.2,
                                        'PLon' : 179.0,
                                        'A95' : round(Freda_A95,1),
                                        'N' : 20,
                                        'PolarityZone' : 'Portage Lake normal-polarity zone (sed)',
                                        'PmagRef' : 'Henry et al., 1977',
                                        'AgeNominal' : 1070,
                                        'AgeLower' : 1060,
                                        'AgeUpper' : 1083.5,
                                        'AgeInfo' : 'Data come from lowermost Freda Formation. Interbedded Bear Lake Volcanics suggest that not too much younger than youngest rift volcanism',
                                        'GaussianOrUniform' : 'uniform',
                                        'Q' : '',
                                        'color' : '#D5C888'})
In [103]:
pole_means
Out[103]:
PoleName SLat SLon PLat PLon A95 K N PolarityZone PmagRef AgeNominal AgeLower AgeUpper AgeInfo AgeRef Gaussian_2sigma GaussianOrUniform Q color
Osler_R1 Osler reverse (lower) 48.80 272.34 40.9 218.6 4.8 31.5 30 Alona Bay reversed-polarity zone Swanson-Hysell et al., 2014b 1108 1105.15 1110 Older than 1105.15 $\pm$ 0.33 Ma Osler reverse (upper) pole, perhaps similar in age in Logan Sills ($^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1109 $\pm$ 1 Ma) Davis and Sutcliffe, 1985; this study NaN uniform 7 #B82431
Osler_R2 Osler reverse (upper) 48.59 271.81 42.3 203.4 3.7 24.4 64 Alona Bay reversed-polarity zone Halls, 1974; Swanson-Hysell et al., 2014b; this study 1105.15 1104.82 1105.48 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1105.15 $\pm$ 0.33 Ma for a rhyolite at Agate Point (this study) this study 0.33 gaussian 7 #F2A07E
Osler_N Osler normal 48.64 271.91 32.0 171.9 9.7 90.9 4 Portage Lake normal-polarity zone Halls, 1974; this study 1095 1080.00 1100 Poorly known, significantly younger than the ca. 1105 Ma Agate Point Rhyolite date, pole position similiar to Portage Lake normal-polarity zone poles and distinct from Flour Bay normal-polarity zone pole and therefore likely younger than 1100 Ma date in the Alona Bay reversed-polarity zone NaN uniform 7 #0000FF
MP_lowerR1 Mamainse lower reversed 1 47.10 275.29 49.5 227.0 5.3 31.7 24 Alona Bay reversed-polarity zone Swanson-Hysell et al., 2014a 1109 1106.00 1112 Likely older than ca. 1105 Ma given distinct higher latitude pole position from Osler R1 and similar position to ca. 1107 Ma Siemens Creek Volcanic Pole NaN uniform 7 #930E26
MP_lowerR2 Mamainse lower reversed 2 47.09 275.27 37.5 205.2 4.5 78.6 14 Alona Bay reversed-polarity zone Swanson-Hysell, 2014a 1105 1100.40 1109 Older than $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1100.4 Ma based on stratigraphic position; likely ca. 1105 Ma based on comparison with paleomagnetic data from the Osler Volcanic Group Swanson-Hysell, 2014a NaN uniform 7 #F8C1A6
MP_lowerNupperR Mamainse lower normal and upper reversed 47.07 275.26 36.1 189.7 4.9 37.3 24 Flour Bay normal and reversed polarity zones Swanson-Hysell, 2014a 1100.36 1100.10 1100.61 Age constrained by $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1100.36 $\pm$ 0.25 Ma on Flour Bay tuff Swanson-Hysell, 2014a 0.25 gaussian 7 #6A579A
MP_upperN Mamainse upper normal 47.06 275.25 31.2 183.2 2.5 94.4 34 Portage Lake normal-polarity zone Swanson-Hysell, 2014a 1094 1090.00 1100 Likely ca. 1094 Ma based on similar pole position to the Portage Lake Polarity Zone upper NE limb North Shore Volcanic Group poles NaN uniform 7 #3B7185
Grand Portage Basalts Grand Portage Basalts 47.93 270.28 46.0 201.7 6.8 38.3 13 Alona Bay reversed-polarity zone Books, 1968; Tauxe and Kodama, 2009 1106 1105.28 1108 Close to, but slightly older than, $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U 1105.60 $\pm$ 0.32 Ma based on date from Red Rock Rhyolite this study NaN uniform 5 #E0785F
NSVG_nneu North Shore Volcanic Group (upper NE sequence) 47.61 269.23 31.1 181.7 4.2 42.2 28 Portage Lake normal-polarity zone Books, 1972; Tauxe and Kodama, 2009 1095 1092.00 1098 Younger than the the Devil's Kettle Rhyolite $^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1097.7 $\pm$ 2.2 Ma, the new $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U 1093.38 $\pm$ 0.55 Ma date from the Grand Marais Rhyolite is near the top of the sequence with paleomagnetic data Davis and Green, 1997; Fairchild et al., 2017 NaN uniform 6 #35474E
NSVG_nswu North Shore Volcanic Group (upper SW sequence) 47.20 268.50 36.9 179.3 2.1 56.8 78 Portage Lake normal-polarity zone Tauxe and Kodama, 2009; this study 1096.18 1093.94 1096.75 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on 40th Ave. Icelandite (1096.75 $\pm$ 0.28) provides a lower bound, the $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on the Two Harbors Icelandite is within the sequence (1096.18 $\pm$ 0.32) and the Palisade Rhyolite (1093.94 $\pm$ 0.28) provides an upper bound this study 1.12 gaussian 6 #154F8D
SLB Schroeder Lutsen Basalts 47.54 269.10 28.3 187.6 2.5 50.5 65 Portage Lake normal-polarity zone Books, 1972; Tauxe and Kodama, 2009; Fairchild et al., 2017 1090 1085.00 1091.5 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of of 1091.48 $\pm$ 0.21 Ma on Beaver Bay Complex aplite provides maximum age constraint Fairchild et al., 2017 NaN uniform 6 #8DC2DC
PLV Portage Lake Volcanics 47.29 271.59 27.5 182.5 2.3 48.7 78 Portage Lake normal-polarity zone Books, 1972; Hnat et al., 2006 1092.51 1091.59 1093.37 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U dates on Copper City flow 1093.37 $\pm$ 0.53 Ma and Greenstone Flow 1091.59 $\pm$ 0.27 Ma provide a lower and upper bound this study 0.89 gaussian 6 #409BBE
LST Lake Shore Traps 47.43 272.29 22.2 180.8 4.5 35.0 30 Portage Lake normal-polarity zone Diehl and Haig, 1994 1085.47 1084.00 1091 Younger than Greenstone Flow, $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on Lake Shore Trap andesitic flow of 1085.47 $\pm$ 0.32 Ma Fairchild et al., 2017; this study NaN uniform 6 #76C1C3
PM Siemens Creek Volcanics 46.50 269.80 45.8 214.0 9.2 28.3 10 Alona Bay reversed-polarity zone Palmer and Halls, 1986 1108 1105.00 1111 Older than the $^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1107.3 $\pm$ 1.6 Ma from a rhyolite in the Kallander Creek Volcanics Davis and Green, 1997 NaN uniform 6 #CD4F45
QM Quebec Mine Member (Michipicoten Island) 47.80 274.25 36.9 185.6 13.4 21.2 7 Portage Lake normal-polarity zone Palmer and Davis, 1987 1095 1086.50 1100 Older than ca. 1086.5 Ma $^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date on Michipicoten intrusive porphyry Palmer and Davis, 1987 NaN uniform 5 #385C6A
MI Michipicoten Island Formation 47.70 274.15 17.0 174.7 4.4 48.2 23 Portage Lake normal-polarity zone Palmer and Davis, 1987); Fairchild et al., 2017 1083.95 1083.52 1084.39 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U dates on the West Sand Bay tuff 1084.39 $\pm$ 0.21 Ma and the Davieux Island Rhyolite 1083.52 $\pm$ 0.23 Ma bracket the VGPs Fairchild et al., 2017 0.44 gaussian 6 #9FD6BD
Nonesuch Nonesuch Formation 46.70 270.10 7.6 178.1 5.6 NaN 11 Portage Lake normal-polarity zone (sed) Henry et al., 1977 1080 1070.00 1083.5 Likely younger than Michipicoten Island Formation. Deposited prior to eruption of Bear Lake Volcanics in lower Freda Sandstone NaN uniform #B3D566
Freda Freda Formation 46.70 270.10 2.2 179.0 4.2 NaN 20 Portage Lake normal-polarity zone (sed) Henry et al., 1977 1070 1060.00 1083.5 Data come from lowermost Freda Formation. Interbedded Bear Lake Volcanics suggest that not too much younger than youngest rift volcanism NaN NaN uniform #D5C888
In [104]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

pole_means_Alona_R = pole_means.ix[pole_means['PolarityZone']=='Alona Bay reversed-polarity zone']
for n in range(0,len(pole_means_Alona_R['PLon'].tolist())):
    if pole_means_Alona_R['N'].tolist()[n]>9:
        ipmag.plot_pole(m,pole_means_Alona_R['PLon'].tolist()[n],
                        pole_means_Alona_R['PLat'].tolist()[n],
                        pole_means_Alona_R['A95'].tolist()[n],
                        marker='s',color='DarkRed')
    
pole_means_FB_NR = pole_means.ix[pole_means['PolarityZone']=='Flour Bay normal and reversed polarity zones']
for n in range(0,len(pole_means_FB_NR['PLon'].tolist())):
    if pole_means_FB_NR['N'].tolist()[n]>9:
        ipmag.plot_pole(m,pole_means_FB_NR['PLon'].tolist()[n],
                        pole_means_FB_NR['PLat'].tolist()[n],
                        pole_means_FB_NR['A95'].tolist()[n],
                        marker='v',color='Purple')
    
pole_means_Portage_N = pole_means.ix[pole_means['PolarityZone']=='Portage Lake normal-polarity zone']
for n in range(0,len(pole_means_Portage_N['PLon'].tolist())):
    if pole_means_Portage_N['N'].tolist()[n]>9:
        ipmag.plot_pole(m,pole_means_Portage_N['PLon'].tolist()[n],
                        pole_means_Portage_N['PLat'].tolist()[n],
                        pole_means_Portage_N['A95'].tolist()[n],
                        marker='o',color='Blue')
        
pole_means_Portage_N = pole_means.ix[pole_means['PolarityZone']=='Portage Lake normal-polarity zone (sed)']
for n in range(0,len(pole_means_Portage_N['PLon'].tolist())):
    if pole_means_Portage_N['N'].tolist()[n]>9:
        ipmag.plot_pole(m,pole_means_Portage_N['PLon'].tolist()[n],
                        pole_means_Portage_N['PLat'].tolist()[n],
                        pole_means_Portage_N['A95'].tolist()[n],
                        marker='d',color='Orange')

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.show()
In [105]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

pole_means_Alona_R = pole_means.ix[pole_means['PolarityZone']=='Alona Bay reversed-polarity zone']
for n in range(0,len(pole_means_Alona_R['PLon'].tolist())):
    if pole_means_Alona_R['N'].tolist()[n]>9:
        ipmag.plot_pole(m,pole_means_Alona_R['PLon'].tolist()[n],
                        pole_means_Alona_R['PLat'].tolist()[n],
                        pole_means_Alona_R['A95'].tolist()[n],
                        marker='s',color=pole_means_Alona_R['color'].tolist()[n])
    
pole_means_FB_NR = pole_means.ix[pole_means['PolarityZone']=='Flour Bay normal and reversed polarity zones']
for n in range(0,len(pole_means_FB_NR['PLon'].tolist())):
    if pole_means_FB_NR['N'].tolist()[n]>9:
        ipmag.plot_pole(m,pole_means_FB_NR['PLon'].tolist()[n],
                        pole_means_FB_NR['PLat'].tolist()[n],
                        pole_means_FB_NR['A95'].tolist()[n],
                        marker='v',color=pole_means_FB_NR['color'].tolist()[n])
    
pole_means_Portage_N = pole_means.ix[pole_means['PolarityZone']=='Portage Lake normal-polarity zone']
for n in range(0,len(pole_means_Portage_N['PLon'].tolist())):
    if pole_means_Portage_N['N'].tolist()[n]>9:
        ipmag.plot_pole(m,pole_means_Portage_N['PLon'].tolist()[n],
                        pole_means_Portage_N['PLat'].tolist()[n],
                        pole_means_Portage_N['A95'].tolist()[n],
                        marker='o',color=pole_means_Portage_N['color'].tolist()[n])
        
pole_means_Portage_N = pole_means.ix[pole_means['PolarityZone']=='Portage Lake normal-polarity zone (sed)']
for n in range(0,len(pole_means_Portage_N['PLon'].tolist())):
    if pole_means_Portage_N['N'].tolist()[n]>9:
        ipmag.plot_pole(m,pole_means_Portage_N['PLon'].tolist()[n],
                        pole_means_Portage_N['PLat'].tolist()[n],
                        pole_means_Portage_N['A95'].tolist()[n],
                        marker='d',color=pole_means_Portage_N['color'].tolist()[n])

m.readshapefile('../Data_Compiled/Laurentia_shape/Laurentia', 'Laurentia', linewidth=1.5)
plt.legend(loc=4)
plt.show()
No handles with labels found to put in legend.

Evaluating the reliability of the pole positions and the sampling of secular variation

In evaluating the dispersion and the sampling of paleosecular variation in the VGP populations, we utilize the N-dependent A$_{95}$ envelope of Deenen et al. (2011). This envelope, bounded by an upper limit A$_{95}$-max, and a lower limit A$_{95}$-min, was established to ascertain whether the A$_{95}$ resulting from a given dataset is in a range that would be expected to result from secular variation of the geomagnetic field. An A$_{95}$ value below this range may indicate that paleosecular variation has not been sufficiently sampled while an A$_{95}$ value above this range may indicate that there is another source of noise that is significantly contributing to the dispersion of the data. This method of evaluation is applicable to a collection of sites that each record a single snapshot of the geomagnetic field such as the lavas within this study.

Note that it would be inappropriate to strictly apply in other situations such as a study in which data was averaged into site-means from multiple samples of sediments (see Nonesuch and Freda poles) as one might expect that secular variation would be averaged out within each site meaning that secular variation could have been sufficiently sampled even if the A$_{95}$ of the site-mean falls below the envelope.

In [106]:
def Deenen_A_95max(N):
    A_95=82*N**(-0.63)
    return A_95

def Deenen_A_95min(N):
    A_95=12*N**(-0.4)
    return A_95
In [107]:
Deenen_A_95max(4)
Out[107]:
34.238604696563144
In [108]:
N_sites = []
A_95_max = []
A_95_min = []

for N in range(4,81):
    N_sites.append(N)
    A_95_max.append(Deenen_A_95max(N))
    A_95_min.append(Deenen_A_95min(N))
    
plt.figure(figsize=(7,5))
plt.plot(N_sites,A_95_max,label='A$_{95}$ max (overly scattered data if above)')
plt.plot(N_sites,A_95_min,label='A$_{95}$ min (potentially not averaging secular variation if below)')
plt.scatter(pole_means.N,pole_means.A95,s=10,color='darkred',label='MCR poles')
plt.xlim(0,80)
plt.ylim(0,35)
plt.ylabel('A$_{95}$')
plt.xlabel('N')
plt.legend()
plt.show()

All of the poles are below the A$_{95}$ max cut-off indicating that there are well-determined and not overly scattered. One pole is below it—the upper Mamainse Point normal pole from the Portage Lake Normal Polarity zone. Flows in this mean pole were collected over more than 1300 meters of stratigraphy with many intervening conglomerate units indicating hiatuses in local eruption. We therefore consider it likely that this pole sufficiently averages out secular variation despite falling below the A$_{95}$ min. The upper southwest sequence North Shore Volcanic Group pole falls directly on the minimum cut-off. Geochronology results indicate that the flows sampled through this sequence span over 600,000 years up to 2.8 million years and therefore likely average out secular variation.

In [109]:
direction = pmag.vgp_di(pole_means.PLat[1],pole_means.PLon[1],48,270)
direction[1]
Out[109]:
62.75916057047252
In [110]:
paleolatitude = []
kappa = []

for n in pole_means.index:
    if pole_means.N[n] > 10:
        direction = pmag.vgp_di(pole_means.PLat[n],pole_means.PLon[n],48,270)
        inclination = direction[1]
        plat = pmag.plat(inclination)
        paleolatitude.append(plat)
        kappa.append(pole_means.K[n])
    
plt.figure(figsize=(7,5))

plt.scatter(paleolatitude,kappa,s=10,color='darkred',label='MCR poles')
plt.xlim(0,90)
plt.ylabel('kappa')
plt.xlabel('paleolatitude')
plt.legend()
plt.show()

Mean APWP

In [111]:
#Drop the two poles with less than 10 VGPs
pole_means_filtered = pole_means.drop('Osler_N')
pole_means_filtered = pole_means_filtered.drop('QM')
In [112]:
#pole_means.to_csv('pole_means.csv')
#pole_means_filtered.to_csv('pole_means_filtered.csv')
In [113]:
def running_mean_APWP(data,window_length,spacing,max_age,min_age,fig_name=None):
    mean_pole_ages = np.arange(min_age,max_age+spacing,spacing)
    running_means = pd.DataFrame(columns=['age','N','A95','PLon','PLat'])
    for age in mean_pole_ages:
        window_min = age - (window_length/2)
        window_max = age + (window_length/2)
        poles = pole_means.loc[(data['AgeNominal'] >= window_min) & (data['AgeNominal'] <= window_max)]
        mean = ipmag.fisher_mean(dec=poles['PLon'].tolist(),inc=poles['PLat'].tolist())
        running_means.loc[age] = [age,mean['n'],mean['alpha95'],mean['dec'],mean['inc']]
        
    m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
    pole_figure_appearance()
    for n in range(0,len(running_means['PLon'].tolist())):
        ipmag.plot_pole(m,running_means['PLon'].tolist()[n],
                        running_means['PLat'].tolist()[n],
                        running_means['A95'].tolist()[n],
                        marker='o',color='black')
    if fig_name != None:
        plt.savefig('./Plots/'+fig_name+'.svg')
    
    return running_means
In [114]:
RM_20_10_1110_1070 = running_mean_APWP(pole_means,20,10,1110,1070)
RM_20_10_1110_1070
Out[114]:
age N A95 PLon PLat
1070 1070.0 2.0 11.957432 178.551819 4.900150
1080 1080.0 5.0 10.958788 179.888056 15.503138
1090 1090.0 10.0 6.041712 180.449295 27.174133
1100 1100.0 14.0 7.197524 193.772742 38.314312
1110 1110.0 7.0 7.655953 207.947114 43.150002
In [115]:
#RM_20_10_1115_1075 = running_mean_APWP(pole_means,20,10,1115,1075,fig_name='running_mean')
RM_20_10_1115_1075 = running_mean_APWP(pole_means,20,10,1115,1075)
RM_20_10_1115_1075
Out[115]:
age N A95 PLon PLat
1075 1075.0 3.0 11.935974 177.302005 8.934178
1085 1085.0 9.0 6.419532 180.564556 26.083229
1095 1095.0 10.0 5.250017 184.549388 32.228738
1105 1105.0 11.0 8.364512 196.785825 40.760752
1115 1115.0 6.0 6.847605 211.337685 44.015279
In [116]:
RM_15_10_1115_1075 = running_mean_APWP(pole_means,15,10,1115,1075)
RM_15_10_1115_1075
Out[116]:
age N A95 PLon PLat
1075 1075.0 2.0 11.957432 178.551819 4.900150
1085 1085.0 4.0 11.562925 180.125231 18.839435
1095 1095.0 8.0 4.069949 182.676294 32.603772
1105 1105.0 7.0 7.655953 207.947114 43.150002
1115 1115.0 3.0 9.528635 219.666315 45.521205

Export latex table

In [117]:
pole_means
Out[117]:
PoleName SLat SLon PLat PLon A95 K N PolarityZone PmagRef AgeNominal AgeLower AgeUpper AgeInfo AgeRef Gaussian_2sigma GaussianOrUniform Q color
Osler_R1 Osler reverse (lower) 48.80 272.34 40.9 218.6 4.8 31.5 30 Alona Bay reversed-polarity zone Swanson-Hysell et al., 2014b 1108 1105.15 1110 Older than 1105.15 $\pm$ 0.33 Ma Osler reverse (upper) pole, perhaps similar in age in Logan Sills ($^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1109 $\pm$ 1 Ma) Davis and Sutcliffe, 1985; this study NaN uniform 7 #B82431
Osler_R2 Osler reverse (upper) 48.59 271.81 42.3 203.4 3.7 24.4 64 Alona Bay reversed-polarity zone Halls, 1974; Swanson-Hysell et al., 2014b; this study 1105.15 1104.82 1105.48 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1105.15 $\pm$ 0.33 Ma for a rhyolite at Agate Point (this study) this study 0.33 gaussian 7 #F2A07E
Osler_N Osler normal 48.64 271.91 32.0 171.9 9.7 90.9 4 Portage Lake normal-polarity zone Halls, 1974; this study 1095 1080.00 1100 Poorly known, significantly younger than the ca. 1105 Ma Agate Point Rhyolite date, pole position similiar to Portage Lake normal-polarity zone poles and distinct from Flour Bay normal-polarity zone pole and therefore likely younger than 1100 Ma date in the Alona Bay reversed-polarity zone NaN uniform 7 #0000FF
MP_lowerR1 Mamainse lower reversed 1 47.10 275.29 49.5 227.0 5.3 31.7 24 Alona Bay reversed-polarity zone Swanson-Hysell et al., 2014a 1109 1106.00 1112 Likely older than ca. 1105 Ma given distinct higher latitude pole position from Osler R1 and similar position to ca. 1107 Ma Siemens Creek Volcanic Pole NaN uniform 7 #930E26
MP_lowerR2 Mamainse lower reversed 2 47.09 275.27 37.5 205.2 4.5 78.6 14 Alona Bay reversed-polarity zone Swanson-Hysell, 2014a 1105 1100.40 1109 Older than $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1100.4 Ma based on stratigraphic position; likely ca. 1105 Ma based on comparison with paleomagnetic data from the Osler Volcanic Group Swanson-Hysell, 2014a NaN uniform 7 #F8C1A6
MP_lowerNupperR Mamainse lower normal and upper reversed 47.07 275.26 36.1 189.7 4.9 37.3 24 Flour Bay normal and reversed polarity zones Swanson-Hysell, 2014a 1100.36 1100.10 1100.61 Age constrained by $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of 1100.36 $\pm$ 0.25 Ma on Flour Bay tuff Swanson-Hysell, 2014a 0.25 gaussian 7 #6A579A
MP_upperN Mamainse upper normal 47.06 275.25 31.2 183.2 2.5 94.4 34 Portage Lake normal-polarity zone Swanson-Hysell, 2014a 1094 1090.00 1100 Likely ca. 1094 Ma based on similar pole position to the Portage Lake Polarity Zone upper NE limb North Shore Volcanic Group poles NaN uniform 7 #3B7185
Grand Portage Basalts Grand Portage Basalts 47.93 270.28 46.0 201.7 6.8 38.3 13 Alona Bay reversed-polarity zone Books, 1968; Tauxe and Kodama, 2009 1106 1105.28 1108 Close to, but slightly older than, $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U 1105.60 $\pm$ 0.32 Ma based on date from Red Rock Rhyolite this study NaN uniform 5 #E0785F
NSVG_nneu North Shore Volcanic Group (upper NE sequence) 47.61 269.23 31.1 181.7 4.2 42.2 28 Portage Lake normal-polarity zone Books, 1972; Tauxe and Kodama, 2009 1095 1092.00 1098 Younger than the the Devil's Kettle Rhyolite $^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1097.7 $\pm$ 2.2 Ma, the new $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U 1093.38 $\pm$ 0.55 Ma date from the Grand Marais Rhyolite is near the top of the sequence with paleomagnetic data Davis and Green, 1997; Fairchild et al., 2017 NaN uniform 6 #35474E
NSVG_nswu North Shore Volcanic Group (upper SW sequence) 47.20 268.50 36.9 179.3 2.1 56.8 78 Portage Lake normal-polarity zone Tauxe and Kodama, 2009; this study 1096.18 1093.94 1096.75 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on 40th Ave. Icelandite (1096.75 $\pm$ 0.28) provides a lower bound, the $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on the Two Harbors Icelandite is within the sequence (1096.18 $\pm$ 0.32) and the Palisade Rhyolite (1093.94 $\pm$ 0.28) provides an upper bound this study 1.12 gaussian 6 #154F8D
SLB Schroeder Lutsen Basalts 47.54 269.10 28.3 187.6 2.5 50.5 65 Portage Lake normal-polarity zone Books, 1972; Tauxe and Kodama, 2009; Fairchild et al., 2017 1090 1085.00 1091.5 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date of of 1091.48 $\pm$ 0.21 Ma on Beaver Bay Complex aplite provides maximum age constraint Fairchild et al., 2017 NaN uniform 6 #8DC2DC
PLV Portage Lake Volcanics 47.29 271.59 27.5 182.5 2.3 48.7 78 Portage Lake normal-polarity zone Books, 1972; Hnat et al., 2006 1092.51 1091.59 1093.37 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U dates on Copper City flow 1093.37 $\pm$ 0.53 Ma and Greenstone Flow 1091.59 $\pm$ 0.27 Ma provide a lower and upper bound this study 0.89 gaussian 6 #409BBE
LST Lake Shore Traps 47.43 272.29 22.2 180.8 4.5 35.0 30 Portage Lake normal-polarity zone Diehl and Haig, 1994 1085.47 1084.00 1091 Younger than Greenstone Flow, $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U date on Lake Shore Trap andesitic flow of 1085.47 $\pm$ 0.32 Ma Fairchild et al., 2017; this study NaN uniform 6 #76C1C3
PM Siemens Creek Volcanics 46.50 269.80 45.8 214.0 9.2 28.3 10 Alona Bay reversed-polarity zone Palmer and Halls, 1986 1108 1105.00 1111 Older than the $^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1107.3 $\pm$ 1.6 Ma from a rhyolite in the Kallander Creek Volcanics Davis and Green, 1997 NaN uniform 6 #CD4F45
QM Quebec Mine Member (Michipicoten Island) 47.80 274.25 36.9 185.6 13.4 21.2 7 Portage Lake normal-polarity zone Palmer and Davis, 1987 1095 1086.50 1100 Older than ca. 1086.5 Ma $^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date on Michipicoten intrusive porphyry Palmer and Davis, 1987 NaN uniform 5 #385C6A
MI Michipicoten Island Formation 47.70 274.15 17.0 174.7 4.4 48.2 23 Portage Lake normal-polarity zone Palmer and Davis, 1987); Fairchild et al., 2017 1083.95 1083.52 1084.39 $^{\mathrm{206}}$Pb/$^{\mathrm{238}}$U dates on the West Sand Bay tuff 1084.39 $\pm$ 0.21 Ma and the Davieux Island Rhyolite 1083.52 $\pm$ 0.23 Ma bracket the VGPs Fairchild et al., 2017 0.44 gaussian 6 #9FD6BD
Nonesuch Nonesuch Formation 46.70 270.10 7.6 178.1 5.6 NaN 11 Portage Lake normal-polarity zone (sed) Henry et al., 1977 1080 1070.00 1083.5 Likely younger than Michipicoten Island Formation. Deposited prior to eruption of Bear Lake Volcanics in lower Freda Sandstone NaN uniform #B3D566
Freda Freda Formation 46.70 270.10 2.2 179.0 4.2 NaN 20 Portage Lake normal-polarity zone (sed) Henry et al., 1977 1070 1060.00 1083.5 Data come from lowermost Freda Formation. Interbedded Bear Lake Volcanics suggest that not too much younger than youngest rift volcanism NaN NaN uniform #D5C888
In [118]:
pole_means.N = pole_means.N.astype(int)
pole_means.fillna('', inplace=True)
pole_means.rename(columns={'PoleName': 'Pole',
                   'PLat': 'Pole lat', 
                   'PLon':'Pole lon', 
                   'A95': '$A_{95}$',
                   'PmagRef': 'Pole reference',
                   'AgeNominal': 'Age (Ma)',
                   'AgeLower': 'Lower age (Ma)',
                   'AgeUpper': 'Upper age (Ma)',
                   'AgeRef' : 'Age reference',
                   'AgeInfo' : 'Age constraints'}, inplace=True)

#pole_means = pole_means.sort_values(columns=['Age (Ma)'],ascending=False)

with open("../Manuscript/Tables/keweenawan_poles.tex", 'w') as f:
    pole_means[['Pole', 'Pole lon', 'Pole lat', '$A_{95}$','N', 'Pole reference',\
        'Age (Ma)', 'Lower age (Ma)', 'Upper age (Ma)', 'Age reference']].to_latex(f, 
         escape=False, longtable=False, index=False)
#'p{3.6 cm} p{1.2cm} p{1.2cm} p{0.8cm} p{0.8cm} p{3.6 cm} p{1.2cm} p{1.2cm} p{1.2cm} p{3.6 cm}')

Extract path from Bayesian PEP inversion

From the Bayesian inversions, we have many different paths and can extract the position at a given time along those paths.

In [119]:
pole_lon = np.loadtxt('./bayesian_inversion/mcplates_results/pole_lon_positions1.txt')
pole_lat = np.loadtxt('./bayesian_inversion/mcplates_results/pole_lat_positions1.txt')

m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,pole_lon[:,0]+180,pole_lat[:,0],
               color=[0.0,0.0,0.0],label='1110 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,1]+180,pole_lat[:,1],
               color=[0.2,0.2,0.2],label='1105 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,2]+180,pole_lat[:,2],
               color=[0.4,0.4,0.4],label='1100 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,3]+180,pole_lat[:,3],
               color=[0.55,0.55,0.55],label='1095 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,4]+180,pole_lat[:,4],
               color=[0.7,0.7,0.7],label='1090 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,5]+180,pole_lat[:,5],
               color=[0.8,0.8,0.8],label='1085 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,6]+180,pole_lat[:,6],
               color=[0.9,0.9,0.9],label='1080 Ma',markersize=2)
plt.legend()
plt.title('Path positions at given times in 1 Euler inversion')
plt.show()
In [120]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

fisher0 = ipmag.fisher_mean(pole_lon[:,0]+180,pole_lat[:,0])
theta0 = ipmag.fisher_angular_deviation(pole_lon[:,0]+180,pole_lat[:,0])
fisher0['theta'] = theta0
ipmag.plot_pole(m,fisher0['dec'],fisher0['inc'],theta0,color='k')

fisher1 = ipmag.fisher_mean(pole_lon[:,1]+180,pole_lat[:,1])
theta1 = ipmag.fisher_angular_deviation(pole_lon[:,1]+180,pole_lat[:,1])
fisher1['theta'] = theta1
ipmag.plot_pole(m,fisher1['dec'],fisher1['inc'],theta1,color='k')

fisher2 = ipmag.fisher_mean(pole_lon[:,2]+180,pole_lat[:,2])
theta2 = ipmag.fisher_angular_deviation(pole_lon[:,2]+180,pole_lat[:,2])
fisher2['theta'] = theta2
ipmag.plot_pole(m,fisher2['dec'],fisher2['inc'],theta2,color='k')

fisher3 = ipmag.fisher_mean(pole_lon[:,3]+180,pole_lat[:,3])
theta3 = ipmag.fisher_angular_deviation(pole_lon[:,3]+180,pole_lat[:,3])
fisher3['theta'] = theta3
ipmag.plot_pole(m,fisher3['dec'],fisher3['inc'],theta3,color='k')

fisher4 = ipmag.fisher_mean(pole_lon[:,4]+180,pole_lat[:,4])
theta4 = ipmag.fisher_angular_deviation(pole_lon[:,4]+180,pole_lat[:,4])
fisher4['theta'] = theta4
ipmag.plot_pole(m,fisher4['dec'],fisher4['inc'],theta4,color='k')

fisher5 = ipmag.fisher_mean(pole_lon[:,5]+180,pole_lat[:,5])
theta5 = ipmag.fisher_angular_deviation(pole_lon[:,5]+180,pole_lat[:,5])
fisher5['theta'] = theta5
ipmag.plot_pole(m,fisher5['dec'],fisher5['inc'],theta5,color='k')

fisher6 = ipmag.fisher_mean(pole_lon[:,6]+180,pole_lat[:,6])
theta6 = ipmag.fisher_angular_deviation(pole_lon[:,6]+180,pole_lat[:,6])
fisher6['theta'] = theta6
ipmag.plot_pole(m,fisher6['dec'],fisher6['inc'],theta6,color='k')

APWP_1pt = pd.DataFrame.from_records([fisher0,fisher1,fisher2,fisher3,fisher4,fisher5,fisher6],
                                     index=[1110,1105,1100,1095,1090,1085,1080])
#plt.savefig('./Plots/one_Euler_mean_path.svg')
In [121]:
APWP_1pt['AgeNominal'] = APWP_1pt.index
APWP_1pt['PoleName'] = APWP_1pt['AgeNominal'].astype(str) + '_APWP_1pt'
APWP_1pt.rename(columns= {'dec':'PLon','inc':'PLat'},inplace=True)
#APWP_1pt.to_csv('APWP_1pt.csv')
APWP_1pt
Out[121]:
alpha95 csd PLon PLat k n r theta AgeNominal PoleName
1110 0.078206 1.427062 218.178366 45.436668 3221.695999 1000 999.689915 2.466526 1110 1110_APWP_1pt
1105 0.054742 0.998978 205.211474 44.651912 6574.434631 1000 999.848048 1.726628 1105 1105_APWP_1pt
1100 0.041141 0.750805 193.934649 40.661967 11638.998454 1000 999.914168 1.297688 1100 1100_APWP_1pt
1095 0.037465 0.683729 185.644894 34.228139 14034.670185 1000 999.928819 1.181754 1095 1095_APWP_1pt
1090 0.043793 0.799195 180.400189 26.223416 10272.212103 1000 999.902747 1.381326 1090 1090_APWP_1pt
1085 0.060506 1.104155 177.770115 17.363246 5381.582041 1000 999.814367 1.908416 1085 1085_APWP_1pt
1080 0.087260 1.592217 177.347080 8.191241 2588.008189 1000 999.613989 2.751980 1080 1080_APWP_1pt
In [122]:
pole_lon = np.loadtxt('./bayesian_inversion/mcplates_results/pole_lon_positions_2_true.txt')
pole_lat = np.loadtxt('./bayesian_inversion/mcplates_results/pole_lat_positions_2_true.txt')

m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

ipmag.plot_vgp(m,pole_lon[:,0]+180,pole_lat[:,0],
               color=[0.0,0.0,0.0],label='1110 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,1]+180,pole_lat[:,1],
               color=[0.2,0.2,0.2],label='1105 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,2]+180,pole_lat[:,2],
               color=[0.4,0.4,0.4],label='1100 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,3]+180,pole_lat[:,3],
               color=[0.55,0.55,0.55],label='1095 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,4]+180,pole_lat[:,4],
               color=[0.7,0.7,0.7],label='1090 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,5]+180,pole_lat[:,5],
               color=[0.8,0.8,0.8],label='1085 Ma',markersize=2)
ipmag.plot_vgp(m,pole_lon[:,6]+180,pole_lat[:,6],
               color=[0.9,0.9,0.9],label='1080 Ma',markersize=2)
plt.legend()
plt.title('Path positions at given times in 2 Euler + TPW inversion')
plt.show()
In [123]:
m = Basemap(projection='ortho',lat_0=35,lon_0=200,resolution='c',area_thresh=50000)
pole_figure_appearance()

fisher0 = ipmag.fisher_mean(pole_lon[:,0]+180,pole_lat[:,0])
theta0 = ipmag.fisher_angular_deviation(pole_lon[:,0]+180,pole_lat[:,0])
fisher0['theta'] = theta0
ipmag.plot_pole(m,fisher0['dec'],fisher0['inc'],theta0,color='k')

fisher1 = ipmag.fisher_mean(pole_lon[:,1]+180,pole_lat[:,1])
theta1 = ipmag.fisher_angular_deviation(pole_lon[:,1]+180,pole_lat[:,1])
fisher1['theta'] = theta1
ipmag.plot_pole(m,fisher1['dec'],fisher1['inc'],theta1,color='k')

fisher2 = ipmag.fisher_mean(pole_lon[:,2]+180,pole_lat[:,2])
theta2 = ipmag.fisher_angular_deviation(pole_lon[:,2]+180,pole_lat[:,2])
fisher2['theta'] = theta2
ipmag.plot_pole(m,fisher2['dec'],fisher2['inc'],theta2,color='k')

fisher3 = ipmag.fisher_mean(pole_lon[:,3]+180,pole_lat[:,3])
theta3 = ipmag.fisher_angular_deviation(pole_lon[:,3]+180,pole_lat[:,3])
fisher3['theta'] = theta3
ipmag.plot_pole(m,fisher3['dec'],fisher3['inc'],theta3,color='k')

fisher4 = ipmag.fisher_mean(pole_lon[:,4]+180,pole_lat[:,4])
theta4 = ipmag.fisher_angular_deviation(pole_lon[:,4]+180,pole_lat[:,4])
fisher4['theta'] = theta4
ipmag.plot_pole(m,fisher4['dec'],fisher4['inc'],theta4,color='k')

fisher5 = ipmag.fisher_mean(pole_lon[:,5]+180,pole_lat[:,5])
theta5 = ipmag.fisher_angular_deviation(pole_lon[:,5]+180,pole_lat[:,5])
fisher5['theta'] = theta5
ipmag.plot_pole(m,fisher5['dec'],fisher5['inc'],theta5,color='k')

fisher6 = ipmag.fisher_mean(pole_lon[:,6]+180,pole_lat[:,6])
theta6 = ipmag.fisher_angular_deviation(pole_lon[:,6]+180,pole_lat[:,6])
fisher6['theta'] = theta6
ipmag.plot_pole(m,fisher6['dec'],fisher6['inc'],theta6,color='k')

APWP_2pt_1tpw = pd.DataFrame.from_records([fisher0,fisher1,fisher2,fisher3,fisher4,fisher5,fisher6],
                                          index=[1110,1105,1100,1095,1090,1085,1080])
#plt.savefig('./Plots/one_TWP_two_tectonic_Euler_mean_path.svg')
In [124]:
APWP_2pt_1tpw['AgeNominal'] = APWP_2pt_1tpw.index
APWP_2pt_1tpw['PoleName'] = APWP_2pt_1tpw['AgeNominal'].astype(str) + '_APWP_2pt_1tpw'
APWP_2pt_1tpw.rename(columns= {'dec':'PLon','inc':'PLat'},inplace=True)
#APWP_2pt_1tpw.to_csv('APWP_2pt_1tpw.csv')
APWP_2pt_1tpw
Out[124]:
alpha95 csd PLon PLat k n r theta AgeNominal PoleName
1110 0.102186 1.864440 222.720981 46.269922 1887.440133 1000 999.470712 3.222489 1110 1110_APWP_2pt_1tpw
1105 0.066171 1.207499 206.431269 42.747639 4499.837487 1000 999.777992 2.087034 1105 1105_APWP_2pt_1tpw
1100 0.090299 1.647637 191.131629 39.033462 2416.835381 1000 999.586650 2.847767 1100 1100_APWP_2pt_1tpw
1095 0.050359 0.919002 182.341600 33.864992 7768.495973 1000 999.871404 1.588399 1095 1095_APWP_2pt_1tpw
1090 0.044970 0.820668 181.953431 26.357640 9741.701289 1000 999.897451 1.418439 1090 1090_APWP_2pt_1tpw
1085 0.083754 1.528255 181.184790 18.871414 2809.170939 1000 999.644379 2.641429 1085 1085_APWP_2pt_1tpw
1080 0.130795 2.386005 180.070622 11.428138 1152.463851 1000 999.133162 4.123959 1080 1080_APWP_2pt_1tpw
In [125]:
APWP_1pt.to_latex(columns=['PLon','PLat','theta'],float_format="%.1f")
APWP_2pt_1tpw.to_latex(columns=['PLon','PLat','theta'],float_format="%.1f")
Out[125]:
'\\begin{tabular}{lrrr}\n\\toprule\n{} &  PLon &  PLat &  theta \\\\\n\\midrule\n1110 & 222.7 & 46.3 & 3.2 \\\\\n1105 & 206.4 & 42.7 & 2.1 \\\\\n1100 & 191.1 & 39.0 & 2.8 \\\\\n1095 & 182.3 & 33.9 & 1.6 \\\\\n1090 & 182.0 & 26.4 & 1.4 \\\\\n1085 & 181.2 & 18.9 & 2.6 \\\\\n1080 & 180.1 & 11.4 & 4.1 \\\\\n\\bottomrule\n\\end{tabular}\n'

Overview APWP

In [126]:
poles = pd.read_csv('../Data_Compiled/Laurentia_poles/Laurentia_poles.csv')
poles = poles[8:]
poles.head()
Out[126]:
Unnamed: 0 PoleName SLat SLon PLat PLon A95 K N PolarityZone PmagRef AgeNominal AgeLower AgeUpper AgeInfo AgeRef Gaussian_2sigma GaussianOrUniform Q color
8 Mackenzie Mackenzie dykes grand mean 65.0 250.00 4.0 190.0 5.0 NaN 5.0 NaN Buchan et al., 2000 1267.0 1265.00 1269.0 NaN NaN NaN NaN NaN NaN
9 Sudbury Sudbury Dykes Combined 46.3 278.60 -2.5 192.8 2.5 NaN 52.0 NaN Palmer,H.C., Merz,B.A., Hayatsu,A., 1977 1237.0 1232.00 1242.0 NaN NaN NaN NaN NaN NaN
10 Lamp_dikes Lamprophyre dikes 48.8 273.30 58.0 223.3 9.2 37.8 19.0 multiple polarity Piispa et al., 2018 1144.0 1130.00 1155.0 U-Pb perovskite and Ar-Ar phlogopite dates Queen et al. (1996) NaN NaN NaN NaN
11 Abitibi_dikes Abitibi dykes 48.0 279.00 44.4 211.4 13.5 NaN 8.0 multiple polarity Ernst and Buchan (1993) and Halls et al. (2005) as calculated in Piispa et al. 2018 1141.0 1139.00 1143.0 U-Pb date on baddeleyite Krogh et al. 1987 NaN NaN NaN NaN
12 Osler_R1 Osler reverse (lower) 48.8 272.34 40.9 218.6 4.8 31.5 30.0 Alona Bay reversed-polarity zone Swanson-Hysell et al., 2014b 1108.0 1105.15 1110.0 Older than 1105.15 $\pm$ 0.33 Ma Osler reverse (upper) pole, perhaps similar in age in Logan Sills ($^{\mathrm{207}}$Pb/$^{\mathrm{206}}$Pb date of 1109 $\pm$ 1 Ma) Davis and Sutcliffe, 1985; this study NaN uniform 7.0 #B82431
In [127]:
import matplotlib
from mpl_toolkits.basemap import Basemap
import matplotlib.colors as colors

m = Basemap(projection='ortho',lat_0=0,lon_0=180,resolution='c',area_thresh=50000)
plt.figure(figsize=(6, 6))
m.drawcoastlines(linewidth=0.25)
m.fillcontinents(color='0.3',lake_color='white',zorder=1)
m.drawmapboundary(fill_color='0.8')
m.drawmeridians(np.arange(0,360,30))
m.drawparallels(np.arange(-90,90,30))

viridis = cm = plt.get_cmap('viridis') 
cNorm  = matplotlib.colors.Normalize(vmin=720, vmax=1270)
# scalarMap = matplotlib.cm.ScalarMappable(norm=cNorm, cmap='viridis_r')
scalarMap = matplotlib.cm.ScalarMappable(norm=cNorm, cmap='Spectral_r')

for n in poles.index:
    rgba = scalarMap.to_rgba(poles.AgeNominal[n])
    hex_color = colors.rgb2hex(rgba)
    hex_color
    ipmag.plot_pole(m,poles.PLon[n],poles.PLat[n],poles.A95[n],color=hex_color)
scalarMap.set_array(np.linspace(720,1110))    
plt.colorbar(scalarMap,orientation='vertical',fraction=0.046, pad=0.04)
#plt.savefig('Plots/Kewee_Track_Grenville_Loop.pdf')
plt.show()

References

@article{Books1968a, Author = {Books, K.G.}, Journal = {U.S. Geological Survey Professional Paper}, Pages = {248-254}, Title = {Magnetization of the lowermost {K}eweenawan lava flows in the {L}ake {S}uperior area, {G}eological {S}urvey research 1968, chapter {D}}, Volume = {P 0600-D}, Year = {1968}} @article{Davis1997a, Author = {Davis, D.W. and Green, J.C.}, Journal = {Canadian Journal of Earth Science}, Pages = {476-488}, Title = {Geochronology of the {N}orth {A}merican {M}idcontinent rift in western {L}ake {S}uperior and implications for its geodynamic evolution}, Volume = {34}, Year = {1997}} @article{Deenen2011a, Author = {Deenen, Martijn H. L. and Langereis, Cor G. and van Hinsbergen, Douwe J. J. and Biggin, Andrew J.}, Doi = {10.1111/j.1365-246X.2011.05050.x}, Journal = {Geophysical Journal International}, Title = {Geomagnetic secular variation and the statistics of palaeomagnetic directions}, Year = {2011}} @article{Diehl1994a, Author = {Diehl, J.F. and Haig, T.D.}, Journal = {Canadian Journal of Earth Sciences}, Pages = {369-380}, Title = {A paleomagnetic study of the lava flows within the {C}opper {H}arbour {C}onglomerate, {M}ichigan: new results and implications}, Volume = {31}, Year = {1994}} @incollection{Ernst1987a, Author = {Ernst, R. E. and Bell, K. and Ranalli, G. and {Halls}, H.~C.}, Booktitle = {Mafic dyke swarms}, Editor = {Halls, H.C. and Fahrig, W.F.}, Pages = {123-135}, Publisher = {Geological Association of Canada}, Title = {{The Great Abitibi Dyke, Southeastern Superior Province, Canada}}, Volume = {34}, Year = {1987}} @article{Ernst1993a, Author = {Ernst, R.E. and Buchan, K.L.}, Journal = {Canadian Journal of Earth Science}, Pages = {1886-1897}, Title = {Paleomagnetism of the {A}bitibi dike swarm, southern {S}uperior {P}rovince, and implications for the {L}ogan {L}oop}, Volume = {30}, Year = {1993}} @article{Halls1974a, Author = {Halls, H.C.}, Journal = {Canadian Journal of Earth Science}, Pages = {1200-1207}, Title = {A paleomagnetic reversal in the {O}sler {V}olcanic {G}roup, northern {L}ake {S}uperior}, Volume = {11}, Year = {1974}} @article{Halls2005a, Author = {{Halls}, H.~C. and Stott, G. M. and Davis, D.~W.}, Journal = {Ontario Geological Survey Open File Reports}, Title = {Paleomagnetism, Geochronology and Geochemistry of Several Proterozoic Mafic Dike Swarms in Northwestern Ontario}, Volume = {6171}, Year = {2005}} @incollection{Krogh1987a, Author = {Krogh, T.E. and Corfu, F. and Davis, D.W. and Dunning, G.R. and Heaman, L.M. and Kamo, S.L. and Machado, N. and Greenough, J.D. and Nakamura, E.}, Booktitle = {Mafic dyke swarms}, Editor = {Halls, H.C. and Fahrig, W.F.}, Publisher = {Geological Association of Canada}, Title = {Precise {U-Pb} isotopic ages of diabase dykes and mafic to ultramafic rocks using trace amounts of baddeleyite and zircon}, Volume = {34}, Year = {1987}} @article{Kulakov2013a, Annote = {doi: 10.1139/cjes-2013-0003}, Author = {Kulakov, Evgeniy V. and Smirnov, Aleksey V. and Diehl, Jimmy F.}, Doi = {10.1139/cjes-2013-0003}, Journal = {Canadian Journal of Earth Sciences}, Pages = {1085--1096}, Title = {{Paleomagnetism of ∼1.09 Ga Lake Shore Traps (Keweenaw Peninsula, Michigan): new results and implications}}, Volume = {50}, Year = {2013}} @article{Palmer1987a, Author = {Palmer, H.C. and Davis, D.W.}, Doi = {10.1016/0301-9268(87)90077-5}, Journal = {Precambrian Research}, Keywords = {Keweenawan}, Pages = {157-171}, Title = {Paleomagnetism and {U-Pb} geochronology of volcanic rocks from {M}ichipicoten {I}sland, {L}ake {S}uperior, {C}anada: precise calibration of the {K}eweenawan polar wander track}, Volume = {37}, Year = {1987}} @article{Swanson-Hysell2009a, Author = {Swanson-Hysell, Nicholas L. and Maloof, Adam C. and Weiss, Benjamin P. and Evans, David A. D.}, Journal = {Nature Geoscience}, Pages = {713--717}, Title = {No asymmetry in geomagnetic reversals recorded by 1.1-billion-year-old {K}eweenawan basalts}, Volume = {2}, Year = {2009}} @article{Swanson-Hysell2014a, Author = {Swanson-Hysell, Nicholas L. and Burgess, Seth D. and Maloof, Adam C. and Bowring, Samuel A.}, Journal = {Geology}, Title = {Magmatic activity and plate motion during the latent stage of {M}idcontinent {R}ift development}, Year = {2014}} @article{Swanson-Hysell2014b, Author = {Swanson-Hysell, Nicholas. L. and Vaughan, Angus A. and Mustain, Monica R. and Asp, Kristofer E.}, Journal = {Geochemistry Geophysics Geosystems}, Pages = {2039--2047}, Title = {{Confirmation of progressive plate motion during the Midcontinent Rift's early magmatic stage from the Osler Volcanic Group, Ontario, Canada}}, Volume = {15}, Year = {2014}} @article{Tauxe2009a, Author = {Tauxe, L. and Kodama, K.P.}, Journal = {Physics of the Earth and Planetary Interiors}, Pages = {31-45}, Title = {Paleosecular variation models for ancient times: Clues from {K}eweenawan lava flows}, Volume = {177}, Year = {2009}}