First we'll pull a remote mapping file (this doesn't rely on pandas or the current QIIME mapping file support - we're just pulling a tsv version of a Google Spreadsheet). The mapping file is here.


In [1]:
!load_remote_mapping_file.py -k 0AvglGXLayhG7dDNCWnUwSHhWNmxKODZISWx6VzBqU0E -o map1.tsv

Load a mapping file with QIIME and do some work with it.


In [2]:
from qiime.parse import parse_mapping_file_to_dict

In [3]:
qmap, comment_lines = parse_mapping_file_to_dict(open('map1.tsv'))

We can do pretty basic stuff with this: it's a 2D dict mapping sample ids to per-sample metadata dictionaries.

Pro: it's easy to use.

Con: anything you want to do basically requires you to pass this dict to other functions.


In [4]:
qmap.keys()


Out[4]:
['Stillton4R2',
 'Stillton4R3',
 'Stillton4R1',
 'HCanyon3R3',
 'HCanyon3R2',
 'HCanyon3R1',
 'HCanyon8R1',
 'HCanyon2R2',
 'HCanyon2R3',
 'HCanyon2R1',
 'HCanyon8R2',
 'Halls8R1',
 'HCanyon0R1',
 'HCanyon0R2',
 'HCanyon0R3',
 'HCanyon7R3',
 'HCanyon7R2',
 'HCanyon7R1',
 'HCanyon1R1',
 'HCanyon1R3',
 'HCanyon1R2',
 'HCanyon10R2',
 'HCanyon10R3',
 'HCanyon10R1',
 'HCanyon11R3',
 'HCanyon11R2',
 'HCanyon11R1',
 'HCanyon6R2',
 'HCanyon6R3',
 'HCanyon6R1',
 'Stillton11R1',
 'HCanyon5R3',
 'HCanyon5R2',
 'HCanyon4R1',
 'HCanyon4R2',
 'HCanyon4R3',
 'HCanyon12R1',
 'HCanyon12R2',
 'HCanyon12R3',
 'Halls9R2',
 'Halls9R1',
 'HCanyon8R3',
 'Halls8R2',
 'Stillton10R1',
 'Stillton10R2',
 'Stillton10R3',
 'Halls6R1',
 'Halls6R2',
 'Halls4R2',
 'Stillton5R2',
 'Halls4R1',
 'Halls3R1',
 'Halls3R2',
 'Halls5R2',
 'Stillton1R1',
 'Stillton2R1',
 'Stillton2R2',
 'Stillton2R3',
 'Stillton3R1',
 'Stillton3R3',
 'Stillton3R2',
 'Stillton1R2',
 'Halls5R1',
 'Halls2R1',
 'Halls2R2',
 'Halls1R2',
 'Halls1R1',
 'Halls0R2',
 'Halls0R1',
 'Stillton9R3',
 'Stillton9R2',
 'Stillton9R1',
 'Stillton7R1',
 'Halls10R1',
 'Halls10R2',
 'Stillton7R2',
 'Halls7R1',
 'Halls7R2',
 'Stillton0R2',
 'Stillton0R3',
 'Stillton0R1',
 'Stillton6R1',
 'Stillton6R2',
 'Stillton6R3',
 'HCanyon9R1',
 'HCanyon9R3',
 'HCanyon9R2',
 'Stillton7R3',
 'CrustControlR1',
 'CrustControlR2',
 'CrustControlR3',
 'Stillton8R3',
 'HCanyon5R1',
 'Stillton8R1',
 'Stillton11R3']

In [5]:
qmap['Stillton4R2']


Out[5]:
{'BarcodeSequence': 'GTGCAATCGACG',
 'DNA_ID_No': '29',
 'Day': '29',
 'Description': 'GlenCanyon_sc3r2',
 'Env': 'DisturbedSoil',
 'Hour': '18',
 'Lane': 'Lane4',
 'Latitude': 'N37_29.865',
 'LinkerPrimerSequence': 'CATGATCCTTCTGCAGGTTCACCTAC',
 'Longitude': 'W110_41.995',
 'Month': '9',
 'Primer_Plate': '5',
 'Replicate': '2',
 'Sample_Plate': 'GlenCanyon',
 'Sample_Type': 'Soil',
 'Site': 'Stillton4',
 'Site_Name': 'Stillton',
 'SourceSink': 'sink',
 'Type': 'DisturbedSoil',
 'TypeBasic': 'Soil',
 'Well_ID': 'e3',
 'Year': '2010',
 'bag_sample_id': 'sc3r2',
 'days_since_epoch': '14881',
 'estimated_elevation': '3663',
 'estimated_last_submerged': '2001',
 'estimated_years_since_submerged': '9',
 'estimated_years_since_submerged_for_plotting': '9',
 'gps_elevation': 'no_data',
 'gps_elevation_minus_estimated_elevation': 'NA',
 'sample_pH': '8.75',
 'site_number': '4'}

