You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ma...@apache.org on 2015/03/28 22:50:32 UTC

svn commit: r1669839 [1/3] - in /tika/trunk: ./ tika-bundle/ tika-core/src/main/resources/org/apache/tika/mime/ tika-parsers/ tika-parsers/src/main/java/org/apache/tika/parser/isatab/ tika-parsers/src/main/resources/META-INF/services/ tika-parsers/src/...

Author: mattmann
Date: Sat Mar 28 21:50:31 2015
New Revision: 1669839

URL: http://svn.apache.org/r1669839
Log:
Fix for TIKA-1580: Support IsaTab MIME identification and parsing. Thanks to Giuseppe Totaro for all the great work!

Added:
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISATabUtils.java
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISArchiveParser.java
    tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/isatab/
    tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/isatab/ISArchiveParserTest.java
    tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/
    tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_bii-s-2_metabolite profiling_NMR spectroscopy.txt
    tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_metabolome.txt
    tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_microarray.txt
    tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_proteome.txt
    tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_transcriptome.txt
    tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/i_investigation.txt
    tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/s_BII-S-1.txt
    tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/s_BII-S-2.txt
Modified:
    tika/trunk/CHANGES.txt
    tika/trunk/tika-bundle/pom.xml
    tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
    tika/trunk/tika-parsers/pom.xml
    tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser

Modified: tika/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/tika/trunk/CHANGES.txt?rev=1669839&r1=1669838&r2=1669839&view=diff
==============================================================================
--- tika/trunk/CHANGES.txt (original)
+++ tika/trunk/CHANGES.txt Sat Mar 28 21:50:31 2015
@@ -1,5 +1,9 @@
 Release 1.8 - Current Development
 
+  * Tika now supports the IsaTab data standard for bioinformatics
+    both in terms of MIME identification and in terms of parsing
+    (TIKA-1580).
+
   * Tika server can now enable CORS requests with the command line
     "--cors" option (TIKA-1586).
 

Modified: tika/trunk/tika-bundle/pom.xml
URL: http://svn.apache.org/viewvc/tika/trunk/tika-bundle/pom.xml?rev=1669839&r1=1669838&r2=1669839&view=diff
==============================================================================
--- tika/trunk/tika-bundle/pom.xml (original)
+++ tika/trunk/tika-bundle/pom.xml Sat Mar 28 21:50:31 2015
@@ -124,7 +124,7 @@
             </Bundle-Activator>
             <Embed-Dependency>
               tika-parsers;inline=true,
-              commons-compress, xz, commons-codec, junrar,
+              commons-compress, xz, commons-codec, commons-csv, junrar,
               pdfbox,fontbox,jempbox,bcmail-jdk15,bcprov-jdk15,
               poi,poi-scratchpad,poi-ooxml,poi-ooxml-schemas,
               xmlbeans,

Modified: tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml?rev=1669839&r1=1669838&r2=1669839&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml (original)
+++ tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml Sat Mar 28 21:50:31 2015
@@ -3215,6 +3215,31 @@
     <glob pattern="*.ibooks"/>
   </mime-type>
 
+  <mime-type type="application/x-isatab-investigation">
+    <_comment>ISA-Tab Investigation file</_comment>
+    <magic priority="50">
+      <match value="ONTOLOGY SOURCE REFERENCE" type="string" offset="0"/>
+    </magic>
+    <glob pattern="i_*.txt"/>
+  </mime-type>
+
+  <!--<mime-type type="application/x-isatab-study">-->
+  <mime-type type="application/x-isatab">
+    <_comment>ISA-Tab Study file</_comment>
+    <magic priority="50">
+      <match value="Source Name" type="string" offset="1"/>
+    </magic>
+    <glob pattern="s_*.txt"/>
+  </mime-type>
+
+  <mime-type type="application/x-isatab-assay">
+    <_comment>ISA-Tab Assay file</_comment>
+    <magic priority="50">
+      <match value="Sample Name" type="string" offset="1"/>
+    </magic>
+    <glob pattern="a_*.txt"/>
+  </mime-type>
+
   <mime-type type="application/x-iso9660-image">
     <acronym>ISO</acronym>
     <_comment>ISO 9660 CD-ROM filesystem data</_comment>

Modified: tika/trunk/tika-parsers/pom.xml
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/pom.xml?rev=1669839&r1=1669838&r2=1669839&view=diff
==============================================================================
--- tika/trunk/tika-parsers/pom.xml (original)
+++ tika/trunk/tika-parsers/pom.xml Sat Mar 28 21:50:31 2015
@@ -271,6 +271,12 @@
       <artifactId>guava</artifactId>
       <version>10.0.1</version>
     </dependency>
+    <!-- Apache Commons CSV -->
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-csv</artifactId>
+      <version>1.0</version>
+    </dependency>
   </dependencies>
 
   <build>