So if you want to, e.g., know the latitude of Stillton4R2, you'd access it as follows:


In [6]:
qmap['Stillton4R2']['Latitude']


Out[6]:
'N37_29.865'

Now let's try using pandas


In [8]:
import pandas as pd

In [9]:
pmap = pd.read_csv('map1.tsv', sep='\t', index_col=0)

We can still access data in nearly the same way...


In [10]:
pmap['Latitude']['Stillton4R2']


Out[10]:
'N37_29.865'

Or transpose it, or you prefer to access in QIIME's way...


In [11]:
pmap_t = pmap.transpose()
pmap_t['Stillton4R2']['Latitude']


Out[11]:
'N37_29.865'

In [12]:
pmap['Latitude']['Stillton4R2']


Out[12]:
'N37_29.865'

It's easy to explore information in the mapping file by e.g., figuring out summary stats for a numeric column:


In [13]:
pmap['sample_pH'].median()


Out[13]:
9.27

In [14]:
pmap.plot('estimated_elevation', 'sample_pH')


Out[14]:
<matplotlib.axes.AxesSubplot at 0x109a65150>

In [15]:
pmap.hist('sample_pH')


Out[15]:
array([[<matplotlib.axes.AxesSubplot object at 0x109a78d50>]], dtype=object)

or to count the number of non-$NA$ entries per category


In [16]:
pmap.count()


Out[16]:
BarcodeSequence                                 95
LinkerPrimerSequence                            95
site_number                                     95
bag_sample_id                                   95
sample_pH                                       95
Sample_Type                                     95
Well_ID                                         95
Sample_Plate                                    95
Primer_Plate                                    95
Lane                                            95
Latitude                                        95
Longitude                                       95
Type                                            95
TypeBasic                                       95
Env                                             77
SourceSink                                      77
estimated_elevation                             95
estimated_years_since_submerged                 68
estimated_years_since_submerged_for_plotting    92
estimated_last_submerged                        68
gps_elevation                                   95
gps_elevation_minus_estimated_elevation         66
Month                                           95
Day                                             95
Year                                            95
days_since_epoch                                95
Hour                                            95
Site                                            95
Site_Name                                       95
Replicate                                       95
DNA_ID_No                                       95
Description                                     95
dtype: int64

or clean-up, to normalize how $NA$ is represented


In [17]:
pmap['estimated_years_since_submerged']['Stillton9R3']


Out[17]:
nan

In [18]:
pmap['gps_elevation']['Stillton9R3']


Out[18]:
'no_data'

In [19]:
pmap = pmap.replace('no_data',nan)

In [20]:
pmap['gps_elevation']['Stillton9R3']


Out[20]:
nan

These objects also display nicely in IPython Notebook.


In [21]:
pmap