Added: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISATabUtils.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISATabUtils.java?rev=1669839&view=auto
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISATabUtils.java (added)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISATabUtils.java Sat Mar 28 21:50:31 2015
@@ -0,0 +1,231 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tika.parser.isatab;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.tika.config.ServiceLoader;
+import org.apache.tika.detect.AutoDetectReader;
+import org.apache.tika.exception.TikaException;
+import org.apache.tika.io.CloseShieldInputStream;
+import org.apache.tika.io.TikaInputStream;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.parser.ParseContext;
+import org.apache.tika.sax.XHTMLContentHandler;
+import org.xml.sax.SAXException;
+
+public class ISATabUtils {
+	
+	private static final ServiceLoader LOADER = new ServiceLoader(ISATabUtils.class.getClassLoader());
+	
+	/**
+	 * INVESTIGATION
+	 */
+	
+	// Investigation section.
+	private static final String[] sections = {
+			"ONTOLOGY SOURCE REFERENCE",
+			"INVESTIGATION", 
+			"INVESTIGATION PUBLICATIONS", 
+			"INVESTIGATION CONTACTS"
+		};
+	
+	// STUDY section (inside the Study section)
+	private static final String studySectionField = "STUDY";
+	
+	// Study File Name (inside the STUDY section)
+	private static final String studyFileNameField = "Study File Name";
+	
+	public static void parseInvestigation(InputStream stream, XHTMLContentHandler handler, Metadata metadata, ParseContext context, String studyFileName) throws IOException, TikaException, SAXException {
+		// Automatically detect the character encoding
+		AutoDetectReader reader = new AutoDetectReader(new CloseShieldInputStream(stream), metadata, context.get(ServiceLoader.class, LOADER));
+
+		try {
+			extractMetadata(reader, metadata, studyFileName);
+		} finally {
+			reader.close();
+		}
+	}
+	
+	public static void parseInvestigation(InputStream stream, XHTMLContentHandler handler, Metadata metadata, ParseContext context) throws IOException, TikaException, SAXException {
+		parseInvestigation(stream, handler, metadata, context, null);
+	}
+	
+	public static void parseStudy(InputStream stream, XHTMLContentHandler xhtml, Metadata metadata, ParseContext context) throws IOException, TikaException, SAXException {
+		TikaInputStream tis = TikaInputStream.get(stream);
+		// Automatically detect the character encoding
+		AutoDetectReader reader = new AutoDetectReader(new CloseShieldInputStream(tis), metadata, context.get(ServiceLoader.class, LOADER));
+		CSVParser csvParser = null;
+		
+		try {
+			csvParser = new CSVParser(reader, CSVFormat.TDF);
+			Iterator<CSVRecord> iterator = csvParser.iterator();
+
+			xhtml.startElement("table");
+
+			xhtml.startElement("thead");
+			if (iterator.hasNext()) {
+				CSVRecord record = iterator.next();
+				for (int i = 0; i < record.size(); i++) {
+					xhtml.startElement("th");
+					xhtml.characters(record.get(i));
+					xhtml.endElement("th");
+				}
+			}
+			xhtml.endElement("thead");
+
+			xhtml.startElement("tbody");
+			while (iterator.hasNext()) {
+				CSVRecord record = iterator.next();
+				xhtml.startElement("tr");
+				for (int j = 0; j < record.size(); j++) {
+					xhtml.startElement("td");
+					xhtml.characters(record.get(j));
+					xhtml.endElement("td");
+				}
+				xhtml.endElement("tr");
+			}
+			xhtml.endElement("tbody");
+
+			xhtml.endElement("table");
+
+		} finally {
+			reader.close();
+			csvParser.close();
+		}
+	}
+	
+	public static void parseAssay(InputStream stream, XHTMLContentHandler xhtml, Metadata metadata, ParseContext context) throws IOException, TikaException, SAXException {
+		TikaInputStream tis = TikaInputStream.get(stream);
+		
+		// Automatically detect the character encoding
+		AutoDetectReader reader = new AutoDetectReader(new CloseShieldInputStream(tis), metadata, context.get(ServiceLoader.class, LOADER));
+		CSVParser csvParser = null;
+		
+		try {
+			csvParser = new CSVParser(reader, CSVFormat.TDF);
+			
+			xhtml.startElement("table");
+			
+			Iterator<CSVRecord> iterator = csvParser.iterator();
+			
+			xhtml.startElement("thead");
+			if (iterator.hasNext()) {
+				CSVRecord record = iterator.next();
+				for (int i = 0; i < record.size(); i++) {
+					xhtml.startElement("th");
+					xhtml.characters(record.get(i));
+					xhtml.endElement("th");
+				}
+			}
+			xhtml.endElement("thead");
+			
+			xhtml.startElement("tbody");
+			while (iterator.hasNext()) {
+				CSVRecord record = iterator.next();
+				xhtml.startElement("tr");
+				for (int j = 0; j < record.size(); j++) {
+					xhtml.startElement("td");
+					xhtml.characters(record.get(j));
+					xhtml.endElement("td");
+				}
+				xhtml.endElement("tr");
+			}
+			xhtml.endElement("tbody");
+			
+			xhtml.endElement("table");
+			
+		} finally {
+			reader.close();
+			csvParser.close();
+		}
+	}
+	
+	private static void extractMetadata(Reader reader, Metadata metadata, String studyFileName) throws IOException {
+		boolean investigationSection = false;
+		boolean studySection = false;
+		boolean studyTarget = false;
+				
+		Map<String, String> map = new HashMap<String, String>();
+		
+		CSVParser csvParser = null;
+		try {
+			csvParser = new CSVParser(reader, CSVFormat.TDF);
+			
+			Iterator<CSVRecord> iterator = csvParser.iterator();
+			
+			while (iterator.hasNext()) {
+				CSVRecord record = iterator.next();
+				String field = record.get(0);
+				if ((field.toUpperCase(Locale.ENGLISH).equals(field)) && (record.size() == 1)) {
+					investigationSection = Arrays.asList(sections).contains(field);
+					studySection = (studyFileName != null) && (field.equals(studySectionField));
+				}
+				else {
+					if (investigationSection) {
+						addMetadata(field, record, metadata);
+					}
+					else if (studySection) {
+						if (studyTarget) {
+							break;
+						}
+						String value = record.get(1);
+						map.put(field, value);
+						studyTarget = (field.equals(studyFileNameField)) && (value.equals(studyFileName));
+						if (studyTarget) {
+							mapStudyToMetadata(map, metadata);
+							studySection = false;
+						}
+					}
+					else if (studyTarget) {
+						addMetadata(field, record, metadata);
+					}
+				}
+			}
+		} catch (IOException ioe) {
+			throw ioe;
+		} finally {
+			csvParser.close();
+		}
+	}
+	
+	private static void addMetadata(String field, CSVRecord record, Metadata metadata) {
+		if ((record ==null) || (record.size() <= 1)) {
+			return;
+		}
+		
+		for (int i = 1; i < record.size(); i++) {
+			metadata.add(field, record.get(i));
+		}
+	}
+	
+	private static void mapStudyToMetadata(Map<String, String> map, Metadata metadata) {
+		for (Map.Entry<String, String> entry : map.entrySet()) {
+			metadata.add(entry.getKey(), entry.getValue());
+		}
+	}
+}