Out[21]:
BarcodeSequence LinkerPrimerSequence site_number bag_sample_id sample_pH Sample_Type Well_ID Sample_Plate Primer_Plate Lane Latitude Longitude Type TypeBasic Env SourceSink estimated_elevation estimated_years_since_submerged estimated_years_since_submerged_for_plotting estimated_last_submerged
#SampleID
Halls0R1 GTATATCCGCAG CATGATCCTTCTGCAGGTTCACCTAC 0 ha0r1 9.17 Soil c2 GlenCanyon 5 Lane4 N37_28.365 W110_42.550 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
Halls0R2 GTCGTAGCCAGA CATGATCCTTCTGCAGGTTCACCTAC 0 ha0r2 9.15 Soil d2 GlenCanyon 5 Lane4 N37_28.365 W110_42.550 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
Halls1R1 GCTGTGTAGGAC CATGATCCTTCTGCAGGTTCACCTAC 1 ha1r1 9.17 Soil a2 GlenCanyon 5 Lane4 N37_28.365 W110_42.550 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
Halls1R2 GGTCGTAGCGTA CATGATCCTTCTGCAGGTTCACCTAC 1 ha1r2 9.16 Soil b2 GlenCanyon 5 Lane4 N37_28.365 W110_42.550 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
HCanyon0R1 TAGACTGTACTC CATGATCCTTCTGCAGGTTCACCTAC 0 hc1r1 9.55 Soil g10 GlenCanyon 5 Lane4 N37_33.106 W110_40.479 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
HCanyon0R2 TAGTCGTCTAGT CATGATCCTTCTGCAGGTTCACCTAC 0 hc1r2 9.44 Soil a9 GlenCanyon 5 Lane4 N37_33.106 W110_40.479 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
HCanyon0R3 GGCTATGACATC CATGATCCTTCTGCAGGTTCACCTAC 0 hc1r3 9.41 Soil a11 GlenCanyon 5 Lane4 N37_33.106 W110_40.479 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
HCanyon1R1 GTCTTCGTCGCT CATGATCCTTCTGCAGGTTCACCTAC 1 hc0r1 9.31 Soil d10 GlenCanyon 5 Lane4 N37_33.106 W110_40.479 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
HCanyon1R2 GTGTTGCAGCAT CATGATCCTTCTGCAGGTTCACCTAC 1 hc0r2 9.26 Soil e10 GlenCanyon 5 Lane4 N37_33.106 W110_40.479 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
HCanyon1R3 TACATCACCACA CATGATCCTTCTGCAGGTTCACCTAC 1 hc0r3 9.13 Soil f10 GlenCanyon 5 Lane4 N37_33.106 W110_40.479 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
Stillton0R1 GTGTGCTATCAG CATGATCCTTCTGCAGGTTCACCTAC 0 sc1r1 8.02 Soil e8 GlenCanyon 5 Lane4 N37_29.719 W110_42.012 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
Stillton0R2 TACAGATGGCTC CATGATCCTTCTGCAGGTTCACCTAC 0 sc1r2 8.00 Soil f8 GlenCanyon 5 Lane4 N37_29.719 W110_42.012 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
Stillton0R3 TACTTACTGCAG CATGATCCTTCTGCAGGTTCACCTAC 0 sc1r3 8.05 Soil g8 GlenCanyon 5 Lane4 N37_29.719 W110_42.012 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
Stillton1R1 GTGTCTACATTG CATGATCCTTCTGCAGGTTCACCTAC 1 sc0r1 8.35 Soil e7 GlenCanyon 5 Lane4 N37_29.719 W110_42.012 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
Stillton1R2 TACACGATCTAC CATGATCCTTCTGCAGGTTCACCTAC 1 sc0r2 8.30 Soil f7 GlenCanyon 5 Lane4 N37_29.719 W110_42.012 Sediment Sediment Sediment source 3633 0 0.1 2010 ...
Halls2R1 GTCAACGCGATG CATGATCCTTCTGCAGGTTCACCTAC 2 ha2r1 9.23 Soil c7 GlenCanyon 5 Lane4 N37_28.352 W110_42.547 DisturbedSoil Soil DisturbedSoil sink 3643 1 1.0 2009 ...
Halls2R2 GTCTCTCTACGC CATGATCCTTCTGCAGGTTCACCTAC 2 ha2r2 9.26 Soil d7 GlenCanyon 5 Lane4 N37_28.352 W110_42.547 DisturbedSoil Soil DisturbedSoil sink 3643 1 1.0 2009 ...
HCanyon2R1 TAGCTGAGTCCA CATGATCCTTCTGCAGGTTCACCTAC 2 hc1r1 9.55 Soil h8 GlenCanyon 5 Lane4 N37_33.097 W110_40.526 DisturbedSoil Soil DisturbedSoil sink 3643 1 1.0 2009 ...
HCanyon2R2 GGCGACATGTAC CATGATCCTTCTGCAGGTTCACCTAC 2 hc1r2 9.44 Soil h10 GlenCanyon 5 Lane4 N37_33.097 W110_40.526 DisturbedSoil Soil DisturbedSoil sink 3643 1 1.0 2009 ...
HCanyon2R3 GTAGATGCTTCG CATGATCCTTCTGCAGGTTCACCTAC 2 hc1r3 9.41 Soil b9 GlenCanyon 5 Lane4 N37_33.097 W110_40.526 DisturbedSoil Soil DisturbedSoil sink 3643 1 1.0 2009 ...
Stillton2R1 TACTGGACGCGA CATGATCCTTCTGCAGGTTCACCTAC 2 sc1r1 8.02 Soil g7 GlenCanyon 5 Lane4 N37_29.749 W110_42.018 DisturbedSoil Soil DisturbedSoil sink 3643 1 1.0 2009 ...
Stillton2R2 TAGCTCGTAACT CATGATCCTTCTGCAGGTTCACCTAC 2 sc1r2 8.00 Soil h7 GlenCanyon 5 Lane4 N37_29.749 W110_42.018 DisturbedSoil Soil DisturbedSoil sink 3643 1 1.0 2009 ...
Stillton2R3 GGCAGTGTATCG CATGATCCTTCTGCAGGTTCACCTAC 2 sc1r3 8.05 Soil a8 GlenCanyon 5 Lane4 N37_29.749 W110_42.018 DisturbedSoil Soil DisturbedSoil sink 3643 1 1.0 2009 ...
Halls3R1 GGATCGCAGATC CATGATCCTTCTGCAGGTTCACCTAC 3 ha3r1 9.45 Soil a7 GlenCanyon 5 Lane4 N37_28.349 W110_42.545 DisturbedSoil Soil DisturbedSoil sink 3653 8 8.0 2002 ...
Halls3R2 GTAGACTGCGTG CATGATCCTTCTGCAGGTTCACCTAC 3 ha3r2 9.41 Soil b7 GlenCanyon 5 Lane4 N37_28.349 W110_42.545 DisturbedSoil Soil DisturbedSoil sink 3653 8 8.0 2002 ...
HCanyon3R1 GTCATATCGTAC CATGATCCTTCTGCAGGTTCACCTAC 3 hc2r1 9.65 Soil c9 GlenCanyon 5 Lane4 N37_33.087 W110_40.553 DisturbedSoil Soil DisturbedSoil sink 3653 8 8.0 2002 ...
HCanyon3R2 GTCTGGATAGCG CATGATCCTTCTGCAGGTTCACCTAC 3 hc2r2 9.71 Soil d9 GlenCanyon 5 Lane4 N37_33.087 W110_40.553 DisturbedSoil Soil DisturbedSoil sink 3653 8 8.0 2002 ...
HCanyon3R3 GTGTGTGTCAGG CATGATCCTTCTGCAGGTTCACCTAC 3 hc2r3 9.67 Soil e9 GlenCanyon 5 Lane4 N37_33.087 W110_40.553 DisturbedSoil Soil DisturbedSoil sink 3653 8 8.0 2002 ...
Stillton3R1 GTAGAGCTGTTC CATGATCCTTCTGCAGGTTCACCTAC 3 sc2r1 8.13 Soil b8 GlenCanyon 5 Lane4 N37_29.787 W110_42.014 DisturbedSoil Soil DisturbedSoil sink 3653 8 8.0 2002 ...
Stillton3R2 GTCACGACTATT CATGATCCTTCTGCAGGTTCACCTAC 3 sc2r2 8.21 Soil c8 GlenCanyon 5 Lane4 N37_29.787 W110_42.014 DisturbedSoil Soil DisturbedSoil sink 3653 8 8.0 2002 ...
Stillton3R3 GTCTGACAGTTG CATGATCCTTCTGCAGGTTCACCTAC 3 sc2r3 8.44 Soil d8 GlenCanyon 5 Lane4 N37_29.787 W110_42.014 DisturbedSoil Soil DisturbedSoil sink 3653 8 8.0 2002 ...
Halls4R1 TACTGCGACAGT CATGATCCTTCTGCAGGTTCACCTAC 4 ha4r1 9.46 Soil g6 GlenCanyon 5 Lane4 N37_28.342 W110_42.545 DisturbedSoil Soil DisturbedSoil sink 3663 9 9.0 2001 ...
Halls4R2 TAGCGGATCACG CATGATCCTTCTGCAGGTTCACCTAC 4 ha4r2 9.49 Soil h6 GlenCanyon 5 Lane4 N37_28.342 W110_42.545 DisturbedSoil Soil DisturbedSoil sink 3663 9 9.0 2001 ...
HCanyon4R1 TACAGTCTCATG CATGATCCTTCTGCAGGTTCACCTAC 4 hc3r1 9.49 Soil f9 GlenCanyon 5 Lane4 N37_33.055 W110_40.607 DisturbedSoil Soil DisturbedSoil sink 3663 9 9.0 2001 ...
HCanyon4R2 TACTTCGCTCGC CATGATCCTTCTGCAGGTTCACCTAC 4 hc3r2 9.39 Soil g9 GlenCanyon 5 Lane4 N37_33.055 W110_40.607 DisturbedSoil Soil DisturbedSoil sink 3663 9 9.0 2001 ...
HCanyon4R3 TAGGTATCTCAC CATGATCCTTCTGCAGGTTCACCTAC 4 hc3r3 9.42 Soil h9 GlenCanyon 5 Lane4 N37_33.055 W110_40.607 DisturbedSoil Soil DisturbedSoil sink 3663 9 9.0 2001 ...
Stillton4R1 GTCGTGTGTCAA CATGATCCTTCTGCAGGTTCACCTAC 4 sc3r1 8.82 Soil d3 GlenCanyon 5 Lane4 N37_29.865 W110_41.995 DisturbedSoil Soil DisturbedSoil sink 3663 9 9.0 2001 ...
Stillton4R2 GTGCAATCGACG CATGATCCTTCTGCAGGTTCACCTAC 4 sc3r2 8.75 Soil e3 GlenCanyon 5 Lane4 N37_29.865 W110_41.995 DisturbedSoil Soil DisturbedSoil sink 3663 9 9.0 2001 ...
Stillton4R3 TAACAGTCGCTG CATGATCCTTCTGCAGGTTCACCTAC 4 sc3r3 8.71 Soil f3 GlenCanyon 5 Lane4 N37_29.865 W110_41.995 DisturbedSoil Soil DisturbedSoil sink 3663 9 9.0 2001 ...
Halls5R1 GTGTACCTATCA CATGATCCTTCTGCAGGTTCACCTAC 5 ha5r1 9.50 Soil e6 GlenCanyon 5 Lane4 N37_28.309 W110_42.571 DisturbedSoil Soil DisturbedSoil sink 3673 9 9.0 2001 ...
Halls5R2 TACACACATGGC CATGATCCTTCTGCAGGTTCACCTAC 5 ha5r2 9.54 Soil f6 GlenCanyon 5 Lane4 N37_28.309 W110_42.571 DisturbedSoil Soil DisturbedSoil sink 3673 9 9.0 2001 ...
HCanyon5R1 GGCGTACTGATG CATGATCCTTCTGCAGGTTCACCTAC 5 hc4r1 9.45 Soil a10 GlenCanyon 5 Lane4 N37_33.035 W110_40.612 DisturbedSoil Soil DisturbedSoil sink 3673 9 9.0 2001 ...
HCanyon5R2 GTAGCAACGTCT CATGATCCTTCTGCAGGTTCACCTAC 5 hc4r2 9.49 Soil b10 GlenCanyon 5 Lane4 N37_33.035 W110_40.612 DisturbedSoil Soil DisturbedSoil sink 3673 9 9.0 2001 ...
HCanyon5R3 GTCATTCACGAG CATGATCCTTCTGCAGGTTCACCTAC 5 hc4r3 9.46 Soil c10 GlenCanyon 5 Lane4 N37_33.035 W110_40.612 DisturbedSoil Soil DisturbedSoil sink 3673 9 9.0 2001 ...
Stillton5R2 GTATCCATGCGA CATGATCCTTCTGCAGGTTCACCTAC 5 sc4r2 8.85 Soil c3 GlenCanyon 5 Lane4 N37_29.877 W110_42.004 DisturbedSoil Soil DisturbedSoil sink 3673 9 9.0 2001 ...
Halls6R1 TAGTGCTGCGTA CATGATCCTTCTGCAGGTTCACCTAC 6 ha6r1 9.44 Soil h11 GlenCanyon 5 Lane4 N37_28.296 W110_42.579 DisturbedSoil Soil DisturbedSoil sink 3683 10 10.0 2000 ...
Halls6R2 GGTATACGCAGC CATGATCCTTCTGCAGGTTCACCTAC 6 ha6r2 9.42 Soil a12 GlenCanyon 5 Lane4 N37_28.296 W110_42.579 DisturbedSoil Soil DisturbedSoil sink 3683 10 10.0 2000 ...
HCanyon6R1 GTAGCTGACGCA CATGATCCTTCTGCAGGTTCACCTAC 6 hc5r1 9.47 Soil b12 GlenCanyon 5 Lane4 N37_33.026 W110_40.609 DisturbedSoil Soil DisturbedSoil sink 3683 10 10.0 2000 ...
HCanyon6R2 GTCGACTCCTCT CATGATCCTTCTGCAGGTTCACCTAC 6 hc5r2 9.50 Soil c12 GlenCanyon 5 Lane4 N37_33.026 W110_40.609 DisturbedSoil Soil DisturbedSoil sink 3683 10 10.0 2000 ...
HCanyon6R3 GTGACTGCGGAT CATGATCCTTCTGCAGGTTCACCTAC 6 hc5r3 9.51 Soil d12 GlenCanyon 5 Lane4 N37_33.026 W110_40.609 DisturbedSoil Soil DisturbedSoil sink 3683 10 10.0 2000 ...
Stillton6R1 TAGCACACCTAT CATGATCCTTCTGCAGGTTCACCTAC 6 sc5r1 9.50 Soil h2 GlenCanyon 5 Lane4 N37_30.066 W110_41.972 DisturbedSoil Soil DisturbedSoil sink 3683 10 10.0 2000 ...
Stillton6R2 GCTTACATCGAG CATGATCCTTCTGCAGGTTCACCTAC 6 sc5r2 9.54 Soil a3 GlenCanyon 5 Lane4 N37_30.066 W110_41.972 DisturbedSoil Soil DisturbedSoil sink 3683 10 10.0 2000 ...
Stillton6R3 GGTGCGTGTATG CATGATCCTTCTGCAGGTTCACCTAC 6 sc5r3 9.49 Soil b3 GlenCanyon 5 Lane4 N37_30.066 W110_41.972 DisturbedSoil Soil DisturbedSoil sink 3683 10 10.0 2000 ...
Halls7R1 GCTGTAGTATGC CATGATCCTTCTGCAGGTTCACCTAC 7 ha7r1 9.06 Soil a1 GlenCanyon 5 Lane4 N37_28.291 W110_42.592 DisturbedSoil Soil DisturbedSoil sink 3693 11 11.0 1999 ...
Halls7R2 GTTGACGACAGC CATGATCCTTCTGCAGGTTCACCTAC 7 ha7r2 9.01 Soil f1 GlenCanyon 5 Lane4 N37_28.291 W110_42.592 DisturbedSoil Soil DisturbedSoil sink 3693 11 11.0 1999 ...
HCanyon7R1 GTACTCTAGACT CATGATCCTTCTGCAGGTTCACCTAC 7 hc6r1 9.34 Soil b6 GlenCanyon 5 Lane4 N37_33.017 W110_40.602 DisturbedSoil Soil DisturbedSoil sink 3693 11 11.0 1999 ...
HCanyon7R2 GTATGTTGCTCA CATGATCCTTCTGCAGGTTCACCTAC 7 hc6r2 9.30 Soil c6 GlenCanyon 5 Lane4 N37_33.017 W110_40.602 DisturbedSoil Soil DisturbedSoil sink 3693 11 11.0 1999 ...
HCanyon7R3 GTCTCATGTAGG CATGATCCTTCTGCAGGTTCACCTAC 7 hc6r3 9.38 Soil d6 GlenCanyon 5 Lane4 N37_33.017 W110_40.602 DisturbedSoil Soil DisturbedSoil sink 3693 11 11.0 1999 ...
Stillton7R1 GTGATAGTGCCG CATGATCCTTCTGCAGGTTCACCTAC 7 sc6r1 9.29 Soil e2 GlenCanyon 5 Lane4 N37_30.094 W110_41.947 DisturbedSoil Soil DisturbedSoil sink 3693 11 11.0 1999 ...
Stillton7R2 GTTGTATACTCG CATGATCCTTCTGCAGGTTCACCTAC 7 sc6r2 9.38 Soil f2 GlenCanyon 5 Lane4 N37_30.094 W110_41.947 DisturbedSoil Soil DisturbedSoil sink 3693 11 11.0 1999 ...
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

95 rows × 32 columns

so it'd be really nice to start using these for any functions that return tables, e.g., of statistical results. I think we could probably also inject some formatting here, so we could use this to highlight incorrectly formatted entries, etc.

See documenation for some of the basic available functionality here.