Added: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISArchiveParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISArchiveParser.java?rev=1669839&view=auto
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISArchiveParser.java (added)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/isatab/ISArchiveParser.java Sat Mar 28 21:50:31 2015
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tika.parser.isatab;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.Set;
+
+import org.apache.tika.exception.TikaException;
+import org.apache.tika.io.TikaInputStream;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.mime.MediaType;
+import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.Parser;
+import org.apache.tika.sax.XHTMLContentHandler;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+public class ISArchiveParser implements Parser {
+
+	/**
+	 * Serial version UID
+	 */
+	private static final long serialVersionUID = 3640809327541300229L;
+	
+	private final Set<MediaType> SUPPORTED_TYPES = Collections.singleton(MediaType.application("x-isatab"));
+	
+	private static String studyAssayFileNameField = "Study Assay File Name";
+	
+	private String location = null;
+	
+	private String studyFileName = null; 
+	
+	/**
+	 * Default constructor.
+	 */
+	public ISArchiveParser() {
+		this(null);
+	}
+	
+	/**
+	 * Constructor that accepts the pathname of ISArchive folder.
+	 * @param location pathname of ISArchive folder including ISA-Tab files
+	 */
+	public ISArchiveParser(String location) {
+		if (location != null && !location.endsWith(File.separator)) {
+			location += File.separator;
+		}
+		this.location = location;
+	}
+	
+	@Override
+	public Set<MediaType> getSupportedTypes(ParseContext context) {
+		return SUPPORTED_TYPES;
+	}
+
+	@Override
+	public void parse(InputStream stream, ContentHandler handler, Metadata metadata,
+			ParseContext context) throws IOException, SAXException, TikaException {
+
+		TikaInputStream tis = TikaInputStream.get(stream);
+		if (this.location == null) {
+			this.location = tis.getFile().getParent() + File.separator;
+		}
+		this.studyFileName = tis.getFile().getName();
+		 
+		File locationFile = new File(location);
+		String[] investigationList = locationFile.list(new FilenameFilter() {
+			
+			@Override
+			public boolean accept(File dir, String name) {
+				return name.matches("i_.+\\.txt");
+			}
+		});	
+		
+		XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
+		xhtml.startDocument();
+		
+		parseInvestigation(investigationList, xhtml, metadata, context);
+		parseStudy(stream, xhtml, metadata, context);
+		parseAssay(xhtml, metadata, context);
+		
+		xhtml.endDocument();
+	}
+	
+	private void parseInvestigation(String[] investigationList, XHTMLContentHandler xhtml, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException {
+		if ((investigationList == null) || (investigationList.length == 0)) {
+			// TODO warning
+			return;
+		}
+		if (investigationList.length > 1) {
+			// TODO warning
+			return;
+		}
+		
+		String investigation = investigationList[0]; // TODO add to metadata?
+		InputStream stream = TikaInputStream.get(new File(this.location + investigation));
+		
+		ISATabUtils.parseInvestigation(stream, xhtml, metadata, context, this.studyFileName);
+		
+		xhtml.element("h1", "INVESTIGATION " + metadata.get("Investigation Identifier"));
+	}
+
+	private void parseStudy(InputStream stream, XHTMLContentHandler xhtml, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException {
+		xhtml.element("h2", "STUDY " + metadata.get("Study Identifier"));
+		
+		ISATabUtils.parseStudy(stream, xhtml, metadata, context);
+	}
+	
+	private void parseAssay(XHTMLContentHandler xhtml, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException {
+		for (String assayFileName : metadata.getValues(studyAssayFileNameField)) {
+			xhtml.startElement("div");
+			xhtml.element("h3", "ASSAY " + assayFileName);
+			InputStream stream = TikaInputStream.get(new File(this.location + assayFileName));
+			ISATabUtils.parseAssay(stream, xhtml, metadata, context);
+			xhtml.endElement("div");
+		}
+	}
+}

Modified: tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser?rev=1669839&r1=1669838&r2=1669839&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser (original)
+++ tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser Sat Mar 28 21:50:31 2015
@@ -59,3 +59,4 @@ org.apache.tika.parser.ocr.TesseractOCRP
 org.apache.tika.parser.gdal.GDALParser
 org.apache.tika.parser.grib.GribParser
 org.apache.tika.parser.jdbc.SQLite3Parser
+org.apache.tika.parser.isatab.ISArchiveParser

Added: tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/isatab/ISArchiveParserTest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/isatab/ISArchiveParserTest.java?rev=1669839&view=auto
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/isatab/ISArchiveParserTest.java (added)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/isatab/ISArchiveParserTest.java Sat Mar 28 21:50:31 2015
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tika.parser.isatab;
+
+import static org.junit.Assert.*;
+
+import java.io.InputStream;
+
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.parser.AutoDetectParser;
+import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.Parser;
+import org.apache.tika.sax.BodyContentHandler;
+import org.junit.Test;
+import org.xml.sax.ContentHandler;
+
+public class ISArchiveParserTest {
+
+	@Test
+	public void testParseArchive() throws Exception {
+		String path = "/test-documents/testISATab_BII-I-1/s_BII-S-1.txt";
+		
+		Parser parser = new ISArchiveParser(ISArchiveParserTest.class.getResource("/test-documents/testISATab_BII-I-1/").getPath());
+		//Parser parser = new AutoDetectParser();
+		
+		ContentHandler handler = new BodyContentHandler();
+		Metadata metadata = new Metadata();
+		ParseContext context = new ParseContext();
+		InputStream stream = null;
+		try {
+			stream = ISArchiveParserTest.class.getResourceAsStream(path);
+			parser.parse(stream, handler, metadata, context);
+		}
+		finally {
+			stream.close();
+		}
+		
+		// INVESTIGATION
+		assertEquals("Invalid Investigation Identifier", "BII-I-1", metadata.get("Investigation Identifier"));
+		assertEquals("Invalid Investigation Title", "Growth control of the eukaryote cell: a systems biology study in yeast", metadata.get("Investigation Title"));
+		
+		// INVESTIGATION PUBLICATIONS
+		assertEquals("Invalid Investigation PubMed ID", "17439666", metadata.get("Investigation PubMed ID")); 
+		assertEquals("Invalid Investigation Publication DOI", "doi:10.1186/jbiol54", metadata.get("Investigation Publication DOI"));
+		
+		// INVESTIGATION CONTACTS
+		assertEquals("Invalid Investigation Person Last Name", "Oliver", metadata.get("Investigation Person Last Name")); 
+		assertEquals("Invalid Investigation Person First Name", "Stephen", metadata.get("Investigation Person First Name"));
+	}
+}

Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_bii-s-2_metabolite profiling_NMR spectroscopy.txt
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_bii-s-2_metabolite%20profiling_NMR%20spectroscopy.txt?rev=1669839&view=auto
==============================================================================
--- tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_bii-s-2_metabolite profiling_NMR spectroscopy.txt (added)
+++ tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_bii-s-2_metabolite profiling_NMR spectroscopy.txt Sat Mar 28 21:50:31 2015
@@ -0,0 +1,51 @@
+"Sample Name"	"Protocol REF"	"Extract Name"	"Protocol REF"	"Labeled Extract Name"	"Label"	"Term Source REF"	"Term Accession Number"	"Protocol REF"	"Parameter Value[instrument]"	"Parameter Value[NMR Probe]"	"Parameter Value[number of acquisition]"	"Parameter Value[magnetic field strength]"	"Unit"	"Term Source REF"	"Term Accession Number"	"Acquisition Parameter Data File"	"Protocol REF"	"NMR Assay Name"	"Free Induction Decay Data File"	"Protocol REF"	"Normalization Name"	"Protocol REF"	"Data Transformation Name"	"Derived Spectral Data File"	"Metabolite Assignment File"
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""
+""	"extraction"	""	"labeling"	""	""	""	""	"NMR spectroscopy"	""	""	""	""	""	""	""	""	"nmr assay"	""	""	"data normalization"	""	"data transformation"	""	""	""

Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_metabolome.txt
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_metabolome.txt?rev=1669839&view=auto
==============================================================================
--- tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_metabolome.txt (added)
+++ tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_metabolome.txt Sat Mar 28 21:50:31 2015
@@ -0,0 +1,112 @@
+"Sample Name"	"Material Type"	"Term Source REF"	"Term Accession Number"	"Protocol REF"	"Parameter Value[standard volume]"	"Unit"	"Term Source REF"	"Term Accession Number"	"Parameter Value[sample volume]"	"Unit"	"Term Source REF"	"Term Accession Number"	"Extract Name"	"MS Assay Name"	"Raw Spectral Data File"	"Factor Value[limiting nutrient]"	"Term Source REF"	"Term Accession Number"	"Factor Value[rate]"	"Unit"	"Term Source REF"	"Term Accession Number"
+"C-0.1-aliquot1"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.2-aliquot8"	"JIC36_Sulphate_0.20_Internal_1_3"	"JIC36_Sulphate_0.20_Internal_1_3.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.1"	"l/hour"	""	""
+"S-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.07-aliquot5"	"JIC82_Sulphate_0.07_External_1_1"	"JIC82_Sulphate_0.07_External_1_1.txt"	"sulphur"	""	""	"0.07"	"l/hr"	""	""
+"S-0.07-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.07-aliquot6"	"JIC83_Sulphate_0.07_External_2_1"	"sample-data"	"sulphur"	""	""	"0.07"	"l/hr"	""	""
+"S-0.07-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.07-aliquot7"	"JIC84_Sulphate_0.07_External_3_1"	"ISAtab"	"sulphur"	""	""	"0.07"	"l/hr"	""	""
+"S-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.07-aliquot5"	"JIC82_Sulphate_0.07_External_1_2"	"Presentation Images"	"sulphur"	""	""	"0.07"	"l/hr"	""	""
+"S-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.07-aliquot5"	"JIC82_Sulphate_0.07_External_1_3"	"Presentations"	"sulphur"	""	""	"0.07"	"l/hr"	""	""
+"S-0.1-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.1-aliquot5"	"JIC85_Sulphate_0.10_External_1_1"	"JIC85_Sulphate_0.10_External_1_1.txt"	"sulphur"	""	""	"0.1"	"l/hr"	""	""
+"S-0.1-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.1-aliquot6"	"JIC86_Sulphate_0.10_External_2_1"	"JIC86_Sulphate_0.10_External_2_1.txt"	"sulphur"	""	""	"0.1"	"l/hr"	""	""
+"S-0.2-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.2-aliquot5"	"JIC88_Sulphate_0.20_External_1_1"	"JIC88_Sulphate_0.20_External_1_1.txt"	"sulphur"	""	""	"0.2"	"l/hr"	""	""
+"S-0.2-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.2-aliquot6"	"JIC89_Sulphate_0.20_External_2_1"	"JIC89_Sulphate_0.20_External_2_1.txt"	"sulphur"	""	""	"0.2"	"l/hr"	""	""
+"S-0.2-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"S-0.2-aliquot7"	"JIC90_Sulphate_0.20_External_3_1"	"JIC90_Sulphate_0.20_External_3_1.txt"	"sulphur"	""	""	"0.2"	"l/hr"	""	""
+"P-0.07-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.07-aliquot8"	"JIC20_Phosphate_0.07_Internal_1_1"	"JIC20_Phosphate_0.07_Internal_1_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.07"	"l/hr"	""	""
+"P-0.07-aliquot9"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.07-aliquot9"	"JIC21_Phosphate_0.07_Internal_2_1"	"JIC21_Phosphate_0.07_Internal_2_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.07"	"l/hr"	""	""
+"P-0.1-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.1-aliquot8"	"JIC22_Phosphate_0.10_Internal_1_1"	"JIC22_Phosphate_0.10_Internal_1_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.1"	"l/hr"	""	""
+"P-0.1-aliquot9"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.1-aliquot9"	"JIC23_Phosphate_0.10_Internal_2_1"	"JIC23_Phosphate_0.10_Internal_2_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.1"	"l/hr"	""	""
+"P-0.1-aliquot10"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.1-aliquot10"	"JIC24_Phosphate_0.10_Internal_3_1"	"JIC24_Phosphate_0.10_Internal_3_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.1"	"l/hr"	""	""
+"P-0.2-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.2-aliquot8"	"JIC25_Phosphate_0.20_Internal_1_1"	"JIC25_Phosphate_0.20_Internal_1_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.2"	"l/hr"	""	""
+"P-0.2-aliquot9"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.2-aliquot9"	"JIC26_Phosphate_0.20_Internal_2_1"	"JIC26_Phosphate_0.20_Internal_2_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.2"	"l/hr"	""	""
+"P-0.2-aliquot10"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.2-aliquot10"	"JIC27_Phosphate_0.20_Internal_3_1"	"JIC27_Phosphate_0.20_Internal_3_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.2"	"l/hr"	""	""
+"P-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.07-aliquot5"	"JIC73_Phosphate_0.07_External_1_1"	"JIC73_Phosphate_0.07_External_1_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.07"	"l/hr"	""	""
+"P-0.07-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.07-aliquot6"	"JIC73_Phosphate_0.07_External_1_2"	"JIC73_Phosphate_0.07_External_1_2.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.07"	"l/hr"	""	""
+"P-0.07-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.07-aliquot7"	"JIC73_Phosphate_0.07_External_1_3"	"JIC73_Phosphate_0.07_External_1_3.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.07"	"l/hr"	""	""
+"P-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.07-aliquot5"	"JIC74_Phosphate_0.07_External_2_1"	"JIC74_Phosphate_0.07_External_2_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.07"	"l/hr"	""	""
+"P-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.07-aliquot5"	"JIC75_Phosphate_0.07_External_3_1"	"JIC75_Phosphate_0.07_External_3_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.07"	"l/hr"	""	""
+"P-0.1-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.1-aliquot5"	"JIC76_Phosphate_0.10_External_1_1"	"JIC76_Phosphate_0.10_External_1_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.1"	"l/hr"	""	""
+"P-0.1-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.1-aliquot6"	"JIC77_Phosphate_0.10_External_2_1"	"JIC77_Phosphate_0.10_External_2_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.1"	"l/hr"	""	""
+"P-0.1-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.1-aliquot7"	"JIC78_Phosphate_0.10_External_3_1"	"JIC78_Phosphate_0.10_External_3_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.1"	"l/hr"	""	""
+"P-0.2-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.2-aliquot5"	"JIC79_Phosphate_0.20_External_1_1"	"JIC79_Phosphate_0.20_External_1_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.2"	"l/hr"	""	""
+"P-0.2-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.2-aliquot6"	"JIC80_Phosphate_0.20_External_2_1"	"JIC80_Phosphate_0.20_External_2_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.2"	"l/hr"	""	""
+"P-0.2-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"P-0.2-aliquot7"	"JIC81_Phosphate_0.20_External_3_1"	"JIC81_Phosphate_0.20_External_3_1.txt"	"phosphorus"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_28659"	"0.2"	"l/hr"	""	""
+"N-0.07-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot8"	"JIC10_Nitrogen_0.07_Internal_1_1"	"JIC10_Nitrogen_0.07_Internal_1_1.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.07-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot8"	"JIC10_Nitrogen_0.07_Internal_1_2"	"JIC10_Nitrogen_0.07_Internal_1_2.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.07-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot8"	"JIC10_Nitrogen_0.07_Internal_1_3"	"JIC10_Nitrogen_0.07_Internal_1_3.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.07-aliquot9"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot9"	"JIC11_Nitrogen_0.07_Internal_2_1"	"JIC11_Nitrogen_0.07_Internal_2_1.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.07-aliquot10"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot10"	"JIC12_Nitrogen_0.07_Internal_3_1"	"JIC12_Nitrogen_0.07_Internal_3_1.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.1-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.1-aliquot8"	"JIC13_Nitrogen_0.10_Internal_1_1"	"JIC13_Nitrogen_0.10_Internal_1_1.txt"	"nitrogen"	""	""	"0.1"	"l/hr"	""	""
+"N-0.1-aliquot9"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.1-aliquot9"	"JIC14_Nitrogen_0.10_Internal_2_1"	"JIC14_Nitrogen_0.10_Internal_2_1.txt"	"nitrogen"	""	""	"0.1"	"l/hr"	""	""
+"N-0.1-aliquot10"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.1-aliquot10"	"JIC15_Nitrogen_0.10_Internal_3_1"	"JIC15_Nitrogen_0.10_Internal_3_1.txt"	"nitrogen"	""	""	"0.1"	"l/hr"	""	""
+"N-0.2-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.2-aliquot8"	"JIC16_Nitrogen_0.20_Internal_1_1"	"JIC16_Nitrogen_0.20_Internal_1_1.txt"	"nitrogen"	""	""	"0.2"	"l/hr"	""	""
+"N-0.2-aliquot9"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.2-aliquot9"	"JIC17_Nitrogen_0.20_Internal_2_1"	"JIC17_Nitrogen_0.20_Internal_2_1.txt"	"nitrogen"	""	""	"0.2"	"l/hr"	""	""
+"N-0.2-aliquot10"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.2-aliquot10"	"JIC18_Nitrogen_0.20_Internal_3_1"	"JIC18_Nitrogen_0.20_Internal_3_1.txt"	"nitrogen"	""	""	"0.2"	"l/hr"	""	""
+"N-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot5"	"JIC64_Nitrogen_0.07_External_1_1"	"JIC64_Nitrogen_0.07_External_1_1.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot5"	"JIC64_Nitrogen_0.07_External_1_2"	"JIC64_Nitrogen_0.07_External_1_2.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot5"	"JIC64_Nitrogen_0.07_External_1_3"	"JIC64_Nitrogen_0.07_External_1_3.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.07-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot6"	"JIC65_Nitrogen_0.07_External_2_1"	"JIC65_Nitrogen_0.07_External_2_1.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.07-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.07-aliquot7"	"JIC66_Nitrogen_0.07_External_3_1"	"JIC66_Nitrogen_0.07_External_3_1.txt"	"nitrogen"	""	""	"0.07"	"l/hr"	""	""
+"N-0.1-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.1-aliquot5"	"JIC67_Nitrogen_0.10_External_1_1"	"JIC67_Nitrogen_0.10_External_1_1.txt"	"nitrogen"	""	""	"0.1"	"l/hr"	""	""
+"N-0.1-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.1-aliquot6"	"JIC68_Nitrogen_0.10_External_2_1"	"JIC68_Nitrogen_0.10_External_2_1.txt"	"nitrogen"	""	""	"0.1"	"l/hr"	""	""
+"N-0.1-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.1-aliquot7"	"JIC69_Nitrogen_0.10_External_3_1"	"JIC69_Nitrogen_0.10_External_3_1.txt"	"nitrogen"	""	""	"0.1"	"l/hr"	""	""
+"N-0.2-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.2-aliquot5"	"JIC70_Nitrogen_0.20_External_1_1"	"JIC70_Nitrogen_0.20_External_1_1.txt"	"nitrogen"	""	""	"0.2"	"l/hr"	""	""
+"N-0.2-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.2-aliquot6"	"JIC71_Nitrogen_0.20_External_2_1"	"JIC71_Nitrogen_0.20_External_2_1.txt"	"nitrogen"	""	""	"0.2"	"l/hr"	""	""
+"N-0.2-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"N-0.2-aliquot7"	"JIC72_Nitrogen_0.20_External_3_1"	"JIC72_Nitrogen_0.20_External_3_1.txt"	"nitrogen"	""	""	"0.2"	"l/hr"	""	""
+"C-0.07-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot8"	"JIC1_Carbon_0.07_Internal_1_1"	"JIC1_Carbon_0.07_Internal_1_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.07-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot8"	"JIC1_Carbon_0.07_Internal_1_2"	"JIC1_Carbon_0.07_Internal_1_2.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.07-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot8"	"JIC1_Carbon_0.07_Internal_1_3"	"JIC1_Carbon_0.07_Internal_1_3.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.07-aliquot9"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot9"	"JIC2_Carbon_0.07_Internal_2_1"	"JIC2_Carbon_0.07_Internal_2_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.07-aliquot10"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot10"	"JIC3_Carbon_0.07_Internal_3_1"	"JIC3_Carbon_0.07_Internal_3_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.1-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.1-aliquot8"	"JIC4_Carbon_0.10_Internal_1_1"	"JIC4_Carbon_0.10_Internal_1_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.1"	"l/hr"	""	""
+"C-0.1-aliquot9"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.1-aliquot9"	"JIC5_Carbon_0.10_Internal_2_1"	"JIC5_Carbon_0.10_Internal_2_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.1"	"l/hr"	""	""
+"C-0.1-aliquot10"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.1-aliquot10"	"JIC6_Carbon_0.10_Internal_3_1"	"JIC6_Carbon_0.10_Internal_3_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.1"	"l/hr"	""	""
+"C-0.2-aliquot8"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.2-aliquot8"	"JIC7_Carbon_0.20_Internal_1_1"	"JIC7_Carbon_0.20_Internal_1_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.2"	"l/hr"	""	""
+"C-0.2-aliquot9"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.2-aliquot9"	"JIC8_Carbon_0.20_Internal_2_1"	"JIC8_Carbon_0.20_Internal_2_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.2"	"l/hr"	""	""
+"C-0.2-aliquot10"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.2-aliquot10"	"JIC9_Carbon_0.20_Internal_3_1"	"JIC9_Carbon_0.20_Internal_3_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.2"	"l/hr"	""	""
+"C-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot5"	"JIC55_Carbon_0.07_External_1_1"	"JIC55_Carbon_0.07_External_1_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot5"	"JIC55_Carbon_0.07_External_1_2"	"JIC55_Carbon_0.07_External_1_2.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot5"	"JIC55_Carbon_0.07_External_1_3"	"JIC55_Carbon_0.07_External_1_3.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.07-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot6"	"JIC56_Carbon_0.07_External_2_1"	"JIC56_Carbon_0.07_External_2_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.07-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.07-aliquot7"	"JIC57_Carbon_0.07_External_3_1"	"JIC57_Carbon_0.07_External_3_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.07"	"l/hr"	""	""
+"C-0.1-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.1-aliquot5"	"JIC58_Carbon_0.10_External_1_1"	"JIC58_Carbon_0.10_External_1_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.1"	"l/hr"	""	""
+"C-0.1-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.1-aliquot6"	"JIC59_Carbon_0.10_External_2_1"	"JIC59_Carbon_0.10_External_2_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.1"	"l/hr"	""	""
+"C-0.1-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.1-aliquot7"	"JIC60_Carbon_0.10_External_3_1"	"JIC60_Carbon_0.10_External_3_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.1"	"l/hr"	""	""
+"C-0.2-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.2-aliquot5"	"JIC61_Carbon_0.20_External_1_1"	"JIC61_Carbon_0.20_External_1_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.2"	"l/hr"	""	""
+"C-0.2-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.2-aliquot6"	"JIC62_Carbon_0.20_External_2_1"	"JIC62_Carbon_0.20_External_2_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.2"	"l/hr"	""	""
+"C-0.2-aliquot7"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"C-0.2-aliquot7"	"JIC63_Carbon_0.20_External_3_1"	"JIC63_Carbon_0.20_External_3_1.txt"	"carbon"	"EFO"	"http://purl.obolibrary.org/obo/CHEBI_27594"	"0.2"	"l/hr"	""	""
+"G-0.07-aliquot4"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.07-aliquot4"	"JIC46_GlucoseO2_0.07_Internal_1_1"	"JIC46_GlucoseO2_0.07_Internal_1_1.txt"	"glucose"	""	""	"0.07"	"l/hr"	""	""
+"G-0.07-aliquot4"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.07-aliquot4"	"JIC46_GlucoseO2_0.07_Internal_1_2"	"JIC46_GlucoseO2_0.07_Internal_1_2.txt"	"glucose"	""	""	"0.07"	"l/hr"	""	""
+"G-0.07-aliquot4"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.07-aliquot4"	"JIC46_GlucoseO2_0.07_Internal_1_3"	"JIC46_GlucoseO2_0.07_Internal_1_3.txt"	"glucose"	""	""	"0.07"	"l/hr"	""	""
+"G-0.07-aliquot5"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.07-aliquot5"	"JIC47_GlucoseO2_0.07_Internal_2_1"	"JIC47_GlucoseO2_0.07_Internal_2_1.txt"	"glucose"	""	""	"0.07"	"l/hr"	""	""
+"G-0.07-aliquot6"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.07-aliquot6"	"JIC48_GlucoseO2_0.07_Internal_3_1"	"JIC48_GlucoseO2_0.07_Internal_3_1.txt"	"glucose"	""	""	"0.07"	"l/hr"	""	""
+"G-0.1-aliquot4"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.1-aliquot4"	"JIC49_GlucoseO2_0.10_Internal_1_1"	"JIC49_GlucoseO2_0.10_Internal_1_1.txt"	"glucose"	""	""	"0.1"	"l/hr"	""	""
+"G-0.1-aliquot5"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.1-aliquot5"	"JIC50_GlucoseO2_0.10_Internal_2_1"	"JIC50_GlucoseO2_0.10_Internal_2_1.txt"	"glucose"	""	""	"0.1"	"l/hr"	""	""
+"G-0.1-aliquot6"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.1-aliquot6"	"JIC51_GlucoseO2_0.10_Internal_3_1"	"JIC51_GlucoseO2_0.10_Internal_3_1.txt"	"glucose"	""	""	"0.1"	"l/hr"	""	""
+"G-0.2-aliquot4"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.2-aliquot4"	"JIC52_GlucoseO2_0.20_Internal_1_1"	"JIC52_GlucoseO2_0.20_Internal_1_1.txt"	"glucose"	""	""	"0.2"	"l/hr"	""	""
+"G-0.2-aliquot5"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.2-aliquot5"	"JIC53_GlucoseO2_0.20_Internal_2_1"	"JIC53_GlucoseO2_0.20_Internal_2_1.txt"	"glucose"	""	""	"0.2"	"l/hr"	""	""
+"G-0.2-aliquot6"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.2-aliquot6"	"JIC54_GlucoseO2_0.20_Internal_3_1"	"JIC54_GlucoseO2_0.20_Internal_3_1.txt"	"glucose"	""	""	"0.2"	"l/hr"	""	""
+"G-0.07-aliquot1"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.07-aliquot1"	"JIC100_GlucoseO2_0.07_External_1_1"	"JIC100_GlucoseO2_0.07_External_1_1.txt"	"glucose"	""	""	"0.07"	"l/hr"	""	""
+"G-0.07-aliquot1"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.07-aliquot1"	"JIC100_GlucoseO2_0.07_External_1_2"	"JIC100_GlucoseO2_0.07_External_1_2.txt"	"glucose"	""	""	"0.07"	"l/hr"	""	""
+"G-0.07-aliquot2"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.07-aliquot2"	"JIC101_GlucoseO2_0.07_External_2_1"	"JIC101_GlucoseO2_0.07_External_2_1.txt"	"glucose"	""	""	"0.07"	"l/hr"	""	""
+"G-0.07-aliquot3"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.07-aliquot3"	"JIC102_GlucoseO2_0.07_External_3_1"	"JIC102_GlucoseO2_0.07_External_3_1.txt"	"glucose"	""	""	"0.07"	"l/hr"	""	""
+"G-0.1-aliquot1"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.1-aliquot1"	"JIC103_GlucoseO2_0.10_External_1_1"	"JIC103_GlucoseO2_0.10_External_1_1.txt"	"glucose"	""	""	"0.1"	"l/hr"	""	""
+"G-0.1-aliquot2"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.1-aliquot2"	"JIC104_GlucoseO2_0.10_External_2_1"	"JIC104_GlucoseO2_0.10_External_2_1.txt"	"glucose"	""	""	"0.1"	"l/hr"	""	""
+"G-0.1-aliquot3"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.1-aliquot3"	"JIC105_GlucoseO2_0.10_External_3_1"	"JIC105_GlucoseO2_0.10_External_3_1.txt"	"glucose"	""	""	"0.1"	"l/hr"	""	""
+"G-0.2-aliquot1"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.2-aliquot1"	"JIC106_GlucoseO2_0.20_External_1_1"	"JIC106_GlucoseO2_0.20_External_1_1.txt"	"glucose"	""	""	"0.2"	"l/hr"	""	""
+"G-0.2-aliquot2"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.2-aliquot2"	"JIC107_GlucoseO2_0.20_External_2_1"	"JIC107_GlucoseO2_0.20_External_2_1.txt"	"glucose"	""	""	"0.2"	"l/hr"	""	""
+"G-0.2-aliquot3"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"G-0.2-aliquot3"	"JIC108_GlucoseO2_0.20_External_3_1"	"JIC108_GlucoseO2_0.20_External_3_1.txt"	"glucose"	""	""	"0.2"	"l/hr"	""	""
+"E-0.07-aliquot1"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot1"	"JIC37_Ethanol_0.07_Internal_1_1"	"JIC37_Ethanol_0.07_Internal_1_1.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.07-aliquot1"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot1"	"JIC37_Ethanol_0.07_Internal_1_2"	"JIC37_Ethanol_0.07_Internal_1_2.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.07-aliquot1"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot1"	"JIC37_Ethanol_0.07_Internal_1_3"	"JIC37_Ethanol_0.07_Internal_1_3.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.07-aliquot2"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot2"	"JIC38_Ethanol_0.07_Internal_2_1"	"JIC38_Ethanol_0.07_Internal_2_1.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.07-aliquot3"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot3"	"JIC39_Ethanol_0.07_Internal_3_1"	"JIC39_Ethanol_0.07_Internal_3_1.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.1-aliquot1"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.1-aliquot1"	"JIC40_Ethanol_0.10_Internal_1_1"	"JIC40_Ethanol_0.10_Internal_1_1.txt"	"ethanol"	""	""	"0.1"	"l/hr"	""	""
+"E-0.1-aliquot2"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.1-aliquot2"	"JIC41_Ethanol_0.10_Internal_2_1"	"JIC41_Ethanol_0.10_Internal_2_1.txt"	"ethanol"	""	""	"0.1"	"l/hr"	""	""
+"E-0.1-aliquot3"	"internal"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_7477"	"metabolite extraction"	"4"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"200"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.1-aliquot3"	"JIC42_Ethanol_0.10_Internal_3_1"	"JIC42_Ethanol_0.10_Internal_3_1.txt"	"ethanol"	""	""	"0.1"	"l/hr"	""	""
+"E-0.07-aliquot4"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot4"	"JIC91_Ethanol_0.07_External_1_1"	"JIC91_Ethanol_0.07_External_1_1.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.07-aliquot4"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot4"	"JIC91_Ethanol_0.07_External_1_2"	"JIC91_Ethanol_0.07_External_1_2.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.07-aliquot4"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot4"	"JIC91_Ethanol_0.07_External_1_3"	"JIC91_Ethanol_0.07_External_1_3.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.07-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot5"	"JIC92_Ethanol_0.07_External_2_1"	"JIC92_Ethanol_0.07_External_2_1.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.07-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.07-aliquot6"	"JIC93_Ethanol_0.07_External_3_1"	"JIC93_Ethanol_0.07_External_3_1.txt"	"ethanol"	""	""	"0.07"	"l/hr"	""	""
+"E-0.1-aliquot4"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.1-aliquot4"	"JIC94_Ethanol_0.10_External_1_1"	"JIC94_Ethanol_0.10_External_1_1.txt"	"ethanol"	""	""	"0.1"	"l/hr"	""	""
+"E-0.1-aliquot5"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.1-aliquot5"	"JIC95_Ethanol_0.10_External_2_1"	"JIC95_Ethanol_0.10_External_2_1.txt"	"ethanol"	""	""	"0.1"	"l/hr"	""	""
+"E-0.1-aliquot6"	"external"	"EHDAA"	"http://purl.obolibrary.org/obo/EHDAA_8260"	"metabolite extraction"	"20"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"1000"	"microliter"	"UO"	"http://purl.obolibrary.org/obo/UO_0000101"	"E-0.1-aliquot6"	"JIC96_Ethanol_0.10_External_3_1"	"JIC96_Ethanol_0.10_External_3_1.txt"	"ethanol"	""	""	"0.1"	"l/hr"	""	""

Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_microarray.txt
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_microarray.txt?rev=1669839&view=auto
==============================================================================
--- tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_microarray.txt (added)
+++ tika/trunk/tika-parsers/src/test/resources/test-documents/testISATab_BII-I-1/a_microarray.txt Sat Mar 28 21:50:31 2015
@@ -0,0 +1,15 @@
+"Sample Name"	"Protocol REF"	"Extract Name"	"Protocol REF"	"Labeled Extract Name"	"Label"	"Term Source REF"	"Term Accession Number"	"Protocol REF"	"Hybridization Assay Name"	"Comment[ArrayExpress Accession]"	"Comment[ArrayExpress Raw Data URL]"	"Comment[ArrayExpress Processed Data URL]"	"Array Design REF"	"Scan Name"	"Array Data File"	"Data Transformation Name"	"Derived Array Data File"	"Factor Value[dose]"	"Unit"	"Term Source REF"	"Term Accession Number"	"Factor Value[exposure time]"	"Unit"	"Term Source REF"	"Term Accession Number"	"Factor Value[compound]"	"Term Source REF"	"Term Accession Number"
+"NZ_0hrs_Grow1_Sample_1"	"mRNA extraction"	"NZ_0hrs_Sample_1_Extract"	"biotin labeling"	"NZ_0hrs_Sample_1_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_0hrs_Sample_1_Labelled_Hyb1"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_0hrs_Sample_1_Labelled_Hyb1_Scan1"	"E-MAXD-4-raw-data-426648549.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"0"	"ng /ml"	""	""	"0"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	""	""	""
+"NZ_1hrs_Grow1_Drug_Sample_1"	"mRNA extraction"	"NZ_1hrs_Drug_Sample_1_Extract"	"biotin labeling"	"NZ_1hrs_Drug_Sample_1_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_1hrs_Drug_Sample_1_Labelled_Hyb3"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_1hrs_Drug_Sample_1_Labelled_Hyb3_Scan3"	"E-MAXD-4-raw-data-426648567.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"200"	"ng /ml"	""	""	"1"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"rapamycin"	""	""
+"NZ_2hrs_Grow1_Drug_Sample_1"	"mRNA extraction"	"NZ_2hrs_Drug_Sample_1_Extract"	"biotin labeling"	"NZ_2hrs_Drug_Sample_1_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_2hrs_Drug_Sample_1_Labelled_Hyb7"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_2hrs_Drug_Sample_1_Labelled_Hyb7_Scan7"	"E-MAXD-4-raw-data-426648585.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"200"	"ng /ml"	""	""	"2"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"rapamycin"	""	""
+"NZ_4hrs_Grow1_Drug_Sample_1"	"mRNA extraction"	"NZ_4hrs_Drug_Sample_1_Extract"	"biotin labeling"	"NZ_4hrs_Drug_Sample_1_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_4hrs_Drug_Sample_1_Labelled_Hyb11"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_4hrs_Drug_Sample_1_Labelled_Hyb11_Scan11"	"E-MAXD-4-raw-data-426648603.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"200"	"ng /ml"	""	""	"4"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"rapamycin"	""	""
+"NZ_2hrs_Grow1_Vehicle_Sample_1"	"mRNA extraction"	"NZ_2hrs_Vehicle_Sample_1_Extract"	"biotin labeling"	"NZ_2hrs_Vehicle_Sample_1_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_2hrs_Vehicle_Sample_1_Labelled_Hyb9"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_2hrs_Vehicle_Sample_1_Labelled_Hyb9_Scan9"	"E-MAXD-4-raw-data-426648639.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"0"	"ng /ml"	""	""	"2"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"drug vehicle (90% ethanol/10% tween-20)"	""	""
+"NZ_4hrs_Grow1_Vehicle_Sample_1"	"mRNA extraction"	"NZ_4hrs_Vehicle_Sample_1_Extract"	"biotin labeling"	"NZ_4hrs_Vehicle_Sample_1_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_4hrs_Vehicle_Sample_1_Labelled_Hyb13"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_4hrs_Vehicle_Sample_1_Labelled_Hyb13_Scan13"	"E-MAXD-4-raw-data-426648657.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"0"	"ng /ml"	""	""	"4"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"drug vehicle (90% ethanol/10% tween-20)"	""	""
+"NZ_1hrs_Grow1_Vehicle_Sample_1"	"mRNA extraction"	"NZ_1hrs_Vehicle_Sample_1_Extract"	"biotin labeling"	"NZ_1hrs_Vehicle_Sample_1_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_1hrs_Vehicle_Sample_1_Labelled_Hyb5"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_1hrs_Vehicle_Sample_1_Labelled_Hyb5_Scan5"	"E-MAXD-4-raw-data-426648621.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"0"	"ng /ml"	""	""	"1"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"drug vehicle (90% ethanol/10% tween-20)"	""	""
+"NZ_0hrs_Grow2_Sample_2"	"mRNA extraction"	"NZ_0hrs_Sample_2_Extract"	"biotin labeling"	"NZ_0hrs_Sample_2_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_0hrs_Sample_2_Labelled_Hyb2"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_0hrs_Sample_2_Labelled_Hyb2_Scan2"	"E-MAXD-4-raw-data-426648675.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"0"	"ng /ml"	""	""	"0"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	""	""	""
+"NZ_1hrs_Grow2_Drug_Sample_2"	"mRNA extraction"	"NZ_1hrs_Drug_Sample_2_Extract"	"biotin labeling"	"NZ_1hrs_Drug_Sample_2_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_1hrs_Drug_Sample_2_Labelled_Hyb4"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_1hrs_Drug_Sample_2_Labelled_Hyb4_Scan4"	"E-MAXD-4-raw-data-426648693.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"200"	"ng /ml"	""	""	"1"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"rapamycin"	""	""
+"NZ_4hrs_Grow2_Drug_Sample_2"	"mRNA extraction"	"NZ_4hrs_Drug_Sample_2_Extract"	"biotin labeling"	"NZ_4hrs_Drug_Sample_2_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_4hrs_Drug_Sample_2_Labelled_Hyb12"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_4hrs_Drug_Sample_2_Labelled_Hyb12_Scan12"	"E-MAXD-4-raw-data-426648729.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"200"	"ng /ml"	""	""	"4"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"rapamycin"	""	""
+"NZ_2hrs_Grow2_Drug_Sample_2"	"mRNA extraction"	"NZ_2hrs_Drug_Sample_2_Extract"	"biotin labeling"	"NZ_2hrs_Drug_Sample_2_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_2hrs_Drug_Sample_2_Labelled_Hyb8"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_2hrs_Drug_Sample_2_Labelled_Hyb8_Scan8"	"E-MAXD-4-raw-data-426648711.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"200"	"ng /ml"	""	""	"2"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"rapamycin"	""	""
+"NZ_1hrs_Grow2_Vehicle_Sample_2"	"mRNA extraction"	"NZ_1hrs_Vehicle_Sample_2_Extract"	"biotin labeling"	"NZ_1hrs_Vehicle_Sample_2_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_1hrs_Vehicle_Sample_2_Labelled_Hyb6"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_1hrs_Vehicle_Sample_2_Labelled_Hyb6_Scan6"	"E-MAXD-4-raw-data-426648747.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"0"	"ng /ml"	""	""	"1"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"drug vehicle (90% ethanol/10% tween-20)"	""	""
+"NZ_2hrs_Grow2_Vehicle_Sample_2"	"mRNA extraction"	"NZ_2hrs_Vehicle_Sample_2_Extract"	"biotin labeling"	"NZ_2hrs_Vehicle_Sample_2_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_2hrs_Vehicle_Sample_2_Labelled_Hyb10"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_2hrs_Vehicle_Sample_2_Labelled_Hyb10_Scan10"	"E-MAXD-4-raw-data-426648765.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"0"	"ng /ml"	""	""	"2"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"drug vehicle (90% ethanol/10% tween-20)"	""	""
+"NZ_4hrs_Grow2_Vehicle_Sample_2"	"mRNA extraction"	"NZ_4hrs_Vehicle_Sample_2_Extract"	"biotin labeling"	"NZ_4hrs_Vehicle_Sample_2_Labelled"	"biotin"	"CHEBI"	"http://purl.obolibrary.org/obo/CHEBI_15956"	"EukGE-WS4"	"NZ_4hrs_Vehicle_Sample_2_Labelled_Hyb14"	"E-MEXP-115"	"E-MEXP-115"	"E-MEXP-115"	"A-AFFY-27"	"NZ_4hrs_Vehicle_Sample_2_Labelled_Hyb14_Scan14"	"E-MAXD-4-raw-data-426648783.txt"	"data processing"	"E-MAXD-4-processed-data-1342566476.txt"	"0"	"ng /ml"	""	""	"4"	"hour"	"UO"	"http://purl.obolibrary.org/obo/UO_0000032"	"drug vehicle (90% ethanol/10% tween-20)"	""	""