From 2233a81ade59e5138e425edd93491fd39dc8eeb8 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Sat, 12 Apr 2014 11:25:04 +0100 Subject: [PATCH 01/48] Some small edits to the error handling. --- .../isacreator/gui/formelements/SubForm.java | 1 + .../BioPortalSearchResultHandler.java | 6 +++--- .../spreadsheet/SpreadsheetFunctions.java | 13 ++++++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/gui/formelements/SubForm.java b/src/main/java/org/isatools/isacreator/gui/formelements/SubForm.java index 5d5f0b9e..599df262 100644 --- a/src/main/java/org/isatools/isacreator/gui/formelements/SubForm.java +++ b/src/main/java/org/isatools/isacreator/gui/formelements/SubForm.java @@ -685,6 +685,7 @@ public void propertyChange(PropertyChangeEvent event) { public abstract void removeItem(int itemToRemove); protected void removeColumn(int curColDelete) { + if ((curColDelete == -1) || (curColDelete == 0)) { return; } diff --git a/src/main/java/org/isatools/isacreator/ontologymanager/bioportal/jsonresulthandlers/BioPortalSearchResultHandler.java b/src/main/java/org/isatools/isacreator/ontologymanager/bioportal/jsonresulthandlers/BioPortalSearchResultHandler.java index 1cbe0078..e084e9d1 100644 --- a/src/main/java/org/isatools/isacreator/ontologymanager/bioportal/jsonresulthandlers/BioPortalSearchResultHandler.java +++ b/src/main/java/org/isatools/isacreator/ontologymanager/bioportal/jsonresulthandlers/BioPortalSearchResultHandler.java @@ -273,10 +273,10 @@ public String queryTermMetadataEndpoint(String termId, String ontologyURI) { return contents; } } catch (Exception e) { - e.printStackTrace(); + System.err.println("Unable to retrieve term metadata"); + } finally { + return null; } - - return null; } public Map getOntologyRoots(String ontologyAbbreviation) { diff --git a/src/main/java/org/isatools/isacreator/spreadsheet/SpreadsheetFunctions.java b/src/main/java/org/isatools/isacreator/spreadsheet/SpreadsheetFunctions.java index 2dfb864b..bf7ca00e 100644 --- a/src/main/java/org/isatools/isacreator/spreadsheet/SpreadsheetFunctions.java +++ b/src/main/java/org/isatools/isacreator/spreadsheet/SpreadsheetFunctions.java @@ -38,6 +38,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi package org.isatools.isacreator.spreadsheet; import org.apache.commons.collections15.set.ListOrderedSet; +import org.apache.log4j.Logger; import org.isatools.isacreator.autofiltercombo.AutoFilterCombo; import org.isatools.isacreator.autofiltercombo.AutoFilterComboCellEditor; import org.isatools.isacreator.common.UIHelper; @@ -84,6 +85,8 @@ public class SpreadsheetFunctions { private ProtocolSelectorCellEditor protocolSelectorCellEditor; private SampleSelectorCellEditor sampleSelectorCellEditor; + private Logger log = Logger.getLogger(SpreadsheetFunctions.class.getName()); + public SpreadsheetFunctions(Spreadsheet spreadsheet) { this.spreadsheet = spreadsheet; } @@ -592,6 +595,7 @@ private void removeDependentColumns(TableColumn col) { } protected void removeColumn() { + try { if (spreadsheet.curColDelete != -1) { SpreadsheetModel model = (SpreadsheetModel) spreadsheet.getTable().getModel(); TableColumn col = spreadsheet.getTable().getColumnModel().getColumn(spreadsheet.curColDelete); @@ -602,6 +606,9 @@ protected void removeColumn() { removeDependentColumns(col); removeColumnFromDependencies(col); } + } catch (ArrayIndexOutOfBoundsException e) { + log.error("Problem encountered when removing a column " + e.getMessage()); + } } public Map getFactors() { @@ -653,10 +660,10 @@ private void deleteColumn(SpreadsheetModel model, TableColumn columnToRemove) { model.setDataVector(data, colIds); // decrease each column index after deleted column by 1 so that indexes can be kept intact. - Enumeration enumer = spreadsheet.getTable().getColumnModel().getColumns(); + Enumeration spreadsheetColumns = spreadsheet.getTable().getColumnModel().getColumns(); - while (enumer.hasMoreElements()) { - TableColumn c = (TableColumn) enumer.nextElement(); + while (spreadsheetColumns.hasMoreElements()) { + TableColumn c = (TableColumn) spreadsheetColumns.nextElement(); if (c.getModelIndex() >= columnModelIndex) { c.setModelIndex(c.getModelIndex() - 1); From 406aa7d225df085a3ca2926c2cce49be8b9f0c44 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Tue, 29 Apr 2014 22:24:45 +0100 Subject: [PATCH 02/48] Fixes error when adding assays with the same tech/meas type. Closes #274 --- .../java/org/isatools/isacreator/api/utils/StudyUtils.java | 3 +++ src/main/java/org/isatools/isacreator/gui/StudyDataEntry.java | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/api/utils/StudyUtils.java b/src/main/java/org/isatools/isacreator/api/utils/StudyUtils.java index 6c91a7a7..68443588 100644 --- a/src/main/java/org/isatools/isacreator/api/utils/StudyUtils.java +++ b/src/main/java/org/isatools/isacreator/api/utils/StudyUtils.java @@ -144,6 +144,9 @@ private static String generateUniqueAssayReference(Study study, String assayRefe String candidateRef = cycleCount == 0 ? assayReference + ".txt" : assayReference + "-" + cycleCount + ".txt"; + candidateRef = candidateRef.replaceAll("\\s+","_"); + + if (study.getAssays().containsKey(candidateRef)) { // generate the id using a recursive method return generateUniqueAssayReference(study, assayReference, cycleCount + 1); diff --git a/src/main/java/org/isatools/isacreator/gui/StudyDataEntry.java b/src/main/java/org/isatools/isacreator/gui/StudyDataEntry.java index 90096722..4659d0bd 100755 --- a/src/main/java/org/isatools/isacreator/gui/StudyDataEntry.java +++ b/src/main/java/org/isatools/isacreator/gui/StudyDataEntry.java @@ -781,9 +781,7 @@ public void propertyChange(PropertyChangeEvent propertyChangeEvent) { for (AssaySelection assay : selectedAssays) { String assayRef = StudyUtils.generateAssayReference(study, assay.getMeasurement(), assay.getTechnology()); - Assay addedAssay = getDataEntryEnvironment().addAssay(assay.getMeasurement(), assay.getTechnology(), assay.getPlatform(), assayRef); - AssayInformationPanel informationPanel = new AssayInformationPanel(addedAssay); informationPanel.addPropertyChangeListener("removeAssay", new WeakPropertyChangeListener(removeAssayListener)); informationPanel.addPropertyChangeListener("viewAssay", new WeakPropertyChangeListener(viewAssayListener)); From fd31711a42eb48dd50fb18ad87fb0b753f77d9b1 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Wed, 14 May 2014 15:02:10 +0100 Subject: [PATCH 03/48] Next version increment. --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 37a714c1..04726f10 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.isatools ISAcreator bundle - 1.7.7 + 1.7.8 ISAcreator http://www.isa-tools.org @@ -402,7 +402,7 @@ org.isatools import_layer - 1.6.5 + 1.6.7 uk.ac.ebi From f0db550101ceea56d33f665a0a844ddfb4ef4535 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Wed, 14 May 2014 15:43:29 +0100 Subject: [PATCH 04/48] Changes to pom.xml --- pom.xml | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 37a714c1..f7027f0c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.isatools ISAcreator bundle - 1.7.7 + 1.7.8 ISAcreator http://www.isa-tools.org @@ -388,6 +388,11 @@ slf4j-api org.slf4j + + + org.slf4j + slf4j-log4j12 + @@ -424,6 +429,17 @@ ISAtabErrorReporter + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + + @@ -485,6 +501,18 @@ org.apache.commons + + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + From 23a32423eefda558a6e344b3dcdfe61d8fe85b5d Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Wed, 28 May 2014 14:42:57 +0100 Subject: [PATCH 05/48] Removing Eamonn's alias for mvn, checking if wget is installed --- package.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/package.sh b/package.sh index c3a21afe..0666f2ed 100755 --- a/package.sh +++ b/package.sh @@ -14,7 +14,6 @@ then PACKAGE_TYPE="all" fi -alias mvn='/Users/eamonnmaguire/dev/maven/bin/mvn' #MVNOPTS="--offline" get_tag_data () { local tag=$1 @@ -39,7 +38,6 @@ then echo "Couldn't extract version from pom.xml. Exiting." fi - rm -rf src/main/resources/Configurations mkdir src/main/resources/Configurations @@ -51,10 +49,16 @@ else CONFIGURATION=isaconfig-default_v2014-01-16.zip fi -wget https://bitbucket.org/eamonnmag/isatools-downloads/downloads/"$CONFIGURATION" --no-check-certificate +if hash wget 2>/dev/null; then + echo "wget is installed, will download configurations next" +else + echo "wget is not installed, install it and then run package.sh again" + exit 1 +fi -cp $CONFIGURATION src/main/resources/Configurations/ +wget_output=$(wget https://bitbucket.org/eamonnmag/isatools-downloads/downloads/"$CONFIGURATION" --no-check-certificate) +cp $CONFIGURATION src/main/resources/Configurations/ WD=$(pwd) From 50a3569028c33aefdb4cc1178bea659183dd1e52 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Tue, 22 Jul 2014 13:12:35 +0100 Subject: [PATCH 06/48] mixs packaging added to package.sh --- package.sh | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/package.sh b/package.sh index c3a21afe..4c987359 100755 --- a/package.sh +++ b/package.sh @@ -3,7 +3,7 @@ # More details in the POM. # -# should be used by passing in either 'scidata' or 'all' as a parameter, e.g. ./package.sh scidata +# should be used by passing in either 'scidata', 'mixs' or 'all' as a parameter, e.g. ./package.sh scidata # switching these will result in different actions being performed on packaging. PACKAGE_TYPE=$1 @@ -47,11 +47,16 @@ mkdir src/main/resources/Configurations if [ "$PACKAGE_TYPE" = "scidata" ] then CONFIGURATION=isaconfig-Scientific-Data-v1.1.zip +fi + +if [ "$PACKAGE_TYPE" = "mixs" ] +then + CONFIGURATION=isaconfig-mixs-v4.zip else CONFIGURATION=isaconfig-default_v2014-01-16.zip fi -wget https://bitbucket.org/eamonnmag/isatools-downloads/downloads/"$CONFIGURATION" --no-check-certificate +curl -L -O http://bitbucket.org/eamonnmag/isatools-downloads/downloads/"$CONFIGURATION" cp $CONFIGURATION src/main/resources/Configurations/ @@ -86,10 +91,18 @@ mkdir "isatab files" if [ "$PACKAGE_TYPE" = "scidata" ] then cd "isatab files" - wget https://bitbucket.org/eamonnmag/isatools-downloads/downloads/SciData-Datasets-1-and-2.zip --no-check-certificate + curl -L -O https://bitbucket.org/eamonnmag/isatools-downloads/downloads/SciData-Datasets-1-and-2.zip unzip SciData-Datasets-1-and-2.zip rm -f SciData-Datasets-1-and-2.zip cd ../ +fi +if [ "$PACKAGE_TYPE" = "mixs" ] +then + cd "isatab files" + curl -L -O https://bitbucket.org/eamonnmag/isatools-downloads/downloads/mixs-datasets-v1.zip + unzip mixs-datasets-v1.zip + rm -f mixs-datasets-v1.zip + cd ../ else cp -r ../"isatab files"/* "isatab files" fi From e4a6bc1bb12cf586615f48eda67ae73dcbd34cfd Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Tue, 22 Jul 2014 13:14:29 +0100 Subject: [PATCH 07/48] Updates to POM --- pom.xml | 1 - src/test/resources/test-data/BII-I-1/i_investigation.txt | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 04726f10..254c1778 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,6 @@ ISA tools team http://isa-tools.org - diff --git a/src/test/resources/test-data/BII-I-1/i_investigation.txt b/src/test/resources/test-data/BII-I-1/i_investigation.txt index d897efd9..ee89acf3 100644 --- a/src/test/resources/test-data/BII-I-1/i_investigation.txt +++ b/src/test/resources/test-data/BII-I-1/i_investigation.txt @@ -72,14 +72,14 @@ Study Factor Type "chemical entity" "rate" Study Factor Type Term Accession Number "http://purl.obolibrary.org/obo/CHEBI_24431" "http://purl.obolibrary.org/obo/PATO_0000161" Study Factor Type Term Source REF "CHEBI" "PATO" STUDY ASSAYS -Study Assay File Name "a_metabolome.txt" "a_proteome.txt" "a_transcriptome.txt" -Study Assay Measurement Type "metabolite profiling" "protein expression profiling" "transcription profiling" -Study Assay Measurement Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000366" "http://purl.obolibrary.org/obo/OBI_0000615" "http://purl.obolibrary.org/obo/OBI_0000424" +Study Assay File Name "a_proteome.txt" "a_metabolome.txt" "a_transcriptome.txt" +Study Assay Measurement Type "protein expression profiling" "metabolite profiling" "transcription profiling" +Study Assay Measurement Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000615" "http://purl.obolibrary.org/obo/OBI_0000366" "http://purl.obolibrary.org/obo/OBI_0000424" Study Assay Measurement Type Term Source REF "OBI" "OBI" "OBI" Study Assay Technology Type "mass spectrometry" "mass spectrometry" "DNA microarray" Study Assay Technology Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000470" "http://purl.obolibrary.org/obo/OBI_0000470" "http://purl.obolibrary.org/obo/OBI_0400148" Study Assay Technology Type Term Source REF "OBI" "OBI" "OBI" -Study Assay Technology Platform "LC-MS/MS" "iTRAQ" "Affymetrix" +Study Assay Technology Platform "iTRAQ" "LC-MS/MS" "Affymetrix" STUDY PROTOCOLS Study Protocol Name "growth protocol" "mRNA extraction" "protein extraction" "biotin labeling" "ITRAQ labeling" "EukGE-WS4" "metabolite extraction" Study Protocol Type "growth" "RNA extraction" "extraction" "addition of molecular label" "addition of molecular label" "nucleic acid hybridization" "extraction" From f35290c7a6d4272869b6799f4161c20616d18b4d Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Thu, 31 Jul 2014 14:26:30 +0100 Subject: [PATCH 08/48] Added some error handling code --- package.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/package.sh b/package.sh index 16cf738c..51b7f891 100755 --- a/package.sh +++ b/package.sh @@ -7,7 +7,7 @@ # switching these will result in different actions being performed on packaging. PACKAGE_TYPE=$1 -echo $PACKAGE_TYPE +echo "ISAcreator packaging for type " $PACKAGE_TYPE if [ "$PACKAGE_TYPE" = "" ] then @@ -36,6 +36,7 @@ VERSION=${VERSIONSPLIT[0]} if [ "$VERSION" = "" ] then echo "Couldn't extract version from pom.xml. Exiting." + exit 1 fi rm -rf src/main/resources/Configurations @@ -54,7 +55,8 @@ else CONFIGURATION=isaconfig-default_v2014-01-16.zip fi -======= +echo "Configuration file: " $CONFIGURATION + if hash curl 2>/dev/null; then echo "curl is installed, will download configurations next" else @@ -79,8 +81,14 @@ cd $WD echo "Changing back to target..." pwd +##Building ISAcreator mvn $MVNOPTS -Dmaven.test.skip=true clean assembly:assembly -Pbuild +if [ "$?" -ne 0 ]; then + echo "Maven Build Unsuccessful!" + exit 1 +fi + mkdir target/Configurations cp $CONFIGURATION target/Configurations/ From 182e99d5ef692bcaab4451a7661b9d20f85d1920 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Fri, 1 Aug 2014 16:54:03 +0100 Subject: [PATCH 09/48] Adding variable to package script --- package.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/package.sh b/package.sh index 51b7f891..a3c35d0f 100755 --- a/package.sh +++ b/package.sh @@ -9,6 +9,8 @@ PACKAGE_TYPE=$1 echo "ISAcreator packaging for type " $PACKAGE_TYPE +MIXS_DATASETS=mixs-datasets-v2.zip + if [ "$PACKAGE_TYPE" = "" ] then PACKAGE_TYPE="all" @@ -113,9 +115,9 @@ fi if [ "$PACKAGE_TYPE" = "mixs" ] then cd "isatab files" - curl -L -O https://bitbucket.org/eamonnmag/isatools-downloads/downloads/mixs-datasets-v1.zip - unzip mixs-datasets-v1.zip - rm -f mixs-datasets-v1.zip + curl -L -O https://bitbucket.org/eamonnmag/isatools-downloads/downloads/$MIXS_DATASETS + unzip $MIXS_DATASETS + rm -f $MIXS_DATASETS cd ../ else cp -r ../"isatab files"/* "isatab files" From ca6bbc183c0652edcb7670e85f50aa49fb7c27bc Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Thu, 7 Aug 2014 17:08:44 +0100 Subject: [PATCH 10/48] Changed support URL --- src/main/java/org/isatools/isacreator/gui/ISAcreator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java index c61291a4..9b6d08fc 100755 --- a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java +++ b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java @@ -651,7 +651,7 @@ public void actionPerformed(ActionEvent e) { contact.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { - Desktop.getDesktop().browse(new URI("http://isatab.sourceforge.net/contact.html")); + Desktop.getDesktop().browse(new URI("http://isa-tools.org/support.html")); } catch (IOException e1) { log.error("IOException - " + e1.getMessage()); } catch (URISyntaxException e1) { From 4063850f6f785a51c45e2c130784b24217998ebb Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Thu, 14 Aug 2014 23:08:56 +0100 Subject: [PATCH 11/48] Renamed variable --- .../isacreator/io/importisa/InvestigationImport.java | 2 +- .../io/importisa/StructureToInvestigationMapper.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/io/importisa/InvestigationImport.java b/src/main/java/org/isatools/isacreator/io/importisa/InvestigationImport.java index 5592dbf6..1d6fe16f 100644 --- a/src/main/java/org/isatools/isacreator/io/importisa/InvestigationImport.java +++ b/src/main/java/org/isatools/isacreator/io/importisa/InvestigationImport.java @@ -130,7 +130,7 @@ public Pair()); } diff --git a/src/main/java/org/isatools/isacreator/io/importisa/StructureToInvestigationMapper.java b/src/main/java/org/isatools/isacreator/io/importisa/StructureToInvestigationMapper.java index 1bfb2082..97ff99ec 100644 --- a/src/main/java/org/isatools/isacreator/io/importisa/StructureToInvestigationMapper.java +++ b/src/main/java/org/isatools/isacreator/io/importisa/StructureToInvestigationMapper.java @@ -125,9 +125,9 @@ private Investigation processInvestigation(OrderedMap, List> processedFactorsSection = processOntologySourceReferences(investigationSections.get(investigationSection)); - sectionFields.put(investigationSection, processedFactorsSection.fst); - ontologySources = new HashSet(processedFactorsSection.snd); + Pair, List> processedOntologySection = processOntologySourceReferences(investigationSections.get(investigationSection)); + sectionFields.put(investigationSection, processedOntologySection.fst); + ontologySources = new HashSet(processedOntologySection.snd); } else if (investigationSection == InvestigationFileSection.INVESTIGATION_PUBLICATIONS_SECTION) { @@ -670,7 +670,7 @@ private OntologySourceRefObject getOntologySource(String source) { } /** - * Checks for duplicate assay names across all studies. + * Checks for duplicate study or assay names across all studies. * * @param investigation * @return From b9fcff77e481b1001ebbb46601192eca18237c0c Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Fri, 15 Aug 2014 14:34:46 +0100 Subject: [PATCH 12/48] Initial submission gui --- .../isatools/isacreator/gui/ISAcreator.java | 21 ++++- .../gui/submission/ENASubmissionUI.java | 80 ++++++++++++++++++ .../launch/ISAcreatorGUIProperties.java | 3 + .../gui-package.properties | 1 + .../submission-package.properties | 4 + .../images/submission/menu_icon_submit.png | Bin 0 -> 289 bytes .../images/submission/submit-failure.png | Bin 0 -> 1383 bytes .../submission/submit-logo-inactive.png | Bin 0 -> 602 bytes .../images/submission/submit-logo.png | Bin 0 -> 718 bytes .../images/submission/submit-success.png | Bin 0 -> 1694 bytes .../images/submission/submitting.gif | Bin 0 -> 11361 bytes 11 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java create mode 100644 src/main/resources/dependency-injections/submission-package.properties create mode 100644 src/main/resources/images/submission/menu_icon_submit.png create mode 100644 src/main/resources/images/submission/submit-failure.png create mode 100644 src/main/resources/images/submission/submit-logo-inactive.png create mode 100644 src/main/resources/images/submission/submit-logo.png create mode 100644 src/main/resources/images/submission/submit-success.png create mode 100644 src/main/resources/images/submission/submitting.gif diff --git a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java index 9b6d08fc..d071addc 100755 --- a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java +++ b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java @@ -50,6 +50,7 @@ ISAcreator is a component of the ISA software suite (http://www.isa-tools.org) import org.isatools.isacreator.gui.io.exportisa.OutputISAFilesFromGUI; import org.isatools.isacreator.gui.menu.ISAcreatorMenu; import org.isatools.isacreator.gui.modeselection.Mode; +import org.isatools.isacreator.gui.submission.ENASubmissionUI; import org.isatools.isacreator.io.UserProfileManager; import org.isatools.isacreator.managers.ApplicationManager; import org.isatools.isacreator.managers.ConfigurationManager; @@ -114,7 +115,7 @@ public class ISAcreator extends AnimatableJFrame implements WindowFocusListener private Image isacreatorIcon; @InjectedResource - private ImageIcon saveIcon, saveMenuIcon, saveLogoutIcon, saveExitIcon, validateIcon, convertIcon, + private ImageIcon saveIcon, saveMenuIcon, saveLogoutIcon, saveExitIcon, validateIcon, convertIcon, submitIcon, logoutIcon, menuIcon, exitIcon, exportArchiveIcon, addStudyIcon, removeStudyIcon, fullScreenIcon, defaultScreenIcon, aboutIcon, helpIcon, supportIcon, feedbackIcon, confirmLogout, confirmMenu, confirmExit; @@ -477,6 +478,24 @@ public void actionPerformed(ActionEvent actionEvent) { fileMenu.add(convertISA); + + //submit to ENA + JMenuItem submitENA = new JMenuItem("Submit to ENA", submitIcon); + + submitENA.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent actionEvent) { + ENASubmissionUI submitUI = new ENASubmissionUI(ISAcreator.this); + submitUI.createGUI(); + submitUI.setLocationRelativeTo(ISAcreator.this); + submitUI.setAlwaysOnTop(true); + submitUI.setVisible(true); + submitUI.submit(); + } + }); + + fileMenu.add(submitENA); + + menuBar.add(fileMenu); diff --git a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java new file mode 100644 index 00000000..cbd853e6 --- /dev/null +++ b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java @@ -0,0 +1,80 @@ +package org.isatools.isacreator.gui.submission; + +import com.sun.awt.AWTUtilities; +import org.apache.log4j.Logger; +import org.isatools.isacreator.common.UIHelper; +import org.isatools.isacreator.effects.FooterPanel; +import org.isatools.isacreator.effects.GraphicsUtils; +import org.isatools.isacreator.effects.HUDTitleBar; +import org.isatools.isacreator.gui.ISAcreator; +import org.jdesktop.fuse.InjectedResource; +import org.jdesktop.fuse.ResourceInjector; + +import javax.swing.*; +import javax.swing.border.EmptyBorder; +import javax.swing.border.EtchedBorder; +import java.awt.*; + +/** + * User intereface for ENA submission. + * + * + * + */ +public class ENASubmissionUI extends JFrame { + + private ISAcreator isacreatorEnvironment; + + @InjectedResource + private Image submitIcon, submitIconInactive; + + public static final float DESIRED_OPACITY = .93f; + + private static Logger log = Logger.getLogger(ENASubmissionUI.class.getName()); + private JPanel swappableContainer; + protected static ImageIcon submitENAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/submission/submitting.gif")); + + public ENASubmissionUI(ISAcreator isacreatorEnvironment) { + ResourceInjector.get("submission-package.style").inject(this); + this.isacreatorEnvironment = isacreatorEnvironment; + } + + public void createGUI() { + setTitle("Submit to ENA"); + setUndecorated(true); + + setLayout(new BorderLayout()); + setBackground(UIHelper.BG_COLOR); + + if (GraphicsUtils.isWindowTransparencySupported()) { + AWTUtilities.setWindowOpacity(this, DESIRED_OPACITY); + } + + HUDTitleBar titlePanel = new HUDTitleBar(submitIcon, submitIconInactive); + + add(titlePanel, BorderLayout.NORTH); + titlePanel.installListeners(); + + ((JComponent) getContentPane()).setBorder(new EtchedBorder(UIHelper.LIGHT_GREEN_COLOR, UIHelper.LIGHT_GREEN_COLOR)); + +// Container loadingInfo = UIHelper.padComponentVerticalBox(100, new JLabel(submitENAAnimation)); +// +// swappableContainer = new JPanel(); +// swappableContainer.add(loadingInfo); +// swappableContainer.setBorder(new EmptyBorder(1, 1, 1, 1)); +// swappableContainer.setPreferredSize(new Dimension(750, 450)); +// +// add(swappableContainer, BorderLayout.CENTER); + + FooterPanel footer = new FooterPanel(this); + add(footer, BorderLayout.SOUTH); + + pack(); + + } + + public void submit(){ + + } + +} diff --git a/src/main/java/org/isatools/isacreator/launch/ISAcreatorGUIProperties.java b/src/main/java/org/isatools/isacreator/launch/ISAcreatorGUIProperties.java index d1d3703e..c1658a67 100644 --- a/src/main/java/org/isatools/isacreator/launch/ISAcreatorGUIProperties.java +++ b/src/main/java/org/isatools/isacreator/launch/ISAcreatorGUIProperties.java @@ -111,6 +111,9 @@ public static void setProperties(){ ResourceInjector.get("orcidlookup-package.style").load( ISAcreatorApplication.class.getResource("/dependency-injections/orcidlookup-package.properties")); + ResourceInjector.get("submission-package.style").load( + ISAcreatorApplication.class.getResource("/dependency-injections/submission-package.properties")); + } } diff --git a/src/main/resources/dependency-injections/gui-package.properties b/src/main/resources/dependency-injections/gui-package.properties index 19b55650..d38bb5c4 100644 --- a/src/main/resources/dependency-injections/gui-package.properties +++ b/src/main/resources/dependency-injections/gui-package.properties @@ -13,6 +13,7 @@ ISAcreator.menuIcon=/images/gui/menu.png ISAcreator.exitIcon=/images/gui/exit.png ISAcreator.exportArchiveIcon=/images/gui/exportArchive_Menu.png ISAcreator.convertIcon=/images/validator/menu_icon_convert.png +ISAcreator.submitIcon=/images/submission/menu_icon_submit.png ISAcreator.validateIcon=/images/validator/menu_icon_validate.png # Study menu items ISAcreator.addStudyIcon=/images/gui/overtree-menu/add_study.png diff --git a/src/main/resources/dependency-injections/submission-package.properties b/src/main/resources/dependency-injections/submission-package.properties new file mode 100644 index 00000000..c7877598 --- /dev/null +++ b/src/main/resources/dependency-injections/submission-package.properties @@ -0,0 +1,4 @@ +ENASubmissionUI.submitIcon=/images/submission/submit-logo.png +ENASubmissionUI.submitIconInactive=/images/submission/submit-logo-inactive.png +ENASubmissionUI.submitSuccess=/images/submission/submit-success.png +ENASubmissionUI.submitFailure=/images/submission/submit-failure.png diff --git a/src/main/resources/images/submission/menu_icon_submit.png b/src/main/resources/images/submission/menu_icon_submit.png new file mode 100644 index 0000000000000000000000000000000000000000..7539831fbc3c33962e26a0d59cb719598389a5c6 GIT binary patch literal 289 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

V)Y literal 0 HcmV?d00001 diff --git a/src/main/resources/images/submission/submit-success.png b/src/main/resources/images/submission/submit-success.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa9e1396543b4bca0fa684450dd892541967f78 GIT binary patch literal 1694 zcmZ{ldr%VS8iz40FNw$U(oymfX6~+-kz=ggcx-uHdxH}A~%&3rS@cMTZ? z0~%Nw0000W0`3>0nG8*#^|ooc=#n>3GxU?;XaWGR-QPeI(h+eUx#k{KmH{c5?5+*1yF~}L?wcSzBiE^ZsOxJI)bOtL zQEJ`KkfUQ}`r75~bSuJxuWkg{6`bL9yfH@VP{FaL(1FkL{CBt)Xwc`!Kaq*jpq?dE zlQK~{RF(z@KKq24C9{T8-@nRD!sr59cL!w7+*jFC_l9RJP+$N!?!mH zo++|dG@vX-qCb>ovgW_fg?^1t^ z5zGIXwJT6n7{1sMHjr4g%(VH~AwAG^!t;KKs&;oy=F4RJjF`jS<`JhZMk2j;-nk%9 z_d?dL=PBJNiai;{=m6|9*{E6N32FUJO13NOUT)W&+98fpy+l}50xp3b5(~2bxNkhs z{Iu$5S1EK4CZDo+Jdf{>!dGPe>ew(K_XKT+++LyRae`N`bq{VI_TQuLKe{U)K9CN! zt$(GXke)ABl3I$HsIx~t|LdW7bY{=^@W~Loe*c|Gbe~Wi_?$iTHaP3fw&#tAw(W5Q zyR4HRUxFOe`Da;K=k`;;qFd#eZ@w@c+huoY>mY7~H%u~Y=bqaur?Ld;v2P;wJGV3{iOAp=v~~V;f}p06O$vS=K0f|p z_UhaAD}1}9ZZ&h`LZ>xm1#`84E=etNR#!8qTPqtpKXl+E#&h(0+Mj#=MDZTs7s>P$ zD_K_~PgO^DmlwPBmQ`#p(v@Q%mH?5jDyKo+vZM2Ad+VVYj!jb39@rn{4|6=T262?OuiSi0W&HfQ|@o>F}na5Yq6wyW7bm~^N` ziHG{VTHWzf2#I?4=$E-~c=cdQ;01;8a)0SLD4m+*gv(+*2e4NMTe)17+KO%H9v78^ zPSMsr|KI9J2-(DgQ26qDT=D)#b4-Harj8_Zg!QjV^riOD*Rp2J5%Y|m>o|#*z0p1! z#IL*6TYX!~L&FFgK~--*^s-c=uLGP**A80L;EK1!@F43z-+3PhndZjrlu4g{$A90H zysY&x7ZXHGH9R0}h%&r*|2U@LuCXO5gcBG&YN9>qBMRAVXYk-aZ?yBh(b`yO5cU1!WA38K5r_R+{iLwL*r6(sCZl(si}CUDo60P$;PkVwezF$Dux zxE$UMJU@bv8Mg{bd_6?>uiN^DA=7{$d`9*b`20gWOscX97mTh6VSYkdQ==rM-#cCI z%$;fUdiCWo8)HU-`Gj#;qxkVN^n!vzoC8BF?DxM6e&aMQ?Hbid*t7x*znnV0AXao1 z`pkyej+ifTZu3$sd7S1w3fi}V?}*5pXOV?%j;ceL zv9QX8C#=a@eUumH*8kJ!C+%wF`VZ}X!oT+aH1OZr{oj53%}p~bz$MSDKVbUyrsi(} NAfQ2hO}^N?-vKbxJ0<`C literal 0 HcmV?d00001 diff --git a/src/main/resources/images/submission/submitting.gif b/src/main/resources/images/submission/submitting.gif new file mode 100644 index 0000000000000000000000000000000000000000..832a66ad4867ef9a0447ca218d1f52d98d9fb149 GIT binary patch literal 11361 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 literal 0 HcmV?d00001 From 63ba8fd32814fdad2263a8f4ddd44f7d0c176c21 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Wed, 20 Aug 2014 23:40:26 +0100 Subject: [PATCH 13/48] More code for submission interface --- .../gui/submission/ENASubmissionUI.java | 72 ++++++++++++++++--- .../submission-package.properties | 2 + 2 files changed, 66 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java index cbd853e6..de4c5bdb 100644 --- a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java @@ -7,6 +7,9 @@ import org.isatools.isacreator.effects.GraphicsUtils; import org.isatools.isacreator.effects.HUDTitleBar; import org.isatools.isacreator.gui.ISAcreator; +import org.isatools.isacreator.managers.ApplicationManager; +import org.isatools.isacreator.settings.ISAcreatorProperties; +import org.isatools.isatab.isaconfigurator.ISAConfigurationSet; import org.jdesktop.fuse.InjectedResource; import org.jdesktop.fuse.ResourceInjector; @@ -14,6 +17,7 @@ import javax.swing.border.EmptyBorder; import javax.swing.border.EtchedBorder; import java.awt.*; +import java.io.File; /** * User intereface for ENA submission. @@ -28,6 +32,9 @@ public class ENASubmissionUI extends JFrame { @InjectedResource private Image submitIcon, submitIconInactive; + @InjectedResource + private ImageIcon saveISAtab; + public static final float DESIRED_OPACITY = .93f; private static Logger log = Logger.getLogger(ENASubmissionUI.class.getName()); @@ -57,14 +64,14 @@ public void createGUI() { ((JComponent) getContentPane()).setBorder(new EtchedBorder(UIHelper.LIGHT_GREEN_COLOR, UIHelper.LIGHT_GREEN_COLOR)); -// Container loadingInfo = UIHelper.padComponentVerticalBox(100, new JLabel(submitENAAnimation)); -// -// swappableContainer = new JPanel(); -// swappableContainer.add(loadingInfo); -// swappableContainer.setBorder(new EmptyBorder(1, 1, 1, 1)); -// swappableContainer.setPreferredSize(new Dimension(750, 450)); -// -// add(swappableContainer, BorderLayout.CENTER); + Container submitInfo = UIHelper.padComponentVerticalBox(100, new JLabel(submitENAAnimation)); + + swappableContainer = new JPanel(); + swappableContainer.add(submitInfo); + swappableContainer.setBorder(new EmptyBorder(1, 1, 1, 1)); + swappableContainer.setPreferredSize(new Dimension(750, 450)); + + add(swappableContainer, BorderLayout.CENTER); FooterPanel footer = new FooterPanel(this); add(footer, BorderLayout.SOUTH); @@ -75,6 +82,55 @@ public void createGUI() { public void submit(){ + Thread performer = new Thread(new Runnable() { + + public void run() { + log.info("Current ISA-Tab is: " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); + + if (!new File(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)).exists()) { + log.warn("Current ISA Tab file doesn't exist in the file system..."); + Container saveISAtabContainer = UIHelper.padComponentVerticalBox(70, new JLabel(saveISAtab)); + swapContainers(saveISAtabContainer); + } else { + + log.info("Saving current ISAtab file"); + ApplicationManager.getCurrentApplicationInstance().saveISATab(); + log.info("ISAtab file saved"); + + System.out.println("Setting config path before validation to " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); + + ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); + + + } + + + }}); + + performer.start(); + } + private void swapContainers(final Container newContainer) { + + SwingUtilities.invokeLater(new Runnable() { + public void run() { + if (newContainer != null) { + swappableContainer.removeAll(); + swappableContainer.add(newContainer); + swappableContainer.repaint(); + swappableContainer.validate(); + swappableContainer.updateUI(); + + newContainer.validate(); + newContainer.repaint(); + + validate(); + repaint(); + } + } + }); + + } + } diff --git a/src/main/resources/dependency-injections/submission-package.properties b/src/main/resources/dependency-injections/submission-package.properties index c7877598..70489675 100644 --- a/src/main/resources/dependency-injections/submission-package.properties +++ b/src/main/resources/dependency-injections/submission-package.properties @@ -2,3 +2,5 @@ ENASubmissionUI.submitIcon=/images/submission/submit-logo.png ENASubmissionUI.submitIconInactive=/images/submission/submit-logo-inactive.png ENASubmissionUI.submitSuccess=/images/submission/submit-success.png ENASubmissionUI.submitFailure=/images/submission/submit-failure.png + +ENASubmissionUI.saveISAtab=/images/validator/saveISAtab.png From 89df00a4a726ae8736f79ead4128f5a6b3c6b120 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Wed, 27 Aug 2014 12:11:02 +0100 Subject: [PATCH 14/48] Adding 'Term Source REF' and 'Term Accession Number' when saving programmatically #279 --- .../api/utils/SpreadsheetUtils.java | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java b/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java index 82d82135..a06c1d9b 100644 --- a/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java +++ b/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java @@ -40,10 +40,14 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import org.apache.commons.collections15.map.ListOrderedMap; import org.apache.commons.collections15.set.ListOrderedSet; import org.isatools.isacreator.configuration.DataTypes; +import org.isatools.isacreator.configuration.FieldObject; +import org.isatools.isacreator.configuration.TableConfiguration; import org.isatools.isacreator.model.Assay; +import org.isatools.isacreator.ontologymanager.OntologyManager; import org.isatools.isacreator.ontologymanager.common.OntologyTerm; import org.isatools.isacreator.ontologyselectiontool.OntologyCellEditor; import org.isatools.isacreator.sampleselection.SampleInformation; +import org.isatools.isacreator.settings.ISAcreatorProperties; import org.isatools.isacreator.spreadsheet.Spreadsheet; import org.isatools.isacreator.spreadsheet.Utils; @@ -401,11 +405,63 @@ public static StringBuilder outputAssayAsString(Assay assay) { StringBuilder output = new StringBuilder(); Object[][] content = assay.getTableReferenceObject().getDataAsArray(); + TableConfiguration tableConfiguration = assay.getTableReferenceObject().getTableFields(); + List fields = tableConfiguration.getFields(); + + String separator = "\t"; + String newline = "\n"; + + int row_number = 0; + FieldObject field = null; + for (Object[] row : content) { for (int columnIndex = 0; columnIndex < row.length; columnIndex++) { + output.append(row[columnIndex].toString()); - output.append(columnIndex != row.length - 1 ? "\t" : "\n"); + output.append(columnIndex != row.length - 1 ? separator : newline); + + if (columnIndex < fields.size()) { + field = fields.get(columnIndex); + + if (row_number == 0) { + + if (field.getDatatype().equals(DataTypes.ONTOLOGY_TERM)) { + output.append("\"Term Source REF\""+ separator); + output.append("\"Term Accession Number\"" + separator); + } + + } else { + //add the ontology values + + if (field.getDatatype().equals(DataTypes.ONTOLOGY_TERM)){ + + String val = (String) row[columnIndex]; + OntologyTerm oo = OntologyManager.getOntologyTerm(val); + String source="", termAccession=""; + + + if (oo != null) { + if (ISAcreatorProperties.getProperty("ontologyTermURI").equals("true")) + termAccession = oo.getOntologyTermURI(); + else + termAccession = oo.getOntologyTermAccession(); + } + + if (val.contains(":")) { + source = val.substring(0, val.indexOf(":")); + val = val.substring(val.indexOf(":") + 1); + } + + output.append(source +separator); + output.append(termAccession + separator); + + } + + + } + } } + row_number++; } return output; From de6fc32f034986beeab78a5f2eba286bd9dae3a4 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Wed, 27 Aug 2014 13:28:01 +0100 Subject: [PATCH 15/48] Using getFieldByName rather than TableConfiguration (as not always set), some changes to tests #279 --- .../api/utils/SpreadsheetUtils.java | 67 +++++++++---------- .../io/exportisa/OutputISAFilesFromGUI.java | 6 ++ .../io/ProgrammaticISATabCreationTest.java | 4 +- .../io/exportisa/OutputISAFilesTest.java | 1 + 4 files changed, 42 insertions(+), 36 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java b/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java index a06c1d9b..d5d4e917 100644 --- a/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java +++ b/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java @@ -42,6 +42,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import org.isatools.isacreator.configuration.DataTypes; import org.isatools.isacreator.configuration.FieldObject; import org.isatools.isacreator.configuration.TableConfiguration; +import org.isatools.isacreator.managers.ConfigurationManager; import org.isatools.isacreator.model.Assay; import org.isatools.isacreator.ontologymanager.OntologyManager; import org.isatools.isacreator.ontologymanager.common.OntologyTerm; @@ -50,6 +51,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import org.isatools.isacreator.settings.ISAcreatorProperties; import org.isatools.isacreator.spreadsheet.Spreadsheet; import org.isatools.isacreator.spreadsheet.Utils; +import org.isatools.isacreator.spreadsheet.model.TableReferenceObject; import javax.swing.*; import javax.swing.table.TableColumn; @@ -403,62 +405,59 @@ public static Set findValuesForColumnInSpreadsheet(Spreadsheet spreadshe public static StringBuilder outputAssayAsString(Assay assay) { StringBuilder output = new StringBuilder(); + TableReferenceObject tableReferenceObject = assay.getTableReferenceObject(); Object[][] content = assay.getTableReferenceObject().getDataAsArray(); - TableConfiguration tableConfiguration = assay.getTableReferenceObject().getTableFields(); - List fields = tableConfiguration.getFields(); - String separator = "\t"; String newline = "\n"; int row_number = 0; - FieldObject field = null; for (Object[] row : content) { for (int columnIndex = 0; columnIndex < row.length; columnIndex++) { - output.append(row[columnIndex].toString()); + output.append("\""+row[columnIndex].toString()+"\""); output.append(columnIndex != row.length - 1 ? separator : newline); - if (columnIndex < fields.size()) { - field = fields.get(columnIndex); + if (columnIndex < content[0].length) { + FieldObject field = tableReferenceObject.getFieldByName(content[0][columnIndex].toString()); - if (row_number == 0) { + if (field != null) { + if (row_number == 0) { - if (field.getDatatype().equals(DataTypes.ONTOLOGY_TERM)) { - output.append("\"Term Source REF\""+ separator); - output.append("\"Term Accession Number\"" + separator); - } + if (field.getDatatype().equals(DataTypes.ONTOLOGY_TERM)) { + output.append("\"Term Source REF\"" + separator); + output.append("\"Term Accession Number\"" + separator); + } - } else { - //add the ontology values + } else { + //add the ontology values - if (field.getDatatype().equals(DataTypes.ONTOLOGY_TERM)){ + if (field.getDatatype().equals(DataTypes.ONTOLOGY_TERM)) { - String val = (String) row[columnIndex]; - OntologyTerm oo = OntologyManager.getOntologyTerm(val); - String source="", termAccession=""; + String val = (String) row[columnIndex]; + OntologyTerm oo = OntologyManager.getOntologyTerm(val); + String source = "", termAccession = ""; - if (oo != null) { - if (ISAcreatorProperties.getProperty("ontologyTermURI").equals("true")) - termAccession = oo.getOntologyTermURI(); - else - termAccession = oo.getOntologyTermAccession(); - } + if (oo != null) { + if (ISAcreatorProperties.getProperty("ontologyTermURI").equals("true")) + termAccession = oo.getOntologyTermURI(); + else + termAccession = oo.getOntologyTermAccession(); + } - if (val.contains(":")) { - source = val.substring(0, val.indexOf(":")); - val = val.substring(val.indexOf(":") + 1); - } + if (val.contains(":")) { + source = val.substring(0, val.indexOf(":")); + val = val.substring(val.indexOf(":") + 1); + } - output.append(source +separator); - output.append(termAccession + separator); + output.append(source + separator); + output.append(termAccession + separator); - } - - - } + } + } //else + } //field not null } } row_number++; diff --git a/src/main/java/org/isatools/isacreator/gui/io/exportisa/OutputISAFilesFromGUI.java b/src/main/java/org/isatools/isacreator/gui/io/exportisa/OutputISAFilesFromGUI.java index 0e666bf9..6ccf4774 100644 --- a/src/main/java/org/isatools/isacreator/gui/io/exportisa/OutputISAFilesFromGUI.java +++ b/src/main/java/org/isatools/isacreator/gui/io/exportisa/OutputISAFilesFromGUI.java @@ -72,6 +72,12 @@ public OutputISAFilesFromGUI(ISAcreator main) { } + /** + * Saves the ISA-Tab files + * + * @param removeEmptyColumns + * @param investigation + */ public void saveISAFiles(boolean removeEmptyColumns, Investigation investigation) { try { diff --git a/src/test/java/org/isatools/isacreator/io/ProgrammaticISATabCreationTest.java b/src/test/java/org/isatools/isacreator/io/ProgrammaticISATabCreationTest.java index d8eaf38b..2e4fd7b6 100644 --- a/src/test/java/org/isatools/isacreator/io/ProgrammaticISATabCreationTest.java +++ b/src/test/java/org/isatools/isacreator/io/ProgrammaticISATabCreationTest.java @@ -37,12 +37,12 @@ public void createISATabProgrammatically() { } } - ConfigurationManager.loadConfigurations(baseDir + "/Configurations/isaconfig-default_v2014-01-16/"); + ConfigurationManager.loadConfigurations(baseDir + "/src/main/resources/Configurations/isaconfig-default_v2014-01-16/"); Investigation investigation = new Investigation("gis-investigation", "GIS investigation test"); investigation.addContact(new InvestigationContact("maguire", "eamonn", "J", "eamonnmag@gmail.com", "", "", "", "Oxford University", "")); investigation.addPublication(new InvestigationPublication("64654", "doi", "E. Maguire", "", "")); - investigation.addPublication(new InvestigationPublication("634654", "doi", "P Rocca-Serra", "Stupid paper", "")); + investigation.addPublication(new InvestigationPublication("634654", "doi", "P Rocca-Serra", "Some paper", "")); investigation.setFileReference("ProgramData/i_investigation.txt"); Study study = new Study("gis-1"); diff --git a/src/test/java/org/isatools/isacreator/io/exportisa/OutputISAFilesTest.java b/src/test/java/org/isatools/isacreator/io/exportisa/OutputISAFilesTest.java index 18ca4ca7..64d50364 100644 --- a/src/test/java/org/isatools/isacreator/io/exportisa/OutputISAFilesTest.java +++ b/src/test/java/org/isatools/isacreator/io/exportisa/OutputISAFilesTest.java @@ -71,6 +71,7 @@ public void saveISAFilesTest(){ assert(importer.getMessages().size()==0); System.out.println("investigation reference"+inv.getReference()); + exporter.saveISAFiles(false, inv); } } From 3ca552dac371c3ed0f5af0f3a4c9d32a01f4c2ce Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Wed, 27 Aug 2014 13:57:45 +0100 Subject: [PATCH 16/48] Removing finally block --- .../jsonresulthandlers/BioPortalSearchResultHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/ontologymanager/bioportal/jsonresulthandlers/BioPortalSearchResultHandler.java b/src/main/java/org/isatools/isacreator/ontologymanager/bioportal/jsonresulthandlers/BioPortalSearchResultHandler.java index e084e9d1..c62591e4 100644 --- a/src/main/java/org/isatools/isacreator/ontologymanager/bioportal/jsonresulthandlers/BioPortalSearchResultHandler.java +++ b/src/main/java/org/isatools/isacreator/ontologymanager/bioportal/jsonresulthandlers/BioPortalSearchResultHandler.java @@ -274,9 +274,8 @@ public String queryTermMetadataEndpoint(String termId, String ontologyURI) { } } catch (Exception e) { System.err.println("Unable to retrieve term metadata"); - } finally { - return null; } + return null; } public Map getOntologyRoots(String ontologyAbbreviation) { From 70cd45ab440ce7d48905b291f7158531d3fed2d3 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Thu, 28 Aug 2014 12:54:09 +0100 Subject: [PATCH 17/48] Added test case with ontology annotation, method to load properties file in ISAcreatorProperties, changes to SpreadsheetUtils to deal with ontology source, closes #279 --- .../api/utils/SpreadsheetUtils.java | 7 ++- .../settings/ISAcreatorProperties.java | 11 ++++ .../io/ProgrammaticISATabCreationTest.java | 54 ++++++++++++++++++- 3 files changed, 69 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java b/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java index d5d4e917..23ee6769 100644 --- a/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java +++ b/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java @@ -452,8 +452,11 @@ public static StringBuilder outputAssayAsString(Assay assay) { val = val.substring(val.indexOf(":") + 1); } - output.append(source + separator); - output.append(termAccession + separator); + if (source.equals("")) + source = oo.getOntologySource(); + + output.append("\""+source + "\""+ separator); + output.append("\""+ termAccession + "\"" + separator); } } //else diff --git a/src/main/java/org/isatools/isacreator/settings/ISAcreatorProperties.java b/src/main/java/org/isatools/isacreator/settings/ISAcreatorProperties.java index 988d7492..95941ee5 100644 --- a/src/main/java/org/isatools/isacreator/settings/ISAcreatorProperties.java +++ b/src/main/java/org/isatools/isacreator/settings/ISAcreatorProperties.java @@ -38,6 +38,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import org.isatools.isacreator.utils.PropertyFileIO; +import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Properties; @@ -57,6 +58,16 @@ public static void setProperty(String key, String value) { saveProperties(); } + public static void setProperties(String propertiesFilename){ + Properties p = PropertyFileIO.loadSettings(propertiesFilename); + Enumeration names = (Enumeration) p.propertyNames(); + while(names.hasMoreElements()) { + String name = names.nextElement(); + properties.put(name, p.getProperty(name)); + } + saveProperties(); + } + public static boolean getOntologyTermURIProperty(){ return ISAcreatorProperties.getProperty(ISAcreatorProperties.ONTOLOGY_TERM_URI).equals("true"); } diff --git a/src/test/java/org/isatools/isacreator/io/ProgrammaticISATabCreationTest.java b/src/test/java/org/isatools/isacreator/io/ProgrammaticISATabCreationTest.java index 2e4fd7b6..b78d7c13 100644 --- a/src/test/java/org/isatools/isacreator/io/ProgrammaticISATabCreationTest.java +++ b/src/test/java/org/isatools/isacreator/io/ProgrammaticISATabCreationTest.java @@ -8,6 +8,13 @@ import org.isatools.isacreator.io.exportisa.OutputISAFiles; import org.isatools.isacreator.managers.ConfigurationManager; import org.isatools.isacreator.model.*; +import org.isatools.isacreator.ontologymanager.OntologyManager; +import org.isatools.isacreator.ontologymanager.OntologySourceRefObject; +import org.isatools.isacreator.ontologymanager.common.OntologyTerm; +import org.isatools.isacreator.settings.ISAcreatorProperties; +import org.isatools.isacreator.settings.SettingsUtil; +import org.isatools.isacreator.spreadsheet.model.TableReferenceObject; +import org.isatools.isacreator.utils.PropertyFileIO; import org.junit.Test; import java.io.File; @@ -24,7 +31,7 @@ public class ProgrammaticISATabCreationTest { @Test - public void createISATabProgrammatically() { + public void createISATabProgrammatically1Test() { String baseDir = System.getProperty("basedir"); @@ -62,4 +69,49 @@ public void createISATabProgrammatically() { ISAFileOutput fileOutput = new OutputISAFiles(); fileOutput.saveISAFiles(true, investigation); } + + @Test + public void createISATabProgrammatically2Test() { + + String baseDir = System.getProperty("basedir"); + + if ( baseDir == null ) + { + try{ + baseDir = new File( "." ).getCanonicalPath(); + }catch(IOException e){ + e.printStackTrace(); + } + } + + ISAcreatorProperties.setProperties(PropertyFileIO.DEFAULT_CONFIGS_SETTINGS_PROPERTIES); + ConfigurationManager.loadConfigurations(baseDir + "/src/main/resources/Configurations/isaconfig-default_v2014-01-16/"); + Investigation investigation = new Investigation("gis-investigation", "GIS investigation test"); + + investigation.addContact(new InvestigationContact("maguire", "eamonn", "J", "eamonnmag@gmail.com", "", "", "", "Oxford University", "")); + investigation.addPublication(new InvestigationPublication("64654", "doi", "E. Maguire", "", "")); + investigation.addPublication(new InvestigationPublication("634654", "doi", "P Rocca-Serra", "Some paper", "")); + investigation.setFileReference("ProgramData/i_investigation.txt"); + + Study study = new Study("gis-1"); + Assay studySample = new Assay("s_samples.txt", ConfigurationManager.selectTROForUserSelection(MappingObject.STUDY_SAMPLE)); + study.setStudySamples(studySample); + + TableReferenceObject studySampleTableReferenceObject = studySample.getTableReferenceObject(); + + studySampleTableReferenceObject.addRowData(studySampleTableReferenceObject.getHeaders().toArray( + new String[]{"Source Name", "Characteristics[organism]", "Protocol REF", "Sample Name"}), + new String[]{"source1", "homo sapiens", "sampling", "sample1"}); + + OntologyManager.addToOntologyTerms("homo sapiens", new OntologyTerm("homo sapiens", "http://purl.obolibrary.org/obo/NCBITaxon_9606", "http://purl.obolibrary.org/obo/NCBITaxon_9606", new OntologySourceRefObject("NCBITaxon"))); + + investigation.addStudy(study); + + Assay testAssay = new Assay("assay_1.txt", "transcription profiling", "DNA microarray", ""); + + study.addAssay(testAssay); + + ISAFileOutput fileOutput = new OutputISAFiles(); + fileOutput.saveISAFiles(true, investigation); + } } From dcfa606faacd92f5a06650047378844671f894cb Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Thu, 28 Aug 2014 19:14:22 +0100 Subject: [PATCH 18/48] Start of the submission tool UI. --- .../isatools/isacreator/gui/ISAcreator.java | 2 +- .../gui/submission/ENASubmissionUI.java | 34 ++++++++++-------- .../submission-package.properties | 1 + src/main/resources/images/submission/box.png | Bin 0 -> 636 bytes .../images/submission/created_by.png | Bin 0 -> 7897 bytes .../resources/images/submission/metadata.png | Bin 0 -> 535 bytes .../images/submission/submit-logo.png | Bin 718 -> 4651 bytes .../images/submission/submitting.gif | Bin 11361 -> 47547 bytes 8 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 src/main/resources/images/submission/box.png create mode 100644 src/main/resources/images/submission/created_by.png create mode 100644 src/main/resources/images/submission/metadata.png diff --git a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java index d071addc..b345d4ee 100755 --- a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java +++ b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java @@ -484,7 +484,7 @@ public void actionPerformed(ActionEvent actionEvent) { submitENA.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { - ENASubmissionUI submitUI = new ENASubmissionUI(ISAcreator.this); + ENASubmissionUI submitUI = new ENASubmissionUI(); submitUI.createGUI(); submitUI.setLocationRelativeTo(ISAcreator.this); submitUI.setAlwaysOnTop(true); diff --git a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java index de4c5bdb..ef001fec 100644 --- a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java @@ -27,54 +27,58 @@ */ public class ENASubmissionUI extends JFrame { - private ISAcreator isacreatorEnvironment; - - @InjectedResource - private Image submitIcon, submitIconInactive; - @InjectedResource - private ImageIcon saveISAtab; + private ImageIcon saveISAtab, submitIcon, created_by; - public static final float DESIRED_OPACITY = .93f; + public static final float DESIRED_OPACITY = .98f; private static Logger log = Logger.getLogger(ENASubmissionUI.class.getName()); private JPanel swappableContainer; + protected static ImageIcon submitENAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/submission/submitting.gif")); - public ENASubmissionUI(ISAcreator isacreatorEnvironment) { + public ENASubmissionUI() { ResourceInjector.get("submission-package.style").inject(this); - this.isacreatorEnvironment = isacreatorEnvironment; } public void createGUI() { setTitle("Submit to ENA"); setUndecorated(true); - setLayout(new BorderLayout()); + setBackground(UIHelper.BG_COLOR); if (GraphicsUtils.isWindowTransparencySupported()) { AWTUtilities.setWindowOpacity(this, DESIRED_OPACITY); } - HUDTitleBar titlePanel = new HUDTitleBar(submitIcon, submitIconInactive); + HUDTitleBar titlePanel = new HUDTitleBar(null, null); add(titlePanel, BorderLayout.NORTH); titlePanel.installListeners(); ((JComponent) getContentPane()).setBorder(new EtchedBorder(UIHelper.LIGHT_GREEN_COLOR, UIHelper.LIGHT_GREEN_COLOR)); - Container submitInfo = UIHelper.padComponentVerticalBox(100, new JLabel(submitENAAnimation)); + Box container = Box.createVerticalBox(); + + container.add(UIHelper.wrapComponentInPanel(new JLabel(submitIcon))); + container.add(Box.createVerticalStrut(220)); + + JPanel created_by_panel = new JPanel(); + created_by_panel.setBackground(new Color(236, 240, 241)); + container.add(UIHelper.wrapComponentInPanel(new JLabel(created_by))); + +// Container submitInfo = UIHelper.padComponentVerticalBox(100, new JLabel(submitENAAnimation)); swappableContainer = new JPanel(); - swappableContainer.add(submitInfo); + swappableContainer.add(container); swappableContainer.setBorder(new EmptyBorder(1, 1, 1, 1)); swappableContainer.setPreferredSize(new Dimension(750, 450)); add(swappableContainer, BorderLayout.CENTER); - FooterPanel footer = new FooterPanel(this); - add(footer, BorderLayout.SOUTH); +// FooterPanel footer = new FooterPanel(this); +// add(footer, BorderLayout.SOUTH); pack(); diff --git a/src/main/resources/dependency-injections/submission-package.properties b/src/main/resources/dependency-injections/submission-package.properties index 70489675..e2a495b0 100644 --- a/src/main/resources/dependency-injections/submission-package.properties +++ b/src/main/resources/dependency-injections/submission-package.properties @@ -2,5 +2,6 @@ ENASubmissionUI.submitIcon=/images/submission/submit-logo.png ENASubmissionUI.submitIconInactive=/images/submission/submit-logo-inactive.png ENASubmissionUI.submitSuccess=/images/submission/submit-success.png ENASubmissionUI.submitFailure=/images/submission/submit-failure.png +ENASubmissionUI.created_by=/images/submission/created_by.png ENASubmissionUI.saveISAtab=/images/validator/saveISAtab.png diff --git a/src/main/resources/images/submission/box.png b/src/main/resources/images/submission/box.png new file mode 100644 index 0000000000000000000000000000000000000000..e65f032664bb81999268583a47add696306a5983 GIT binary patch literal 636 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 P)p%O!dTQlQtRw#eG^+CT literal 0 HcmV?d00001 diff --git a/src/main/resources/images/submission/metadata.png b/src/main/resources/images/submission/metadata.png new file mode 100644 index 0000000000000000000000000000000000000000..3f390969302653736e22af2779761ae91bdaa10f GIT binary patch literal 535 zcmV+y0_gpTP)&=DAcGq{qmlH%n4SpwactW=hpynjBQon)CxrBbO> zD!eX!8_*b2(xqfRr*Af!4>WucG3Jii6C2)`3T+@yG{Z}3dor;2i|`@_iizV7H1*Y# zKM?HJrJip9l0xE zZb4oh$O)*W{#JSh5NXqn^gp=WS21nIoHHwkU7Sa+ zYZVylB@G~Qz8;u?uM~={Aaf1ytIc=xuc$qH?UMT6q*Ey7Jl}XnVjIcI0n2P=KhHu| zk3)M#Y~=l^U$|&2g?D0q)~;u#jdR_lG(dWXRhxl)6f@xNdGB={*$Xy>0e7!`u<`96 z)kf052)He`huPI8vLdjm&>8TK_31;}z+7+^Ji-76oDI)0zy*iE&oO`ihrv%VfC7iY z#~46@!{N^uIK5$QQQ#u*BL=dO^M1#9jtG2&0XDekM<;ibsDp!*{aqu#RVtNA_5bxL ZzyLKK47Z}Bc3}Vj002ovPDHLkV1gZA=L7%% literal 0 HcmV?d00001 diff --git a/src/main/resources/images/submission/submit-logo.png b/src/main/resources/images/submission/submit-logo.png index 924d9c3b40557a856629985e97e55b3c9bc61a93..803f89ad078f1ba71c9222b7d7874290b31566b0 100644 GIT binary patch literal 4651 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 Bp@ske literal 11361 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 From 3667629d053e41368ed4819d41cd20ef53e9c637 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Fri, 29 Aug 2014 10:46:40 +0100 Subject: [PATCH 19/48] Showing recently opened files #204 --- .../gui/menu/AbstractImportFilesMenu.java | 3 +++ .../isacreator/gui/menu/ImportFilesMenu.java | 23 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/isatools/isacreator/gui/menu/AbstractImportFilesMenu.java b/src/main/java/org/isatools/isacreator/gui/menu/AbstractImportFilesMenu.java index f73e2104..4d25a2c4 100644 --- a/src/main/java/org/isatools/isacreator/gui/menu/AbstractImportFilesMenu.java +++ b/src/main/java/org/isatools/isacreator/gui/menu/AbstractImportFilesMenu.java @@ -54,6 +54,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; +import java.util.*; /** * AbstractImportFilesMenu @@ -70,6 +71,8 @@ public abstract class AbstractImportFilesMenu extends MenuUIComponent { protected JScrollPane problemScroll; protected File[] previousFiles = null; protected ExtendedJList previousFileList; + //keeping previously open non local files + protected java.util.List previousNonLocalFiles = new ArrayList(); protected JFileChooser jfc; diff --git a/src/main/java/org/isatools/isacreator/gui/menu/ImportFilesMenu.java b/src/main/java/org/isatools/isacreator/gui/menu/ImportFilesMenu.java index 332d1f2d..dc152274 100644 --- a/src/main/java/org/isatools/isacreator/gui/menu/ImportFilesMenu.java +++ b/src/main/java/org/isatools/isacreator/gui/menu/ImportFilesMenu.java @@ -179,6 +179,19 @@ public void run() { ISAcreatorProperties.setProperty(ISAcreatorProperties.CURRENT_ISATAB, new File(dir).getAbsolutePath()); + if (!dir.contains(ISAcreator.DEFAULT_ISATAB_SAVE_DIRECTORY)){ + //check it doesn't exit already + boolean exists = false; + for(File file: previousNonLocalFiles){ + if (dir.equals(file.getCanonicalPath())) { + exists = true; + break; + } + } + if (!exists) + previousNonLocalFiles.add(new File(dir)); + } + } else if (successfulImport) { @@ -270,7 +283,6 @@ public File[] getPreviousFiles() { previousFileList.clearItems(); - File f = new File(ISAcreator.DEFAULT_ISATAB_SAVE_DIRECTORY); if (!f.exists() || !f.isDirectory()) { @@ -285,6 +297,15 @@ public File[] getPreviousFiles() { } } + for (File prevSubmission : previousNonLocalFiles) { + if (prevSubmission.isDirectory()) { + previousFileList.addItem(prevSubmission.getName()); + previousFiles[previousFiles.length-1] = prevSubmission; + } + } + + + return previousFiles; } From cbaf05eed8d03ba33c718cf2e5de3f6a96fbfd9a Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Fri, 29 Aug 2014 12:43:48 +0100 Subject: [PATCH 20/48] Also keeping non-local configurations previously opened #204 --- .../isacreator/gs/gui/GSImportFilesMenu.java | 39 ++++++------- .../gui/menu/AbstractImportFilesMenu.java | 29 +++++----- .../gui/menu/ImportConfigurationMenu.java | 57 +++++++++++++------ .../isacreator/gui/menu/ImportFilesMenu.java | 22 +++---- 4 files changed, 84 insertions(+), 63 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/gs/gui/GSImportFilesMenu.java b/src/main/java/org/isatools/isacreator/gs/gui/GSImportFilesMenu.java index b0429bfc..1f20c31a 100644 --- a/src/main/java/org/isatools/isacreator/gs/gui/GSImportFilesMenu.java +++ b/src/main/java/org/isatools/isacreator/gs/gui/GSImportFilesMenu.java @@ -30,6 +30,7 @@ import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; +import java.util.Arrays; /** * Created by the ISATeam. @@ -69,13 +70,13 @@ public void createGUI() { Box container = Box.createVerticalBox(); container.setOpaque(false); - previousFileList = new ExtendedJList(); - previousFileList.setBorder(null); - previousFileList.setOpaque(false); + previousFilesExtendedJList = new ExtendedJList(); + previousFilesExtendedJList.setBorder(null); + previousFilesExtendedJList.setOpaque(false); previousFiles = getPreviousFiles(); - previousFileList.addMouseListener(new MouseAdapter() { + previousFilesExtendedJList.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent event) { if (event.getClickCount() >= 2) { getSelectedFileAndLoad(); @@ -86,7 +87,7 @@ public void mousePressed(MouseEvent event) { JPanel listPane = new JPanel(new BorderLayout()); listPane.setOpaque(false); - JScrollPane listScroller = new JScrollPane(previousFileList, + JScrollPane listScroller = new JScrollPane(previousFilesExtendedJList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); listScroller.setBorder(new EmptyBorder(1, 1, 1, 1)); @@ -102,13 +103,13 @@ public void mousePressed(MouseEvent event) { filterFieldPane.setLayout(new BoxLayout(filterFieldPane, BoxLayout.LINE_AXIS)); filterFieldPane.setOpaque(false); - UIHelper.renderComponent(previousFileList.getFilterField(), UIHelper.VER_11_BOLD, UIHelper.DARK_GREEN_COLOR, false); - previousFileList.getFilterField().setOpaque(false); - previousFileList.getFilterField().setBorder(new EmptyBorder(1, 1, 1, 1)); + UIHelper.renderComponent(previousFilesExtendedJList.getFilterField(), UIHelper.VER_11_BOLD, UIHelper.DARK_GREEN_COLOR, false); + previousFilesExtendedJList.getFilterField().setOpaque(false); + previousFilesExtendedJList.getFilterField().setBorder(new EmptyBorder(1, 1, 1, 1)); filterFieldPane.add(UIHelper.wrapComponentInPanel(new JLabel(getLeftFilterImage()))); - filterFieldPane.add(previousFileList.getFilterField()); + filterFieldPane.add(previousFilesExtendedJList.getFilterField()); filterFieldPane.add(UIHelper.wrapComponentInPanel(new JLabel(getRightFilterImage()))); - filterFieldPane.add(new ClearFieldUtility(previousFileList.getFilterField())); + filterFieldPane.add(new ClearFieldUtility(previousFilesExtendedJList.getFilterField())); listPane.add(filterFieldPane, BorderLayout.SOUTH); @@ -154,16 +155,16 @@ UIHelper.GREEN_ROUNDED_BORDER, getBorderTitle(), @Override public void getSelectedFileAndLoad() { - if (previousFileList.getSelectedIndex() != -1) { + if (previousFilesExtendedJList.getSelectedIndex() != -1) { // select file from list for (File candidate : previousFiles) { - if (candidate.getName().equals(previousFileList.getSelectedValue().toString())) { + if (candidate.getName().equals(previousFilesExtendedJList.getSelectedValue().toString())) { getSelectedFileAndLoad(candidate,true); } } for (GSFileMetadata candidate: previousGSFiles){ - if (candidate.getUrl().equals(previousFileList.getSelectedValue().toString())) + if (candidate.getUrl().equals(previousFilesExtendedJList.getSelectedValue().toString())) System.out.println("file candidate = "+candidate); loadGenomeSpaceFiles(candidate); @@ -173,8 +174,8 @@ public void getSelectedFileAndLoad() { } @Override - public File[] getPreviousFiles() { - previousFileList.clearItems(); + public java.util.List getPreviousFiles() { + previousFilesExtendedJList.clearItems(); File f = new File(ISAcreator.DEFAULT_ISATAB_SAVE_DIRECTORY); @@ -183,18 +184,18 @@ public File[] getPreviousFiles() { f.mkdir(); } - previousFiles = f.listFiles(); + previousFiles = new ArrayList(Arrays.asList(f.listFiles())); for (File prevSubmission : previousFiles) { if (prevSubmission.isDirectory()) { - previousFileList.addItem(prevSubmission.getName()); + previousFilesExtendedJList.addItem(prevSubmission.getName()); } } if (previousGSFiles!=null){ for(GSFileMetadata fileMetadata : previousGSFiles){ if (fileMetadata.isDirectory()){ - previousFileList.addItem(fileMetadata.getUrl()); + previousFilesExtendedJList.addItem(fileMetadata.getUrl()); } } } @@ -204,7 +205,7 @@ public File[] getPreviousFiles() { @Override public void setListRenderer() { - previousFileList.setCellRenderer(new ImportFilesListCellRenderer(listImage, gslistImage)); + previousFilesExtendedJList.setCellRenderer(new ImportFilesListCellRenderer(listImage, gslistImage)); } @Override diff --git a/src/main/java/org/isatools/isacreator/gui/menu/AbstractImportFilesMenu.java b/src/main/java/org/isatools/isacreator/gui/menu/AbstractImportFilesMenu.java index 4d25a2c4..2e7ad7a8 100644 --- a/src/main/java/org/isatools/isacreator/gui/menu/AbstractImportFilesMenu.java +++ b/src/main/java/org/isatools/isacreator/gui/menu/AbstractImportFilesMenu.java @@ -54,7 +54,6 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; -import java.util.*; /** * AbstractImportFilesMenu @@ -69,10 +68,10 @@ public abstract class AbstractImportFilesMenu extends MenuUIComponent { protected JEditorPane problemReport; protected JScrollPane problemScroll; - protected File[] previousFiles = null; - protected ExtendedJList previousFileList; + protected java.util.List previousFiles = null; + protected ExtendedJList previousFilesExtendedJList; //keeping previously open non local files - protected java.util.List previousNonLocalFiles = new ArrayList(); + protected java.util.List previousNonLocalFiles = null; protected JFileChooser jfc; @@ -100,13 +99,13 @@ public void createGUI() { Box container = Box.createVerticalBox(); container.setOpaque(false); - previousFileList = new ExtendedJList(); - previousFileList.setBorder(null); - previousFileList.setOpaque(false); + previousFilesExtendedJList = new ExtendedJList(); + previousFilesExtendedJList.setBorder(null); + previousFilesExtendedJList.setOpaque(false); previousFiles = getPreviousFiles(); - previousFileList.addMouseListener(new MouseAdapter() { + previousFilesExtendedJList.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent event) { if (event.getClickCount() >= 2) { getSelectedFileAndLoad(); @@ -117,7 +116,7 @@ public void mousePressed(MouseEvent event) { JPanel listPane = new JPanel(new BorderLayout()); listPane.setOpaque(false); - JScrollPane listScroller = new JScrollPane(previousFileList, + JScrollPane listScroller = new JScrollPane(previousFilesExtendedJList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); listScroller.setBorder(new EmptyBorder(1, 1, 1, 1)); @@ -133,13 +132,13 @@ public void mousePressed(MouseEvent event) { filterFieldPane.setLayout(new BoxLayout(filterFieldPane, BoxLayout.LINE_AXIS)); filterFieldPane.setOpaque(false); - UIHelper.renderComponent(previousFileList.getFilterField(), UIHelper.VER_11_BOLD, UIHelper.DARK_GREEN_COLOR, false); - previousFileList.getFilterField().setOpaque(false); - previousFileList.getFilterField().setBorder(new EmptyBorder(1, 1, 1, 1)); + UIHelper.renderComponent(previousFilesExtendedJList.getFilterField(), UIHelper.VER_11_BOLD, UIHelper.DARK_GREEN_COLOR, false); + previousFilesExtendedJList.getFilterField().setOpaque(false); + previousFilesExtendedJList.getFilterField().setBorder(new EmptyBorder(1, 1, 1, 1)); filterFieldPane.add(UIHelper.wrapComponentInPanel(new JLabel(getLeftFilterImage()))); - filterFieldPane.add(previousFileList.getFilterField()); + filterFieldPane.add(previousFilesExtendedJList.getFilterField()); filterFieldPane.add(UIHelper.wrapComponentInPanel(new JLabel(getRightFilterImage()))); - filterFieldPane.add(new ClearFieldUtility(previousFileList.getFilterField())); + filterFieldPane.add(new ClearFieldUtility(previousFilesExtendedJList.getFilterField())); listPane.add(filterFieldPane, BorderLayout.SOUTH); @@ -250,7 +249,7 @@ protected JPanel createProblemDisplay() { return problemCont; } - public abstract File[] getPreviousFiles(); + public abstract java.util.List getPreviousFiles(); public abstract void getSelectedFileAndLoad(); diff --git a/src/main/java/org/isatools/isacreator/gui/menu/ImportConfigurationMenu.java b/src/main/java/org/isatools/isacreator/gui/menu/ImportConfigurationMenu.java index d18149e4..3e82ed04 100644 --- a/src/main/java/org/isatools/isacreator/gui/menu/ImportConfigurationMenu.java +++ b/src/main/java/org/isatools/isacreator/gui/menu/ImportConfigurationMenu.java @@ -42,9 +42,6 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import org.isatools.errorreporter.model.FileType; import org.isatools.errorreporter.model.ISAFileErrorReport; import org.isatools.isacreator.api.ImportConfiguration; -import org.isatools.isacreator.common.UIHelper; -import org.isatools.isacreator.common.button.ButtonType; -import org.isatools.isacreator.common.button.FlatButton; import org.isatools.isacreator.gs.GSLocalFilesManager; import org.isatools.isacreator.gui.ISAcreator; import org.isatools.isacreator.gui.modeselection.Mode; @@ -56,14 +53,11 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -87,6 +81,7 @@ public class ImportConfigurationMenu extends AbstractImportFilesMenu { public ImportConfigurationMenu(ISAcreatorMenu menu) { super(menu); setPreferredSize(new Dimension(400, 400)); + previousNonLocalFiles = new ArrayList(); } public JPanel createAlternativeExitDisplay() { @@ -94,18 +89,19 @@ public JPanel createAlternativeExitDisplay() { } public void getSelectedFileAndLoad() { - if (previousFileList.getSelectedIndex() != -1) { + if (previousFilesExtendedJList.getSelectedIndex() != -1) { // select file from list for (File candidate : previousFiles) { if (candidate.getName() - .equals(previousFileList.getSelectedValue() + .equals(previousFilesExtendedJList.getSelectedValue() .toString())) { menu.showProgressPanel("attempting to load configuration in " + candidate.getName() + "..."); - loadFile(ISAcreator.DEFAULT_CONFIGURATIONS_DIRECTORY + File.separator + - candidate.getName() + File.separator); + //loadFile(ISAcreator.DEFAULT_CONFIGURATIONS_DIRECTORY + File.separator + + // candidate.getName() + File.separator); + loadFile(candidate.getAbsolutePath()); } } } @@ -135,6 +131,23 @@ public void run() { } else { System.out.println("Loaded configuration"); + try { + if (!dir.contains(ISAcreator.DEFAULT_CONFIGURATIONS_DIRECTORY)) { + //check it doesn't exit already + boolean exists = false; + for (File file : previousNonLocalFiles) { + if (dir.equals(file.getCanonicalPath())) { + exists = true; + break; + } + } + if (!exists) + previousNonLocalFiles.add(new File(dir)); + } + }catch(IOException ioex){ + ioex.printStackTrace(); + } + menu.resetViewAfterProgress(); menu.hideGlassPane(); @@ -184,9 +197,9 @@ public void run() { performer.start(); } - public File[] getPreviousFiles() { + public java.util.List getPreviousFiles() { - previousFileList.clearItems(); + previousFilesExtendedJList.clearItems(); File f = new File(ISAcreator.DEFAULT_CONFIGURATIONS_DIRECTORY); @@ -194,9 +207,9 @@ public File[] getPreviousFiles() { f.mkdir(); } - previousFiles = f.listFiles(); + previousFiles = new ArrayList(Arrays.asList(f.listFiles())); - if (previousFiles.length == 0) { + if (previousFiles.size() == 0) { String configurationFilesLocation = PropertyFileIO.retrieveDefaultSettings().getProperty("configurationFilesLocation"); String tmpDirectory = GeneralUtils.createTmpDirectory("Configurations"); @@ -208,7 +221,7 @@ public File[] getPreviousFiles() { String unzipped = GeneralUtils.unzip(downloadedFile); System.out.println("Configurations downloaded and unzipped =" + unzipped); f = new File(ISAcreator.DEFAULT_CONFIGURATIONS_DIRECTORY); - previousFiles = f.listFiles(); + previousFiles = Arrays.asList(f.listFiles()); } catch (IOException ex) { @@ -220,10 +233,18 @@ public File[] getPreviousFiles() { for (File prevSubmission : previousFiles) { if (prevSubmission.isDirectory()) { - previousFileList.addItem(prevSubmission.getName()); + previousFilesExtendedJList.addItem(prevSubmission.getName()); } } + for (File prevSubmission : previousNonLocalFiles) { + if (prevSubmission.isDirectory()) { + previousFilesExtendedJList.addItem(prevSubmission.getName()); + previousFiles.add(prevSubmission); + } + } + + return previousFiles; } @@ -236,7 +257,7 @@ public ImageIcon getPanelHeaderImage() { } public void setListRenderer() { - previousFileList.setCellRenderer(new ImportFilesListCellRenderer(listImage)); + previousFilesExtendedJList.setCellRenderer(new ImportFilesListCellRenderer(listImage)); } @Override diff --git a/src/main/java/org/isatools/isacreator/gui/menu/ImportFilesMenu.java b/src/main/java/org/isatools/isacreator/gui/menu/ImportFilesMenu.java index dc152274..965de3aa 100644 --- a/src/main/java/org/isatools/isacreator/gui/menu/ImportFilesMenu.java +++ b/src/main/java/org/isatools/isacreator/gui/menu/ImportFilesMenu.java @@ -59,6 +59,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import java.awt.event.ActionListener; import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -81,6 +82,7 @@ public class ImportFilesMenu extends AbstractImportFilesMenu { public ImportFilesMenu(ISAcreatorMenu menu) { super(menu, false); + previousNonLocalFiles = new ArrayList(); } public JPanel createAlternativeExitDisplay() { @@ -105,11 +107,11 @@ public void actionPerformed(ActionEvent actionEvent) { public void getSelectedFileAndLoad() { - if (previousFileList.getSelectedIndex() != -1) { + if (previousFilesExtendedJList.getSelectedIndex() != -1) { // select file from list for (File candidate : previousFiles) { if (candidate.getName() - .equals(previousFileList.getSelectedValue() + .equals(previousFilesExtendedJList.getSelectedValue() .toString())) { getSelectedFileAndLoad(candidate, true); } @@ -279,9 +281,9 @@ public void run() { performer.start(); } - public File[] getPreviousFiles() { + public List getPreviousFiles() { - previousFileList.clearItems(); + previousFilesExtendedJList.clearItems(); File f = new File(ISAcreator.DEFAULT_ISATAB_SAVE_DIRECTORY); @@ -289,23 +291,21 @@ public File[] getPreviousFiles() { f.mkdir(); } - previousFiles = f.listFiles(); + previousFiles = new ArrayList(Arrays.asList(f.listFiles())); for (File prevSubmission : previousFiles) { if (prevSubmission.isDirectory()) { - previousFileList.addItem(prevSubmission.getName()); + previousFilesExtendedJList.addItem(prevSubmission.getName()); } } for (File prevSubmission : previousNonLocalFiles) { if (prevSubmission.isDirectory()) { - previousFileList.addItem(prevSubmission.getName()); - previousFiles[previousFiles.length-1] = prevSubmission; + previousFilesExtendedJList.addItem(prevSubmission.getName()); + previousFiles.add(prevSubmission); } } - - return previousFiles; } @@ -324,7 +324,7 @@ public ImageIcon getPanelHeaderImage() { public void setListRenderer() { - previousFileList.setCellRenderer(new ImportFilesListCellRenderer(listImage)); + previousFilesExtendedJList.setCellRenderer(new ImportFilesListCellRenderer(listImage)); } @Override From db65c50f89e06d35c3b5f658cd70ae93d62ed984 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Fri, 29 Aug 2014 13:02:31 +0100 Subject: [PATCH 21/48] Checking for trailing slash in tempdir closes #204 --- .../isacreator/gui/menu/ImportConfigurationMenu.java | 2 +- .../java/org/isatools/isacreator/utils/GeneralUtils.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/gui/menu/ImportConfigurationMenu.java b/src/main/java/org/isatools/isacreator/gui/menu/ImportConfigurationMenu.java index 3e82ed04..b6123987 100644 --- a/src/main/java/org/isatools/isacreator/gui/menu/ImportConfigurationMenu.java +++ b/src/main/java/org/isatools/isacreator/gui/menu/ImportConfigurationMenu.java @@ -221,7 +221,7 @@ public java.util.List getPreviousFiles() { String unzipped = GeneralUtils.unzip(downloadedFile); System.out.println("Configurations downloaded and unzipped =" + unzipped); f = new File(ISAcreator.DEFAULT_CONFIGURATIONS_DIRECTORY); - previousFiles = Arrays.asList(f.listFiles()); + previousFiles = new ArrayList(Arrays.asList(f.listFiles())); } catch (IOException ex) { diff --git a/src/main/java/org/isatools/isacreator/utils/GeneralUtils.java b/src/main/java/org/isatools/isacreator/utils/GeneralUtils.java index fd31f048..c41f935f 100644 --- a/src/main/java/org/isatools/isacreator/utils/GeneralUtils.java +++ b/src/main/java/org/isatools/isacreator/utils/GeneralUtils.java @@ -105,7 +105,11 @@ public static boolean charIsAlphanumeric(char c) { public static String createTmpDirectory(String name){ - String localTmpDirectory = System.getProperty("java.io.tmpdir") + File.separator + name + File.separator + System.currentTimeMillis() + File.separator; + String tempdir = System.getProperty("java.io.tmpdir"); + if ( !(tempdir.endsWith("/") || tempdir.endsWith("\\")) ) + tempdir = tempdir + File.separator; + + String localTmpDirectory = tempdir + name + File.separator + System.currentTimeMillis() + File.separator; boolean success = new File(localTmpDirectory).mkdirs(); if (success) { System.out.println("Directory: "+ localTmpDirectory + " created"); From befd097ba178fb295f3f867db1bd3dc64e972a14 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Fri, 29 Aug 2014 19:12:18 +0100 Subject: [PATCH 22/48] Added menu. Now going to create the submission interface. --- .../isatools/isacreator/gui/ISAcreator.java | 1 - .../gui/submission/ENASubmissionUI.java | 140 +++++++++++++----- .../submission-package.properties | 5 + .../images/submission/created_by.png | Bin 7897 -> 6740 bytes .../resources/images/submission/new_sub.png | Bin 0 -> 4459 bytes .../images/submission/new_sub_over.png | Bin 0 -> 4358 bytes .../images/submission/update_sub.png | Bin 0 -> 4409 bytes .../images/submission/update_sub_over.png | Bin 0 -> 4315 bytes 8 files changed, 107 insertions(+), 39 deletions(-) create mode 100644 src/main/resources/images/submission/new_sub.png create mode 100644 src/main/resources/images/submission/new_sub_over.png create mode 100644 src/main/resources/images/submission/update_sub.png create mode 100644 src/main/resources/images/submission/update_sub_over.png diff --git a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java index b345d4ee..7f5e3706 100755 --- a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java +++ b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java @@ -489,7 +489,6 @@ public void actionPerformed(ActionEvent actionEvent) { submitUI.setLocationRelativeTo(ISAcreator.this); submitUI.setAlwaysOnTop(true); submitUI.setVisible(true); - submitUI.submit(); } }); diff --git a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java index ef001fec..89e8729f 100644 --- a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java @@ -2,7 +2,10 @@ import com.sun.awt.AWTUtilities; import org.apache.log4j.Logger; +import org.isatools.isacreator.common.CommonMouseAdapter; import org.isatools.isacreator.common.UIHelper; +import org.isatools.isacreator.common.button.ButtonType; +import org.isatools.isacreator.common.button.FlatButton; import org.isatools.isacreator.effects.FooterPanel; import org.isatools.isacreator.effects.GraphicsUtils; import org.isatools.isacreator.effects.HUDTitleBar; @@ -17,24 +20,26 @@ import javax.swing.border.EmptyBorder; import javax.swing.border.EtchedBorder; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; import java.io.File; /** * User intereface for ENA submission. - * - * - * */ public class ENASubmissionUI extends JFrame { @InjectedResource - private ImageIcon saveISAtab, submitIcon, created_by; + private ImageIcon saveISAtab, submitIcon, created_by, new_sub, new_sub_over, update_sub, update_sub_over; public static final float DESIRED_OPACITY = .98f; private static Logger log = Logger.getLogger(ENASubmissionUI.class.getName()); private JPanel swappableContainer; + private JLabel newSubmission, updateSubmission; + protected static ImageIcon submitENAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/submission/submitting.gif")); public ENASubmissionUI() { @@ -59,32 +64,89 @@ public void createGUI() { ((JComponent) getContentPane()).setBorder(new EtchedBorder(UIHelper.LIGHT_GREEN_COLOR, UIHelper.LIGHT_GREEN_COLOR)); + + swappableContainer = new JPanel(); + swappableContainer.add(createMenu()); + swappableContainer.setBorder(new EmptyBorder(1, 1, 1, 1)); + swappableContainer.setPreferredSize(new Dimension(750, 450)); + + add(swappableContainer, BorderLayout.CENTER); + + pack(); + + } + + public Container createMenu() { Box container = Box.createVerticalBox(); container.add(UIHelper.wrapComponentInPanel(new JLabel(submitIcon))); - container.add(Box.createVerticalStrut(220)); + container.add(Box.createVerticalStrut(20)); + + newSubmission = new JLabel(new_sub); + + newSubmission.addMouseListener(new CommonMouseAdapter() { + @Override + public void mouseEntered(MouseEvent mouseEvent) { + super.mouseEntered(mouseEvent); + newSubmission.setIcon(new_sub_over); + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates. + newSubmission.setIcon(new_sub); + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + super.mouseReleased(mouseEvent); + newSubmission.setIcon(new_sub); + System.out.println("Going to create new"); + submit(); + } + }); + + updateSubmission = new JLabel(update_sub); + updateSubmission.addMouseListener(new CommonMouseAdapter() { + @Override + public void mouseEntered(MouseEvent mouseEvent) { + super.mouseEntered(mouseEvent); + updateSubmission.setIcon(update_sub_over); + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates. + updateSubmission.setIcon(update_sub); + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + super.mouseReleased(mouseEvent); + updateSubmission.setIcon(update_sub); + System.out.println("Going to update"); + submit(); + } + }); + + Box menuContainer = Box.createHorizontalBox(); + menuContainer.add(newSubmission); + menuContainer.add(updateSubmission); + + container.add(menuContainer); JPanel created_by_panel = new JPanel(); created_by_panel.setBackground(new Color(236, 240, 241)); container.add(UIHelper.wrapComponentInPanel(new JLabel(created_by))); -// Container submitInfo = UIHelper.padComponentVerticalBox(100, new JLabel(submitENAAnimation)); + container.add(Box.createVerticalStrut(20)); - swappableContainer = new JPanel(); - swappableContainer.add(container); - swappableContainer.setBorder(new EmptyBorder(1, 1, 1, 1)); - swappableContainer.setPreferredSize(new Dimension(750, 450)); - - add(swappableContainer, BorderLayout.CENTER); - -// FooterPanel footer = new FooterPanel(this); -// add(footer, BorderLayout.SOUTH); + return container; + } - pack(); - } - public void submit(){ + public void submit() { Thread performer = new Thread(new Runnable() { @@ -105,36 +167,38 @@ public void run() { ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); - + Container submitInfo = UIHelper.padComponentVerticalBox(100, new JLabel(submitENAAnimation)); + swapContainers(submitInfo); } - }}); + } + }); performer.start(); } - private void swapContainers(final Container newContainer) { - - SwingUtilities.invokeLater(new Runnable() { - public void run() { - if (newContainer != null) { - swappableContainer.removeAll(); - swappableContainer.add(newContainer); - swappableContainer.repaint(); - swappableContainer.validate(); - swappableContainer.updateUI(); - - newContainer.validate(); - newContainer.repaint(); + private void swapContainers(final Container newContainer) { - validate(); - repaint(); - } + SwingUtilities.invokeLater(new Runnable() { + public void run() { + if (newContainer != null) { + swappableContainer.removeAll(); + swappableContainer.add(newContainer); + swappableContainer.repaint(); + swappableContainer.validate(); + swappableContainer.updateUI(); + + newContainer.validate(); + newContainer.repaint(); + + validate(); + repaint(); } - }); + } + }); - } + } } diff --git a/src/main/resources/dependency-injections/submission-package.properties b/src/main/resources/dependency-injections/submission-package.properties index e2a495b0..f0478f30 100644 --- a/src/main/resources/dependency-injections/submission-package.properties +++ b/src/main/resources/dependency-injections/submission-package.properties @@ -4,4 +4,9 @@ ENASubmissionUI.submitSuccess=/images/submission/submit-success.png ENASubmissionUI.submitFailure=/images/submission/submit-failure.png ENASubmissionUI.created_by=/images/submission/created_by.png +ENASubmissionUI.new_sub=/images/submission/new_sub.png +ENASubmissionUI.new_sub_over=/images/submission/new_sub_over.png +ENASubmissionUI.update_sub=/images/submission/update_sub.png +ENASubmissionUI.update_sub_over=/images/submission/update_sub_over.png + ENASubmissionUI.saveISAtab=/images/validator/saveISAtab.png diff --git a/src/main/resources/images/submission/created_by.png b/src/main/resources/images/submission/created_by.png index 28f5a33707de6d2e5fbde35362ae9fb8c1aec249..da57c9dfc8a2ec988b7ee6b661bd1f5487ad0403 100644 GIT binary patch literal 6740 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 literal 7897 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 P)p%O!dTQlQtRw#eG^+CT diff --git a/src/main/resources/images/submission/new_sub.png b/src/main/resources/images/submission/new_sub.png new file mode 100644 index 0000000000000000000000000000000000000000..fb62ad5deb25844ac7ce0a4337353ad73e02b103 GIT binary patch literal 4459 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/images/submission/new_sub_over.png b/src/main/resources/images/submission/new_sub_over.png new file mode 100644 index 0000000000000000000000000000000000000000..26975c130b040a4a916efc7bda268c20b6b229e1 GIT binary patch literal 4358 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 U3|NrS{BI*|bpy3>q)qt00P3~li2wiq literal 0 HcmV?d00001 diff --git a/src/main/resources/images/submission/update_sub.png b/src/main/resources/images/submission/update_sub.png new file mode 100644 index 0000000000000000000000000000000000000000..100f81186d899e2aa312f08f89d2ba83dc031fa7 GIT binary patch literal 4409 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 literal 0 HcmV?d00001 From 3feb7974199f526408e378b7a04c9c6150c9cc37 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Fri, 29 Aug 2014 19:33:24 +0100 Subject: [PATCH 23/48] Basic structure in place. --- .../gui/submission/ENASubmissionUI.java | 86 ++++++++++++++++--- .../submission-package.properties | 3 + 2 files changed, 77 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java index 89e8729f..8c9d0660 100644 --- a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java @@ -31,7 +31,8 @@ public class ENASubmissionUI extends JFrame { @InjectedResource - private ImageIcon saveISAtab, submitIcon, created_by, new_sub, new_sub_over, update_sub, update_sub_over; + private ImageIcon saveISAtab, submitIcon, created_by, new_sub, new_sub_over, update_sub, update_sub_over, + box_icon, metadata_icon; public static final float DESIRED_OPACITY = .98f; @@ -49,8 +50,6 @@ public ENASubmissionUI() { public void createGUI() { setTitle("Submit to ENA"); setUndecorated(true); - - setBackground(UIHelper.BG_COLOR); if (GraphicsUtils.isWindowTransparencySupported()) { @@ -64,7 +63,6 @@ public void createGUI() { ((JComponent) getContentPane()).setBorder(new EtchedBorder(UIHelper.LIGHT_GREEN_COLOR, UIHelper.LIGHT_GREEN_COLOR)); - swappableContainer = new JPanel(); swappableContainer.add(createMenu()); swappableContainer.setBorder(new EmptyBorder(1, 1, 1, 1)); @@ -79,8 +77,7 @@ public void createGUI() { public Container createMenu() { Box container = Box.createVerticalBox(); - container.add(UIHelper.wrapComponentInPanel(new JLabel(submitIcon))); - container.add(Box.createVerticalStrut(20)); + addHeaderImageToContainer(container); newSubmission = new JLabel(new_sub); @@ -101,8 +98,7 @@ public void mouseExited(MouseEvent mouseEvent) { public void mouseReleased(MouseEvent mouseEvent) { super.mouseReleased(mouseEvent); newSubmission.setIcon(new_sub); - System.out.println("Going to create new"); - submit(); + swapContainers(createMetadataEntryUI()); } }); @@ -124,7 +120,7 @@ public void mouseExited(MouseEvent mouseEvent) { public void mouseReleased(MouseEvent mouseEvent) { super.mouseReleased(mouseEvent); updateSubmission.setIcon(update_sub); - System.out.println("Going to update"); + submit(); } }); @@ -145,8 +141,62 @@ public void mouseReleased(MouseEvent mouseEvent) { } + private Container createMetadataEntryUI() { + Box metadataEntryContainer = Box.createVerticalBox(); + + addHeaderImageToContainer(metadataEntryContainer); + + Box leftAndRightSections = Box.createHorizontalBox(); + + Box userLoginSection = createUserLoginSection(); + leftAndRightSections.add(userLoginSection); + + Box metadataSection = createMetadataSection(); + leftAndRightSections.add(metadataSection); + + metadataEntryContainer.add(leftAndRightSections); + + Box buttonContainer = Box.createHorizontalBox(); + FlatButton backButton = new FlatButton(ButtonType.RED, "Back"); + FlatButton nextButton = new FlatButton(ButtonType.GREEN, "Next"); + nextButton.addMouseListener(new CommonMouseAdapter() { + @Override + public void mousePressed(MouseEvent mouseEvent) { + super.mousePressed(mouseEvent); + submit(); + } + }); - public void submit() { + buttonContainer.add(backButton); + buttonContainer.add(Box.createHorizontalGlue()); + buttonContainer.add(nextButton); + + + metadataEntryContainer.add(Box.createVerticalStrut(150)); + metadataEntryContainer.add(buttonContainer); + + return metadataEntryContainer; + } + + private Box createMetadataSection() { + Box metadataSection = Box.createVerticalBox(); + metadataSection.setSize(350, 190); + JLabel metadataDetails = new JLabel("Additional Metadata", metadata_icon, JLabel.LEFT); + UIHelper.renderComponent(metadataDetails, UIHelper.VER_11_BOLD, UIHelper.EMERALD, false); + metadataSection.add(metadataDetails); + return metadataSection; + } + + private Box createUserLoginSection() { + Box userLoginSection = Box.createVerticalBox(); + JLabel enaBoxDetails = new JLabel("ENA Dropbox Credentials", box_icon, JLabel.LEFT); + UIHelper.renderComponent(enaBoxDetails, UIHelper.VER_11_BOLD, UIHelper.EMERALD, false); + userLoginSection.add(enaBoxDetails); + return userLoginSection; + } + + + private void submit() { Thread performer = new Thread(new Runnable() { @@ -167,8 +217,9 @@ public void run() { ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); - Container submitInfo = UIHelper.padComponentVerticalBox(100, new JLabel(submitENAAnimation)); - swapContainers(submitInfo); + Box submitProgressContainer = createSubmitProgressContainer(); + + swapContainers(submitProgressContainer); } @@ -179,6 +230,17 @@ public void run() { } + private Box createSubmitProgressContainer() { + Box submitProgressContainer = Box.createVerticalBox(); + submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submitENAAnimation))); + return submitProgressContainer; + } + + private void addHeaderImageToContainer(Box submitProgressContainer) { + submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submitIcon))); + submitProgressContainer.add(Box.createVerticalStrut(20)); + } + private void swapContainers(final Container newContainer) { SwingUtilities.invokeLater(new Runnable() { diff --git a/src/main/resources/dependency-injections/submission-package.properties b/src/main/resources/dependency-injections/submission-package.properties index f0478f30..a293e604 100644 --- a/src/main/resources/dependency-injections/submission-package.properties +++ b/src/main/resources/dependency-injections/submission-package.properties @@ -9,4 +9,7 @@ ENASubmissionUI.new_sub_over=/images/submission/new_sub_over.png ENASubmissionUI.update_sub=/images/submission/update_sub.png ENASubmissionUI.update_sub_over=/images/submission/update_sub_over.png +ENASubmissionUI.box_icon=/images/submission/box.png +ENASubmissionUI.metadata_icon=/images/submission/metadata.png + ENASubmissionUI.saveISAtab=/images/validator/saveISAtab.png From 0c1fb26b011d225b7811f963eaf188e5153c2311 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Sat, 30 Aug 2014 13:34:54 +0100 Subject: [PATCH 24/48] Show interface in centre of screen on start. --- .../isatools/isacreator/gui/ISAcreator.java | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java index 7f5e3706..6b1d8132 100755 --- a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java +++ b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java @@ -202,9 +202,7 @@ public void createGUI(String configDir, String username, char[] password, final isacreatorMenu = new ISAcreatorMenu(username, password, configDir, isatabDir, authentication, authMenuClassName, panelToShow, loggedIn, errors); } - setCurrentPage(isacreatorMenu); - pack(); - setVisible(true); + showInterface(); } @@ -237,8 +235,13 @@ public void createGUI(String configDir, String username, char[] password, final isacreatorMenu = new ISAcreatorMenu(username, null, configDir, isatabDir, authentication, authMenuClassName, panelToShow, loggedIn); } + showInterface(); + } + + private void showInterface() { setCurrentPage(isacreatorMenu); pack(); + setLocationRelativeTo(null); setVisible(true); } @@ -251,9 +254,7 @@ public void createGUI() { } else { isacreatorMenu = new ISAcreatorMenu(ISAcreatorMenu.SHOW_LOGIN); } - setCurrentPage(isacreatorMenu); - pack(); - setVisible(true); + showInterface(); } @@ -1246,12 +1247,5 @@ public JMenu getPluginMenu() { return pluginMenu; } - public static void main(String[] args) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - ISAcreator main = new ISAcreator(Mode.NORMAL_MODE, null); - main.createGUI(); - } - }); - } + } From 11198beb7b8ea969910becea2bcebd6e9940bb47 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Sun, 31 Aug 2014 11:50:04 +0100 Subject: [PATCH 25/48] Data entry interface is now there. --- .../isatools/isacreator/common/UIHelper.java | 2 +- .../isacreator/common/button/ButtonType.java | 1 + .../isatools/isacreator/gui/ISAcreator.java | 2 +- .../gui/submission/ENASubmissionUI.java | 133 +++++++++++++++--- 4 files changed, 118 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/common/UIHelper.java b/src/main/java/org/isatools/isacreator/common/UIHelper.java index 6b202687..ccea3af6 100644 --- a/src/main/java/org/isatools/isacreator/common/UIHelper.java +++ b/src/main/java/org/isatools/isacreator/common/UIHelper.java @@ -97,7 +97,7 @@ public class UIHelper { public static final RoundedBorder GREY_ROUNDED_BORDER = new RoundedBorder(UIHelper.GREY_COLOR, 2); public static final RoundedBorder DARK_GREEN_ROUNDED_BORDER = new RoundedBorder(UIHelper.DARK_GREEN_COLOR, 2); - public static final Color VERY_LIGHT_GREY_COLOR = new Color(250, 252, 250); + public static final Color VERY_LIGHT_GREY_COLOR = new Color(236, 240, 241); // diff --git a/src/main/java/org/isatools/isacreator/common/button/ButtonType.java b/src/main/java/org/isatools/isacreator/common/button/ButtonType.java index 3aa123bf..aa31b7ed 100644 --- a/src/main/java/org/isatools/isacreator/common/button/ButtonType.java +++ b/src/main/java/org/isatools/isacreator/common/button/ButtonType.java @@ -10,6 +10,7 @@ public enum ButtonType { BLUE(UIHelper.PETER_RIVER, UIHelper.BELIZE_HOLE), GREEN(UIHelper.LIGHT_GREEN_COLOR, UIHelper.DARK_GREEN_COLOR), + EMERALD(UIHelper.EMERALD, UIHelper.NEPHRITIS), RED(UIHelper.POMEGRANATE, UIHelper.ALIZARIN), GREY(new Color(236,240,241), new Color(230,230,230)), ORANGE(UIHelper.CARROT, UIHelper.PUMPKIN); diff --git a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java index 6b1d8132..7f2b66f0 100755 --- a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java +++ b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java @@ -485,7 +485,7 @@ public void actionPerformed(ActionEvent actionEvent) { submitENA.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { - ENASubmissionUI submitUI = new ENASubmissionUI(); + ENASubmissionUI submitUI = ENASubmissionUI.createENASubmissionUI(); submitUI.createGUI(); submitUI.setLocationRelativeTo(ISAcreator.this); submitUI.setAlwaysOnTop(true); diff --git a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java index 8c9d0660..6993724b 100644 --- a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java @@ -6,10 +6,9 @@ import org.isatools.isacreator.common.UIHelper; import org.isatools.isacreator.common.button.ButtonType; import org.isatools.isacreator.common.button.FlatButton; -import org.isatools.isacreator.effects.FooterPanel; import org.isatools.isacreator.effects.GraphicsUtils; import org.isatools.isacreator.effects.HUDTitleBar; -import org.isatools.isacreator.gui.ISAcreator; +import org.isatools.isacreator.launch.ISAcreatorGUIProperties; import org.isatools.isacreator.managers.ApplicationManager; import org.isatools.isacreator.settings.ISAcreatorProperties; import org.isatools.isatab.isaconfigurator.ISAConfigurationSet; @@ -20,8 +19,6 @@ import javax.swing.border.EmptyBorder; import javax.swing.border.EtchedBorder; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.io.File; @@ -41,9 +38,16 @@ public class ENASubmissionUI extends JFrame { private JLabel newSubmission, updateSubmission; + private JTextField username, centerName, labName, brokerName; + private JPasswordField password; + protected static ImageIcon submitENAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/submission/submitting.gif")); - public ENASubmissionUI() { + public static ENASubmissionUI createENASubmissionUI() { + return new ENASubmissionUI(); + } + + private ENASubmissionUI() { ResourceInjector.get("submission-package.style").inject(this); } @@ -144,6 +148,7 @@ public void mouseReleased(MouseEvent mouseEvent) { private Container createMetadataEntryUI() { Box metadataEntryContainer = Box.createVerticalBox(); + addHeaderImageToContainer(metadataEntryContainer); Box leftAndRightSections = Box.createHorizontalBox(); @@ -151,6 +156,7 @@ private Container createMetadataEntryUI() { Box userLoginSection = createUserLoginSection(); leftAndRightSections.add(userLoginSection); + leftAndRightSections.add(Box.createHorizontalStrut(10)); Box metadataSection = createMetadataSection(); leftAndRightSections.add(metadataSection); @@ -158,7 +164,7 @@ private Container createMetadataEntryUI() { Box buttonContainer = Box.createHorizontalBox(); FlatButton backButton = new FlatButton(ButtonType.RED, "Back"); - FlatButton nextButton = new FlatButton(ButtonType.GREEN, "Next"); + FlatButton nextButton = new FlatButton(ButtonType.EMERALD, "Next"); nextButton.addMouseListener(new CommonMouseAdapter() { @Override public void mousePressed(MouseEvent mouseEvent) { @@ -172,27 +178,113 @@ public void mousePressed(MouseEvent mouseEvent) { buttonContainer.add(nextButton); - metadataEntryContainer.add(Box.createVerticalStrut(150)); + metadataEntryContainer.add(Box.createVerticalStrut(70)); metadataEntryContainer.add(buttonContainer); return metadataEntryContainer; } + private Box createUserLoginSection() { + Box userLoginSection = Box.createVerticalBox(); + + JLabel enaBoxDetails = new JLabel("ENA Dropbox Credentials", box_icon, JLabel.LEFT); + enaBoxDetails.setHorizontalAlignment(SwingConstants.LEFT); + UIHelper.renderComponent(enaBoxDetails, UIHelper.VER_12_BOLD, UIHelper.EMERALD, false); + userLoginSection.add(UIHelper.wrapComponentInPanel(enaBoxDetails)); + + userLoginSection.add(createMetadataFieldContainer(username, "Username")); + userLoginSection.add(Box.createVerticalStrut(5)); + userLoginSection.add(createMetadataFieldContainer(password, "Password", 1, 10)); + userLoginSection.add(Box.createVerticalStrut(55)); + + JLabel info = UIHelper.createLabel("Don’t have an account? Create one...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); + userLoginSection.add(UIHelper.wrapComponentInPanel(info)); + + return userLoginSection; + } + private Box createMetadataSection() { Box metadataSection = Box.createVerticalBox(); - metadataSection.setSize(350, 190); + JLabel metadataDetails = new JLabel("Additional Metadata", metadata_icon, JLabel.LEFT); - UIHelper.renderComponent(metadataDetails, UIHelper.VER_11_BOLD, UIHelper.EMERALD, false); - metadataSection.add(metadataDetails); + UIHelper.renderComponent(metadataDetails, UIHelper.VER_12_BOLD, UIHelper.EMERALD, false); + metadataSection.add(UIHelper.wrapComponentInPanel(metadataDetails)); + + + metadataSection.add(createMetadataFieldContainer(centerName, "SRA Centre Name")); + metadataSection.add(Box.createVerticalStrut(5)); + metadataSection.add(createMetadataFieldContainer(brokerName, "Broker Name", 0, 35)); + metadataSection.add(Box.createVerticalStrut(5)); + metadataSection.add(createMetadataFieldContainer(labName, "SRA Lab Name", 0, 30)); + metadataSection.add(Box.createVerticalStrut(20)); + + JLabel info = UIHelper.createLabel("Read more about ENA Submission Requirements...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); + metadataSection.add(UIHelper.wrapComponentInPanel(info)); + + return metadataSection; } - private Box createUserLoginSection() { - Box userLoginSection = Box.createVerticalBox(); - JLabel enaBoxDetails = new JLabel("ENA Dropbox Credentials", box_icon, JLabel.LEFT); - UIHelper.renderComponent(enaBoxDetails, UIHelper.VER_11_BOLD, UIHelper.EMERALD, false); - userLoginSection.add(enaBoxDetails); - return userLoginSection; + private Container createMetadataFieldContainer(JTextField field, String fieldName) { + return createMetadataFieldContainer(field, fieldName, 0, 10); + } + + /** + * @param field - Field to be created and added + * @param fieldName - Name to be given to the field + * @param type - 0 for JTextField, 1 for JPasswordField + * @return a container with the field and it's label in a grey box. + */ + private Container createMetadataFieldContainer(JTextField field, String fieldName, int type, int padding) { + + + if (type == 1) { + field = new JPasswordField(); + } else { + field = new JTextField(fieldName); + } + + field.setSize(new Dimension(200, 25)); + field.setOpaque(true); + + UIHelper.renderComponent(field, UIHelper.VER_10_PLAIN, UIHelper.EMERALD, UIHelper.VERY_LIGHT_GREY_COLOR); + + field.setBorder(null); + + Box fieldContainer = createFieldDetailWrapper(null, fieldName, padding); + fieldContainer.add(field); + + return fieldContainer; + } + + + + private Box createFieldDetailWrapper(ImageIcon image_icon, String text, int padding) { + Box fieldContainer = Box.createHorizontalBox(); + fieldContainer.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR); + fieldContainer.setBorder(BorderFactory.createLineBorder(UIHelper.VERY_LIGHT_GREY_COLOR, 8)); + + if (image_icon != null) { + JLabel icon = new JLabel(image_icon); + icon.setOpaque(true); + icon.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR); + fieldContainer.add(icon); + + } + + if (text != null) { + JLabel label = UIHelper.createLabel(text, UIHelper.VER_10_BOLD, new Color(127, 140, 141)); + label.setOpaque(true); + label.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR); + fieldContainer.add(UIHelper.wrapComponentInPanel(label)); + } + + Component space = Box.createHorizontalStrut(padding); + ((JComponent) space).setOpaque(true); + space.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR); + + fieldContainer.add(space); + return fieldContainer; } @@ -221,8 +313,6 @@ public void run() { swapContainers(submitProgressContainer); } - - } }); @@ -263,4 +353,11 @@ public void run() { } + public static void main(String[] args) { + ISAcreatorGUIProperties.setProperties(); + ENASubmissionUI ui = createENASubmissionUI(); + ui.createGUI(); + ui.setVisible(true); + } + } From e297ae7bf605d71938eee3b73ffa831fc3e4dd7c Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Sun, 31 Aug 2014 13:23:24 +0100 Subject: [PATCH 26/48] Hooked up to the submission code. But, I keep getting a 406 error. --- pom.xml | 17 ++--- .../gui/submission/ENASubmissionUI.java | 72 +++++++++--------- .../images/submission/email_icon.png | Bin 0 -> 374 bytes .../resources/images/submission/metadata.png | Bin 535 -> 471 bytes .../images/submission/password_icon.png | Bin 0 -> 318 bytes 5 files changed, 43 insertions(+), 46 deletions(-) create mode 100644 src/main/resources/images/submission/email_icon.png create mode 100644 src/main/resources/images/submission/password_icon.png diff --git a/pom.xml b/pom.xml index 254975e7..ca3014c9 100644 --- a/pom.xml +++ b/pom.xml @@ -428,17 +428,6 @@ ISAtabErrorReporter - - org.slf4j - slf4j-api - - - - org.slf4j - slf4j-log4j12 - - - @@ -530,6 +519,12 @@ 1.11 + + com.sun.jersey.contribs + jersey-multipart + 1.18 + + com.sun.jersey jersey-json diff --git a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java index 6993724b..b935fa6d 100644 --- a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java @@ -11,6 +11,8 @@ import org.isatools.isacreator.launch.ISAcreatorGUIProperties; import org.isatools.isacreator.managers.ApplicationManager; import org.isatools.isacreator.settings.ISAcreatorProperties; +import org.isatools.isatab.export.sra.submission.ENARestServer; +import org.isatools.isatab.export.sra.submission.SRASubmitter; import org.isatools.isatab.isaconfigurator.ISAConfigurationSet; import org.jdesktop.fuse.InjectedResource; import org.jdesktop.fuse.ResourceInjector; @@ -35,6 +37,7 @@ public class ENASubmissionUI extends JFrame { private static Logger log = Logger.getLogger(ENASubmissionUI.class.getName()); private JPanel swappableContainer; + private Container metadataPanel; private JLabel newSubmission, updateSubmission; @@ -146,10 +149,9 @@ public void mouseReleased(MouseEvent mouseEvent) { private Container createMetadataEntryUI() { - Box metadataEntryContainer = Box.createVerticalBox(); + metadataPanel = Box.createVerticalBox(); - - addHeaderImageToContainer(metadataEntryContainer); + addHeaderImageToContainer(metadataPanel); Box leftAndRightSections = Box.createHorizontalBox(); @@ -160,7 +162,7 @@ private Container createMetadataEntryUI() { Box metadataSection = createMetadataSection(); leftAndRightSections.add(metadataSection); - metadataEntryContainer.add(leftAndRightSections); + metadataPanel.add(leftAndRightSections); Box buttonContainer = Box.createHorizontalBox(); FlatButton backButton = new FlatButton(ButtonType.RED, "Back"); @@ -178,10 +180,10 @@ public void mousePressed(MouseEvent mouseEvent) { buttonContainer.add(nextButton); - metadataEntryContainer.add(Box.createVerticalStrut(70)); - metadataEntryContainer.add(buttonContainer); + metadataPanel.add(Box.createVerticalStrut(70)); + metadataPanel.add(buttonContainer); - return metadataEntryContainer; + return metadataPanel; } private Box createUserLoginSection() { @@ -192,6 +194,10 @@ private Box createUserLoginSection() { UIHelper.renderComponent(enaBoxDetails, UIHelper.VER_12_BOLD, UIHelper.EMERALD, false); userLoginSection.add(UIHelper.wrapComponentInPanel(enaBoxDetails)); + + username = new JTextField("Username"); + password = new JPasswordField(""); + userLoginSection.add(createMetadataFieldContainer(username, "Username")); userLoginSection.add(Box.createVerticalStrut(5)); userLoginSection.add(createMetadataFieldContainer(password, "Password", 1, 10)); @@ -210,18 +216,21 @@ private Box createMetadataSection() { UIHelper.renderComponent(metadataDetails, UIHelper.VER_12_BOLD, UIHelper.EMERALD, false); metadataSection.add(UIHelper.wrapComponentInPanel(metadataDetails)); - + centerName = new JTextField("SRA Centre Name"); metadataSection.add(createMetadataFieldContainer(centerName, "SRA Centre Name")); metadataSection.add(Box.createVerticalStrut(5)); + + brokerName = new JTextField("Broker Name"); metadataSection.add(createMetadataFieldContainer(brokerName, "Broker Name", 0, 35)); metadataSection.add(Box.createVerticalStrut(5)); + + labName = new JTextField("SRA Lab Name"); metadataSection.add(createMetadataFieldContainer(labName, "SRA Lab Name", 0, 30)); metadataSection.add(Box.createVerticalStrut(20)); JLabel info = UIHelper.createLabel("Read more about ENA Submission Requirements...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); metadataSection.add(UIHelper.wrapComponentInPanel(info)); - return metadataSection; } @@ -237,13 +246,6 @@ private Container createMetadataFieldContainer(JTextField field, String fieldNam */ private Container createMetadataFieldContainer(JTextField field, String fieldName, int type, int padding) { - - if (type == 1) { - field = new JPasswordField(); - } else { - field = new JTextField(fieldName); - } - field.setSize(new Dimension(200, 25)); field.setOpaque(true); @@ -257,8 +259,6 @@ private Container createMetadataFieldContainer(JTextField field, String fieldNam return fieldContainer; } - - private Box createFieldDetailWrapper(ImageIcon image_icon, String text, int padding) { Box fieldContainer = Box.createHorizontalBox(); fieldContainer.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR); @@ -295,38 +295,40 @@ private void submit() { public void run() { log.info("Current ISA-Tab is: " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); - if (!new File(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)).exists()) { - log.warn("Current ISA Tab file doesn't exist in the file system..."); - Container saveISAtabContainer = UIHelper.padComponentVerticalBox(70, new JLabel(saveISAtab)); - swapContainers(saveISAtabContainer); - } else { - log.info("Saving current ISAtab file"); - ApplicationManager.getCurrentApplicationInstance().saveISATab(); - log.info("ISAtab file saved"); + Box submitProgressContainer = createSubmitProgressContainer(); + swapContainers(submitProgressContainer); - System.out.println("Setting config path before validation to " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); + log.info("Saving current ISAtab file"); + log.info("ISAtab file saved"); - ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); + SRASubmitter submitter = new SRASubmitter(); - Box submitProgressContainer = createSubmitProgressContainer(); + System.out.println(ENARestServer.TEST); + System.out.println(username.getText()); + System.out.println(new String(password.getPassword())); + String status= submitter.submit(ENARestServer.PROD, username.getText(), new String(password.getPassword()), "/Users/eamonnmaguire/git/isarepo/ISAvalidator-ISAconverter-BIImanager/import_layer/target/export/sra/BPA-Wheat-Cultivars/"); + + System.out.println(status); + System.out.println("Setting config path before validation to " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); + + ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); + + swapContainers(metadataPanel); - swapContainers(submitProgressContainer); - } } }); - performer.start(); - } private Box createSubmitProgressContainer() { Box submitProgressContainer = Box.createVerticalBox(); + submitProgressContainer.add(Box.createVerticalStrut(40)); submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submitENAAnimation))); return submitProgressContainer; } - private void addHeaderImageToContainer(Box submitProgressContainer) { + private void addHeaderImageToContainer(Container submitProgressContainer) { submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submitIcon))); submitProgressContainer.add(Box.createVerticalStrut(20)); } @@ -360,4 +362,4 @@ public static void main(String[] args) { ui.setVisible(true); } -} +} \ No newline at end of file diff --git a/src/main/resources/images/submission/email_icon.png b/src/main/resources/images/submission/email_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..552c0ae55baa8d43c95873023875ea6f68e20b0b GIT binary patch literal 374 zcmV-+0g3*JP) z7{L+h0>uUF2zCS6pxvNu(2n2;J(6p3HKH7R_|umVF?jF6-Sfz@KX$;uw_v)ifX5w% zOyD13RHkXBrNw+DuqVQg2;mdPJ08syFUZ{Oy!M@7A!EIV=LaI-1Wr)75&*H>5SCaf zg>kD05wEaz5;vec!isog#JDtZNcESZ0}rG{KayWk_h08_OV07*qoM6N<$f-GK~761SM literal 0 HcmV?d00001 diff --git a/src/main/resources/images/submission/metadata.png b/src/main/resources/images/submission/metadata.png index 3f390969302653736e22af2779761ae91bdaa10f..51bfd84032c1169c5db36af0658458f7710c82fb 100644 GIT binary patch delta 408 zcmV;J0cZY~1lI$QNq>1sL_t(|+U%I&4T3Nbh0!p8Zr}*GfsEh=FoG-q6JVSG+<*;q z1KmJJ=mvUCj-(-oNZ+YH?j=o;NcmoS*Omr>N~Kb%R4SF~FEsn)&qZ0DCcfubWLf=d z_=m^4QnZ2j7e~1w^9i!SaN=`k>cx2EXjN1tj)4F*0^&VSpnoYdhVGH9NYjVVY95EYHJrSE*5A__l@KDH6GmHGggU)b<7qA4?h-N^oy@j$si49Op^TDB}`V!T^I;oxQ(-CT!1M#(r5v zK1uunyoS#~1D6DlNq@OXL_t(|+U%HtO~Wt{MMIPUIzrf>Y|u;qnE*Ng&;LgJAp z$TeL$i5W~tjVq@XsHe6g*q0##G&V!6fgAvCL0%om380e7!`u<`96)kf052)He`huPI8 zvLdjm&>8TK_31;}z+7+^Ji-76oDI)0zy*iE&oO`ihf%>#F@OSx!p9gug2Um@7&yIQ zZBgJN@FNDYk@J4Xd5#EtgaJ0V=tn1al&FJ)mHk~Kz*Q=hO7;KsDZl_V9t^jlq;_Ed O0000P)F4h02oQt(9qW>0Hg|l zI39=LKwl>SsrevFfxb*c5(kNa zc`&sT~-n22fx112Ks0h(+0cAie;N zf)BvZxInSxK#TjKS&LKv%6f(P6tECsNCDJG8%a!<1y~X$$(Dn_MxZYmNXU{5(C8Vw z32x+CPHddVL*tQH5Kk@38=)0PJ&7J`q*fuL0IfcW1rLC^ Date: Sun, 31 Aug 2014 13:44:43 +0100 Subject: [PATCH 27/48] Added in error and success screens. --- .../gui/submission/ENASubmissionUI.java | 57 ++++++++++++++++-- .../submission-package.properties | 3 + .../images/submission/submission_complete.png | Bin 0 -> 5168 bytes .../images/submission/submission_failed.png | Bin 0 -> 5261 bytes 4 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/images/submission/submission_complete.png create mode 100644 src/main/resources/images/submission/submission_failed.png diff --git a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java index b935fa6d..d5d373ee 100644 --- a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java @@ -31,7 +31,7 @@ public class ENASubmissionUI extends JFrame { @InjectedResource private ImageIcon saveISAtab, submitIcon, created_by, new_sub, new_sub_over, update_sub, update_sub_over, - box_icon, metadata_icon; + box_icon, metadata_icon, submission_complete, submission_failed; public static final float DESIRED_OPACITY = .98f; @@ -302,19 +302,24 @@ public void run() { log.info("Saving current ISAtab file"); log.info("ISAtab file saved"); + // TODO: convert + ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); + SRASubmitter submitter = new SRASubmitter(); System.out.println(ENARestServer.TEST); System.out.println(username.getText()); System.out.println(new String(password.getPassword())); - String status= submitter.submit(ENARestServer.PROD, username.getText(), new String(password.getPassword()), "/Users/eamonnmaguire/git/isarepo/ISAvalidator-ISAconverter-BIImanager/import_layer/target/export/sra/BPA-Wheat-Cultivars/"); + String status = submitter.submit(ENARestServer.PROD, username.getText(), new String(password.getPassword()), "/Users/eamonnmaguire/git/isarepo/ISAvalidator-ISAconverter-BIImanager/import_layer/target/export/sra/BPA-Wheat-Cultivars/"); + if (status == null) { + swapContainers(createSubmitFailed()); + } else { + swapContainers(createSubmitComplete()); + } System.out.println(status); System.out.println("Setting config path before validation to " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); - ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); - - swapContainers(metadataPanel); } }); @@ -328,6 +333,48 @@ private Box createSubmitProgressContainer() { return submitProgressContainer; } + private Box createSubmitComplete() { + Box submitProgressContainer = Box.createVerticalBox(); + submitProgressContainer.add(Box.createVerticalStrut(120)); + submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_complete))); + + FlatButton nextButton = new FlatButton(ButtonType.RED, "Close"); + nextButton.addMouseListener(new CommonMouseAdapter() { + @Override + public void mousePressed(MouseEvent mouseEvent) { + super.mousePressed(mouseEvent); + setVisible(false); + ENASubmissionUI.this.dispose(); + } + }); + + submitProgressContainer.add(Box.createVerticalStrut(80)); + submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton)); + + return submitProgressContainer; + } + + private Box createSubmitFailed() { + Box submitProgressContainer = Box.createVerticalBox(); + submitProgressContainer.add(Box.createVerticalStrut(120)); + submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_failed))); + +// SUBMIT ANOTHER, OR BACK + FlatButton nextButton = new FlatButton(ButtonType.RED, "Back to Submission Screen"); + nextButton.addMouseListener(new CommonMouseAdapter() { + @Override + public void mousePressed(MouseEvent mouseEvent) { + super.mousePressed(mouseEvent); + swapContainers(metadataPanel); + } + }); + + submitProgressContainer.add(Box.createVerticalStrut(80)); + submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton)); + + return submitProgressContainer; + } + private void addHeaderImageToContainer(Container submitProgressContainer) { submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submitIcon))); submitProgressContainer.add(Box.createVerticalStrut(20)); diff --git a/src/main/resources/dependency-injections/submission-package.properties b/src/main/resources/dependency-injections/submission-package.properties index a293e604..b3d61e33 100644 --- a/src/main/resources/dependency-injections/submission-package.properties +++ b/src/main/resources/dependency-injections/submission-package.properties @@ -12,4 +12,7 @@ ENASubmissionUI.update_sub_over=/images/submission/update_sub_over.png ENASubmissionUI.box_icon=/images/submission/box.png ENASubmissionUI.metadata_icon=/images/submission/metadata.png +ENASubmissionUI.submission_complete=/images/submission/submission_complete.png +ENASubmissionUI.submission_failed=/images/submission/submission_failed.png + ENASubmissionUI.saveISAtab=/images/validator/saveISAtab.png diff --git a/src/main/resources/images/submission/submission_complete.png b/src/main/resources/images/submission/submission_complete.png new file mode 100644 index 0000000000000000000000000000000000000000..5e539d1c34ecb63c33ba7e65e7147daace1c821e GIT binary patch literal 5168 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 Date: Mon, 1 Sep 2014 10:53:46 +0100 Subject: [PATCH 28/48] Updated investigation file --- .../resources/test-data/BII-I-1/i_investigation.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/test/resources/test-data/BII-I-1/i_investigation.txt b/src/test/resources/test-data/BII-I-1/i_investigation.txt index ee89acf3..463faf37 100644 --- a/src/test/resources/test-data/BII-I-1/i_investigation.txt +++ b/src/test/resources/test-data/BII-I-1/i_investigation.txt @@ -1,16 +1,17 @@ ONTOLOGY SOURCE REFERENCE -Term Source Name -Term Source File -Term Source Version -Term Source Description +Term Source Name "CHEBI" "CL" "OBI" "NCBITAXON" "OBI_BCGO" "PATO" "UO" +Term Source File "http://data.bioontology.org/ontologies/CHEBI" "http://data.bioontology.org/ontologies/CL" "http://data.bioontology.org/ontologies/OBI" "http://data.bioontology.org/ontologies/NCBITAXON" "http://data.bioontology.org/ontologies/OBI_BCGO" "http://data.bioontology.org/ontologies/PATO" "http://data.bioontology.org/ontologies/UO" +Term Source Version "78" "43" "21" "2" "8" "160" "42" +Term Source Description "Chemical Entities of Biological Interest Ontology" "Cell Ontology" "Ontology for Biomedical Investigations" "National Center for Biotechnology Information (NCBI) Organismal Classification" "Beta Cell Genomics Ontology" "Phenotypic Quality Ontology" "Units of Measurement Ontology" INVESTIGATION Investigation Identifier "BII-I-1" Investigation Title "Growth control of the eukaryote cell: a systems biology study in yeast" Investigation Description "Background Cell growth underlies many key cellular and developmental processes, yet a limited number of studies have been carried out on cell-growth regulation. Comprehensive studies at the transcriptional, proteomic and metabolic levels under defined controlled conditions are currently lacking. Results Metabolic control analysis is being exploited in a systems biology study of the eukaryotic cell. Using chemostat culture, we have measured the impact of changes in flux (growth rate) on the transcriptome, proteome, endometabolome and exometabolome of the yeast Saccharomyces cerevisiae. Each functional genomic level shows clear growth-rate-associated trends and discriminates between carbon-sufficient and carbon-limited conditions. Genes consistently and significantly upregulated with increasing growth rate are frequently essential and encode evolutionarily conserved proteins of known function that participate in many protein-protein interactions. In contrast, more unknown, and fewer essential, genes are downregulated with increasing growth rate; their protein products rarely interact with one another. A large proportion of yeast genes under positive growth-rate control share orthologs with other eukaryotes, including humans. Significantly, transcription of genes encoding components of the TOR complex (a major controller of eukaryotic cell growth) is not subject to growth-rate regulation. Moreover, integrative studies reveal the extent and importance of post-transcriptional control, patterns of control of metabolic fluxes at the level of enzyme synthesis, and the relevance of specific enzymatic reactions in the control of metabolic fluxes during cell growth. Conclusion This work constitutes a first comprehensive systems biology study on growth-rate control in the eukaryotic cell. The results have direct implications for advanced studies on cell growth, in vivo regulation of metabolic fluxes for comprehensive metabolic engineering, and for the design of genome-scale systems biology models of the eukaryotic cell." Investigation Submission Date "2007-04-30" Investigation Public Release Date "2009-03-10" -Comment[Created With Configuration] "" +Comment[Created with configuration] "" Comment[Last Opened With Configuration] "" +Comment[Created With Configuration] "" Comment[Owning Organisation URI] "" Comment[Consortium URI] "" Comment[Principal Investigator URI] "" From 7f46017eab1192305c737121b369db9d7884fcc8 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Mon, 1 Sep 2014 12:03:02 +0100 Subject: [PATCH 29/48] Fixes issue with the assay ontology terms being removed. Updates with ontology details from configuration. --- .../io/importisa/ISAtabImporter.java | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/io/importisa/ISAtabImporter.java b/src/main/java/org/isatools/isacreator/io/importisa/ISAtabImporter.java index bc4da980..c70e75ab 100644 --- a/src/main/java/org/isatools/isacreator/io/importisa/ISAtabImporter.java +++ b/src/main/java/org/isatools/isacreator/io/importisa/ISAtabImporter.java @@ -7,6 +7,7 @@ import org.isatools.errorreporter.model.FileType; import org.isatools.errorreporter.model.ISAFileErrorReport; import org.isatools.isacreator.configuration.MappingObject; +import org.isatools.isacreator.configuration.Ontology; import org.isatools.isacreator.gui.reference.DataEntryReferenceObject; import org.isatools.isacreator.io.importisa.errorhandling.exceptions.MalformedInvestigationException; import org.isatools.isacreator.io.importisa.investigationproperties.InvestigationFileSection; @@ -15,6 +16,8 @@ import org.isatools.isacreator.model.Investigation; import org.isatools.isacreator.model.Study; import org.isatools.isacreator.ontologymanager.OntologyManager; +import org.isatools.isacreator.ontologymanager.OntologySourceRefObject; +import org.isatools.isacreator.ontologymanager.bioportal.io.AcceptedOntologies; import org.isatools.isacreator.ontologymanager.common.OntologyTerm; import org.isatools.isacreator.settings.ISAcreatorProperties; import org.isatools.isacreator.spreadsheet.model.TableReferenceObject; @@ -23,7 +26,9 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Created Created by the ISA team @@ -207,9 +212,9 @@ protected boolean commonImportFile(String parentDir) { return false; } - System.out.println("********************\n"+OntologyManager.getURIMappingInfo()); + System.out.println("********************\n" + OntologyManager.getURIMappingInfo()); String mappingInfo = OntologyManager.getURIMappingInfoHTML(); - if (mappingInfo!=null && !mappingInfo.equals("")) + if (mappingInfo != null && !mappingInfo.equals("")) messages.add(new ErrorMessage(ErrorLevel.INFO, mappingInfo)); @@ -288,6 +293,16 @@ protected boolean processInvestigation(String parentDirectoryPath) { TableReferenceObject assayTableReferenceObject = ConfigurationManager.selectTROForUserSelection( assay.getMeasurementEndpoint(), assay.getTechnologyType()); + if (!assay.getMeasurementEndpointTermAccession().startsWith("http")) { + MappingObject mappingObject = assayTableReferenceObject.getTableFields().getMappingObject(); + assay.setMeasurementEndpointTermAccession(mappingObject.getMeasurementAccession()); + assay.setTechnologyTypeTermAccession(mappingObject.getTechnologyAccession()); + + addMissingOntologyRefsForAssayDefinition(mappingObject.getMeasurementEndpointType(), mappingObject.getMeasurementAccession(), mappingObject.getMeasurementSource()); + addMissingOntologyRefsForAssayDefinition(mappingObject.getTechnologyType(), mappingObject.getTechnologyAccession(), mappingObject.getTechnologySource()); + } + + if (assayTableReferenceObject != null) { try { @@ -335,6 +350,25 @@ protected boolean processInvestigation(String parentDirectoryPath) { return !errorsFound; } + private void addMissingOntologyRefsForAssayDefinition(String term, String termAccession, String termSource) { + + OntologySourceRefObject osro; + if ((osro = OntologyManager.getOntologySourceReferenceObjectByAbbreviation(termSource)) == null) { + String ontologyURI = AcceptedOntologies.getOntologyIdForAbbreviation(termSource); + + Ontology ontology = AcceptedOntologies.getAcceptedOntologies().get(ontologyURI); + if (ontology != null) { + osro = AcceptedOntologies.convertOntologyToOntologySourceRefObject(ontology); + OntologyManager.addOntologySource(osro); + } + } + + if (osro != null) { + OntologyManager.addToOntologyTerms(new OntologyTerm(term, termAccession, termAccession, osro)); + } + + } + protected FileType inferISAFileType(Assay assay) { String assayDescription = assay.getTechnologyType().toLowerCase() + " " + assay.getMeasurementEndpoint().toLowerCase(); From 2e04caaea69cc918d9a1ec8cf3845793c4b10e87 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Mon, 1 Sep 2014 12:04:18 +0100 Subject: [PATCH 30/48] Multiple updates for ENA submission. Fixes for ontology updates. --- .../isatools/isacreator/gui/ISAcreator.java | 2 +- .../org/isatools/isacreator/model/Assay.java | 16 ++ .../ontologymanager/OntologyManager.java | 4 + .../bioportal/io/AcceptedOntologies.java | 20 ++- .../ui/CommonValidationConversionUI.java | 142 ++++++++++++++++++ .../ui}/ENASubmissionUI.java | 95 +++++++----- .../validateconvert/ui/ValidateUI.java | 121 +-------------- 7 files changed, 240 insertions(+), 160 deletions(-) create mode 100644 src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java rename src/main/java/org/isatools/isacreator/{gui/submission => validateconvert/ui}/ENASubmissionUI.java (83%) diff --git a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java index 7f2b66f0..2d412461 100755 --- a/src/main/java/org/isatools/isacreator/gui/ISAcreator.java +++ b/src/main/java/org/isatools/isacreator/gui/ISAcreator.java @@ -50,7 +50,7 @@ ISAcreator is a component of the ISA software suite (http://www.isa-tools.org) import org.isatools.isacreator.gui.io.exportisa.OutputISAFilesFromGUI; import org.isatools.isacreator.gui.menu.ISAcreatorMenu; import org.isatools.isacreator.gui.modeselection.Mode; -import org.isatools.isacreator.gui.submission.ENASubmissionUI; +import org.isatools.isacreator.validateconvert.ui.ENASubmissionUI; import org.isatools.isacreator.io.UserProfileManager; import org.isatools.isacreator.managers.ApplicationManager; import org.isatools.isacreator.managers.ConfigurationManager; diff --git a/src/main/java/org/isatools/isacreator/model/Assay.java b/src/main/java/org/isatools/isacreator/model/Assay.java index 4058dba0..68853c8c 100755 --- a/src/main/java/org/isatools/isacreator/model/Assay.java +++ b/src/main/java/org/isatools/isacreator/model/Assay.java @@ -169,10 +169,18 @@ public String getMeasurementEndpointTermAccession(){ return getValue(MEASUREMENT_ENDPOINT_TERM_ACCESSION); } + public void setMeasurementEndpointTermAccession(String accession) { + fieldValues.put(MEASUREMENT_ENDPOINT_TERM_ACCESSION, accession); + } + public String getMeasurementEndpointTermSourceRef(){ return getValue(MEASUREMENT_ENDPOINT_TERM_SOURCE_REF); } + public void setMeasurementEndpointTermSourceRef(String sourceRef) { + fieldValues.put(MEASUREMENT_ENDPOINT_TERM_SOURCE_REF, sourceRef); + } + public String getTechnologyType() { return getValue(TECHNOLOGY_TYPE); } @@ -181,10 +189,18 @@ public String getTechnologyTypeTermAccession(){ return getValue(TECHNOLOGY_TYPE_TERM_ACCESSION); } + public void setTechnologyTypeTermAccession(String accession) { + fieldValues.put(TECHNOLOGY_TYPE_TERM_ACCESSION, accession); + } + public String getTechnologyTypeTermSourceRef(){ return getValue(TECHNOLOGY_TYPE_TERM_SOURCE_REF); } + public void setTechnologyTypeTermSourceRef(String sourceRef) { + fieldValues.put(TECHNOLOGY_TYPE_TERM_SOURCE_REF, sourceRef); + } + public TableReferenceObject getTableReferenceObject() { return tableReferenceObject; } diff --git a/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java b/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java index fb4152d3..163ab1c0 100644 --- a/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java +++ b/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java @@ -210,6 +210,10 @@ public static void placeRecommendedOntologyInformationInRecords(Collection acceptedOntologies; // This is used to cache lookups on ontology sources, e.g. EFO to their equivalent ID in BioPortal - private static Map ontologySourceToIDCache; + private static Map ontologySourceToIDCache; static { updateAcceptedOntologies(); + + System.out.println("LOADED ONTOLOGIES..."); + for(String ontology_id : acceptedOntologies.keySet()) { + System.out.println(ontology_id); + } } public static void updateAcceptedOntologies() { @@ -72,7 +78,7 @@ public static void updateAcceptedOntologies() { * @return when 1123 is supplied, OBI will be returned */ public static String getOntologyAbbreviationFromId(String ontologyId) { - if(acceptedOntologies.containsKey(ontologyId)) + if (acceptedOntologies.containsKey(ontologyId)) return acceptedOntologies.get(ontologyId).getOntologyAbbreviation(); return null; } @@ -95,9 +101,9 @@ public static Map getOntologySourceToVersion() { } public static String getOntologyIdForAbbreviation(String abbreviation) { - if(ontologySourceToIDCache.containsKey(abbreviation)) return ontologySourceToIDCache.get(abbreviation); - for(Ontology ontology : acceptedOntologies.values()) { - if(ontology.getOntologyAbbreviation().equals(abbreviation)) { + if (ontologySourceToIDCache.containsKey(abbreviation)) return ontologySourceToIDCache.get(abbreviation); + for (Ontology ontology : acceptedOntologies.values()) { + if (ontology.getOntologyAbbreviation().equals(abbreviation)) { ontologySourceToIDCache.put(abbreviation, ontology.getOntologyID()); return ontology.getOntologyID(); } @@ -124,7 +130,9 @@ public static String getAllowedOntologyAcronyms(Set toIgnore) { return allowedOntologies.toString(); } - + public static OntologySourceRefObject convertOntologyToOntologySourceRefObject(Ontology ontology) { + return new OntologySourceRefObject(ontology.getOntologyAbbreviation(), ontology.getOntologyID(), ontology.getOntologyVersion(), ontology.getOntologyDisplayLabel()); + } public static Map getAcceptedOntologies() { return acceptedOntologies; diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java new file mode 100644 index 00000000..1f6d6f02 --- /dev/null +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java @@ -0,0 +1,142 @@ +package org.isatools.isacreator.validateconvert.ui; + +import org.apache.log4j.Level; +import org.apache.log4j.spi.LoggingEvent; +import org.isatools.errorreporter.model.*; +import org.isatools.errorreporter.ui.ErrorReporterView; +import org.isatools.isacreator.common.UIHelper; +import org.isatools.isacreator.managers.ApplicationManager; +import org.isatools.isacreator.model.Assay; +import org.isatools.isacreator.settings.ISAcreatorProperties; +import org.isatools.isatab.gui_invokers.AllowedConversions; +import org.isatools.isatab.gui_invokers.GUIISATABConverter; +import org.isatools.isatab.gui_invokers.GUIInvokerResult; +import org.isatools.tablib.utils.BIIObjectStore; +import org.isatools.tablib.utils.logging.TabLoggingEventWrapper; +import uk.ac.ebi.utils.collections.Pair; + +import javax.swing.*; +import java.awt.*; +import java.util.*; +import java.util.List; + +/** + * User: eamonnmaguire + * Date: 01/09/2014 + * Time: 10:54 + * To change this template use File | Settings | File Templates. + */ + +public class CommonValidationConversionUI extends JFrame { + + private ImageIcon conversionSuccess = new ImageIcon("/images/validator/conversion_successful.png"); + private ImageIcon validationSuccess = new ImageIcon("/images/validator/validation_successful.png"); + public JPanel swappableContainer; + + public void swapContainers(final Container newContainer) { + + SwingUtilities.invokeLater(new Runnable() { + public void run() { + if (newContainer != null) { + swappableContainer.removeAll(); + swappableContainer.add(newContainer); + swappableContainer.repaint(); + swappableContainer.validate(); + swappableContainer.updateUI(); + + newContainer.validate(); + newContainer.repaint(); + + validate(); + repaint(); + } + } + }); + + } + + public Map> getErrorMessages(List logEvents) { + Map> fileToErrors = new HashMap>(); + + for (TabLoggingEventWrapper event : logEvents) { + String fileName = ErrorUtils.extractFileInformation(event.getLogEvent()); + + if (fileName != null) { + if (event.getLogEvent().getLevel().toInt() >= Level.WARN_INT) { + if (!fileToErrors.containsKey(fileName)) { + fileToErrors.put(fileName, new ArrayList()); + } + fileToErrors.get(fileName).add(new ErrorMessage(event.getLogEvent().getLevel() == Level.WARN ? ErrorLevel.WARNING : ErrorLevel.ERROR, event.getLogEvent().getMessage().toString())); + } + } + } + return fileToErrors; + } + + public void displayValidationErrorsAndWarnings(Map> fileToErrors) { + List errors = new ArrayList(); + for (String fileName : fileToErrors.keySet()) { + + Pair assayAndType = ValidationUtils.resolveFileTypeFromFileName(fileName, + ApplicationManager.getCurrentApplicationInstance().getDataEntryEnvironment().getInvestigation()); + + errors.add(new ISAFileErrorReport(fileName, + assayAndType.fst != null ? assayAndType.fst.getTechnologyType() : "", + assayAndType.fst != null ? assayAndType.fst.getMeasurementEndpoint() : "", + assayAndType.snd, fileToErrors.get(fileName))); + } + + if (fileToErrors.size() > 0) { + ErrorReporterView view = new ErrorReporterView(errors); + view.setPreferredSize(new Dimension(750, 440)); + view.createGUI(); + view.add(UIHelper.createLabel("Validation performed using " + + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION) + ""), + BorderLayout.SOUTH); + + swapContainers(view); + } else { + Container successfulValidationContainer = UIHelper.padComponentVerticalBox(70, new JLabel(validationSuccess)); + swapContainers(successfulValidationContainer); + } + } + + public void convertISAtab(BIIObjectStore store, AllowedConversions conversion, + String isatabLocation, String outputLocation) { + + GUIISATABConverter converter = new GUIISATABConverter(); + GUIInvokerResult result = converter.convert(store, isatabLocation, outputLocation, conversion); + + if (result == GUIInvokerResult.SUCCESS) { + + Box successContainer = Box.createVerticalBox(); + + successContainer.add(Box.createVerticalStrut(50)); + successContainer.add(UIHelper.wrapComponentInPanel(new JLabel(conversionSuccess))); + + successContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("" + + "Conversion was a success." + + "

Files stored in " + outputLocation + "

" + + "", UIHelper.VER_11_PLAIN, UIHelper.DARK_GREEN_COLOR))); + + swapContainers(successContainer); + + } else { + + java.util.List messages = new ArrayList(); + + for (TabLoggingEventWrapper tlew : converter.getLog()) { + LoggingEvent le = tlew.getLogEvent(); + if (le.getLevel() == Level.ERROR) { + messages.add(new ErrorMessage(ErrorLevel.ERROR, le.getMessage().toString())); + } + } + + ConversionErrorUI errorContainer = new ConversionErrorUI(); + errorContainer.constructErrorPane(messages); + errorContainer.setPreferredSize(new Dimension(750, 440)); + + swapContainers(errorContainer); + } + } +} diff --git a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java similarity index 83% rename from src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java rename to src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index d5d373ee..85fc2137 100644 --- a/src/main/java/org/isatools/isacreator/gui/submission/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -1,7 +1,8 @@ -package org.isatools.isacreator.gui.submission; +package org.isatools.isacreator.validateconvert.ui; import com.sun.awt.AWTUtilities; import org.apache.log4j.Logger; +import org.isatools.errorreporter.model.ErrorMessage; import org.isatools.isacreator.common.CommonMouseAdapter; import org.isatools.isacreator.common.UIHelper; import org.isatools.isacreator.common.button.ButtonType; @@ -9,10 +10,12 @@ import org.isatools.isacreator.effects.GraphicsUtils; import org.isatools.isacreator.effects.HUDTitleBar; import org.isatools.isacreator.launch.ISAcreatorGUIProperties; -import org.isatools.isacreator.managers.ApplicationManager; import org.isatools.isacreator.settings.ISAcreatorProperties; import org.isatools.isatab.export.sra.submission.ENARestServer; import org.isatools.isatab.export.sra.submission.SRASubmitter; +import org.isatools.isatab.gui_invokers.AllowedConversions; +import org.isatools.isatab.gui_invokers.GUIISATABValidator; +import org.isatools.isatab.gui_invokers.GUIInvokerResult; import org.isatools.isatab.isaconfigurator.ISAConfigurationSet; import org.jdesktop.fuse.InjectedResource; import org.jdesktop.fuse.ResourceInjector; @@ -22,21 +25,21 @@ import javax.swing.border.EtchedBorder; import java.awt.*; import java.awt.event.MouseEvent; -import java.io.File; +import java.util.*; +import java.util.List; /** * User intereface for ENA submission. */ -public class ENASubmissionUI extends JFrame { +public class ENASubmissionUI extends CommonValidationConversionUI { @InjectedResource - private ImageIcon saveISAtab, submitIcon, created_by, new_sub, new_sub_over, update_sub, update_sub_over, + private ImageIcon submitIcon, created_by, new_sub, new_sub_over, update_sub, update_sub_over, box_icon, metadata_icon, submission_complete, submission_failed; public static final float DESIRED_OPACITY = .98f; private static Logger log = Logger.getLogger(ENASubmissionUI.class.getName()); - private JPanel swappableContainer; private Container metadataPanel; private JLabel newSubmission, updateSubmission; @@ -45,13 +48,14 @@ public class ENASubmissionUI extends JFrame { private JPasswordField password; protected static ImageIcon submitENAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/submission/submitting.gif")); + protected static ImageIcon convertISAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/validator/converting.gif")); public static ENASubmissionUI createENASubmissionUI() { return new ENASubmissionUI(); } private ENASubmissionUI() { - ResourceInjector.get("submission-package.style").inject(this); + ResourceInjector.get("submission-package.style").inject(true, this); } public void createGUI() { @@ -128,7 +132,7 @@ public void mouseReleased(MouseEvent mouseEvent) { super.mouseReleased(mouseEvent); updateSubmission.setIcon(update_sub); - submit(); + validateConvertAndSubmitFiles(); } }); @@ -171,7 +175,7 @@ private Container createMetadataEntryUI() { @Override public void mousePressed(MouseEvent mouseEvent) { super.mousePressed(mouseEvent); - submit(); + validateConvertAndSubmitFiles(); } }); @@ -288,33 +292,30 @@ private Box createFieldDetailWrapper(ImageIcon image_icon, String text, int padd } - private void submit() { + private void submit(final String sraFolder) { Thread performer = new Thread(new Runnable() { public void run() { log.info("Current ISA-Tab is: " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); - Box submitProgressContainer = createSubmitProgressContainer(); swapContainers(submitProgressContainer); log.info("Saving current ISAtab file"); log.info("ISAtab file saved"); - // TODO: convert - ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); - SRASubmitter submitter = new SRASubmitter(); System.out.println(ENARestServer.TEST); System.out.println(username.getText()); System.out.println(new String(password.getPassword())); - String status = submitter.submit(ENARestServer.PROD, username.getText(), new String(password.getPassword()), "/Users/eamonnmaguire/git/isarepo/ISAvalidator-ISAconverter-BIImanager/import_layer/target/export/sra/BPA-Wheat-Cultivars/"); + String status = submitter.submit(ENARestServer.TEST, username.getText(), new String(password.getPassword()), sraFolder); if (status == null) { swapContainers(createSubmitFailed()); } else { + // todo: need to parse the receipt here and show any errors to the users. swapContainers(createSubmitComplete()); } System.out.println(status); @@ -326,6 +327,49 @@ public void run() { performer.start(); } + + private void validateConvertAndSubmitFiles() { + log.info("Current ISA-Tab is: " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); + ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); + + final GUIISATABValidator isatabValidator = new GUIISATABValidator(); + GUIInvokerResult result = isatabValidator.validate(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); + final Map> errorMessages = getErrorMessages(isatabValidator.getLog()); + + boolean strictValidationEnabled = Boolean.valueOf(ISAcreatorProperties.getProperty(ISAcreatorProperties.STRICT_VALIDATION)); + log.info("Strict validation on? " + strictValidationEnabled); + + boolean shouldShowErrors = strictValidationEnabled && errorMessages.size() > 0; + + if (result == GUIInvokerResult.SUCCESS && !shouldShowErrors) { + + SwingUtilities.invokeLater(new Runnable() { + public void run() { + + swapContainers(UIHelper.padComponentVerticalBox(100, new JLabel(convertISAAnimation))); + + String outputLocation = System.getProperty("java.io.tmpdir") + "sra/" + System.currentTimeMillis(); + convertISAtab(isatabValidator.getStore(), AllowedConversions.SRA, + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB), + outputLocation); + + + submit(outputLocation); + } + }); + } else + + { + log.info("Showing errors and warnings..."); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + displayValidationErrorsAndWarnings(errorMessages); + } + }); + } + + } + private Box createSubmitProgressContainer() { Box submitProgressContainer = Box.createVerticalBox(); submitProgressContainer.add(Box.createVerticalStrut(40)); @@ -380,27 +424,6 @@ private void addHeaderImageToContainer(Container submitProgressContainer) { submitProgressContainer.add(Box.createVerticalStrut(20)); } - private void swapContainers(final Container newContainer) { - - SwingUtilities.invokeLater(new Runnable() { - public void run() { - if (newContainer != null) { - swappableContainer.removeAll(); - swappableContainer.add(newContainer); - swappableContainer.repaint(); - swappableContainer.validate(); - swappableContainer.updateUI(); - - newContainer.validate(); - newContainer.repaint(); - - validate(); - repaint(); - } - } - }); - - } public static void main(String[] args) { ISAcreatorGUIProperties.setProperties(); diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ValidateUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ValidateUI.java index 91634cd3..29c4b4e2 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ValidateUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ValidateUI.java @@ -38,11 +38,8 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi */ import com.sun.awt.AWTUtilities; -import org.apache.log4j.Level; import org.apache.log4j.Logger; -import org.apache.log4j.spi.LoggingEvent; import org.isatools.errorreporter.model.*; -import org.isatools.errorreporter.ui.ErrorReporterView; import org.isatools.isacreator.common.UIHelper; import org.isatools.isacreator.effects.FooterPanel; import org.isatools.isacreator.effects.GraphicsUtils; @@ -53,15 +50,11 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import org.isatools.isacreator.model.Study; import org.isatools.isacreator.settings.ISAcreatorProperties; import org.isatools.isatab.gui_invokers.AllowedConversions; -import org.isatools.isatab.gui_invokers.GUIISATABConverter; import org.isatools.isatab.gui_invokers.GUIISATABValidator; import org.isatools.isatab.gui_invokers.GUIInvokerResult; import org.isatools.isatab.isaconfigurator.ISAConfigurationSet; -import org.isatools.tablib.utils.BIIObjectStore; -import org.isatools.tablib.utils.logging.TabLoggingEventWrapper; import org.jdesktop.fuse.InjectedResource; import org.jdesktop.fuse.ResourceInjector; -import uk.ac.ebi.utils.collections.Pair; import javax.swing.*; import javax.swing.border.EmptyBorder; @@ -73,7 +66,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import java.util.*; import java.util.List; -public class ValidateUI extends JFrame { +public class ValidateUI extends CommonValidationConversionUI { @InjectedResource private Image validateIcon, validateIconInactive, convertIcon, convertIconInactive; @@ -90,13 +83,14 @@ public class ValidateUI extends JFrame { public static final float DESIRED_OPACITY = .93f; - private JPanel swappableContainer; + private OperatingMode mode; private ConvertUI convertUI; public ValidateUI(ISAcreator isacreatorEnvironment, OperatingMode mode) { this.mode = mode; ResourceInjector.get("validateconvert-package.style").inject(this); + this.isacreatorEnvironment = isacreatorEnvironment; } @@ -156,7 +150,6 @@ public void run() { ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); final GUIISATABValidator isatabValidator = new GUIISATABValidator(); - GUIInvokerResult result = isatabValidator.validate(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); boolean strictValidationEnabled = Boolean.valueOf(ISAcreatorProperties.getProperty(ISAcreatorProperties.STRICT_VALIDATION)); @@ -208,93 +201,7 @@ public void run() { performer.start(); } - private void displayValidationErrorsAndWarnings(Map> fileToErrors) { - List errors = new ArrayList(); - for (String fileName : fileToErrors.keySet()) { - - Pair assayAndType = ValidationUtils.resolveFileTypeFromFileName(fileName, - isacreatorEnvironment.getDataEntryEnvironment().getInvestigation()); - - errors.add(new ISAFileErrorReport(fileName, - assayAndType.fst != null ? assayAndType.fst.getTechnologyType() : "", - assayAndType.fst != null ? assayAndType.fst.getMeasurementEndpoint() : "", - assayAndType.snd, fileToErrors.get(fileName))); - } - - if (fileToErrors.size() > 0) { - ErrorReporterView view = new ErrorReporterView(errors); - view.setPreferredSize(new Dimension(750, 440)); - view.createGUI(); - view.add(UIHelper.createLabel("Validation performed using " - + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION) + ""), - BorderLayout.SOUTH); - - swapContainers(view); - } else { - Container successfulValidationContainer = UIHelper.padComponentVerticalBox(70, new JLabel(validationSuccess)); - swapContainers(successfulValidationContainer); - } - } - - private Map> getErrorMessages(List logEvents) { - Map> fileToErrors = new HashMap>(); - - for (TabLoggingEventWrapper event : logEvents) { - String fileName = ErrorUtils.extractFileInformation(event.getLogEvent()); - - if (fileName != null) { - if (event.getLogEvent().getLevel().toInt() >= Level.WARN_INT) { - if (!fileToErrors.containsKey(fileName)) { - fileToErrors.put(fileName, new ArrayList()); - } - fileToErrors.get(fileName).add(new ErrorMessage(event.getLogEvent().getLevel() == Level.WARN ? ErrorLevel.WARNING : ErrorLevel.ERROR, event.getLogEvent().getMessage().toString())); - } - } - } - return fileToErrors; - } - - private void convertISAtab(BIIObjectStore store, AllowedConversions conversion, - String isatabLocation, String outputLocation) { - - GUIISATABConverter converter = new GUIISATABConverter(); - GUIInvokerResult result = converter.convert(store, isatabLocation, outputLocation, conversion); - - if (result == GUIInvokerResult.SUCCESS) { - - Box successContainer = Box.createVerticalBox(); - - successContainer.add(Box.createVerticalStrut(50)); - successContainer.add(UIHelper.wrapComponentInPanel(new JLabel(conversionSuccess))); - - successContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("" + - "Conversion was a success." + - "

Files stored in " + outputLocation + "

" + - "", UIHelper.VER_11_PLAIN, UIHelper.DARK_GREEN_COLOR))); - - swapContainers(successContainer); - - } else { - - List messages = new ArrayList(); - - for (TabLoggingEventWrapper tlew : converter.getLog()) { - LoggingEvent le = tlew.getLogEvent(); - if (le.getLevel() == Level.ERROR) { - messages.add(new ErrorMessage(ErrorLevel.ERROR, le.getMessage().toString())); - } - } - - ConversionErrorUI errorContainer = new ConversionErrorUI(); - errorContainer.constructErrorPane(messages); - errorContainer.setPreferredSize(new Dimension(750, 440)); - - swapContainers(errorContainer); - } - } - - - private Collection constructConversionTargets() { + public Collection constructConversionTargets() { Map conversionTargets = new HashMap(); Map studies = isacreatorEnvironment.getDataEntryEnvironment().getInvestigation().getStudies(); @@ -338,26 +245,6 @@ private Collection constructConversionTargets() { return conversionTargets.values(); } - private void swapContainers(final Container newContainer) { - - SwingUtilities.invokeLater(new Runnable() { - public void run() { - if (newContainer != null) { - swappableContainer.removeAll(); - swappableContainer.add(newContainer); - swappableContainer.repaint(); - swappableContainer.validate(); - swappableContainer.updateUI(); - - newContainer.validate(); - newContainer.repaint(); - - validate(); - repaint(); - } - } - }); - } } From 59991931ff1b120ecf7f1a690d9676157f3ff094 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Mon, 1 Sep 2014 12:26:21 +0100 Subject: [PATCH 31/48] Fixing setting of ontology terms in programmatic import --- .../isacreator/ontologymanager/OntologyManager.java | 2 +- .../ontologymanager/OntologySourceRefObject.java | 8 +++++++- .../io/importisa/ISAtabFilesImporterTest.java | 12 +++++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java b/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java index 163ab1c0..0e389fa0 100644 --- a/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java +++ b/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java @@ -137,7 +137,7 @@ public static void addToOntologyTerms(String label, OntologyTerm term) { return; if (ontologyTerms.containsKey(label)) return; - if (ISAcreatorProperties.getOntologyTermURIProperty() && term.getOntologyTermURI()!=null && !term.getOntologyTermURI().equals("")){ + if (term.getOntologyTermURI()!=null && !term.getOntologyTermURI().equals("")){ ontologyTerms.put(label, term); addToOntologyTermHistory(label, term); //TODO do I need this? --- addToUsedOntologies(term.getOntologySourceInformation()); diff --git a/src/main/java/org/isatools/isacreator/ontologymanager/OntologySourceRefObject.java b/src/main/java/org/isatools/isacreator/ontologymanager/OntologySourceRefObject.java index fc793c82..1b297179 100755 --- a/src/main/java/org/isatools/isacreator/ontologymanager/OntologySourceRefObject.java +++ b/src/main/java/org/isatools/isacreator/ontologymanager/OntologySourceRefObject.java @@ -58,6 +58,8 @@ public class OntologySourceRefObject extends ISASection implements Serializable, public static final String SOURCE_VERSION = "Term Source Version"; public static final String SOURCE_DESCRIPTION = "Term Source Description"; + private static final String BIOPORTAL_URL = "http://data.bioontology.org/ontologies/"; + public OntologySourceRefObject() { super(); } @@ -87,7 +89,11 @@ public OntologySourceRefObject(String sourceName, String sourceFile, public void completeFields(){ if (getSourceName()==null) return; - String ontologyId = "http://data.bioontology.org/ontologies/"+getSourceName(); + + if (!getSourceName().equals("") && getSourceFile().startsWith(BIOPORTAL_URL) && getSourceFile().endsWith(getSourceName()) && !getSourceVersion().equals("") && !getSourceDescription().equals("")) + return; + + String ontologyId = BIOPORTAL_URL + getSourceName(); Ontology associatedOntologySource = AcceptedOntologies.getAcceptedOntologies().get(ontologyId); diff --git a/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java b/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java index 9ca7e238..171e1547 100644 --- a/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java +++ b/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java @@ -6,6 +6,9 @@ import org.isatools.isacreator.io.CommonTestIO; import org.isatools.isacreator.model.Investigation; import org.isatools.isacreator.ontologymanager.OntologyManager; +import org.isatools.isacreator.ontologymanager.common.OntologyTerm; +import org.isatools.isacreator.settings.ISAcreatorProperties; +import org.isatools.isacreator.utils.PropertyFileIO; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -48,6 +51,7 @@ public void setUp() { } } + ISAcreatorProperties.setProperties(PropertyFileIO.DEFAULT_CONFIGS_SETTINGS_PROPERTIES); configDir = baseDir + DEFAULT_CONFIG_DIR; log.debug("configDir=" + configDir); @@ -81,7 +85,13 @@ public void importFileTest() { System.out.println("ontology description=" + OntologyManager.getOntologyDescription("OBI")); //System.out.println("ontology selection history=" + OntologyManager.getOntologySelectionHistory()); System.out.println("ontology selection history size=" + OntologyManager.getOntologyTermsSize()); - System.out.println("ontology term=" + OntologyManager.getOntologyTerm("OBI:metabolite profiling")); + + OntologyTerm ontologyTerm = OntologyManager.getOntologyTerm("OBI:metabolite profiling"); + + System.out.println("ontology term=" + ontologyTerm); + System.out.println("term URI = "+ontologyTerm.getOntologyTermURI()); + + assert(!ontologyTerm.getOntologyTermURI().equals("")); assertTrue("Oh no, I didnt' get the expected number of studies :(", inv.getStudies().size() == 2); From 97d6305d7b7037f0e1d24ced60c5d4890798205b Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Mon, 1 Sep 2014 13:30:35 +0100 Subject: [PATCH 32/48] Going back to correct version of test files --- .../test-data/BII-I-1/a_metabolome.txt | 224 ++++++------ .../test-data/BII-I-1/a_microarray.txt | 30 +- .../test-data/BII-I-1/a_proteome.txt | 38 +- .../test-data/BII-I-1/a_transcriptome.txt | 98 +++--- .../test-data/BII-I-1/i_investigation.txt | 93 +---- .../resources/test-data/BII-I-1/s_BII-S-1.txt | 330 +++++++++--------- .../resources/test-data/BII-I-1/s_BII-S-2.txt | 30 +- 7 files changed, 384 insertions(+), 459 deletions(-) diff --git a/src/test/resources/test-data/BII-I-1/a_metabolome.txt b/src/test/resources/test-data/BII-I-1/a_metabolome.txt index cb5b3d64..4f9465c9 100644 --- a/src/test/resources/test-data/BII-I-1/a_metabolome.txt +++ b/src/test/resources/test-data/BII-I-1/a_metabolome.txt @@ -1,112 +1,112 @@ -Sample Name Material Type Protocol REF Parameter Value[standard volume] Unit Parameter Value[sample volume] Unit Extract Name MS Assay Name Raw Spectral Data File Comment[Data Repository] Comment[Data Record Accession] Factor Value[limiting nutrient] Factor Value[rate] Unit -C-0.1-aliquot1 intracellular metabolite extraction 4 microliter 200 microliter S-0.2-aliquot8 JIC36_Sulphate_0.20_Internal_1_3 JIC36_Sulphate_0.20_Internal_1_3.txt elemental sulfur 0.1 l/hour -P-0.07-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter P-0.07-aliquot8 JIC20_Phosphate_0.07_Internal_1_1 JIC20_Phosphate_0.07_Internal_1_1.txt elemental phosphorus 0.07 l/hr -P-0.07-aliquot9 intracellular metabolite extraction 4 microliter 200 microliter P-0.07-aliquot9 JIC21_Phosphate_0.07_Internal_2_1 JIC21_Phosphate_0.07_Internal_2_1.txt elemental phosphorus 0.07 l/hr -P-0.1-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter P-0.1-aliquot8 JIC22_Phosphate_0.10_Internal_1_1 JIC22_Phosphate_0.10_Internal_1_1.txt elemental phosphorus 0.1 l/hr -P-0.1-aliquot9 intracellular metabolite extraction 4 microliter 200 microliter P-0.1-aliquot9 JIC23_Phosphate_0.10_Internal_2_1 JIC23_Phosphate_0.10_Internal_2_1.txt elemental phosphorus 0.1 l/hr -P-0.1-aliquot10 intracellular metabolite extraction 4 microliter 200 microliter P-0.1-aliquot10 JIC24_Phosphate_0.10_Internal_3_1 JIC24_Phosphate_0.10_Internal_3_1.txt elemental phosphorus 0.1 l/hr -P-0.2-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter P-0.2-aliquot8 JIC25_Phosphate_0.20_Internal_1_1 JIC25_Phosphate_0.20_Internal_1_1.txt elemental phosphorus 0.2 l/hr -P-0.2-aliquot9 intracellular metabolite extraction 4 microliter 200 microliter P-0.2-aliquot9 JIC26_Phosphate_0.20_Internal_2_1 JIC26_Phosphate_0.20_Internal_2_1.txt elemental phosphorus 0.2 l/hr -P-0.2-aliquot10 intracellular metabolite extraction 4 microliter 200 microliter P-0.2-aliquot10 JIC27_Phosphate_0.20_Internal_3_1 JIC27_Phosphate_0.20_Internal_3_1.txt elemental phosphorus 0.2 l/hr -N-0.07-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter N-0.07-aliquot8 JIC10_Nitrogen_0.07_Internal_1_1 JIC10_Nitrogen_0.07_Internal_1_1.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter N-0.07-aliquot8 JIC10_Nitrogen_0.07_Internal_1_2 JIC10_Nitrogen_0.07_Internal_1_2.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter N-0.07-aliquot8 JIC10_Nitrogen_0.07_Internal_1_3 JIC10_Nitrogen_0.07_Internal_1_3.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot9 intracellular metabolite extraction 4 microliter 200 microliter N-0.07-aliquot9 JIC11_Nitrogen_0.07_Internal_2_1 JIC11_Nitrogen_0.07_Internal_2_1.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot10 intracellular metabolite extraction 4 microliter 200 microliter N-0.07-aliquot10 JIC12_Nitrogen_0.07_Internal_3_1 JIC12_Nitrogen_0.07_Internal_3_1.txt elemental nitrogen 0.07 l/hr -N-0.1-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter N-0.1-aliquot8 JIC13_Nitrogen_0.10_Internal_1_1 JIC13_Nitrogen_0.10_Internal_1_1.txt elemental nitrogen 0.1 l/hr -N-0.1-aliquot9 intracellular metabolite extraction 4 microliter 200 microliter N-0.1-aliquot9 JIC14_Nitrogen_0.10_Internal_2_1 JIC14_Nitrogen_0.10_Internal_2_1.txt elemental nitrogen 0.1 l/hr -N-0.1-aliquot10 intracellular metabolite extraction 4 microliter 200 microliter N-0.1-aliquot10 JIC15_Nitrogen_0.10_Internal_3_1 JIC15_Nitrogen_0.10_Internal_3_1.txt elemental nitrogen 0.1 l/hr -N-0.2-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter N-0.2-aliquot8 JIC16_Nitrogen_0.20_Internal_1_1 JIC16_Nitrogen_0.20_Internal_1_1.txt elemental nitrogen 0.2 l/hr -N-0.2-aliquot9 intracellular metabolite extraction 4 microliter 200 microliter N-0.2-aliquot9 JIC17_Nitrogen_0.20_Internal_2_1 JIC17_Nitrogen_0.20_Internal_2_1.txt elemental nitrogen 0.2 l/hr -N-0.2-aliquot10 intracellular metabolite extraction 4 microliter 200 microliter N-0.2-aliquot10 JIC18_Nitrogen_0.20_Internal_3_1 JIC18_Nitrogen_0.20_Internal_3_1.txt elemental nitrogen 0.2 l/hr -C-0.07-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter C-0.07-aliquot8 JIC1_Carbon_0.07_Internal_1_1 JIC1_Carbon_0.07_Internal_1_1.txt elemental carbon 0.07 l/hr -C-0.07-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter C-0.07-aliquot8 JIC1_Carbon_0.07_Internal_1_2 JIC1_Carbon_0.07_Internal_1_2.txt elemental carbon 0.07 l/hr -C-0.07-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter C-0.07-aliquot8 JIC1_Carbon_0.07_Internal_1_3 JIC1_Carbon_0.07_Internal_1_3.txt elemental carbon 0.07 l/hr -C-0.07-aliquot9 intracellular metabolite extraction 4 microliter 200 microliter C-0.07-aliquot9 JIC2_Carbon_0.07_Internal_2_1 JIC2_Carbon_0.07_Internal_2_1.txt elemental carbon 0.07 l/hr -C-0.07-aliquot10 intracellular metabolite extraction 4 microliter 200 microliter C-0.07-aliquot10 JIC3_Carbon_0.07_Internal_3_1 JIC3_Carbon_0.07_Internal_3_1.txt elemental carbon 0.07 l/hr -C-0.1-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter C-0.1-aliquot8 JIC4_Carbon_0.10_Internal_1_1 JIC4_Carbon_0.10_Internal_1_1.txt elemental carbon 0.1 l/hr -C-0.1-aliquot9 intracellular metabolite extraction 4 microliter 200 microliter C-0.1-aliquot9 JIC5_Carbon_0.10_Internal_2_1 JIC5_Carbon_0.10_Internal_2_1.txt elemental carbon 0.1 l/hr -C-0.1-aliquot10 intracellular metabolite extraction 4 microliter 200 microliter C-0.1-aliquot10 JIC6_Carbon_0.10_Internal_3_1 JIC6_Carbon_0.10_Internal_3_1.txt elemental carbon 0.1 l/hr -C-0.2-aliquot8 intracellular metabolite extraction 4 microliter 200 microliter C-0.2-aliquot8 JIC7_Carbon_0.20_Internal_1_1 JIC7_Carbon_0.20_Internal_1_1.txt elemental carbon 0.2 l/hr -C-0.2-aliquot9 intracellular metabolite extraction 4 microliter 200 microliter C-0.2-aliquot9 JIC8_Carbon_0.20_Internal_2_1 JIC8_Carbon_0.20_Internal_2_1.txt elemental carbon 0.2 l/hr -C-0.2-aliquot10 intracellular metabolite extraction 4 microliter 200 microliter C-0.2-aliquot10 JIC9_Carbon_0.20_Internal_3_1 JIC9_Carbon_0.20_Internal_3_1.txt elemental carbon 0.2 l/hr -G-0.07-aliquot4 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter G-0.2-aliquot6 JIC54_GlucoseO2_0.20_Internal_3_1 JIC54_GlucoseO2_0.20_Internal_3_1.txt glucose 0.2 l/hr -E-0.07-aliquot1 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter 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 intracellular metabolite extraction 4 microliter 200 microliter E-0.1-aliquot3 JIC42_Ethanol_0.10_Internal_3_1 JIC42_Ethanol_0.10_Internal_3_1.txt ethanol 0.1 l/hr -S-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.07-aliquot5 JIC82_Sulphate_0.07_External_1_1 JIC82_Sulphate_0.07_External_1_1.txt elemental sulfur 0.07 l/hr -S-0.07-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.07-aliquot6 JIC83_Sulphate_0.07_External_2_1 JIC83_Sulphate_0.07_External_2_1.txt elemental sulfur 0.07 l/hr -S-0.07-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.07-aliquot7 JIC84_Sulphate_0.07_External_3_1 JIC84_Sulphate_0.07_External_3_1.txt elemental sulfur 0.07 l/hr -S-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.07-aliquot5 JIC82_Sulphate_0.07_External_1_2 JIC82_Sulphate_0.07_External_1_2.txt elemental sulfur 0.07 l/hr -S-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.07-aliquot5 JIC82_Sulphate_0.07_External_1_3 JIC82_Sulphate_0.07_External_1_3.txt elemental sulfur 0.07 l/hr -S-0.1-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.1-aliquot5 JIC85_Sulphate_0.10_External_1_1 JIC85_Sulphate_0.10_External_1_1.txt elemental sulfur 0.1 l/hr -S-0.1-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.1-aliquot6 JIC86_Sulphate_0.10_External_2_1 JIC86_Sulphate_0.10_External_2_1.txt elemental sulfur 0.1 l/hr -S-0.2-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.2-aliquot5 JIC88_Sulphate_0.20_External_1_1 JIC88_Sulphate_0.20_External_1_1.txt elemental sulfur 0.2 l/hr -S-0.2-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.2-aliquot6 JIC89_Sulphate_0.20_External_2_1 JIC89_Sulphate_0.20_External_2_1.txt elemental sulfur 0.2 l/hr -S-0.2-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter S-0.2-aliquot7 JIC90_Sulphate_0.20_External_3_1 JIC90_Sulphate_0.20_External_3_1.txt elemental sulfur 0.2 l/hr -P-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.07-aliquot5 JIC73_Phosphate_0.07_External_1_1 JIC73_Phosphate_0.07_External_1_1.txt elemental phosphorus 0.07 l/hr -P-0.07-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.07-aliquot6 JIC73_Phosphate_0.07_External_1_2 JIC73_Phosphate_0.07_External_1_2.txt elemental phosphorus 0.07 l/hr -P-0.07-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.07-aliquot7 JIC73_Phosphate_0.07_External_1_3 JIC73_Phosphate_0.07_External_1_3.txt elemental phosphorus 0.07 l/hr -P-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.07-aliquot5 JIC74_Phosphate_0.07_External_2_1 JIC74_Phosphate_0.07_External_2_1.txt elemental phosphorus 0.07 l/hr -P-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.07-aliquot5 JIC75_Phosphate_0.07_External_3_1 JIC75_Phosphate_0.07_External_3_1.txt elemental phosphorus 0.07 l/hr -P-0.1-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.1-aliquot5 JIC76_Phosphate_0.10_External_1_1 JIC76_Phosphate_0.10_External_1_1.txt elemental phosphorus 0.1 l/hr -P-0.1-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.1-aliquot6 JIC77_Phosphate_0.10_External_2_1 JIC77_Phosphate_0.10_External_2_1.txt elemental phosphorus 0.1 l/hr -P-0.1-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.1-aliquot7 JIC78_Phosphate_0.10_External_3_1 JIC78_Phosphate_0.10_External_3_1.txt elemental phosphorus 0.1 l/hr -P-0.2-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.2-aliquot5 JIC79_Phosphate_0.20_External_1_1 JIC79_Phosphate_0.20_External_1_1.txt elemental phosphorus 0.2 l/hr -P-0.2-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.2-aliquot6 JIC80_Phosphate_0.20_External_2_1 JIC80_Phosphate_0.20_External_2_1.txt elemental phosphorus 0.2 l/hr -P-0.2-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter P-0.2-aliquot7 JIC81_Phosphate_0.20_External_3_1 JIC81_Phosphate_0.20_External_3_1.txt elemental phosphorus 0.2 l/hr -N-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.07-aliquot5 JIC64_Nitrogen_0.07_External_1_1 JIC64_Nitrogen_0.07_External_1_1.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.07-aliquot5 JIC64_Nitrogen_0.07_External_1_2 JIC64_Nitrogen_0.07_External_1_2.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.07-aliquot5 JIC64_Nitrogen_0.07_External_1_3 JIC64_Nitrogen_0.07_External_1_3.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.07-aliquot6 JIC65_Nitrogen_0.07_External_2_1 JIC65_Nitrogen_0.07_External_2_1.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.07-aliquot7 JIC66_Nitrogen_0.07_External_3_1 JIC66_Nitrogen_0.07_External_3_1.txt elemental nitrogen 0.07 l/hr -N-0.1-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.1-aliquot5 JIC67_Nitrogen_0.10_External_1_1 JIC67_Nitrogen_0.10_External_1_1.txt elemental nitrogen 0.1 l/hr -N-0.1-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.1-aliquot6 JIC68_Nitrogen_0.10_External_2_1 JIC68_Nitrogen_0.10_External_2_1.txt elemental nitrogen 0.1 l/hr -N-0.1-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.1-aliquot7 JIC69_Nitrogen_0.10_External_3_1 JIC69_Nitrogen_0.10_External_3_1.txt elemental nitrogen 0.1 l/hr -N-0.2-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.2-aliquot5 JIC70_Nitrogen_0.20_External_1_1 JIC70_Nitrogen_0.20_External_1_1.txt elemental nitrogen 0.2 l/hr -N-0.2-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.2-aliquot6 JIC71_Nitrogen_0.20_External_2_1 JIC71_Nitrogen_0.20_External_2_1.txt elemental nitrogen 0.2 l/hr -N-0.2-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter N-0.2-aliquot7 JIC72_Nitrogen_0.20_External_3_1 JIC72_Nitrogen_0.20_External_3_1.txt elemental nitrogen 0.2 l/hr -C-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.07-aliquot5 JIC55_Carbon_0.07_External_1_1 JIC55_Carbon_0.07_External_1_1.txt elemental carbon 0.07 l/hr -C-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.07-aliquot5 JIC55_Carbon_0.07_External_1_2 JIC55_Carbon_0.07_External_1_2.txt elemental carbon 0.07 l/hr -C-0.07-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.07-aliquot5 JIC55_Carbon_0.07_External_1_3 JIC55_Carbon_0.07_External_1_3.txt elemental carbon 0.07 l/hr -C-0.07-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.07-aliquot6 JIC56_Carbon_0.07_External_2_1 JIC56_Carbon_0.07_External_2_1.txt elemental carbon 0.07 l/hr -C-0.07-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.07-aliquot7 JIC57_Carbon_0.07_External_3_1 JIC57_Carbon_0.07_External_3_1.txt elemental carbon 0.07 l/hr -C-0.1-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.1-aliquot5 JIC58_Carbon_0.10_External_1_1 JIC58_Carbon_0.10_External_1_1.txt elemental carbon 0.1 l/hr -C-0.1-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.1-aliquot6 JIC59_Carbon_0.10_External_2_1 JIC59_Carbon_0.10_External_2_1.txt elemental carbon 0.1 l/hr -C-0.1-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.1-aliquot7 JIC60_Carbon_0.10_External_3_1 JIC60_Carbon_0.10_External_3_1.txt elemental carbon 0.1 l/hr -C-0.2-aliquot5 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.2-aliquot5 JIC61_Carbon_0.20_External_1_1 JIC61_Carbon_0.20_External_1_1.txt elemental carbon 0.2 l/hr -C-0.2-aliquot6 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.2-aliquot6 JIC62_Carbon_0.20_External_2_1 JIC62_Carbon_0.20_External_2_1.txt elemental carbon 0.2 l/hr -C-0.2-aliquot7 extracellular region part metabolite extraction 20 microliter 1000 microliter C-0.2-aliquot7 JIC63_Carbon_0.20_External_3_1 JIC63_Carbon_0.20_External_3_1.txt elemental carbon 0.2 l/hr -G-0.07-aliquot1 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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-aliquot4 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter 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 extracellular region part metabolite extraction 20 microliter 1000 microliter E-0.1-aliquot6 JIC96_Ethanol_0.10_External_3_1 JIC96_Ethanol_0.10_External_3_1.txt ethanol 0.1 l/hr +"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" "Comment[Data Repository]" "Comment[Data Record Accession]" "Factor Value[limiting nutrient]" "Term Source REF" "Term Accession Number" "Factor Value[rate]" "Unit" "Term Source REF" "Term Accession Number" +"C-0.1-aliquot1" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"P-0.07-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.07-aliquot9" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.1-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.1-aliquot9" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.1-aliquot10" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.2-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"P-0.2-aliquot9" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"P-0.2-aliquot10" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"N-0.07-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot9" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot10" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.1-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.1-aliquot9" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.1-aliquot10" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.2-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"N-0.2-aliquot9" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"N-0.2-aliquot10" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"C-0.07-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot9" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot10" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.1-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.1-aliquot9" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.1-aliquot10" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.2-aliquot8" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"C-0.2-aliquot9" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"C-0.2-aliquot10" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"G-0.07-aliquot4" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hr" "" "" +"G-0.07-aliquot4" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hr" "" "" +"G-0.07-aliquot4" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hr" "" "" +"G-0.07-aliquot5" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hr" "" "" +"G-0.07-aliquot6" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hr" "" "" +"G-0.1-aliquot4" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hr" "" "" +"G-0.1-aliquot5" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hr" "" "" +"G-0.1-aliquot6" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hr" "" "" +"G-0.2-aliquot4" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hr" "" "" +"G-0.2-aliquot5" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hr" "" "" +"G-0.2-aliquot6" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hr" "" "" +"E-0.07-aliquot1" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.07-aliquot1" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.07-aliquot1" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.07-aliquot2" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.07-aliquot3" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.1-aliquot1" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hr" "" "" +"E-0.1-aliquot2" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hr" "" "" +"E-0.1-aliquot3" "intracellular" "CL" "http://purl.obolibrary.org/obo/GO_0005622" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hr" "" "" +"S-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hr" "" "" +"S-0.07-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "JIC83_Sulphate_0.07_External_2_1.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hr" "" "" +"S-0.07-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "JIC84_Sulphate_0.07_External_3_1.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hr" "" "" +"S-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "JIC82_Sulphate_0.07_External_1_2.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hr" "" "" +"S-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "JIC82_Sulphate_0.07_External_1_3.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hr" "" "" +"S-0.1-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hr" "" "" +"S-0.1-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hr" "" "" +"S-0.2-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hr" "" "" +"S-0.2-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hr" "" "" +"S-0.2-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hr" "" "" +"P-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.07-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.07-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.1-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.1-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.1-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.2-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"P-0.2-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"P-0.2-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"N-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.1-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.1-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.1-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.2-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"N-0.2-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"N-0.2-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"C-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.1-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.1-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.1-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.2-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"C-0.2-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"C-0.2-aliquot7" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"G-0.07-aliquot1" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hr" "" "" +"G-0.07-aliquot1" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hr" "" "" +"G-0.07-aliquot2" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hr" "" "" +"G-0.07-aliquot3" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hr" "" "" +"G-0.1-aliquot1" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hr" "" "" +"G-0.1-aliquot2" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hr" "" "" +"G-0.1-aliquot3" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hr" "" "" +"G-0.2-aliquot1" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hr" "" "" +"G-0.2-aliquot2" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hr" "" "" +"G-0.2-aliquot3" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hr" "" "" +"E-0.07-aliquot4" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.07-aliquot4" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.07-aliquot4" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.07-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.07-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hr" "" "" +"E-0.1-aliquot4" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hr" "" "" +"E-0.1-aliquot5" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hr" "" "" +"E-0.1-aliquot6" "extracellular region part" "CL" "http://purl.obolibrary.org/obo/GO_0044421" "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" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hr" "" "" diff --git a/src/test/resources/test-data/BII-I-1/a_microarray.txt b/src/test/resources/test-data/BII-I-1/a_microarray.txt index 0c0544e5..23a36f92 100644 --- a/src/test/resources/test-data/BII-I-1/a_microarray.txt +++ b/src/test/resources/test-data/BII-I-1/a_microarray.txt @@ -1,15 +1,15 @@ -Sample Name Protocol REF Extract Name Protocol REF Labeled Extract Name Label 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 Comment[Data Repository] Comment[Data Record Accession] Data Transformation Name Derived Array Data File Factor Value[dose] Unit Factor Value[exposure time] Unit Factor Value[compound] -NZ_0hrs_Grow1_Sample_1 mRNA extraction NZ_0hrs_Sample_1_Extract biotin labeling NZ_0hrs_Sample_1_Labelled biotin 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 nanogram per milliliter 0 hour -NZ_1hrs_Grow1_Drug_Sample_1 mRNA extraction NZ_1hrs_Drug_Sample_1_Extract biotin labeling NZ_1hrs_Drug_Sample_1_Labelled biotin 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 nanogram per milliliter 1 hour sirolimus -NZ_2hrs_Grow1_Drug_Sample_1 mRNA extraction NZ_2hrs_Drug_Sample_1_Extract biotin labeling NZ_2hrs_Drug_Sample_1_Labelled biotin 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 nanogram per milliliter 2 hour sirolimus -NZ_4hrs_Grow1_Drug_Sample_1 mRNA extraction NZ_4hrs_Drug_Sample_1_Extract biotin labeling NZ_4hrs_Drug_Sample_1_Labelled biotin 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 nanogram per milliliter 4 hour sirolimus -NZ_2hrs_Grow1_Vehicle_Sample_1 mRNA extraction NZ_2hrs_Vehicle_Sample_1_Extract biotin labeling NZ_2hrs_Vehicle_Sample_1_Labelled biotin 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 nanogram per milliliter 2 hour 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 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 nanogram per milliliter 4 hour 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 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 nanogram per milliliter 1 hour 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 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 nanogram per milliliter 0 hour -NZ_1hrs_Grow2_Drug_Sample_2 mRNA extraction NZ_1hrs_Drug_Sample_2_Extract biotin labeling NZ_1hrs_Drug_Sample_2_Labelled biotin 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 nanogram per milliliter 1 hour sirolimus -NZ_4hrs_Grow2_Drug_Sample_2 mRNA extraction NZ_4hrs_Drug_Sample_2_Extract biotin labeling NZ_4hrs_Drug_Sample_2_Labelled biotin 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 nanogram per milliliter 4 hour sirolimus -NZ_2hrs_Grow2_Drug_Sample_2 mRNA extraction NZ_2hrs_Drug_Sample_2_Extract biotin labeling NZ_2hrs_Drug_Sample_2_Labelled biotin 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 nanogram per milliliter 2 hour sirolimus -NZ_1hrs_Grow2_Vehicle_Sample_2 mRNA extraction NZ_1hrs_Vehicle_Sample_2_Extract biotin labeling NZ_1hrs_Vehicle_Sample_2_Labelled biotin 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 nanogram per milliliter 1 hour 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 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 nanogram per milliliter 2 hour 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 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 nanogram per milliliter 4 hour drug vehicle (90% ethanol/10% tween-20) +"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" "Comment[Data Repository]" "Comment[Data Record Accession]" "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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "1" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "2" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "4" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "1" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "4" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "2" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "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" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "4" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "drug vehicle (90% ethanol/10% tween-20)" "" "" diff --git a/src/test/resources/test-data/BII-I-1/a_proteome.txt b/src/test/resources/test-data/BII-I-1/a_proteome.txt index 25f7b9dc..a6894d46 100644 --- a/src/test/resources/test-data/BII-I-1/a_proteome.txt +++ b/src/test/resources/test-data/BII-I-1/a_proteome.txt @@ -1,19 +1,19 @@ -Sample Name Protocol REF Extract Name Protocol REF Labeled Extract Name Label MS Assay Name Comment[PRIDE Accession] Comment[PRIDE Processed Data Accession] Raw Spectral Data File Comment[Data Record Accession] Comment[Data Repository] Normalization Name Protein Assignment File Peptide Assignment File Post Translational Modification Assignment File Data Transformation Name Derived Spectral Data File Factor Value[limiting nutrient] Factor Value[rate] Unit -S-0.1-aliquot11 protein extraction S-0.1 ITRAQ labeling JC_S-0.1 iTRAQ reagent 117 8761 8761 8761 spectrum.mzdata norm1 proteins.csv peptides.csv ptms.csv datatransformation1 PRIDE_Exp_Complete_Ac_8761.xml elemental sulfur 0.1 l/hr -C-0.1-aliquot11 protein extraction C-0.1 ITRAQ labeling JC_C-0.1 iTRAQ reagent 116 8761 8761 8761 spectrum.mzdata norm1 proteins.csv peptides.csv ptms.csv datatransformation1 PRIDE_Exp_Complete_Ac_8761.xml elemental carbon 0.1 l/hr -N-0.1-aliquot11 protein extraction N-0.1 ITRAQ labeling JC_N-0.1 iTRAQ reagent 115 8761 8761 8761 spectrum.mzdata norm1 proteins.csv peptides.csv ptms.csv datatransformation1 PRIDE_Exp_Complete_Ac_8761.xml elemental nitrogen 0.1 l/hr -S-0.1-aliquot11 protein extraction S-0.1 ITRAQ labeling Pool1 iTRAQ reagent 114 8761 8761 8761 spectrum.mzdata norm1 proteins.csv peptides.csv ptms.csv datatransformation1 PRIDE_Exp_Complete_Ac_8761.xml l/hr -C-0.1-aliquot11 protein extraction C-0.1 ITRAQ labeling Pool1 iTRAQ reagent 114 8761 8761 8761 spectrum.mzdata norm1 proteins.csv peptides.csv ptms.csv datatransformation1 PRIDE_Exp_Complete_Ac_8761.xml l/hr -N-0.1-aliquot11 protein extraction N-0.1 ITRAQ labeling Pool1 iTRAQ reagent 114 8761 8761 8761 spectrum.mzdata norm1 proteins.csv peptides.csv ptms.csv datatransformation1 PRIDE_Exp_Complete_Ac_8761.xml l/hr -C-0.2-aliquot11 protein extraction C-0.2 ITRAQ labeling JC_C-0.2 iTRAQ reagent 117 8762 8762 8762 spectrum.mzdata norm2 proteins.csv peptides.csv ptms.csv datatransformation2 PRIDE_Exp_Complete_Ac_8762.xml elemental carbon 0.2 l/hr -N-0.2-aliquot11 protein extraction N-0.2 ITRAQ labeling JC_N-0.2 iTRAQ reagent 116 8762 8762 8762 spectrum.mzdata norm2 proteins.csv peptides.csv ptms.csv datatransformation2 PRIDE_Exp_Complete_Ac_8762.xml elemental nitrogen 0.2 l/hr -P-0.1-aliquot11 protein extraction P-0.1 ITRAQ labeling JC_P-0.1 iTRAQ reagent 115 8762 8762 8762 spectrum.mzdata norm2 proteins.csv peptides.csv ptms.csv datatransformation2 PRIDE_Exp_Complete_Ac_8762.xml elemental phosphorus 0.1 l/hr -C-0.2-aliquot11 protein extraction C-0.2 ITRAQ labeling Pool2 iTRAQ reagent 114 8762 8762 8762 spectrum.mzdata norm2 proteins.csv peptides.csv ptms.csv datatransformation2 PRIDE_Exp_Complete_Ac_8762.xml l/hr -N-0.2-aliquot11 protein extraction N-0.2 ITRAQ labeling Pool2 iTRAQ reagent 114 8762 8762 8762 spectrum.mzdata norm2 proteins.csv peptides.csv ptms.csv datatransformation2 PRIDE_Exp_Complete_Ac_8762.xml l/hr -P-0.1-aliquot11 protein extraction P-0.1 ITRAQ labeling Pool2 iTRAQ reagent 114 8762 8762 8762 spectrum.mzdata norm2 proteins.csv peptides.csv ptms.csv datatransformation2 PRIDE_Exp_Complete_Ac_8762.xml l/hr -P-0.2-aliquot11 protein extraction P-0.2 ITRAQ labeling JC_P-0.2 iTRAQ reagent 116 8763 8763 8763 spectrum.mzdata norm3 proteins.csv peptides.csv ptms.csv datatransformation3 PRIDE_Exp_Complete_Ac_8763.xml elemental phosphorus 0.2 l/hr -S-0.2-aliquot11 protein extraction S-0.2 ITRAQ labeling JC_S-0.2 iTRAQ reagent 115 8763 8763 8763 spectrum.mzdata norm3 proteins.csv peptides.csv ptms.csv datatransformation3 PRIDE_Exp_Complete_Ac_8763.xml elemental sulfur 0.2 l/hr -P-0.2-aliquot11 protein extraction P-0.2 ITRAQ labeling Pool3 iTRAQ reagent 117 8763 8763 8763 spectrum.mzdata norm3 proteins.csv peptides.csv ptms.csv datatransformation3 PRIDE_Exp_Complete_Ac_8763.xml l/hr -S-0.2-aliquot11 protein extraction S-0.2 ITRAQ labeling Pool3 iTRAQ reagent 117 8763 8763 8763 spectrum.mzdata norm3 proteins.csv peptides.csv ptms.csv datatransformation3 PRIDE_Exp_Complete_Ac_8763.xml l/hr -P-0.2-aliquot11 protein extraction P-0.2 ITRAQ labeling Pool3 iTRAQ reagent 114 8763 8763 8763 spectrum.mzdata norm3 proteins.csv peptides.csv ptms.csv datatransformation3 PRIDE_Exp_Complete_Ac_8763.xml l/hr -S-0.2-aliquot11 protein extraction S-0.2 ITRAQ labeling Pool3 iTRAQ reagent 114 8763 8763 8763 spectrum.mzdata norm3 proteins.csv peptides.csv ptms.csv datatransformation3 PRIDE_Exp_Complete_Ac_8763.xml l/hr +"Sample Name" "Protocol REF" "Extract Name" "Protocol REF" "Labeled Extract Name" "Label" "Term Source REF" "Term Accession Number" "MS Assay Name" "Comment[PRIDE Accession]" "Comment[PRIDE Processed Data Accession]" "Raw Spectral Data File" "Comment[Data Record Accession]" "Comment[Data Repository]" "Normalization Name" "Protein Assignment File" "Peptide Assignment File" "Post Translational Modification Assignment File" "Data Transformation Name" "Derived Spectral Data File" "Factor Value[limiting nutrient]" "Term Source REF" "Term Accession Number" "Factor Value[rate]" "Unit" "Term Source REF" "Term Accession Number" +"S-0.1-aliquot11" "protein extraction" "S-0.1" "ITRAQ labeling" "JC_S-0.1" "iTRAQ reagent 117" "" "" "8761" "8761" "8761" "spectrum.mzdata" "" "" "norm1" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation1" "PRIDE_Exp_Complete_Ac_8761.xml" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hr" "" "" +"C-0.1-aliquot11" "protein extraction" "C-0.1" "ITRAQ labeling" "JC_C-0.1" "iTRAQ reagent 116" "" "" "8761" "8761" "8761" "spectrum.mzdata" "" "" "norm1" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation1" "PRIDE_Exp_Complete_Ac_8761.xml" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"N-0.1-aliquot11" "protein extraction" "N-0.1" "ITRAQ labeling" "JC_N-0.1" "iTRAQ reagent 115" "" "" "8761" "8761" "8761" "spectrum.mzdata" "" "" "norm1" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation1" "PRIDE_Exp_Complete_Ac_8761.xml" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"S-0.1-aliquot11" "protein extraction" "S-0.1" "ITRAQ labeling" "Pool1" "iTRAQ reagent 114" "" "" "8761" "8761" "8761" "spectrum.mzdata" "" "" "norm1" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation1" "PRIDE_Exp_Complete_Ac_8761.xml" "" "" "" "" "l/hr" "" "" +"C-0.1-aliquot11" "protein extraction" "C-0.1" "ITRAQ labeling" "Pool1" "iTRAQ reagent 114" "" "" "8761" "8761" "8761" "spectrum.mzdata" "" "" "norm1" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation1" "PRIDE_Exp_Complete_Ac_8761.xml" "" "" "" "" "l/hr" "" "" +"N-0.1-aliquot11" "protein extraction" "N-0.1" "ITRAQ labeling" "Pool1" "iTRAQ reagent 114" "" "" "8761" "8761" "8761" "spectrum.mzdata" "" "" "norm1" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation1" "PRIDE_Exp_Complete_Ac_8761.xml" "" "" "" "" "l/hr" "" "" +"C-0.2-aliquot11" "protein extraction" "C-0.2" "ITRAQ labeling" "JC_C-0.2" "iTRAQ reagent 117" "" "" "8762" "8762" "8762" "spectrum.mzdata" "" "" "norm2" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation2" "PRIDE_Exp_Complete_Ac_8762.xml" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"N-0.2-aliquot11" "protein extraction" "N-0.2" "ITRAQ labeling" "JC_N-0.2" "iTRAQ reagent 116" "" "" "8762" "8762" "8762" "spectrum.mzdata" "" "" "norm2" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation2" "PRIDE_Exp_Complete_Ac_8762.xml" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"P-0.1-aliquot11" "protein extraction" "P-0.1" "ITRAQ labeling" "JC_P-0.1" "iTRAQ reagent 115" "" "" "8762" "8762" "8762" "spectrum.mzdata" "" "" "norm2" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation2" "PRIDE_Exp_Complete_Ac_8762.xml" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"C-0.2-aliquot11" "protein extraction" "C-0.2" "ITRAQ labeling" "Pool2" "iTRAQ reagent 114" "" "" "8762" "8762" "8762" "spectrum.mzdata" "" "" "norm2" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation2" "PRIDE_Exp_Complete_Ac_8762.xml" "" "" "" "" "l/hr" "" "" +"N-0.2-aliquot11" "protein extraction" "N-0.2" "ITRAQ labeling" "Pool2" "iTRAQ reagent 114" "" "" "8762" "8762" "8762" "spectrum.mzdata" "" "" "norm2" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation2" "PRIDE_Exp_Complete_Ac_8762.xml" "" "" "" "" "l/hr" "" "" +"P-0.1-aliquot11" "protein extraction" "P-0.1" "ITRAQ labeling" "Pool2" "iTRAQ reagent 114" "" "" "8762" "8762" "8762" "spectrum.mzdata" "" "" "norm2" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation2" "PRIDE_Exp_Complete_Ac_8762.xml" "" "" "" "" "l/hr" "" "" +"P-0.2-aliquot11" "protein extraction" "P-0.2" "ITRAQ labeling" "JC_P-0.2" "iTRAQ reagent 116" "" "" "8763" "8763" "8763" "spectrum.mzdata" "" "" "norm3" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation3" "PRIDE_Exp_Complete_Ac_8763.xml" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"S-0.2-aliquot11" "protein extraction" "S-0.2" "ITRAQ labeling" "JC_S-0.2" "iTRAQ reagent 115" "" "" "8763" "8763" "8763" "spectrum.mzdata" "" "" "norm3" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation3" "PRIDE_Exp_Complete_Ac_8763.xml" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hr" "" "" +"P-0.2-aliquot11" "protein extraction" "P-0.2" "ITRAQ labeling" "Pool3" "iTRAQ reagent 117" "" "" "8763" "8763" "8763" "spectrum.mzdata" "" "" "norm3" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation3" "PRIDE_Exp_Complete_Ac_8763.xml" "" "" "" "" "l/hr" "" "" +"S-0.2-aliquot11" "protein extraction" "S-0.2" "ITRAQ labeling" "Pool3" "iTRAQ reagent 117" "" "" "8763" "8763" "8763" "spectrum.mzdata" "" "" "norm3" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation3" "PRIDE_Exp_Complete_Ac_8763.xml" "" "" "" "" "l/hr" "" "" +"P-0.2-aliquot11" "protein extraction" "P-0.2" "ITRAQ labeling" "Pool3" "iTRAQ reagent 114" "" "" "8763" "8763" "8763" "spectrum.mzdata" "" "" "norm3" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation3" "PRIDE_Exp_Complete_Ac_8763.xml" "" "" "" "" "l/hr" "" "" +"S-0.2-aliquot11" "protein extraction" "S-0.2" "ITRAQ labeling" "Pool3" "iTRAQ reagent 114" "" "" "8763" "8763" "8763" "spectrum.mzdata" "" "" "norm3" "proteins.csv" "peptides.csv" "ptms.csv" "datatransformation3" "PRIDE_Exp_Complete_Ac_8763.xml" "" "" "" "" "l/hr" "" "" diff --git a/src/test/resources/test-data/BII-I-1/a_transcriptome.txt b/src/test/resources/test-data/BII-I-1/a_transcriptome.txt index 3618d9c5..4602ae12 100644 --- a/src/test/resources/test-data/BII-I-1/a_transcriptome.txt +++ b/src/test/resources/test-data/BII-I-1/a_transcriptome.txt @@ -1,49 +1,49 @@ -Sample Name Protocol REF Extract Name Protocol REF Labeled Extract Name Label Protocol REF Hybridization Assay Name Array Design REF Scan Name Array Data File Comment[Data Repository] Comment[Data Record Accession] Normalization Name Derived Array Data File Comment[Data Record Accession] Comment[Data Repository] Factor Value[limiting nutrient] Factor Value[rate] Unit -C-0.07-aliquot1 mRNA extraction C-0.07-aliquot1 biotin labeling C-0.07-aliquot1 biotin EukGE-WS4 HYB:MEXP:3908 A-AFFY-27 SCAN:MEXP:3908 E-MEXP-115-raw-data-331217737.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.07 l/hr -C-0.07-aliquot2 mRNA extraction C-0.07-aliquot2 biotin labeling C-0.07-aliquot2 biotin EukGE-WS4 HYB:MEXP:3909 A-AFFY-27 SCAN:MEXP:3909 E-MEXP-115-raw-data-331217860.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.07 l/hr -C-0.07-aliquot3 mRNA extraction C-0.07-aliquot3 biotin labeling C-0.07-aliquot3 biotin EukGE-WS4 HYB:MEXP:3910 A-AFFY-27 SCAN:MEXP:3910 E-MEXP-115-raw-data-331217979.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.07 l/hr -C-0.07-aliquot4 mRNA extraction C-0.07-aliquot4 biotin labeling C-0.07-aliquot4 biotin EukGE-WS4 HYB:MEXP:3907 A-AFFY-27 SCAN:MEXP:3907 E-MEXP-115-raw-data-331217580.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.07 l/hr -C-0.1-aliquot1 mRNA extraction C-0.1-aliquot1 biotin labeling C-0.1-aliquot1 biotin EukGE-WS4 HYB:MEXP:3912 A-AFFY-27 SCAN:MEXP:3912 E-MEXP-115-raw-data-331218271.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.1 l/hr -C-0.1-aliquot2 mRNA extraction C-0.1-aliquot2 biotin labeling C-0.1-aliquot2 biotin EukGE-WS4 HYB:MEXP:3913 A-AFFY-27 SCAN:MEXP:3913 E-MEXP-115-raw-data-331218449.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.1 l/hr -C-0.1-aliquot3 mRNA extraction C-0.1-aliquot3 biotin labeling C-0.1-aliquot3 biotin EukGE-WS4 HYB:MEXP:3914 A-AFFY-27 SCAN:MEXP:3914 E-MEXP-115-raw-data-331218681.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.1 l/hr -C-0.1-aliquot4 mRNA extraction C-0.1-aliquot4 biotin labeling C-0.1-aliquot4 biotin EukGE-WS4 HYB:MEXP:3911 A-AFFY-27 SCAN:MEXP:3911 E-MEXP-115-raw-data-331218116.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.1 l/hr -C-0.2-aliquot1 mRNA extraction C-0.2-aliquot1 biotin labeling C-0.2-aliquot1 biotin EukGE-WS4 HYB:MEXP:3916 A-AFFY-27 SCAN:MEXP:3916 E-MEXP-115-raw-data-331219013.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.2 l/hr -C-0.2-aliquot2 mRNA extraction C-0.2-aliquot2 biotin labeling C-0.2-aliquot2 biotin EukGE-WS4 HYB:MEXP:3915 A-AFFY-27 SCAN:MEXP:3915 E-MEXP-115-raw-data-331218842.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.2 l/hr -C-0.2-aliquot3 mRNA extraction C-0.2-aliquot3 biotin labeling C-0.2-aliquot3 biotin EukGE-WS4 HYB:MEXP:3918 A-AFFY-27 SCAN:MEXP:3918 E-MEXP-115-raw-data-331219245.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.2 l/hr -C-0.2-aliquot4 mRNA extraction C-0.2-aliquot4 biotin labeling C-0.2-aliquot4 biotin EukGE-WS4 HYB:MEXP:3917 A-AFFY-27 SCAN:MEXP:3917 E-MEXP-115-raw-data-331219131.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental carbon 0.2 l/hr -N-0.07-aliquot1 mRNA extraction N-0.07-aliquot1 biotin labeling N-0.07-aliquot1 biotin EukGE-WS4 HYB:MEXP:3919 A-AFFY-27 SCAN:MEXP:3919 E-MEXP-115-raw-data-331219361.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot2 mRNA extraction N-0.07-aliquot2 biotin labeling N-0.07-aliquot2 biotin EukGE-WS4 HYB:MEXP:3921 A-AFFY-27 SCAN:MEXP:3921 E-MEXP-115-raw-data-331219634.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot3 mRNA extraction N-0.07-aliquot3 biotin labeling N-0.07-aliquot3 biotin EukGE-WS4 HYB:MEXP:3922 A-AFFY-27 SCAN:MEXP:3922 E-MEXP-115-raw-data-331219767.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.07 l/hr -N-0.07-aliquot4 mRNA extraction N-0.07-aliquot4 biotin labeling N-0.07-aliquot4 biotin EukGE-WS4 HYB:MEXP:3920 A-AFFY-27 SCAN:MEXP:3920 E-MEXP-115-raw-data-331219490.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.07 l/hr -N-0.1-aliquot1 mRNA extraction N-0.1-aliquot1 biotin labeling N-0.1-aliquot1 biotin EukGE-WS4 HYB:MEXP:3926 A-AFFY-27 SCAN:MEXP:3926 E-MEXP-115-raw-data-331220431.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.1 l/hr -N-0.1-aliquot2 mRNA extraction N-0.1-aliquot2 biotin labeling N-0.1-aliquot2 biotin EukGE-WS4 HYB:MEXP:3923 A-AFFY-27 SCAN:MEXP:3923 E-MEXP-115-raw-data-331219914.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.1 l/hr -N-0.1-aliquot3 mRNA extraction N-0.1-aliquot3 biotin labeling N-0.1-aliquot3 biotin EukGE-WS4 HYB:MEXP:3925 A-AFFY-27 SCAN:MEXP:3925 E-MEXP-115-raw-data-331220272.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.1 l/hr -N-0.1-aliquot4 mRNA extraction N-0.1-aliquot4 biotin labeling N-0.1-aliquot4 biotin EukGE-WS4 HYB:MEXP:3924 A-AFFY-27 SCAN:MEXP:3924 E-MEXP-115-raw-data-331220090.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.1 l/hr -N-0.2-aliquot1 mRNA extraction N-0.2-aliquot1 biotin labeling N-0.2-aliquot1 biotin EukGE-WS4 HYB:MEXP:3930 A-AFFY-27 SCAN:MEXP:3930 E-MEXP-115-raw-data-331221148.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.2 l/hr -N-0.2-aliquot2 mRNA extraction N-0.2-aliquot2 biotin labeling N-0.2-aliquot2 biotin EukGE-WS4 HYB:MEXP:3929 A-AFFY-27 SCAN:MEXP:3929 E-MEXP-115-raw-data-331220982.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.2 l/hr -N-0.2-aliquot3 mRNA extraction N-0.2-aliquot3 biotin labeling N-0.2-aliquot3 biotin EukGE-WS4 HYB:MEXP:3928 A-AFFY-27 SCAN:MEXP:3928 E-MEXP-115-raw-data-331220784.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.2 l/hr -N-0.2-aliquot4 mRNA extraction N-0.2-aliquot4 biotin labeling N-0.2-aliquot4 biotin EukGE-WS4 HYB:MEXP:3927 A-AFFY-27 SCAN:MEXP:3927 E-MEXP-115-raw-data-331220607.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental nitrogen 0.2 l/hr -P-0.07-aliquot1 mRNA extraction P-0.07-aliquot1 biotin labeling P-0.07-aliquot1 biotin EukGE-WS4 HYB:MEXP:3932 A-AFFY-27 SCAN:MEXP:3932 E-MEXP-115-raw-data-331221518.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.07 l/hr -P-0.07-aliquot2 mRNA extraction P-0.07-aliquot2 biotin labeling P-0.07-aliquot2 biotin EukGE-WS4 HYB:MEXP:3934 A-AFFY-27 SCAN:MEXP:3934 E-MEXP-115-raw-data-331221873.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.07 l/hr -P-0.07-aliquot3 mRNA extraction P-0.07-aliquot3 biotin labeling P-0.07-aliquot3 biotin EukGE-WS4 HYB:MEXP:3931 A-AFFY-27 SCAN:MEXP:3931 E-MEXP-115-raw-data-331221345.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.07 l/hr -P-0.07-aliquot4 mRNA extraction P-0.07-aliquot4 biotin labeling P-0.07-aliquot4 biotin EukGE-WS4 HYB:MEXP:3933 A-AFFY-27 SCAN:MEXP:3933 E-MEXP-115-raw-data-331221668.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.07 l/hr -P-0.1-aliquot1 mRNA extraction P-0.1-aliquot1 biotin labeling P-0.1-aliquot1 biotin EukGE-WS4 HYB:MEXP:3938 A-AFFY-27 SCAN:MEXP:3938 E-MEXP-115-raw-data-331222534.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.1 l/hr -P-0.1-aliquot2 mRNA extraction P-0.1-aliquot2 biotin labeling P-0.1-aliquot2 biotin EukGE-WS4 HYB:MEXP:3935 A-AFFY-27 SCAN:MEXP:3935 E-MEXP-115-raw-data-331222054.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.1 l/hr -P-0.1-aliquot3 mRNA extraction P-0.1-aliquot3 biotin labeling P-0.1-aliquot3 biotin EukGE-WS4 HYB:MEXP:3937 A-AFFY-27 SCAN:MEXP:3937 E-MEXP-115-raw-data-331222380.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.1 l/hr -P-0.1-aliquot4 mRNA extraction P-0.1-aliquot4 biotin labeling P-0.1-aliquot4 biotin EukGE-WS4 HYB:MEXP:3936 A-AFFY-27 SCAN:MEXP:3936 E-MEXP-115-raw-data-331222215.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.1 l/hr -P-0.2-aliquot1 mRNA extraction P-0.2-aliquot1 biotin labeling P-0.2-aliquot1 biotin EukGE-WS4 HYB:MEXP:3940 A-AFFY-27 SCAN:MEXP:3940 E-MEXP-115-raw-data-331222917.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.2 l/hr -P-0.2-aliquot2 mRNA extraction P-0.2-aliquot2 biotin labeling P-0.2-aliquot2 biotin EukGE-WS4 HYB:MEXP:3941 A-AFFY-27 SCAN:MEXP:3941 E-MEXP-115-raw-data-331223115.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.2 l/hr -P-0.2-aliquot3 mRNA extraction P-0.2-aliquot3 biotin labeling P-0.2-aliquot3 biotin EukGE-WS4 HYB:MEXP:3942 A-AFFY-27 SCAN:MEXP:3942 E-MEXP-115-raw-data-331223321.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.2 l/hr -P-0.2-aliquot4 mRNA extraction P-0.2-aliquot4 biotin labeling P-0.2-aliquot4 biotin EukGE-WS4 HYB:MEXP:3939 A-AFFY-27 SCAN:MEXP:3939 E-MEXP-115-raw-data-331222701.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental phosphorus 0.2 l/hr -S-0.07-aliquot1 mRNA extraction S-0.07-aliquot1 biotin labeling S-0.07-aliquot1 biotin EukGE-WS4 HYB:MEXP:3944 A-AFFY-27 SCAN:MEXP:3944 E-MEXP-115-raw-data-331223667.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.07 l/hr -S-0.07-aliquot2 mRNA extraction S-0.07-aliquot2 biotin labeling S-0.07-aliquot2 biotin EukGE-WS4 HYB:MEXP:3945 A-AFFY-27 SCAN:MEXP:3945 E-MEXP-115-raw-data-331223835.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.07 l/hr -S-0.07-aliquot3 mRNA extraction S-0.07-aliquot3 biotin labeling S-0.07-aliquot3 biotin EukGE-WS4 HYB:MEXP:3946 A-AFFY-27 SCAN:MEXP:3946 E-MEXP-115-raw-data-331223977.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.07 l/hr -S-0.07-aliquot4 mRNA extraction S-0.07-aliquot4 biotin labeling S-0.07-aliquot4 biotin EukGE-WS4 HYB:MEXP:3943 A-AFFY-27 SCAN:MEXP:3943 E-MEXP-115-raw-data-331223501.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.07 l/hr -S-0.1-aliquot1 mRNA extraction S-0.1-aliquot1 biotin labeling S-0.1-aliquot1 biotin EukGE-WS4 HYB:MEXP:3948 A-AFFY-27 SCAN:MEXP:3948 E-MEXP-115-raw-data-331224301.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.1 l/hr -S-0.1-aliquot2 mRNA extraction S-0.1-aliquot2 biotin labeling S-0.1-aliquot2 biotin EukGE-WS4 HYB:MEXP:3947 A-AFFY-27 SCAN:MEXP:3947 E-MEXP-115-raw-data-331224145.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.1 l/hr -S-0.1-aliquot3 mRNA extraction S-0.1-aliquot3 biotin labeling S-0.1-aliquot3 biotin EukGE-WS4 HYB:MEXP:3950 A-AFFY-27 SCAN:MEXP:3950 E-MEXP-115-raw-data-331224703.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.1 l/hr -S-0.1-aliquot4 mRNA extraction S-0.1-aliquot4 biotin labeling S-0.1-aliquot4 biotin EukGE-WS4 HYB:MEXP:3949 A-AFFY-27 SCAN:MEXP:3949 E-MEXP-115-raw-data-331224480.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.1 l/hr -S-0.2-aliquot1 mRNA extraction S-0.2-aliquot1 biotin labeling S-0.2-aliquot1 biotin EukGE-WS4 HYB:MEXP:3951 A-AFFY-27 SCAN:MEXP:3951 E-MEXP-115-raw-data-331224884.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.2 l/hr -S-0.2-aliquot2 mRNA extraction S-0.2-aliquot2 biotin labeling S-0.2-aliquot2 biotin EukGE-WS4 HYB:MEXP:3954 A-AFFY-27 SCAN:MEXP:3954 E-MEXP-115-raw-data-331225401.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.2 l/hr -S-0.2-aliquot3 mRNA extraction S-0.2-aliquot3 biotin labeling S-0.2-aliquot3 biotin EukGE-WS4 HYB:MEXP:3952 A-AFFY-27 SCAN:MEXP:3952 E-MEXP-115-raw-data-331225097.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.2 l/hr -S-0.2-aliquot4 mRNA extraction S-0.2-aliquot4 biotin labeling S-0.2-aliquot4 biotin EukGE-WS4 HYB:MEXP:3953 A-AFFY-27 SCAN:MEXP:3953 E-MEXP-115-raw-data-331225235.txt GCRMA normalization E-MEXP-115-processed-data-1341986893.txt elemental sulfur 0.2 l/hr +"Sample Name" "Protocol REF" "Extract Name" "Protocol REF" "Labeled Extract Name" "Label" "Term Source REF" "Term Accession Number" "Protocol REF" "Hybridization Assay Name" "Array Design REF" "Scan Name" "Array Data File" "Comment[Data Repository]" "Comment[Data Record Accession]" "Normalization Name" "Derived Array Data File" "Comment[Data Record Accession]" "Comment[Data Repository]" "Factor Value[limiting nutrient]" "Term Source REF" "Term Accession Number" "Factor Value[rate]" "Unit" "Term Source REF" "Term Accession Number" +"C-0.07-aliquot1" "mRNA extraction" "C-0.07-aliquot1" "biotin labeling" "C-0.07-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3908" "A-AFFY-27" "SCAN:MEXP:3908" "E-MEXP-115-raw-data-331217737.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot2" "mRNA extraction" "C-0.07-aliquot2" "biotin labeling" "C-0.07-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3909" "A-AFFY-27" "SCAN:MEXP:3909" "E-MEXP-115-raw-data-331217860.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot3" "mRNA extraction" "C-0.07-aliquot3" "biotin labeling" "C-0.07-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3910" "A-AFFY-27" "SCAN:MEXP:3910" "E-MEXP-115-raw-data-331217979.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.07-aliquot4" "mRNA extraction" "C-0.07-aliquot4" "biotin labeling" "C-0.07-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3907" "A-AFFY-27" "SCAN:MEXP:3907" "E-MEXP-115-raw-data-331217580.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hr" "" "" +"C-0.1-aliquot1" "mRNA extraction" "C-0.1-aliquot1" "biotin labeling" "C-0.1-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3912" "A-AFFY-27" "SCAN:MEXP:3912" "E-MEXP-115-raw-data-331218271.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.1-aliquot2" "mRNA extraction" "C-0.1-aliquot2" "biotin labeling" "C-0.1-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3913" "A-AFFY-27" "SCAN:MEXP:3913" "E-MEXP-115-raw-data-331218449.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.1-aliquot3" "mRNA extraction" "C-0.1-aliquot3" "biotin labeling" "C-0.1-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3914" "A-AFFY-27" "SCAN:MEXP:3914" "E-MEXP-115-raw-data-331218681.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.1-aliquot4" "mRNA extraction" "C-0.1-aliquot4" "biotin labeling" "C-0.1-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3911" "A-AFFY-27" "SCAN:MEXP:3911" "E-MEXP-115-raw-data-331218116.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hr" "" "" +"C-0.2-aliquot1" "mRNA extraction" "C-0.2-aliquot1" "biotin labeling" "C-0.2-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3916" "A-AFFY-27" "SCAN:MEXP:3916" "E-MEXP-115-raw-data-331219013.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"C-0.2-aliquot2" "mRNA extraction" "C-0.2-aliquot2" "biotin labeling" "C-0.2-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3915" "A-AFFY-27" "SCAN:MEXP:3915" "E-MEXP-115-raw-data-331218842.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"C-0.2-aliquot3" "mRNA extraction" "C-0.2-aliquot3" "biotin labeling" "C-0.2-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3918" "A-AFFY-27" "SCAN:MEXP:3918" "E-MEXP-115-raw-data-331219245.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"C-0.2-aliquot4" "mRNA extraction" "C-0.2-aliquot4" "biotin labeling" "C-0.2-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3917" "A-AFFY-27" "SCAN:MEXP:3917" "E-MEXP-115-raw-data-331219131.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hr" "" "" +"N-0.07-aliquot1" "mRNA extraction" "N-0.07-aliquot1" "biotin labeling" "N-0.07-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3919" "A-AFFY-27" "SCAN:MEXP:3919" "E-MEXP-115-raw-data-331219361.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot2" "mRNA extraction" "N-0.07-aliquot2" "biotin labeling" "N-0.07-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3921" "A-AFFY-27" "SCAN:MEXP:3921" "E-MEXP-115-raw-data-331219634.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot3" "mRNA extraction" "N-0.07-aliquot3" "biotin labeling" "N-0.07-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3922" "A-AFFY-27" "SCAN:MEXP:3922" "E-MEXP-115-raw-data-331219767.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.07-aliquot4" "mRNA extraction" "N-0.07-aliquot4" "biotin labeling" "N-0.07-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3920" "A-AFFY-27" "SCAN:MEXP:3920" "E-MEXP-115-raw-data-331219490.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hr" "" "" +"N-0.1-aliquot1" "mRNA extraction" "N-0.1-aliquot1" "biotin labeling" "N-0.1-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3926" "A-AFFY-27" "SCAN:MEXP:3926" "E-MEXP-115-raw-data-331220431.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.1-aliquot2" "mRNA extraction" "N-0.1-aliquot2" "biotin labeling" "N-0.1-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3923" "A-AFFY-27" "SCAN:MEXP:3923" "E-MEXP-115-raw-data-331219914.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.1-aliquot3" "mRNA extraction" "N-0.1-aliquot3" "biotin labeling" "N-0.1-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3925" "A-AFFY-27" "SCAN:MEXP:3925" "E-MEXP-115-raw-data-331220272.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.1-aliquot4" "mRNA extraction" "N-0.1-aliquot4" "biotin labeling" "N-0.1-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3924" "A-AFFY-27" "SCAN:MEXP:3924" "E-MEXP-115-raw-data-331220090.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hr" "" "" +"N-0.2-aliquot1" "mRNA extraction" "N-0.2-aliquot1" "biotin labeling" "N-0.2-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3930" "A-AFFY-27" "SCAN:MEXP:3930" "E-MEXP-115-raw-data-331221148.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"N-0.2-aliquot2" "mRNA extraction" "N-0.2-aliquot2" "biotin labeling" "N-0.2-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3929" "A-AFFY-27" "SCAN:MEXP:3929" "E-MEXP-115-raw-data-331220982.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"N-0.2-aliquot3" "mRNA extraction" "N-0.2-aliquot3" "biotin labeling" "N-0.2-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3928" "A-AFFY-27" "SCAN:MEXP:3928" "E-MEXP-115-raw-data-331220784.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"N-0.2-aliquot4" "mRNA extraction" "N-0.2-aliquot4" "biotin labeling" "N-0.2-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3927" "A-AFFY-27" "SCAN:MEXP:3927" "E-MEXP-115-raw-data-331220607.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hr" "" "" +"P-0.07-aliquot1" "mRNA extraction" "P-0.07-aliquot1" "biotin labeling" "P-0.07-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3932" "A-AFFY-27" "SCAN:MEXP:3932" "E-MEXP-115-raw-data-331221518.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.07-aliquot2" "mRNA extraction" "P-0.07-aliquot2" "biotin labeling" "P-0.07-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3934" "A-AFFY-27" "SCAN:MEXP:3934" "E-MEXP-115-raw-data-331221873.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.07-aliquot3" "mRNA extraction" "P-0.07-aliquot3" "biotin labeling" "P-0.07-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3931" "A-AFFY-27" "SCAN:MEXP:3931" "E-MEXP-115-raw-data-331221345.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.07-aliquot4" "mRNA extraction" "P-0.07-aliquot4" "biotin labeling" "P-0.07-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3933" "A-AFFY-27" "SCAN:MEXP:3933" "E-MEXP-115-raw-data-331221668.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hr" "" "" +"P-0.1-aliquot1" "mRNA extraction" "P-0.1-aliquot1" "biotin labeling" "P-0.1-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3938" "A-AFFY-27" "SCAN:MEXP:3938" "E-MEXP-115-raw-data-331222534.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.1-aliquot2" "mRNA extraction" "P-0.1-aliquot2" "biotin labeling" "P-0.1-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3935" "A-AFFY-27" "SCAN:MEXP:3935" "E-MEXP-115-raw-data-331222054.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.1-aliquot3" "mRNA extraction" "P-0.1-aliquot3" "biotin labeling" "P-0.1-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3937" "A-AFFY-27" "SCAN:MEXP:3937" "E-MEXP-115-raw-data-331222380.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.1-aliquot4" "mRNA extraction" "P-0.1-aliquot4" "biotin labeling" "P-0.1-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3936" "A-AFFY-27" "SCAN:MEXP:3936" "E-MEXP-115-raw-data-331222215.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hr" "" "" +"P-0.2-aliquot1" "mRNA extraction" "P-0.2-aliquot1" "biotin labeling" "P-0.2-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3940" "A-AFFY-27" "SCAN:MEXP:3940" "E-MEXP-115-raw-data-331222917.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"P-0.2-aliquot2" "mRNA extraction" "P-0.2-aliquot2" "biotin labeling" "P-0.2-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3941" "A-AFFY-27" "SCAN:MEXP:3941" "E-MEXP-115-raw-data-331223115.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"P-0.2-aliquot3" "mRNA extraction" "P-0.2-aliquot3" "biotin labeling" "P-0.2-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3942" "A-AFFY-27" "SCAN:MEXP:3942" "E-MEXP-115-raw-data-331223321.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"P-0.2-aliquot4" "mRNA extraction" "P-0.2-aliquot4" "biotin labeling" "P-0.2-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3939" "A-AFFY-27" "SCAN:MEXP:3939" "E-MEXP-115-raw-data-331222701.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hr" "" "" +"S-0.07-aliquot1" "mRNA extraction" "S-0.07-aliquot1" "biotin labeling" "S-0.07-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3944" "A-AFFY-27" "SCAN:MEXP:3944" "E-MEXP-115-raw-data-331223667.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hr" "" "" +"S-0.07-aliquot2" "mRNA extraction" "S-0.07-aliquot2" "biotin labeling" "S-0.07-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3945" "A-AFFY-27" "SCAN:MEXP:3945" "E-MEXP-115-raw-data-331223835.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hr" "" "" +"S-0.07-aliquot3" "mRNA extraction" "S-0.07-aliquot3" "biotin labeling" "S-0.07-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3946" "A-AFFY-27" "SCAN:MEXP:3946" "E-MEXP-115-raw-data-331223977.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hr" "" "" +"S-0.07-aliquot4" "mRNA extraction" "S-0.07-aliquot4" "biotin labeling" "S-0.07-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3943" "A-AFFY-27" "SCAN:MEXP:3943" "E-MEXP-115-raw-data-331223501.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hr" "" "" +"S-0.1-aliquot1" "mRNA extraction" "S-0.1-aliquot1" "biotin labeling" "S-0.1-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3948" "A-AFFY-27" "SCAN:MEXP:3948" "E-MEXP-115-raw-data-331224301.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hr" "" "" +"S-0.1-aliquot2" "mRNA extraction" "S-0.1-aliquot2" "biotin labeling" "S-0.1-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3947" "A-AFFY-27" "SCAN:MEXP:3947" "E-MEXP-115-raw-data-331224145.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hr" "" "" +"S-0.1-aliquot3" "mRNA extraction" "S-0.1-aliquot3" "biotin labeling" "S-0.1-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3950" "A-AFFY-27" "SCAN:MEXP:3950" "E-MEXP-115-raw-data-331224703.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hr" "" "" +"S-0.1-aliquot4" "mRNA extraction" "S-0.1-aliquot4" "biotin labeling" "S-0.1-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3949" "A-AFFY-27" "SCAN:MEXP:3949" "E-MEXP-115-raw-data-331224480.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hr" "" "" +"S-0.2-aliquot1" "mRNA extraction" "S-0.2-aliquot1" "biotin labeling" "S-0.2-aliquot1" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3951" "A-AFFY-27" "SCAN:MEXP:3951" "E-MEXP-115-raw-data-331224884.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hr" "" "" +"S-0.2-aliquot2" "mRNA extraction" "S-0.2-aliquot2" "biotin labeling" "S-0.2-aliquot2" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3954" "A-AFFY-27" "SCAN:MEXP:3954" "E-MEXP-115-raw-data-331225401.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hr" "" "" +"S-0.2-aliquot3" "mRNA extraction" "S-0.2-aliquot3" "biotin labeling" "S-0.2-aliquot3" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3952" "A-AFFY-27" "SCAN:MEXP:3952" "E-MEXP-115-raw-data-331225097.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hr" "" "" +"S-0.2-aliquot4" "mRNA extraction" "S-0.2-aliquot4" "biotin labeling" "S-0.2-aliquot4" "biotin" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_15956" "EukGE-WS4" "HYB:MEXP:3953" "A-AFFY-27" "SCAN:MEXP:3953" "E-MEXP-115-raw-data-331225235.txt" "" "" "GCRMA normalization" "E-MEXP-115-processed-data-1341986893.txt" "" "" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hr" "" "" diff --git a/src/test/resources/test-data/BII-I-1/i_investigation.txt b/src/test/resources/test-data/BII-I-1/i_investigation.txt index 463faf37..08288133 100644 --- a/src/test/resources/test-data/BII-I-1/i_investigation.txt +++ b/src/test/resources/test-data/BII-I-1/i_investigation.txt @@ -1,17 +1,16 @@ ONTOLOGY SOURCE REFERENCE -Term Source Name "CHEBI" "CL" "OBI" "NCBITAXON" "OBI_BCGO" "PATO" "UO" -Term Source File "http://data.bioontology.org/ontologies/CHEBI" "http://data.bioontology.org/ontologies/CL" "http://data.bioontology.org/ontologies/OBI" "http://data.bioontology.org/ontologies/NCBITAXON" "http://data.bioontology.org/ontologies/OBI_BCGO" "http://data.bioontology.org/ontologies/PATO" "http://data.bioontology.org/ontologies/UO" -Term Source Version "78" "43" "21" "2" "8" "160" "42" -Term Source Description "Chemical Entities of Biological Interest Ontology" "Cell Ontology" "Ontology for Biomedical Investigations" "National Center for Biotechnology Information (NCBI) Organismal Classification" "Beta Cell Genomics Ontology" "Phenotypic Quality Ontology" "Units of Measurement Ontology" +Term Source Name "CHEBI" "OBI" "PATO" +Term Source File "http://data.bioontology.org/ontologies/CHEBI" "http://data.bioontology.org/ontologies/OBI" "http://data.bioontology.org/ontologies/PATO" +Term Source Version "78" "21" "160" +Term Source Description "Chemical Entities of Biological Interest Ontology" "Ontology for Biomedical Investigations" "Phenotypic Quality Ontology" INVESTIGATION Investigation Identifier "BII-I-1" Investigation Title "Growth control of the eukaryote cell: a systems biology study in yeast" Investigation Description "Background Cell growth underlies many key cellular and developmental processes, yet a limited number of studies have been carried out on cell-growth regulation. Comprehensive studies at the transcriptional, proteomic and metabolic levels under defined controlled conditions are currently lacking. Results Metabolic control analysis is being exploited in a systems biology study of the eukaryotic cell. Using chemostat culture, we have measured the impact of changes in flux (growth rate) on the transcriptome, proteome, endometabolome and exometabolome of the yeast Saccharomyces cerevisiae. Each functional genomic level shows clear growth-rate-associated trends and discriminates between carbon-sufficient and carbon-limited conditions. Genes consistently and significantly upregulated with increasing growth rate are frequently essential and encode evolutionarily conserved proteins of known function that participate in many protein-protein interactions. In contrast, more unknown, and fewer essential, genes are downregulated with increasing growth rate; their protein products rarely interact with one another. A large proportion of yeast genes under positive growth-rate control share orthologs with other eukaryotes, including humans. Significantly, transcription of genes encoding components of the TOR complex (a major controller of eukaryotic cell growth) is not subject to growth-rate regulation. Moreover, integrative studies reveal the extent and importance of post-transcriptional control, patterns of control of metabolic fluxes at the level of enzyme synthesis, and the relevance of specific enzymatic reactions in the control of metabolic fluxes during cell growth. Conclusion This work constitutes a first comprehensive systems biology study on growth-rate control in the eukaryotic cell. The results have direct implications for advanced studies on cell growth, in vivo regulation of metabolic fluxes for comprehensive metabolic engineering, and for the design of genome-scale systems biology models of the eukaryotic cell." Investigation Submission Date "2007-04-30" Investigation Public Release Date "2009-03-10" -Comment[Created with configuration] "" -Comment[Last Opened With Configuration] "" Comment[Created With Configuration] "" +Comment[Last Opened With Configuration] "" Comment[Owning Organisation URI] "" Comment[Consortium URI] "" Comment[Principal Investigator URI] "" @@ -73,14 +72,14 @@ Study Factor Type "chemical entity" "rate" Study Factor Type Term Accession Number "http://purl.obolibrary.org/obo/CHEBI_24431" "http://purl.obolibrary.org/obo/PATO_0000161" Study Factor Type Term Source REF "CHEBI" "PATO" STUDY ASSAYS -Study Assay File Name "a_proteome.txt" "a_metabolome.txt" "a_transcriptome.txt" -Study Assay Measurement Type "protein expression profiling" "metabolite profiling" "transcription profiling" -Study Assay Measurement Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000615" "http://purl.obolibrary.org/obo/OBI_0000366" "http://purl.obolibrary.org/obo/OBI_0000424" +Study Assay File Name "a_metabolome.txt" "a_proteome.txt" "a_transcriptome.txt" +Study Assay Measurement Type "metabolite profiling" "protein expression profiling" "transcription profiling" +Study Assay Measurement Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000366" "http://purl.obolibrary.org/obo/OBI_0000615" "http://purl.obolibrary.org/obo/OBI_0000424" Study Assay Measurement Type Term Source REF "OBI" "OBI" "OBI" Study Assay Technology Type "mass spectrometry" "mass spectrometry" "DNA microarray" Study Assay Technology Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000470" "http://purl.obolibrary.org/obo/OBI_0000470" "http://purl.obolibrary.org/obo/OBI_0400148" Study Assay Technology Type Term Source REF "OBI" "OBI" "OBI" -Study Assay Technology Platform "iTRAQ" "LC-MS/MS" "Affymetrix" +Study Assay Technology Platform "LC-MS/MS" "iTRAQ" "Affymetrix" STUDY PROTOCOLS Study Protocol Name "growth protocol" "mRNA extraction" "protein extraction" "biotin labeling" "ITRAQ labeling" "EukGE-WS4" "metabolite extraction" Study Protocol Type "growth" "RNA extraction" "extraction" "addition of molecular label" "addition of molecular label" "nucleic acid hybridization" "extraction" @@ -112,77 +111,3 @@ Comment[Study Person ORCID] "" "" "" Comment[Funder] "" "" "" Comment[FundRef ID] "" "" "" Comment[Grant Identifier] "" "" "" -STUDY -Study Identifier "BII-S-2" -Study File Name "s_BII-S-2.txt" -Study Title "A time course analysis of transcription response in yeast treated with rapamycin, a specific inhibitor of the TORC1 complex: impact on yeast growth" -Study Description "Comprehensive high-throughput analyses at the levels of mRNAs, proteins, and metabolites, and studies on gene expression patterns are required for systems biology studies of cell growth [4,26-29]. Although such comprehensive data sets are lacking, many studies have pointed to a central role for the target-of-rapamycin (TOR) signal transduction pathway in growth control. TOR is a serine/threonine kinase that has been conserved from yeasts to mammals; it integrates signals from nutrients or growth factors to regulate cell growth and cell-cycle progression coordinately. Although such comprehensive data sets are lacking, many studies have pointed to a central role for the target-of-rapamycin (TOR) signal transduction pathway in growth control. TOR is a serine/threonine kinase that has been conserved from yeasts to mammals; it integrates signals from nutrients or growth factors to regulate cell growth and cell-cycle progression coordinately. The effect of rapamycin were studied as follows: a culture growing at mid-exponential phase was divided into two. Rapamycin (200 ng/ml) was added to one half, and the drug's solvent to the other, as the control. Samples were taken at 0, 1, 2 and 4 h after treatment. Gene expression at the mRNA level was investigated by transcriptome analysis using Affymetrix hybridization arrays." -Study Submission Date "2007-04-30" -Study Public Release Date "2009-03-10" -Comment[Manuscript Licence] "CC BY 3.0" -Comment[Experimental Metadata Licence] "CC0" -Comment[Data Repository] "" -Comment[Data Record Accession] "" -Comment[Data Record URI] "" -Comment[Supplementary Information File Name] "" -Comment[Supplementary Information File Type] "" -Comment[Supplementary File URI] "" -Comment[Study Grant Number] "" -Comment[Study Funding Agency] "" -STUDY DESIGN DESCRIPTORS -Study Design Type "time series design" -Study Design Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0500020" -Study Design Type Term Source REF "OBI" -STUDY PUBLICATIONS -Study PubMed ID "17439666" -Study Publication DOI "" -Study Publication Author List "" -Study Publication Title "Growth control of the eukaryote cell: a systems biology study in yeast." -Study Publication Status "indexed in Pubmed" -Study Publication Status Term Accession Number "" -Study Publication Status Term Source REF "" -STUDY FACTORS -Study Factor Name "compound" "exposure time" "dose" -Study Factor Type "chemical entity" "time" "dose" -Study Factor Type Term Accession Number "http://purl.obolibrary.org/obo/CHEBI_24431" "http://purl.obolibrary.org/obo/PATO_0000165" "http://purl.obolibrary.org/obo/OBI_0000984" -Study Factor Type Term Source REF "CHEBI" "OBI_BCGO" "OBI" -STUDY ASSAYS -Study Assay File Name "a_microarray.txt" -Study Assay Measurement Type "transcription profiling" -Study Assay Measurement Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000424" -Study Assay Measurement Type Term Source REF "OBI" -Study Assay Technology Type "DNA microarray" -Study Assay Technology Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0400148" -Study Assay Technology Type Term Source REF "OBI" -Study Assay Technology Platform "Affymetrix" -STUDY PROTOCOLS -Study Protocol Name "EukGE-WS4" "mRNA extraction" "biotin labeling" "extraction" "labeling" "NMR spectroscopy" "nmr assay" "data normalization" "data transformation" -Study Protocol Type "nucleic acid hybridization" "RNA extraction" "addition of molecular label" "extraction" "addition of molecular label" "NMR spectroscopy" "nmr assay" "normalization data transformation" "data transformation" -Study Protocol Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0302903" "http://purl.obolibrary.org/obo/OBI_0666666" "http://purl.obolibrary.org/obo/OBI_0600038" "http://purl.obolibrary.org/obo/OBI_0302884" "http://purl.obolibrary.org/obo/OBI_0600038" "http://purl.obolibrary.org/obo/OBI_0000623" "" "http://purl.obolibrary.org/obo/OBI_0200169" "http://purl.obolibrary.org/obo/OBI_0200000" -Study Protocol Type Term Source REF "OBI" "OBI" "OBI" "OBI" "OBI" "OBI" "" "OBI" "OBI" -Study Protocol Description "For each target, a hybridisation cocktail was made using the standard array recipe as described in the GeneChip ??? Expression Analysis technical manual. GeneChip ??? control oligonucleotide and 20x eukaryotic hybridisation controls were used. Hybridisation buffer was made as detailed in the GeneChip ??? manual and the BSA and herring sperm DNA was purchased from Invitrogen. The cocktail was heated to 99 C for 5mins, transferred to 45 C for 5 min and then spun for 5 min to remove any insoluble material. Affymetrix Yeast Yg_s98 S. cerevisiae arrays were pre-hybridised with 200 ???l 1x hybridisation buffer and incubated at 45 C for 10 min. 200 ???l of the hybridisation cocktail was loaded onto the arrays. The probe array was incubated in a rotisserie at 45 C, rotating at 60 rpm. Following hybridisation, for 16hr, chips were loaded onto a Fluidics station for washing and staining using the EukGe WS2v4 programme controlled using Microarray Suite 5 software." "1. Biomass samples (45ml) were taken via the sample port of the Applikon fermenters. The cells were pelleted by centrifugation for 5min at 5000 rpm. The supernatant was removed and the RNA pellet resuspended in the residual medium to form a slurry. This was added in a dropwise manner directly into a 5ml Teflon flask (B. Braun Biotech, Germany) containing liquid nitrogen and a 7 mm-diameter tungsten carbide ball. After allowing evaporation of the liquid nitrogen the flask was reassembled and the cells disrupted by agitation at 1500 rpm for 2 min in a Microdismembranator U (B. Braun Biotech, Germany) 2. The frozen powder was then dissolved in 1 ml of TriZol reagent (Sigma-Aldrich, UK), vortexed for 1 min, and then kept at room temperature for a further 5 min. 3. Chloroform extraction was performed by addition of 0.2 ml chloroform, shaking vigorouslyor 15 s, then 5 min incubation at room temperature. 4. Following centrifugation at 12,000 rpm for 5 min, the RNA (contained in the aqueous phase) was precipitated with 0.5 vol of 2-propanol at room temperature for 15 min. 5. After further centrifugation (12,000 rpm for 10 min at 4 C) the RNA pellet was washed twice with 70 % (v/v) ethanol, briefly air-dried, and redissolved in 0.5 ml diethyl pyrocarbonate (DEPC)-treated water. 6. The single-stranded RNA was precipitated once more by addition of 0.5 ml of LiCl bffer (4 M LiCl, 20 mM Tris-HCl, pH 7.5, 10 mM EDTA), thus removing tRNA and DNA from the sample. 7. After precipitation (20 C for 1h) and centrifugation (12,000 rpm, 30 min, 4 C), the RNA was washed twice in 70 % (v/v) ethanol prior to being dissolved in a minimal volume of DEPC-treated water. 8. Total RNA quality was checked using the RNA 6000 Nano Assay, and analysed on an Agilent 2100 Bioanalyser (Agilent Technologies). RNA was quantified using the Nanodrop ultra low volume spectrophotometer (Nanodrop Technologies)." "This was done using Enzo BioArrayTM HighYieldTM RNA transcript labelling kit (T7) with 5 ul cDNA. The resultant cRNA was again purified using the GeneChip ??? Sample Clean Up Module. The column was eluted in the first instance using 10 ???l RNase-free water, and for a second time using 11 ???l RNase-free water. cRNA was quantified using the Nanodrop spectrophotometer. A total of 15 ug of cRNA (required for hybridisation) was fragmented. Fragmentation was carried out by using 2 ul of fragmentation buffer for every 8 ul cRNA." "" "" "" "" "" "" -Study Protocol URI "" "" "" "" "" "" "" "" "" -Study Protocol Version "" "" "" "" "" "" "" "" "" -Study Protocol Parameters Name "" "" "" "" "" ";;;" "" "" "" -Study Protocol Parameters Name Term Accession Number "" "" "" "" "" "" "" "" "" -Study Protocol Parameters Name Term Source REF "" "" "" "" "" "" "" "" "" -Study Protocol Components Name "" "" "" "" "" "" "" "" "" -Study Protocol Components Type "" "" "" "" "" "" "" "" "" -Study Protocol Components Type Term Accession Number "" "" "" "" "" "" "" "" "" -Study Protocol Components Type Term Source REF "" "" "" "" "" "" "" "" "" -STUDY CONTACTS -Study Person Last Name "Oliver" "Juan" "Leo" -Study Person First Name "Stephen" "Castrillo" "Zeef" -Study Person Mid Initials "G" "I" "A" -Study Person Email "" "" "" -Study Person Phone "" "" "" -Study Person Fax "" "" "" -Study Person Address "Oxford Road, Manchester M13 9PT, UK" "Oxford Road, Manchester M13 9PT, UK" "Oxford Road, Manchester M13 9PT, UK" -Study Person Affiliation "Faculty of Life Sciences, Michael Smith Building, University of Manchester" "Faculty of Life Sciences, Michael Smith Building, University of Manchester" "Faculty of Life Sciences, Michael Smith Building, University of Manchester" -Study Person Roles "corresponding author" "author" "author" -Study Person Roles Term Accession Number "" "" "" -Study Person Roles Term Source REF "" "" "" -Comment[Study Person ORCID] "" "" "" -Comment[Funder] "" "" "" -Comment[FundRef ID] "" "" "" -Comment[Grant Identifier] "" "" "" diff --git a/src/test/resources/test-data/BII-I-1/s_BII-S-1.txt b/src/test/resources/test-data/BII-I-1/s_BII-S-1.txt index 94f768d5..f0b691c1 100644 --- a/src/test/resources/test-data/BII-I-1/s_BII-S-1.txt +++ b/src/test/resources/test-data/BII-I-1/s_BII-S-1.txt @@ -1,165 +1,165 @@ -Source Name Characteristics[organism] Characteristics[strain] Characteristics[genotype] Protocol REF Sample Name Factor Value[limiting nutrient] Factor Value[rate] Unit -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot1 elemental carbon 0.07 l/hour -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot2 elemental carbon 0.07 l/hour -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot3 elemental carbon 0.07 l/hour -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot4 elemental carbon 0.07 l/hour -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot5 elemental carbon 0.07 l/hour -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot6 elemental carbon 0.07 l/hour -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot7 elemental carbon 0.07 l/hour -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot8 elemental carbon 0.07 l/hour -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot9 elemental carbon 0.07 l/hour -culture1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.07-aliquot10 elemental carbon 0.07 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot1 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot2 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot3 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot4 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot5 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot6 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot7 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot8 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot9 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot10 elemental carbon 0.1 l/hour -culture2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.1-aliquot11 elemental carbon 0.1 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot1 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot2 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot3 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot4 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot5 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot6 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot7 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot8 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot9 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot10 elemental carbon 0.2 l/hour -culture3 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol C-0.2-aliquot11 elemental carbon 0.2 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot1 elemental nitrogen 0.07 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot2 elemental nitrogen 0.07 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot3 elemental nitrogen 0.07 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot4 elemental nitrogen 0.07 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot5 elemental nitrogen 0.07 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot6 elemental nitrogen 0.07 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot7 elemental nitrogen 0.07 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot8 elemental nitrogen 0.07 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot9 elemental nitrogen 0.07 l/hour -culture4 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.07-aliquot10 elemental nitrogen 0.07 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot1 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot2 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot3 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot4 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot5 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot6 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot7 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot8 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot9 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot10 elemental nitrogen 0.1 l/hour -culture5 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.1-aliquot11 elemental nitrogen 0.1 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot1 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot2 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot3 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot4 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot5 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot6 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot7 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot8 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot9 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot10 elemental nitrogen 0.2 l/hour -culture6 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol N-0.2-aliquot11 elemental nitrogen 0.2 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot1 elemental phosphorus 0.07 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot2 elemental phosphorus 0.07 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot3 elemental phosphorus 0.07 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot4 elemental phosphorus 0.07 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot5 elemental phosphorus 0.07 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot6 elemental phosphorus 0.07 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot7 elemental phosphorus 0.07 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot8 elemental phosphorus 0.07 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot9 elemental phosphorus 0.07 l/hour -culture7 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.07-aliquot10 elemental phosphorus 0.07 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot1 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot2 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot3 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot4 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot5 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot6 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot7 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot8 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot9 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot10 elemental phosphorus 0.1 l/hour -culture8 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.1-aliquot11 elemental phosphorus 0.1 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot1 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot2 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot3 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot4 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot5 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot6 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot7 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot8 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot9 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot10 elemental phosphorus 0.2 l/hour -culture9 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol P-0.2-aliquot11 elemental phosphorus 0.2 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot1 elemental sulfur 0.07 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot2 elemental sulfur 0.07 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot3 elemental sulfur 0.07 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot4 elemental sulfur 0.07 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot5 elemental sulfur 0.07 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot6 elemental sulfur 0.07 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot7 elemental sulfur 0.07 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot8 elemental sulfur 0.07 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot9 elemental sulfur 0.07 l/hour -culture10 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.07-aliquot10 elemental sulfur 0.07 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot1 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot2 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot3 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot4 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot5 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot6 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot7 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot8 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot9 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot10 elemental sulfur 0.1 l/hour -culture11 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.1-aliquot11 elemental sulfur 0.1 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot1 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot2 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot3 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot4 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot5 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot6 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot7 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot8 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot9 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot10 elemental sulfur 0.2 l/hour -culture12 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol S-0.2-aliquot11 elemental sulfur 0.2 l/hour -culture13 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.07-aliquot1 ethanol 0.07 l/hour -culture13 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.07-aliquot2 ethanol 0.07 l/hour -culture13 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.07-aliquot3 ethanol 0.07 l/hour -culture13 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.07-aliquot4 ethanol 0.07 l/hour -culture13 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.07-aliquot5 ethanol 0.07 l/hour -culture13 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.07-aliquot6 ethanol 0.07 l/hour -culture14 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.1-aliquot1 ethanol 0.1 l/hour -culture14 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.1-aliquot2 ethanol 0.1 l/hour -culture14 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.1-aliquot3 ethanol 0.1 l/hour -culture14 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.1-aliquot4 ethanol 0.1 l/hour -culture14 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.1-aliquot5 ethanol 0.1 l/hour -culture14 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.1-aliquot6 ethanol 0.1 l/hour -culture15 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.2-aliquot1 ethanol 0.2 l/hour -culture15 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.2-aliquot2 ethanol 0.2 l/hour -culture15 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.2-aliquot3 ethanol 0.2 l/hour -culture15 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.2-aliquot4 ethanol 0.2 l/hour -culture15 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.2-aliquot5 ethanol 0.2 l/hour -culture15 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol E-0.2-aliquot6 ethanol 0.2 l/hour -culture16 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.07-aliquot1 glucose 0.07 l/hour -culture16 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.07-aliquot2 glucose 0.07 l/hour -culture16 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.07-aliquot3 glucose 0.07 l/hour -culture16 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.07-aliquot4 glucose 0.07 l/hour -culture16 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.07-aliquot5 glucose 0.07 l/hour -culture16 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.07-aliquot6 glucose 0.07 l/hour -culture17 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.1-aliquot1 glucose 0.1 l/hour -culture17 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.1-aliquot2 glucose 0.1 l/hour -culture17 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.1-aliquot3 glucose 0.1 l/hour -culture17 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.1-aliquot4 glucose 0.1 l/hour -culture17 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.1-aliquot5 glucose 0.1 l/hour -culture17 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.1-aliquot6 glucose 0.1 l/hour -culture18 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.2-aliquot1 glucose 0.2 l/hour -culture18 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.2-aliquot2 glucose 0.2 l/hour -culture18 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.2-aliquot3 glucose 0.2 l/hour -culture18 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.2-aliquot4 glucose 0.2 l/hour -culture18 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.2-aliquot5 glucose 0.2 l/hour -culture18 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD growth protocol G-0.2-aliquot6 glucose 0.2 l/hour +"Source Name" "Characteristics[organism]" "Term Source REF" "Term Accession Number" "Characteristics[strain]" "Term Source REF" "Term Accession Number" "Characteristics[genotype]" "Term Source REF" "Term Accession Number" "Protocol REF" "Sample Name" "Factor Value[limiting nutrient]" "Term Source REF" "Term Accession Number" "Factor Value[rate]" "Unit" "Term Source REF" "Term Accession Number" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot1" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot2" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot3" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot4" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot5" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot6" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot7" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot8" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot9" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.07-aliquot10" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.07" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot1" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot2" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot3" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot4" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot5" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot6" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot7" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot8" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot9" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot10" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.1-aliquot11" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.1" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot1" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot2" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot3" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot4" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot5" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot6" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot7" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot8" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot9" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot10" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture3" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "C-0.2-aliquot11" "elemental carbon" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33415" "0.2" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot1" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot2" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot3" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot4" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot5" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot6" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot7" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot8" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot9" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture4" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.07-aliquot10" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.07" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot1" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot2" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot3" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot4" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot5" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot6" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot7" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot8" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot9" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot10" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture5" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.1-aliquot11" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.1" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot1" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot2" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot3" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot4" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot5" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot6" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot7" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot8" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot9" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot10" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture6" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "N-0.2-aliquot11" "elemental nitrogen" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33267" "0.2" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot1" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot2" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot3" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot4" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot5" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot6" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot7" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot8" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot9" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture7" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.07-aliquot10" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.07" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot1" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot2" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot3" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot4" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot5" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot6" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot7" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot8" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot9" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot10" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture8" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.1-aliquot11" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.1" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot1" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot2" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot3" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot4" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot5" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot6" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot7" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot8" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot9" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot10" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture9" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "P-0.2-aliquot11" "elemental phosphorus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33464" "0.2" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot1" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot2" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot3" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot4" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot5" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot6" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot7" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot8" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot9" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture10" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.07-aliquot10" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.07" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot1" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot2" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot3" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot4" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot5" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot6" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot7" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot8" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot9" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot10" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture11" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.1-aliquot11" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.1" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot1" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot2" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot3" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot4" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot5" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot6" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot7" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot8" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot9" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot10" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture12" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "S-0.2-aliquot11" "elemental sulfur" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_33403" "0.2" "l/hour" "" "" +"culture13" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.07-aliquot1" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hour" "" "" +"culture13" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.07-aliquot2" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hour" "" "" +"culture13" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.07-aliquot3" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hour" "" "" +"culture13" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.07-aliquot4" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hour" "" "" +"culture13" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.07-aliquot5" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hour" "" "" +"culture13" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.07-aliquot6" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.07" "l/hour" "" "" +"culture14" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.1-aliquot1" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hour" "" "" +"culture14" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.1-aliquot2" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hour" "" "" +"culture14" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.1-aliquot3" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hour" "" "" +"culture14" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.1-aliquot4" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hour" "" "" +"culture14" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.1-aliquot5" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hour" "" "" +"culture14" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.1-aliquot6" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.1" "l/hour" "" "" +"culture15" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.2-aliquot1" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.2" "l/hour" "" "" +"culture15" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.2-aliquot2" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.2" "l/hour" "" "" +"culture15" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.2-aliquot3" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.2" "l/hour" "" "" +"culture15" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.2-aliquot4" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.2" "l/hour" "" "" +"culture15" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.2-aliquot5" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.2" "l/hour" "" "" +"culture15" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "E-0.2-aliquot6" "ethanol" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_16236" "0.2" "l/hour" "" "" +"culture16" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.07-aliquot1" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hour" "" "" +"culture16" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.07-aliquot2" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hour" "" "" +"culture16" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.07-aliquot3" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hour" "" "" +"culture16" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.07-aliquot4" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hour" "" "" +"culture16" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.07-aliquot5" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hour" "" "" +"culture16" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.07-aliquot6" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.07" "l/hour" "" "" +"culture17" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.1-aliquot1" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hour" "" "" +"culture17" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.1-aliquot2" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hour" "" "" +"culture17" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.1-aliquot3" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hour" "" "" +"culture17" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.1-aliquot4" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hour" "" "" +"culture17" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.1-aliquot5" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hour" "" "" +"culture17" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.1-aliquot6" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.1" "l/hour" "" "" +"culture18" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.2-aliquot1" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hour" "" "" +"culture18" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.2-aliquot2" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hour" "" "" +"culture18" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.2-aliquot3" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hour" "" "" +"culture18" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.2-aliquot4" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hour" "" "" +"culture18" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.2-aliquot5" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hour" "" "" +"culture18" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "growth protocol" "G-0.2-aliquot6" "glucose" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_17234" "0.2" "l/hour" "" "" diff --git a/src/test/resources/test-data/BII-I-1/s_BII-S-2.txt b/src/test/resources/test-data/BII-I-1/s_BII-S-2.txt index 36b3b3ef..9c366671 100644 --- a/src/test/resources/test-data/BII-I-1/s_BII-S-2.txt +++ b/src/test/resources/test-data/BII-I-1/s_BII-S-2.txt @@ -1,15 +1,15 @@ -Source Name Characteristics[organism] Characteristics[strain] Characteristics[genotype] Characteristics[mating type] Protocol REF Sample Name Factor Value[dose] Unit Factor Value[exposure time] Unit Factor Value[compound] -NZ_0hrs_Grow_1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_0hrs_Grow1_Sample_1 0 nanogram per milliliter 0 hour -NZ_0hrs_Grow_1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_1hrs_Grow1_Drug_Sample_1 200 nanogram per milliliter 1 hour sirolimus -NZ_0hrs_Grow_1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_2hrs_Grow1_Drug_Sample_1 200 nanogram per milliliter 2 hour sirolimus -NZ_0hrs_Grow_1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_4hrs_Grow1_Drug_Sample_1 200 nanogram per milliliter 4 hour sirolimus -NZ_0hrs_Grow_1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_2hrs_Grow1_Vehicle_Sample_1 0 nanogram per milliliter 2 hour drug vehicle (90% ethanol/10% tween-20) -NZ_0hrs_Grow_1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_4hrs_Grow1_Vehicle_Sample_1 0 nanogram per milliliter 4 hour drug vehicle (90% ethanol/10% tween-20) -NZ_0hrs_Grow_1 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_1hrs_Grow1_Vehicle_Sample_1 0 nanogram per milliliter 1 hour drug vehicle (90% ethanol/10% tween-20) -NZ_0hrs_Grow_2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_0hrs_Grow2_Sample_2 0 nanogram per milliliter 0 hour -NZ_0hrs_Grow_2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_1hrs_Grow2_Drug_Sample_2 200 nanogram per milliliter 1 hour sirolimus -NZ_0hrs_Grow_2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_4hrs_Grow2_Drug_Sample_2 200 nanogram per milliliter 4 hour sirolimus -NZ_0hrs_Grow_2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_2hrs_Grow2_Drug_Sample_2 200 nanogram per milliliter 2 hour sirolimus -NZ_0hrs_Grow_2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_1hrs_Grow2_Vehicle_Sample_2 0 nanogram per milliliter 1 hour drug vehicle (90% ethanol/10% tween-20) -NZ_0hrs_Grow_2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_2hrs_Grow2_Vehicle_Sample_2 0 nanogram per milliliter 2 hour drug vehicle (90% ethanol/10% tween-20) -NZ_0hrs_Grow_2 Saccharomyces cerevisiae FY1679 KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD alpha mating type (yeast) NZ_4hrs_Grow2_Vehicle_Sample_2 0 nanogram per milliliter 4 hour drug vehicle (90% ethanol/10% tween-20) +"Source Name" "Characteristics[organism]" "Term Source REF" "Term Accession Number" "Characteristics[strain]" "Term Source REF" "Term Accession Number" "Characteristics[genotype]" "Term Source REF" "Term Accession Number" "Characteristics[mating type]" "Term Source REF" "Term Accession Number" "Protocol REF" "Sample Name" "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_Grow_1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_0hrs_Grow1_Sample_1" "0" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "0" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "" "" "" +"NZ_0hrs_Grow_1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_1hrs_Grow1_Drug_Sample_1" "200" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "1" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"NZ_0hrs_Grow_1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_2hrs_Grow1_Drug_Sample_1" "200" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "2" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"NZ_0hrs_Grow_1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_4hrs_Grow1_Drug_Sample_1" "200" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "4" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"NZ_0hrs_Grow_1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_2hrs_Grow1_Vehicle_Sample_1" "0" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "2" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "drug vehicle (90% ethanol/10% tween-20)" "" "" +"NZ_0hrs_Grow_1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_4hrs_Grow1_Vehicle_Sample_1" "0" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "4" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "drug vehicle (90% ethanol/10% tween-20)" "" "" +"NZ_0hrs_Grow_1" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_1hrs_Grow1_Vehicle_Sample_1" "0" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "1" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "drug vehicle (90% ethanol/10% tween-20)" "" "" +"NZ_0hrs_Grow_2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_0hrs_Grow2_Sample_2" "0" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "0" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "" "" "" +"NZ_0hrs_Grow_2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_1hrs_Grow2_Drug_Sample_2" "200" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "1" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"NZ_0hrs_Grow_2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_4hrs_Grow2_Drug_Sample_2" "200" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "4" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"NZ_0hrs_Grow_2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_2hrs_Grow2_Drug_Sample_2" "200" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "2" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "sirolimus" "CHEBI" "http://purl.obolibrary.org/obo/CHEBI_9168" +"NZ_0hrs_Grow_2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_1hrs_Grow2_Vehicle_Sample_2" "0" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "1" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "drug vehicle (90% ethanol/10% tween-20)" "" "" +"NZ_0hrs_Grow_2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_2hrs_Grow2_Vehicle_Sample_2" "0" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "2" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "drug vehicle (90% ethanol/10% tween-20)" "" "" +"NZ_0hrs_Grow_2" "Saccharomyces cerevisiae" "NCBITAXON" "http://purl.obolibrary.org/obo/NCBITaxon_4932" "FY1679" "" "" "KanMx4 MATa/MATalpha ura3-52/ura3-52 leu2-1/+trp1-63/+his3-D200/+ hoD KanMx4/hoD" "" "" "alpha mating type (yeast)" "OBI" "http://purl.obolibrary.org/obo/PATO_0001344" "" "NZ_4hrs_Grow2_Vehicle_Sample_2" "0" "nanogram per milliliter" "UO" "http://purl.obolibrary.org/obo/UO_0000275" "4" "hour" "UO" "http://purl.obolibrary.org/obo/UO_0000032" "drug vehicle (90% ethanol/10% tween-20)" "" "" From 1ec996f27ad7206b8dac1596dac5d1b51eb8cb7b Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Mon, 1 Sep 2014 13:38:12 +0100 Subject: [PATCH 33/48] Expanded test for ISAtabFilesImporter class --- .../io/importisa/ISAtabFilesImporterTest.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java b/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java index 171e1547..51d21c97 100644 --- a/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java +++ b/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java @@ -86,6 +86,8 @@ public void importFileTest() { //System.out.println("ontology selection history=" + OntologyManager.getOntologySelectionHistory()); System.out.println("ontology selection history size=" + OntologyManager.getOntologyTermsSize()); + + //the assay measurement OntologyTerm ontologyTerm = OntologyManager.getOntologyTerm("OBI:metabolite profiling"); System.out.println("ontology term=" + ontologyTerm); @@ -93,6 +95,31 @@ public void importFileTest() { assert(!ontologyTerm.getOntologyTermURI().equals("")); + //the study descriptor + ontologyTerm = OntologyManager.getOntologyTerm("OBI:intervention design"); + + System.out.println("ontology term=" + ontologyTerm); + System.out.println("term URI = "+ontologyTerm.getOntologyTermURI()); + + assert(!ontologyTerm.getOntologyTermURI().equals("")); + + //an annotation from the study sample table + ontologyTerm = OntologyManager.getOntologyTerm("NCBITAXON:Saccharomyces cerevisiae"); + + System.out.println("ontology term=" + ontologyTerm); + System.out.println("term URI = "+ontologyTerm.getOntologyTermURI()); + + assert(!ontologyTerm.getOntologyTermURI().equals("")); + + ontologyTerm = OntologyManager.getOntologyTerm("CL:intracellular"); + + System.out.println("ontology term=" + ontologyTerm); + System.out.println("term URI = "+ontologyTerm.getOntologyTermURI()); + + assert(!ontologyTerm.getOntologyTermURI().equals("")); + + System.out.println(inv.getStudies().size()); + assertTrue("Oh no, I didnt' get the expected number of studies :(", inv.getStudies().size() == 2); } From 877be0b6aa14dec82b034c21a12e2a15c29d8dc4 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Mon, 1 Sep 2014 14:39:49 +0100 Subject: [PATCH 34/48] Expanded test to consider ontology sources --- .../ontologymanager/OntologyManager.java | 21 ++++- .../io/importisa/ISAtabFilesImporterTest.java | 28 ++++-- .../test-data/BII-I-1/i_investigation.txt | 93 +++++++++++++++++-- 3 files changed, 121 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java b/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java index 0e389fa0..54312c67 100644 --- a/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java +++ b/src/main/java/org/isatools/isacreator/ontologymanager/OntologyManager.java @@ -39,6 +39,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import org.isatools.isacreator.configuration.Ontology; import org.isatools.isacreator.configuration.RecommendedOntology; +import org.isatools.isacreator.ontologymanager.bioportal.io.AcceptedOntologies; import org.isatools.isacreator.ontologymanager.common.OntologyTerm; import org.isatools.isacreator.settings.ISAcreatorProperties; @@ -187,14 +188,26 @@ public static void clearOntologyTerms(){ * * @return */ - public static Set getOntologiesUsed(){ + public static Set getOntologiesUsed() { Set set = new HashSet(); - for(OntologyTerm ot: ontologyTerms.values()){ - set.add(ot.getOntologySourceInformation()); + for (OntologyTerm ot : ontologyTerms.values()) { + if (ot.getOntologySourceInformation() != null) { + set.add(ot.getOntologySourceInformation()); + } else { + String termSource = ot.getOntologySource(); + OntologySourceRefObject osro; + if ((osro = OntologyManager.getOntologySourceReferenceObjectByAbbreviation(termSource)) == null) { + String ontologyURI = AcceptedOntologies.getOntologyIdForAbbreviation(termSource); + Ontology ontology = AcceptedOntologies.getAcceptedOntologies().get(ontologyURI); + if (ontology != null) { + osro = AcceptedOntologies.convertOntologyToOntologySourceRefObject(ontology); + } + set.add(osro); + } + } } return set; } - /*** end of ontologyTerms methods ****/ /*** ontologySources methods ****/ diff --git a/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java b/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java index 51d21c97..f1e7d621 100644 --- a/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java +++ b/src/test/java/org/isatools/isacreator/io/importisa/ISAtabFilesImporterTest.java @@ -6,6 +6,7 @@ import org.isatools.isacreator.io.CommonTestIO; import org.isatools.isacreator.model.Investigation; import org.isatools.isacreator.ontologymanager.OntologyManager; +import org.isatools.isacreator.ontologymanager.OntologySourceRefObject; import org.isatools.isacreator.ontologymanager.common.OntologyTerm; import org.isatools.isacreator.settings.ISAcreatorProperties; import org.isatools.isacreator.utils.PropertyFileIO; @@ -89,37 +90,48 @@ public void importFileTest() { //the assay measurement OntologyTerm ontologyTerm = OntologyManager.getOntologyTerm("OBI:metabolite profiling"); - + OntologySourceRefObject ontologySourceRefObject = ontologyTerm.getOntologySourceInformation(); System.out.println("ontology term=" + ontologyTerm); System.out.println("term URI = "+ontologyTerm.getOntologyTermURI()); - + System.out.println(ontologySourceRefObject); assert(!ontologyTerm.getOntologyTermURI().equals("")); + assert(ontologySourceRefObject!=null); //the study descriptor ontologyTerm = OntologyManager.getOntologyTerm("OBI:intervention design"); - + ontologySourceRefObject = ontologyTerm.getOntologySourceInformation(); System.out.println("ontology term=" + ontologyTerm); System.out.println("term URI = "+ontologyTerm.getOntologyTermURI()); - + System.out.println(ontologySourceRefObject); assert(!ontologyTerm.getOntologyTermURI().equals("")); + assert(ontologySourceRefObject!=null); //an annotation from the study sample table ontologyTerm = OntologyManager.getOntologyTerm("NCBITAXON:Saccharomyces cerevisiae"); - + ontologySourceRefObject = ontologyTerm.getOntologySourceInformation(); System.out.println("ontology term=" + ontologyTerm); System.out.println("term URI = "+ontologyTerm.getOntologyTermURI()); - + System.out.println(ontologyTerm.getOntologySourceInformation()); assert(!ontologyTerm.getOntologyTermURI().equals("")); + assert(ontologySourceRefObject!=null); ontologyTerm = OntologyManager.getOntologyTerm("CL:intracellular"); - + ontologySourceRefObject = ontologyTerm.getOntologySourceInformation(); System.out.println("ontology term=" + ontologyTerm); System.out.println("term URI = "+ontologyTerm.getOntologyTermURI()); + System.out.println(ontologySourceRefObject); + assert(!ontologyTerm.getOntologyTermURI().equals("")); + assert(ontologySourceRefObject!=null); + ontologyTerm = OntologyManager.getOntologyTerm("CL:extracellular region part"); + ontologySourceRefObject = ontologyTerm.getOntologySourceInformation(); + System.out.println("ontology term=" + ontologyTerm); + System.out.println("term URI = "+ontologyTerm.getOntologyTermURI()); + System.out.println(ontologySourceRefObject); assert(!ontologyTerm.getOntologyTermURI().equals("")); + assert(ontologySourceRefObject!=null); System.out.println(inv.getStudies().size()); - assertTrue("Oh no, I didnt' get the expected number of studies :(", inv.getStudies().size() == 2); } diff --git a/src/test/resources/test-data/BII-I-1/i_investigation.txt b/src/test/resources/test-data/BII-I-1/i_investigation.txt index 08288133..463faf37 100644 --- a/src/test/resources/test-data/BII-I-1/i_investigation.txt +++ b/src/test/resources/test-data/BII-I-1/i_investigation.txt @@ -1,16 +1,17 @@ ONTOLOGY SOURCE REFERENCE -Term Source Name "CHEBI" "OBI" "PATO" -Term Source File "http://data.bioontology.org/ontologies/CHEBI" "http://data.bioontology.org/ontologies/OBI" "http://data.bioontology.org/ontologies/PATO" -Term Source Version "78" "21" "160" -Term Source Description "Chemical Entities of Biological Interest Ontology" "Ontology for Biomedical Investigations" "Phenotypic Quality Ontology" +Term Source Name "CHEBI" "CL" "OBI" "NCBITAXON" "OBI_BCGO" "PATO" "UO" +Term Source File "http://data.bioontology.org/ontologies/CHEBI" "http://data.bioontology.org/ontologies/CL" "http://data.bioontology.org/ontologies/OBI" "http://data.bioontology.org/ontologies/NCBITAXON" "http://data.bioontology.org/ontologies/OBI_BCGO" "http://data.bioontology.org/ontologies/PATO" "http://data.bioontology.org/ontologies/UO" +Term Source Version "78" "43" "21" "2" "8" "160" "42" +Term Source Description "Chemical Entities of Biological Interest Ontology" "Cell Ontology" "Ontology for Biomedical Investigations" "National Center for Biotechnology Information (NCBI) Organismal Classification" "Beta Cell Genomics Ontology" "Phenotypic Quality Ontology" "Units of Measurement Ontology" INVESTIGATION Investigation Identifier "BII-I-1" Investigation Title "Growth control of the eukaryote cell: a systems biology study in yeast" Investigation Description "Background Cell growth underlies many key cellular and developmental processes, yet a limited number of studies have been carried out on cell-growth regulation. Comprehensive studies at the transcriptional, proteomic and metabolic levels under defined controlled conditions are currently lacking. Results Metabolic control analysis is being exploited in a systems biology study of the eukaryotic cell. Using chemostat culture, we have measured the impact of changes in flux (growth rate) on the transcriptome, proteome, endometabolome and exometabolome of the yeast Saccharomyces cerevisiae. Each functional genomic level shows clear growth-rate-associated trends and discriminates between carbon-sufficient and carbon-limited conditions. Genes consistently and significantly upregulated with increasing growth rate are frequently essential and encode evolutionarily conserved proteins of known function that participate in many protein-protein interactions. In contrast, more unknown, and fewer essential, genes are downregulated with increasing growth rate; their protein products rarely interact with one another. A large proportion of yeast genes under positive growth-rate control share orthologs with other eukaryotes, including humans. Significantly, transcription of genes encoding components of the TOR complex (a major controller of eukaryotic cell growth) is not subject to growth-rate regulation. Moreover, integrative studies reveal the extent and importance of post-transcriptional control, patterns of control of metabolic fluxes at the level of enzyme synthesis, and the relevance of specific enzymatic reactions in the control of metabolic fluxes during cell growth. Conclusion This work constitutes a first comprehensive systems biology study on growth-rate control in the eukaryotic cell. The results have direct implications for advanced studies on cell growth, in vivo regulation of metabolic fluxes for comprehensive metabolic engineering, and for the design of genome-scale systems biology models of the eukaryotic cell." Investigation Submission Date "2007-04-30" Investigation Public Release Date "2009-03-10" -Comment[Created With Configuration] "" +Comment[Created with configuration] "" Comment[Last Opened With Configuration] "" +Comment[Created With Configuration] "" Comment[Owning Organisation URI] "" Comment[Consortium URI] "" Comment[Principal Investigator URI] "" @@ -72,14 +73,14 @@ Study Factor Type "chemical entity" "rate" Study Factor Type Term Accession Number "http://purl.obolibrary.org/obo/CHEBI_24431" "http://purl.obolibrary.org/obo/PATO_0000161" Study Factor Type Term Source REF "CHEBI" "PATO" STUDY ASSAYS -Study Assay File Name "a_metabolome.txt" "a_proteome.txt" "a_transcriptome.txt" -Study Assay Measurement Type "metabolite profiling" "protein expression profiling" "transcription profiling" -Study Assay Measurement Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000366" "http://purl.obolibrary.org/obo/OBI_0000615" "http://purl.obolibrary.org/obo/OBI_0000424" +Study Assay File Name "a_proteome.txt" "a_metabolome.txt" "a_transcriptome.txt" +Study Assay Measurement Type "protein expression profiling" "metabolite profiling" "transcription profiling" +Study Assay Measurement Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000615" "http://purl.obolibrary.org/obo/OBI_0000366" "http://purl.obolibrary.org/obo/OBI_0000424" Study Assay Measurement Type Term Source REF "OBI" "OBI" "OBI" Study Assay Technology Type "mass spectrometry" "mass spectrometry" "DNA microarray" Study Assay Technology Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000470" "http://purl.obolibrary.org/obo/OBI_0000470" "http://purl.obolibrary.org/obo/OBI_0400148" Study Assay Technology Type Term Source REF "OBI" "OBI" "OBI" -Study Assay Technology Platform "LC-MS/MS" "iTRAQ" "Affymetrix" +Study Assay Technology Platform "iTRAQ" "LC-MS/MS" "Affymetrix" STUDY PROTOCOLS Study Protocol Name "growth protocol" "mRNA extraction" "protein extraction" "biotin labeling" "ITRAQ labeling" "EukGE-WS4" "metabolite extraction" Study Protocol Type "growth" "RNA extraction" "extraction" "addition of molecular label" "addition of molecular label" "nucleic acid hybridization" "extraction" @@ -111,3 +112,77 @@ Comment[Study Person ORCID] "" "" "" Comment[Funder] "" "" "" Comment[FundRef ID] "" "" "" Comment[Grant Identifier] "" "" "" +STUDY +Study Identifier "BII-S-2" +Study File Name "s_BII-S-2.txt" +Study Title "A time course analysis of transcription response in yeast treated with rapamycin, a specific inhibitor of the TORC1 complex: impact on yeast growth" +Study Description "Comprehensive high-throughput analyses at the levels of mRNAs, proteins, and metabolites, and studies on gene expression patterns are required for systems biology studies of cell growth [4,26-29]. Although such comprehensive data sets are lacking, many studies have pointed to a central role for the target-of-rapamycin (TOR) signal transduction pathway in growth control. TOR is a serine/threonine kinase that has been conserved from yeasts to mammals; it integrates signals from nutrients or growth factors to regulate cell growth and cell-cycle progression coordinately. Although such comprehensive data sets are lacking, many studies have pointed to a central role for the target-of-rapamycin (TOR) signal transduction pathway in growth control. TOR is a serine/threonine kinase that has been conserved from yeasts to mammals; it integrates signals from nutrients or growth factors to regulate cell growth and cell-cycle progression coordinately. The effect of rapamycin were studied as follows: a culture growing at mid-exponential phase was divided into two. Rapamycin (200 ng/ml) was added to one half, and the drug's solvent to the other, as the control. Samples were taken at 0, 1, 2 and 4 h after treatment. Gene expression at the mRNA level was investigated by transcriptome analysis using Affymetrix hybridization arrays." +Study Submission Date "2007-04-30" +Study Public Release Date "2009-03-10" +Comment[Manuscript Licence] "CC BY 3.0" +Comment[Experimental Metadata Licence] "CC0" +Comment[Data Repository] "" +Comment[Data Record Accession] "" +Comment[Data Record URI] "" +Comment[Supplementary Information File Name] "" +Comment[Supplementary Information File Type] "" +Comment[Supplementary File URI] "" +Comment[Study Grant Number] "" +Comment[Study Funding Agency] "" +STUDY DESIGN DESCRIPTORS +Study Design Type "time series design" +Study Design Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0500020" +Study Design Type Term Source REF "OBI" +STUDY PUBLICATIONS +Study PubMed ID "17439666" +Study Publication DOI "" +Study Publication Author List "" +Study Publication Title "Growth control of the eukaryote cell: a systems biology study in yeast." +Study Publication Status "indexed in Pubmed" +Study Publication Status Term Accession Number "" +Study Publication Status Term Source REF "" +STUDY FACTORS +Study Factor Name "compound" "exposure time" "dose" +Study Factor Type "chemical entity" "time" "dose" +Study Factor Type Term Accession Number "http://purl.obolibrary.org/obo/CHEBI_24431" "http://purl.obolibrary.org/obo/PATO_0000165" "http://purl.obolibrary.org/obo/OBI_0000984" +Study Factor Type Term Source REF "CHEBI" "OBI_BCGO" "OBI" +STUDY ASSAYS +Study Assay File Name "a_microarray.txt" +Study Assay Measurement Type "transcription profiling" +Study Assay Measurement Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0000424" +Study Assay Measurement Type Term Source REF "OBI" +Study Assay Technology Type "DNA microarray" +Study Assay Technology Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0400148" +Study Assay Technology Type Term Source REF "OBI" +Study Assay Technology Platform "Affymetrix" +STUDY PROTOCOLS +Study Protocol Name "EukGE-WS4" "mRNA extraction" "biotin labeling" "extraction" "labeling" "NMR spectroscopy" "nmr assay" "data normalization" "data transformation" +Study Protocol Type "nucleic acid hybridization" "RNA extraction" "addition of molecular label" "extraction" "addition of molecular label" "NMR spectroscopy" "nmr assay" "normalization data transformation" "data transformation" +Study Protocol Type Term Accession Number "http://purl.obolibrary.org/obo/OBI_0302903" "http://purl.obolibrary.org/obo/OBI_0666666" "http://purl.obolibrary.org/obo/OBI_0600038" "http://purl.obolibrary.org/obo/OBI_0302884" "http://purl.obolibrary.org/obo/OBI_0600038" "http://purl.obolibrary.org/obo/OBI_0000623" "" "http://purl.obolibrary.org/obo/OBI_0200169" "http://purl.obolibrary.org/obo/OBI_0200000" +Study Protocol Type Term Source REF "OBI" "OBI" "OBI" "OBI" "OBI" "OBI" "" "OBI" "OBI" +Study Protocol Description "For each target, a hybridisation cocktail was made using the standard array recipe as described in the GeneChip ??? Expression Analysis technical manual. GeneChip ??? control oligonucleotide and 20x eukaryotic hybridisation controls were used. Hybridisation buffer was made as detailed in the GeneChip ??? manual and the BSA and herring sperm DNA was purchased from Invitrogen. The cocktail was heated to 99 C for 5mins, transferred to 45 C for 5 min and then spun for 5 min to remove any insoluble material. Affymetrix Yeast Yg_s98 S. cerevisiae arrays were pre-hybridised with 200 ???l 1x hybridisation buffer and incubated at 45 C for 10 min. 200 ???l of the hybridisation cocktail was loaded onto the arrays. The probe array was incubated in a rotisserie at 45 C, rotating at 60 rpm. Following hybridisation, for 16hr, chips were loaded onto a Fluidics station for washing and staining using the EukGe WS2v4 programme controlled using Microarray Suite 5 software." "1. Biomass samples (45ml) were taken via the sample port of the Applikon fermenters. The cells were pelleted by centrifugation for 5min at 5000 rpm. The supernatant was removed and the RNA pellet resuspended in the residual medium to form a slurry. This was added in a dropwise manner directly into a 5ml Teflon flask (B. Braun Biotech, Germany) containing liquid nitrogen and a 7 mm-diameter tungsten carbide ball. After allowing evaporation of the liquid nitrogen the flask was reassembled and the cells disrupted by agitation at 1500 rpm for 2 min in a Microdismembranator U (B. Braun Biotech, Germany) 2. The frozen powder was then dissolved in 1 ml of TriZol reagent (Sigma-Aldrich, UK), vortexed for 1 min, and then kept at room temperature for a further 5 min. 3. Chloroform extraction was performed by addition of 0.2 ml chloroform, shaking vigorouslyor 15 s, then 5 min incubation at room temperature. 4. Following centrifugation at 12,000 rpm for 5 min, the RNA (contained in the aqueous phase) was precipitated with 0.5 vol of 2-propanol at room temperature for 15 min. 5. After further centrifugation (12,000 rpm for 10 min at 4 C) the RNA pellet was washed twice with 70 % (v/v) ethanol, briefly air-dried, and redissolved in 0.5 ml diethyl pyrocarbonate (DEPC)-treated water. 6. The single-stranded RNA was precipitated once more by addition of 0.5 ml of LiCl bffer (4 M LiCl, 20 mM Tris-HCl, pH 7.5, 10 mM EDTA), thus removing tRNA and DNA from the sample. 7. After precipitation (20 C for 1h) and centrifugation (12,000 rpm, 30 min, 4 C), the RNA was washed twice in 70 % (v/v) ethanol prior to being dissolved in a minimal volume of DEPC-treated water. 8. Total RNA quality was checked using the RNA 6000 Nano Assay, and analysed on an Agilent 2100 Bioanalyser (Agilent Technologies). RNA was quantified using the Nanodrop ultra low volume spectrophotometer (Nanodrop Technologies)." "This was done using Enzo BioArrayTM HighYieldTM RNA transcript labelling kit (T7) with 5 ul cDNA. The resultant cRNA was again purified using the GeneChip ??? Sample Clean Up Module. The column was eluted in the first instance using 10 ???l RNase-free water, and for a second time using 11 ???l RNase-free water. cRNA was quantified using the Nanodrop spectrophotometer. A total of 15 ug of cRNA (required for hybridisation) was fragmented. Fragmentation was carried out by using 2 ul of fragmentation buffer for every 8 ul cRNA." "" "" "" "" "" "" +Study Protocol URI "" "" "" "" "" "" "" "" "" +Study Protocol Version "" "" "" "" "" "" "" "" "" +Study Protocol Parameters Name "" "" "" "" "" ";;;" "" "" "" +Study Protocol Parameters Name Term Accession Number "" "" "" "" "" "" "" "" "" +Study Protocol Parameters Name Term Source REF "" "" "" "" "" "" "" "" "" +Study Protocol Components Name "" "" "" "" "" "" "" "" "" +Study Protocol Components Type "" "" "" "" "" "" "" "" "" +Study Protocol Components Type Term Accession Number "" "" "" "" "" "" "" "" "" +Study Protocol Components Type Term Source REF "" "" "" "" "" "" "" "" "" +STUDY CONTACTS +Study Person Last Name "Oliver" "Juan" "Leo" +Study Person First Name "Stephen" "Castrillo" "Zeef" +Study Person Mid Initials "G" "I" "A" +Study Person Email "" "" "" +Study Person Phone "" "" "" +Study Person Fax "" "" "" +Study Person Address "Oxford Road, Manchester M13 9PT, UK" "Oxford Road, Manchester M13 9PT, UK" "Oxford Road, Manchester M13 9PT, UK" +Study Person Affiliation "Faculty of Life Sciences, Michael Smith Building, University of Manchester" "Faculty of Life Sciences, Michael Smith Building, University of Manchester" "Faculty of Life Sciences, Michael Smith Building, University of Manchester" +Study Person Roles "corresponding author" "author" "author" +Study Person Roles Term Accession Number "" "" "" +Study Person Roles Term Source REF "" "" "" +Comment[Study Person ORCID] "" "" "" +Comment[Funder] "" "" "" +Comment[FundRef ID] "" "" "" +Comment[Grant Identifier] "" "" "" From a430c5907beabaed5d3f02463a7fd741e45ee98b Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Mon, 1 Sep 2014 15:21:18 +0100 Subject: [PATCH 35/48] Fixes in ISA-Tab export --- .../org/isatools/isacreator/api/utils/SpreadsheetUtils.java | 2 +- .../isatools/isacreator/io/exportisa/OutputISAFilesTest.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java b/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java index 23ee6769..62251731 100644 --- a/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java +++ b/src/main/java/org/isatools/isacreator/api/utils/SpreadsheetUtils.java @@ -452,7 +452,7 @@ public static StringBuilder outputAssayAsString(Assay assay) { val = val.substring(val.indexOf(":") + 1); } - if (source.equals("")) + if (oo!=null && source.equals("")) source = oo.getOntologySource(); output.append("\""+source + "\""+ separator); diff --git a/src/test/java/org/isatools/isacreator/io/exportisa/OutputISAFilesTest.java b/src/test/java/org/isatools/isacreator/io/exportisa/OutputISAFilesTest.java index 64d50364..edde50d2 100644 --- a/src/test/java/org/isatools/isacreator/io/exportisa/OutputISAFilesTest.java +++ b/src/test/java/org/isatools/isacreator/io/exportisa/OutputISAFilesTest.java @@ -4,6 +4,8 @@ import org.isatools.isacreator.io.CommonTestIO; import org.isatools.isacreator.io.importisa.ISAtabFilesImporter; import org.isatools.isacreator.model.Investigation; +import org.isatools.isacreator.settings.ISAcreatorProperties; +import org.isatools.isacreator.utils.PropertyFileIO; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -32,7 +34,7 @@ public class OutputISAFilesTest implements CommonTestIO { @Before public void setUp() { String baseDir = System.getProperty("basedir"); - + ISAcreatorProperties.setProperties(PropertyFileIO.DEFAULT_CONFIGS_SETTINGS_PROPERTIES); if ( baseDir == null ) { try{ From 0d22efaf3db06d37d95d5dd3a9dc40b287ed79dd Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Mon, 1 Sep 2014 15:28:12 +0100 Subject: [PATCH 36/48] Maintain assay order in file using an orderedmap. --- src/main/java/org/isatools/isacreator/model/Study.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/isatools/isacreator/model/Study.java b/src/main/java/org/isatools/isacreator/model/Study.java index 116cf19d..dfd29ce0 100755 --- a/src/main/java/org/isatools/isacreator/model/Study.java +++ b/src/main/java/org/isatools/isacreator/model/Study.java @@ -37,6 +37,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi package org.isatools.isacreator.model; +import org.apache.commons.collections15.map.ListOrderedMap; import org.isatools.isacreator.managers.ApplicationManager; import org.isatools.isacreator.gui.AssaySpreadsheet; import org.isatools.isacreator.gui.reference.DataEntryReferenceObject; @@ -116,7 +117,7 @@ public Study(String studyId, String studyTitle, String dateOfSubmission, } private void initialise() { - assays = new HashMap(); + assays = new ListOrderedMap(); factors = new ArrayList(); protocols = new ArrayList(); contacts = new ArrayList(); From b7edf69e3e178bf23b01c61c71f61a4c152d6754 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Mon, 1 Sep 2014 16:36:29 +0100 Subject: [PATCH 37/48] Changed comment in investigation file, HashMap to ListOrderedMap in Study --- isatab files/BII-I-1/i_Investigation.txt | 3 +-- .../java/org/isatools/isacreator/model/Investigation.java | 4 ++-- src/main/java/org/isatools/isacreator/model/Study.java | 2 +- src/test/resources/test-data/BII-I-1/i_investigation.txt | 3 +-- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/isatab files/BII-I-1/i_Investigation.txt b/isatab files/BII-I-1/i_Investigation.txt index 463faf37..bcfddce3 100644 --- a/isatab files/BII-I-1/i_Investigation.txt +++ b/isatab files/BII-I-1/i_Investigation.txt @@ -9,9 +9,8 @@ Investigation Title "Growth control of the eukaryote cell: a systems biology stu Investigation Description "Background Cell growth underlies many key cellular and developmental processes, yet a limited number of studies have been carried out on cell-growth regulation. Comprehensive studies at the transcriptional, proteomic and metabolic levels under defined controlled conditions are currently lacking. Results Metabolic control analysis is being exploited in a systems biology study of the eukaryotic cell. Using chemostat culture, we have measured the impact of changes in flux (growth rate) on the transcriptome, proteome, endometabolome and exometabolome of the yeast Saccharomyces cerevisiae. Each functional genomic level shows clear growth-rate-associated trends and discriminates between carbon-sufficient and carbon-limited conditions. Genes consistently and significantly upregulated with increasing growth rate are frequently essential and encode evolutionarily conserved proteins of known function that participate in many protein-protein interactions. In contrast, more unknown, and fewer essential, genes are downregulated with increasing growth rate; their protein products rarely interact with one another. A large proportion of yeast genes under positive growth-rate control share orthologs with other eukaryotes, including humans. Significantly, transcription of genes encoding components of the TOR complex (a major controller of eukaryotic cell growth) is not subject to growth-rate regulation. Moreover, integrative studies reveal the extent and importance of post-transcriptional control, patterns of control of metabolic fluxes at the level of enzyme synthesis, and the relevance of specific enzymatic reactions in the control of metabolic fluxes during cell growth. Conclusion This work constitutes a first comprehensive systems biology study on growth-rate control in the eukaryotic cell. The results have direct implications for advanced studies on cell growth, in vivo regulation of metabolic fluxes for comprehensive metabolic engineering, and for the design of genome-scale systems biology models of the eukaryotic cell." Investigation Submission Date "2007-04-30" Investigation Public Release Date "2009-03-10" -Comment[Created with configuration] "" -Comment[Last Opened With Configuration] "" Comment[Created With Configuration] "" +Comment[Last Opened With Configuration] "" Comment[Owning Organisation URI] "" Comment[Consortium URI] "" Comment[Principal Investigator URI] "" diff --git a/src/main/java/org/isatools/isacreator/model/Investigation.java b/src/main/java/org/isatools/isacreator/model/Investigation.java index acac826a..03dc8bbb 100755 --- a/src/main/java/org/isatools/isacreator/model/Investigation.java +++ b/src/main/java/org/isatools/isacreator/model/Investigation.java @@ -62,8 +62,8 @@ public class Investigation extends ISASection { public static final String INVESTIGATION_DESCRIPTION_KEY = "Investigation Description"; public static final String INVESTIGATION_SUBMISSION_DATE_KEY = "Investigation Submission Date"; public static final String INVESTIGATION_PUBLIC_RELEASE_KEY = "Investigation Public Release Date"; - public static final String CONFIGURATION_CREATED_WITH = "Comment [Created With Configuration]"; - public static final String CONFIGURATION_LAST_OPENED_WITH = "Comment [Last Opened With Configuration]"; + public static final String CONFIGURATION_CREATED_WITH = "Comment[Created With Configuration]"; + public static final String CONFIGURATION_LAST_OPENED_WITH = "Comment[Last Opened With Configuration]"; private List publications; private List contacts; diff --git a/src/main/java/org/isatools/isacreator/model/Study.java b/src/main/java/org/isatools/isacreator/model/Study.java index dfd29ce0..a19864d1 100755 --- a/src/main/java/org/isatools/isacreator/model/Study.java +++ b/src/main/java/org/isatools/isacreator/model/Study.java @@ -497,7 +497,7 @@ public void setAssays(Map assays) { } public void addToAssays(List assays) { - Map modifiedAssayStructure = new HashMap(); + ListOrderedMap modifiedAssayStructure = new ListOrderedMap(); for (Assay assay : assays) { modifiedAssayStructure.put(assay.getAssayReference(), assay); diff --git a/src/test/resources/test-data/BII-I-1/i_investigation.txt b/src/test/resources/test-data/BII-I-1/i_investigation.txt index 463faf37..bcfddce3 100644 --- a/src/test/resources/test-data/BII-I-1/i_investigation.txt +++ b/src/test/resources/test-data/BII-I-1/i_investigation.txt @@ -9,9 +9,8 @@ Investigation Title "Growth control of the eukaryote cell: a systems biology stu Investigation Description "Background Cell growth underlies many key cellular and developmental processes, yet a limited number of studies have been carried out on cell-growth regulation. Comprehensive studies at the transcriptional, proteomic and metabolic levels under defined controlled conditions are currently lacking. Results Metabolic control analysis is being exploited in a systems biology study of the eukaryotic cell. Using chemostat culture, we have measured the impact of changes in flux (growth rate) on the transcriptome, proteome, endometabolome and exometabolome of the yeast Saccharomyces cerevisiae. Each functional genomic level shows clear growth-rate-associated trends and discriminates between carbon-sufficient and carbon-limited conditions. Genes consistently and significantly upregulated with increasing growth rate are frequently essential and encode evolutionarily conserved proteins of known function that participate in many protein-protein interactions. In contrast, more unknown, and fewer essential, genes are downregulated with increasing growth rate; their protein products rarely interact with one another. A large proportion of yeast genes under positive growth-rate control share orthologs with other eukaryotes, including humans. Significantly, transcription of genes encoding components of the TOR complex (a major controller of eukaryotic cell growth) is not subject to growth-rate regulation. Moreover, integrative studies reveal the extent and importance of post-transcriptional control, patterns of control of metabolic fluxes at the level of enzyme synthesis, and the relevance of specific enzymatic reactions in the control of metabolic fluxes during cell growth. Conclusion This work constitutes a first comprehensive systems biology study on growth-rate control in the eukaryotic cell. The results have direct implications for advanced studies on cell growth, in vivo regulation of metabolic fluxes for comprehensive metabolic engineering, and for the design of genome-scale systems biology models of the eukaryotic cell." Investigation Submission Date "2007-04-30" Investigation Public Release Date "2009-03-10" -Comment[Created with configuration] "" -Comment[Last Opened With Configuration] "" Comment[Created With Configuration] "" +Comment[Last Opened With Configuration] "" Comment[Owning Organisation URI] "" Comment[Consortium URI] "" Comment[Principal Investigator URI] "" From 4926d2c44a26b6be6c4ee844191430be2fdf9014 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Mon, 1 Sep 2014 17:00:52 +0100 Subject: [PATCH 38/48] ENA Receipt added. --- .../ui/CommonValidationConversionUI.java | 13 +- .../ui/ENAReceipt/ENAReceipt.java | 52 +++++++ .../ui/ENAReceipt/ENAReceiptParser.java | 69 +++++++++ .../validateconvert/ui/ENASubmissionUI.java | 144 +++++++++++++----- 4 files changed, 234 insertions(+), 44 deletions(-) create mode 100644 src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java create mode 100644 src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java index 1f6d6f02..4388921d 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java @@ -33,7 +33,7 @@ public class CommonValidationConversionUI extends JFrame { private ImageIcon validationSuccess = new ImageIcon("/images/validator/validation_successful.png"); public JPanel swappableContainer; - public void swapContainers(final Container newContainer) { + protected void swapContainers(final Container newContainer) { SwingUtilities.invokeLater(new Runnable() { public void run() { @@ -55,7 +55,7 @@ public void run() { } - public Map> getErrorMessages(List logEvents) { + protected Map> getErrorMessages(List logEvents) { Map> fileToErrors = new HashMap>(); for (TabLoggingEventWrapper event : logEvents) { @@ -73,7 +73,7 @@ public Map> getErrorMessages(List> fileToErrors) { + protected void displayValidationErrorsAndWarnings(Map> fileToErrors) { List errors = new ArrayList(); for (String fileName : fileToErrors.keySet()) { @@ -101,12 +101,13 @@ public void displayValidationErrorsAndWarnings(Map> f } } - public void convertISAtab(BIIObjectStore store, AllowedConversions conversion, + protected GUIInvokerResult convertISAtab(BIIObjectStore store, AllowedConversions conversion, String isatabLocation, String outputLocation) { GUIISATABConverter converter = new GUIISATABConverter(); GUIInvokerResult result = converter.convert(store, isatabLocation, outputLocation, conversion); + if (result == GUIInvokerResult.SUCCESS) { Box successContainer = Box.createVerticalBox(); @@ -134,9 +135,11 @@ public void convertISAtab(BIIObjectStore store, AllowedConversions conversion, ConversionErrorUI errorContainer = new ConversionErrorUI(); errorContainer.constructErrorPane(messages); - errorContainer.setPreferredSize(new Dimension(750, 440)); + errorContainer.setPreferredSize(new Dimension(650, 440)); swapContainers(errorContainer); } + + return result; } } diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java new file mode 100644 index 00000000..2f173718 --- /dev/null +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java @@ -0,0 +1,52 @@ +package org.isatools.isacreator.validateconvert.ui.ENAReceipt; + +import org.isatools.errorreporter.model.ErrorLevel; +import org.isatools.errorreporter.model.ErrorMessage; + +import java.util.*; + +/** + * User: eamonnmaguire + * Date: 01/09/2014 + * Time: 15:40 + * To change this template use File | Settings | File Templates. + */ + +public class ENAReceipt { + + private Set experimentAccessions, sampleAccession, runAccessions, errors; + + public ENAReceipt(Set experimentAccessions, Set sampleAccession, Set runAccessions, Set errors) { + this.experimentAccessions = experimentAccessions; + this.sampleAccession = sampleAccession; + this.runAccessions = runAccessions; + this.errors = errors; + } + + public Set getExperimentAccessions() { + return experimentAccessions; + } + + public Set getSampleAccessions() { + return sampleAccession; + } + + public Set getRunAccessions() { + return runAccessions; + } + + public Set getErrors() { + return errors; + } + + public List getErrorsForDisplay(String studyId) { + List errors = new ArrayList(); + + for(String error : getErrors()) { + errors.add(new ErrorMessage(ErrorLevel.ERROR, error)); + } + + return errors; + + } +} diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java new file mode 100644 index 00000000..2147403d --- /dev/null +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java @@ -0,0 +1,69 @@ +package org.isatools.isacreator.validateconvert.ui.ENAReceipt; + +import org.apache.commons.io.IOUtils; +import org.apache.log4j.Logger; +import org.w3c.dom.NodeList; +import uk.ac.ebi.utils.xml.XPathReader; + +import javax.xml.xpath.XPathConstants; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashSet; +import java.util.Set; + + +public class ENAReceiptParser { + private static Logger log = Logger.getLogger(ENAReceiptParser.class.getName()); + + public static ENAReceipt parseReceipt(String receipt) { + try { + InputStream stream = IOUtils.toInputStream(receipt, "UTF-8"); + XPathReader reader = new XPathReader(stream); + + Set experimentAccessions = parseReceiptSection(reader, "EXPERIMENT"); + Set sampleAccessions = parseReceiptSection(reader, "SAMPLE"); + Set runAccessions = parseReceiptSection(reader, "RUN"); + Set errors = parseReceiptErrors(reader); + + return new ENAReceipt(experimentAccessions, sampleAccessions, runAccessions, errors); + } catch (IOException e) { + log.error(e); + e.printStackTrace(); + return null; + } + } + + public static Set parseReceiptSection(XPathReader reader, String section) { + NodeList experiments = (NodeList) reader.read("/RECEIPT/" + section, XPathConstants.NODESET); + + Set accessions = new HashSet(); + if (experiments.getLength() > 0) { + for (int experimentIndex = 0; experimentIndex <= experiments.getLength(); experimentIndex++) { + String accession = (String) reader.read("/RECEIPT/" + section + "[" + experimentIndex + "]/@accession", XPathConstants.STRING); + if (!accession.isEmpty()) { + accessions.add(accession); + } + } + } + return accessions; + } + + + public static Set parseReceiptErrors(XPathReader reader) { + + Set errors = new HashSet(); + NodeList errorMessages = (NodeList) reader.read("/RECEIPT/MESSAGES/ERROR", XPathConstants.NODESET); + + + if (errorMessages.getLength() > 0) { + for (int experimentIndex = 0; experimentIndex <= errorMessages.getLength(); experimentIndex++) { + String error = (String) reader.read("/RECEIPT/MESSAGES/ERROR[" + experimentIndex + "]", XPathConstants.STRING); + if (!error.isEmpty()) { + errors.add(error); + } + } + } + return errors; + + } +} diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index 85fc2137..6b314063 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -9,8 +9,12 @@ import org.isatools.isacreator.common.button.FlatButton; import org.isatools.isacreator.effects.GraphicsUtils; import org.isatools.isacreator.effects.HUDTitleBar; -import org.isatools.isacreator.launch.ISAcreatorGUIProperties; +import org.isatools.isacreator.managers.ApplicationManager; +import org.isatools.isacreator.model.Investigation; +import org.isatools.isacreator.model.Study; import org.isatools.isacreator.settings.ISAcreatorProperties; +import org.isatools.isacreator.validateconvert.ui.ENAReceipt.ENAReceipt; +import org.isatools.isacreator.validateconvert.ui.ENAReceipt.ENAReceiptParser; import org.isatools.isatab.export.sra.submission.ENARestServer; import org.isatools.isatab.export.sra.submission.SRASubmitter; import org.isatools.isatab.gui_invokers.AllowedConversions; @@ -25,6 +29,7 @@ import javax.swing.border.EtchedBorder; import java.awt.*; import java.awt.event.MouseEvent; +import java.io.*; import java.util.*; import java.util.List; @@ -40,13 +45,15 @@ public class ENASubmissionUI extends CommonValidationConversionUI { public static final float DESIRED_OPACITY = .98f; private static Logger log = Logger.getLogger(ENASubmissionUI.class.getName()); - private Container metadataPanel; + private Container metadataPanel, menuPanel; private JLabel newSubmission, updateSubmission; private JTextField username, centerName, labName, brokerName; private JPasswordField password; + private String sraAction; + protected static ImageIcon submitENAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/submission/submitting.gif")); protected static ImageIcon convertISAAnimation = new ImageIcon(ENASubmissionUI.class.getResource("/images/validator/converting.gif")); @@ -86,9 +93,9 @@ public void createGUI() { } public Container createMenu() { - Box container = Box.createVerticalBox(); + menuPanel = Box.createVerticalBox(); - addHeaderImageToContainer(container); + addHeaderImageToContainer(menuPanel); newSubmission = new JLabel(new_sub); @@ -109,6 +116,7 @@ public void mouseExited(MouseEvent mouseEvent) { public void mouseReleased(MouseEvent mouseEvent) { super.mouseReleased(mouseEvent); newSubmission.setIcon(new_sub); + sraAction = "ADD"; swapContainers(createMetadataEntryUI()); } }); @@ -131,8 +139,8 @@ public void mouseExited(MouseEvent mouseEvent) { public void mouseReleased(MouseEvent mouseEvent) { super.mouseReleased(mouseEvent); updateSubmission.setIcon(update_sub); - - validateConvertAndSubmitFiles(); + sraAction = "MODIFY"; + swapContainers(createMetadataEntryUI()); } }); @@ -140,15 +148,15 @@ public void mouseReleased(MouseEvent mouseEvent) { menuContainer.add(newSubmission); menuContainer.add(updateSubmission); - container.add(menuContainer); + menuPanel.add(menuContainer); JPanel created_by_panel = new JPanel(); created_by_panel.setBackground(new Color(236, 240, 241)); - container.add(UIHelper.wrapComponentInPanel(new JLabel(created_by))); + menuPanel.add(UIHelper.wrapComponentInPanel(new JLabel(created_by))); - container.add(Box.createVerticalStrut(20)); + menuPanel.add(Box.createVerticalStrut(20)); - return container; + return menuPanel; } @@ -170,6 +178,14 @@ private Container createMetadataEntryUI() { Box buttonContainer = Box.createHorizontalBox(); FlatButton backButton = new FlatButton(ButtonType.RED, "Back"); + backButton.addMouseListener(new CommonMouseAdapter() { + @Override + public void mousePressed(MouseEvent mouseEvent) { + super.mousePressed(mouseEvent); + swapContainers(menuPanel); + + } + }); FlatButton nextButton = new FlatButton(ButtonType.EMERALD, "Next"); nextButton.addMouseListener(new CommonMouseAdapter() { @Override @@ -198,8 +214,8 @@ private Box createUserLoginSection() { UIHelper.renderComponent(enaBoxDetails, UIHelper.VER_12_BOLD, UIHelper.EMERALD, false); userLoginSection.add(UIHelper.wrapComponentInPanel(enaBoxDetails)); - - username = new JTextField("Username"); + String sra_username = ISAcreatorProperties.getProperty("sra_username"); + username = new JTextField(sra_username.isEmpty() ? "Username" : sra_username); password = new JPasswordField(""); userLoginSection.add(createMetadataFieldContainer(username, "Username")); @@ -220,15 +236,15 @@ private Box createMetadataSection() { UIHelper.renderComponent(metadataDetails, UIHelper.VER_12_BOLD, UIHelper.EMERALD, false); metadataSection.add(UIHelper.wrapComponentInPanel(metadataDetails)); - centerName = new JTextField("SRA Centre Name"); + centerName = new JTextField("OXFORD"); metadataSection.add(createMetadataFieldContainer(centerName, "SRA Centre Name")); metadataSection.add(Box.createVerticalStrut(5)); - brokerName = new JTextField("Broker Name"); + brokerName = new JTextField("OXFORD"); metadataSection.add(createMetadataFieldContainer(brokerName, "Broker Name", 0, 35)); metadataSection.add(Box.createVerticalStrut(5)); - labName = new JTextField("SRA Lab Name"); + labName = new JTextField("Oxford e-Research Centre"); metadataSection.add(createMetadataFieldContainer(labName, "SRA Lab Name", 0, 30)); metadataSection.add(Box.createVerticalStrut(20)); @@ -302,21 +318,20 @@ public void run() { Box submitProgressContainer = createSubmitProgressContainer(); swapContainers(submitProgressContainer); - log.info("Saving current ISAtab file"); - log.info("ISAtab file saved"); - SRASubmitter submitter = new SRASubmitter(); - System.out.println(ENARestServer.TEST); - System.out.println(username.getText()); - System.out.println(new String(password.getPassword())); String status = submitter.submit(ENARestServer.TEST, username.getText(), new String(password.getPassword()), sraFolder); + ENAReceipt receipt = ENAReceiptParser.parseReceipt(status); if (status == null) { - swapContainers(createSubmitFailed()); + swapContainers(createSubmitFailed(receipt)); } else { - // todo: need to parse the receipt here and show any errors to the users. - swapContainers(createSubmitComplete()); + + if (receipt.getErrors().size() > 0) { + swapContainers(createSubmitFailed(receipt)); + } else { + swapContainers(createSubmitComplete(receipt)); + } } System.out.println(status); System.out.println("Setting config path before validation to " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); @@ -332,6 +347,23 @@ private void validateConvertAndSubmitFiles() { log.info("Current ISA-Tab is: " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); ISAConfigurationSet.setConfigPath(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); + Investigation investigation = ApplicationManager.getCurrentApplicationInstance().getDataEntryEnvironment().getInvestigation(); + + ISAcreatorProperties.setProperty("sra_username", username.getText()); + final Set studies = new HashSet(); + for (Study study : investigation.getStudies().values()) { + studies.add(study.getStudyId()); + System.out.println("SRA Action is " + sraAction); + study.addComment("Comment[SRA Submission Action]", sraAction); + study.addComment("Comment[SRA Broker Name]", brokerName.getText()); + study.addComment("Comment[SRA Lab Name]", labName.getText()); + study.addComment("Comment[SRA Center Name]", centerName.getText()); + } + + log.info("Saving current ISAtab file"); + ApplicationManager.getCurrentApplicationInstance().saveISATab(); + log.info("ISAtab file saved"); + final GUIISATABValidator isatabValidator = new GUIISATABValidator(); GUIInvokerResult result = isatabValidator.validate(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); final Map> errorMessages = getErrorMessages(isatabValidator.getLog()); @@ -346,15 +378,22 @@ private void validateConvertAndSubmitFiles() { SwingUtilities.invokeLater(new Runnable() { public void run() { + swapContainers(UIHelper.padComponentVerticalBox(100, new JLabel(convertISAAnimation))); - String outputLocation = System.getProperty("java.io.tmpdir") + "sra/" + System.currentTimeMillis(); - convertISAtab(isatabValidator.getStore(), AllowedConversions.SRA, + String outputLocation = System.getProperty("java.io.tmpdir") + "sra/" + System.currentTimeMillis() + "/"; + new File(outputLocation).mkdirs(); + GUIInvokerResult result = convertISAtab(isatabValidator.getStore(), AllowedConversions.SRA, ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB), outputLocation); - submit(outputLocation); + if (result == GUIInvokerResult.SUCCESS || result == GUIInvokerResult.WARNING) { + for (String study : studies) { + submit(outputLocation + "sra/" + study + "/"); + } + } + } }); } else @@ -377,11 +416,39 @@ private Box createSubmitProgressContainer() { return submitProgressContainer; } - private Box createSubmitComplete() { + private Box createSubmitComplete(ENAReceipt receipt) { Box submitProgressContainer = Box.createVerticalBox(); - submitProgressContainer.add(Box.createVerticalStrut(120)); submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_complete))); + // create 3 lists with the Sample, Experiment and Runs accessions + + Box listPanel = Box.createHorizontalBox(); + + JList experimentList = new JList(receipt.getExperimentAccessions().toArray()); + JList runList = new JList(receipt.getRunAccessions().toArray()); + JList sampleList = new JList(receipt.getSampleAccessions().toArray()); + + Dimension listDimension = new Dimension(200, 300); + experimentList.setPreferredSize(listDimension); + runList.setPreferredSize(listDimension); + sampleList.setPreferredSize(listDimension); + + Box experimentListContainer = Box.createVerticalBox(); + experimentListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Experiments", UIHelper.VER_11_BOLD, UIHelper.EMERALD))); + experimentList.add(experimentList); + listPanel.add(experimentListContainer); + + Box runListContainer = Box.createVerticalBox(); + runListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Runs", UIHelper.VER_11_BOLD, UIHelper.EMERALD))); + runListContainer.add(runList); + listPanel.add(runListContainer); + + Box sampleListContainer = Box.createVerticalBox(); + sampleListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Samples", UIHelper.VER_11_BOLD, UIHelper.EMERALD))); + sampleListContainer.add(runList); + + listPanel.add(sampleListContainer); + FlatButton nextButton = new FlatButton(ButtonType.RED, "Close"); nextButton.addMouseListener(new CommonMouseAdapter() { @Override @@ -398,11 +465,17 @@ public void mousePressed(MouseEvent mouseEvent) { return submitProgressContainer; } - private Box createSubmitFailed() { + private Box createSubmitFailed(ENAReceipt receipt) { Box submitProgressContainer = Box.createVerticalBox(); - submitProgressContainer.add(Box.createVerticalStrut(120)); + submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_failed))); + ConversionErrorUI errorContainer = new ConversionErrorUI(); + errorContainer.constructErrorPane(receipt.getErrorsForDisplay("Submission Errors")); + errorContainer.setPreferredSize(new Dimension(650, 300)); + + submitProgressContainer.add(errorContainer); + // SUBMIT ANOTHER, OR BACK FlatButton nextButton = new FlatButton(ButtonType.RED, "Back to Submission Screen"); nextButton.addMouseListener(new CommonMouseAdapter() { @@ -413,7 +486,7 @@ public void mousePressed(MouseEvent mouseEvent) { } }); - submitProgressContainer.add(Box.createVerticalStrut(80)); + submitProgressContainer.add(Box.createVerticalStrut(20)); submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton)); return submitProgressContainer; @@ -425,11 +498,4 @@ private void addHeaderImageToContainer(Container submitProgressContainer) { } - public static void main(String[] args) { - ISAcreatorGUIProperties.setProperties(); - ENASubmissionUI ui = createENASubmissionUI(); - ui.createGUI(); - ui.setVisible(true); - } - } \ No newline at end of file From 8be1b723e0316b9cc7e296e0718b7c715835205a Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Mon, 1 Sep 2014 19:01:50 +0100 Subject: [PATCH 39/48] Seems to work well now. --- .../effects/SimpleListCellRenderer.java | 84 +++++++++ .../io/exportisa/ISAFileOutput.java | 7 +- .../validateconvert/ui/ENASubmissionUI.java | 173 +++++++++++++----- 3 files changed, 215 insertions(+), 49 deletions(-) create mode 100644 src/main/java/org/isatools/isacreator/effects/SimpleListCellRenderer.java diff --git a/src/main/java/org/isatools/isacreator/effects/SimpleListCellRenderer.java b/src/main/java/org/isatools/isacreator/effects/SimpleListCellRenderer.java new file mode 100644 index 00000000..749ef561 --- /dev/null +++ b/src/main/java/org/isatools/isacreator/effects/SimpleListCellRenderer.java @@ -0,0 +1,84 @@ +/** + ISAcreator is a component of the ISA software suite (http://www.isa-tools.org) + + License: + ISAcreator is licensed under the Common Public Attribution License version 1.0 (CPAL) + + EXHIBIT A. CPAL version 1.0 + The contents of this file are subject to the CPAL version 1.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://isa-tools.org/licenses/ISAcreator-license.html. + The License is based on the Mozilla Public License version 1.1 but Sections + 14 and 15 have been added to cover use of software over a computer network and + provide for limited attribution for the Original Developer. In addition, Exhibit + A has been modified to be consistent with Exhibit B. + + Software distributed under the License is distributed on an AS IS basis, + WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for + the specific language governing rights and limitations under the License. + + The Original Code is ISAcreator. + The Original Developer is the Initial Developer. The Initial Developer of the + Original Code is the ISA Team (Eamonn Maguire, eamonnmag@gmail.com; + Philippe Rocca-Serra, proccaserra@gmail.com; Susanna-Assunta Sansone, sa.sanson@gmail.com; + http://www.isa-tools.org). All portions of the code written by the ISA Team are + Copyright (c) 2007-2011 ISA Team. All Rights Reserved. + + EXHIBIT B. Attribution Information + Attribution Copyright Notice: Copyright (c) 2008-2011 ISA Team + Attribution Phrase: Developed by the ISA Team + Attribution URL: http://www.isa-tools.org + Graphic Image provided in the Covered Code as file: http://isa-tools.org/licenses/icons/poweredByISAtools.png + Display of Attribution Information is required in Larger Works which are defined in the CPAL as a work which combines Covered Code or portions thereof with code not governed by the terms of the CPAL. + + Sponsors: + The ISA Team and the ISA software suite have been funded by the EU Carcinogenomics project (http://www.carcinogenomics.eu), + the UK BBSRC (http://www.bbsrc.ac.uk), the UK NERC-NEBC (http://nebc.nerc.ac.uk) and in part by the EU NuGO consortium (http://www.nugo.org/everyone). + */ + +package org.isatools.isacreator.effects; + +import org.isatools.isacreator.common.UIHelper; +import org.jdesktop.fuse.InjectedResource; +import org.jdesktop.fuse.ResourceInjector; + +import javax.swing.*; +import javax.swing.border.EmptyBorder; +import java.awt.*; + +/** + * CustomListCellRenderer + * + * @author Eamonn Maguire + * @date Feb 9, 2010 + */ + + +public class SimpleListCellRenderer implements ListCellRenderer { + + + private JPanel contents; + private JLabel text; + + public SimpleListCellRenderer() { + + contents = new JPanel(new BorderLayout()); + contents.setOpaque(true); + + text = UIHelper.createLabel("", UIHelper.VER_11_PLAIN, UIHelper.GREY_COLOR); + + contents.add(text, BorderLayout.CENTER); + contents.setBorder(new EmptyBorder(2, 2, 2, 2)); + } + + + public Component getListCellRendererComponent(JList list, Object value, int index, boolean selected, boolean cellGotFocus) { + + + text.setText(value.toString()); + text.setFont(selected ? UIHelper.VER_11_BOLD : UIHelper.VER_11_PLAIN); + + return contents; + } + +} diff --git a/src/main/java/org/isatools/isacreator/io/exportisa/ISAFileOutput.java b/src/main/java/org/isatools/isacreator/io/exportisa/ISAFileOutput.java index 50158649..cfb92e45 100644 --- a/src/main/java/org/isatools/isacreator/io/exportisa/ISAFileOutput.java +++ b/src/main/java/org/isatools/isacreator/io/exportisa/ISAFileOutput.java @@ -47,6 +47,7 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi import org.isatools.isacreator.model.Study; import org.isatools.isacreator.ontologymanager.OntologyManager; import org.isatools.isacreator.ontologymanager.OntologySourceRefObject; +import org.isatools.isacreator.settings.ISAcreatorProperties; import java.io.File; import java.io.FileNotFoundException; @@ -108,8 +109,12 @@ public String getOntologiesUsedOutput() { protected void printStudy(PrintStream investigationFilePrintStream, Study study) { DataEntryForm def = ApplicationManager.getUserInterfaceForISASection(study); - if (def!=null) + boolean doNotUpdateGUIBeforeSave = Boolean.parseBoolean(ISAcreatorProperties.getProperty("DO_NOT_UPDATE_FROM_GUI")); + System.out.println("Do Not Update GUI before save? " + doNotUpdateGUIBeforeSave); + if (def!=null && !doNotUpdateGUIBeforeSave){ + System.out.println("UPDATING FROM GUI..."); def.update(); + } investigationFilePrintStream.print(ISASectionExportAdaptor.exportISASectionAsString(study, InvestigationFileSection.STUDY_SECTION)); investigationFilePrintStream.print(ISASectionExportAdaptor.exportISASectionAsString(study.getStudyDesigns(), InvestigationFileSection.STUDY_DESIGN_SECTION)); diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index 6b314063..f9cda1d4 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -1,14 +1,19 @@ package org.isatools.isacreator.validateconvert.ui; +import com.explodingpixels.macwidgets.IAppWidgetFactory; import com.sun.awt.AWTUtilities; import org.apache.log4j.Logger; import org.isatools.errorreporter.model.ErrorMessage; +import org.isatools.isacreator.autofilteringlist.FilterableListCellRenderer; import org.isatools.isacreator.common.CommonMouseAdapter; import org.isatools.isacreator.common.UIHelper; import org.isatools.isacreator.common.button.ButtonType; import org.isatools.isacreator.common.button.FlatButton; import org.isatools.isacreator.effects.GraphicsUtils; import org.isatools.isacreator.effects.HUDTitleBar; +import org.isatools.isacreator.effects.SimpleListCellRenderer; +import org.isatools.isacreator.effects.SingleSelectionListCellRenderer; +import org.isatools.isacreator.launch.ISAcreatorGUIProperties; import org.isatools.isacreator.managers.ApplicationManager; import org.isatools.isacreator.model.Investigation; import org.isatools.isacreator.model.Study; @@ -49,7 +54,7 @@ public class ENASubmissionUI extends CommonValidationConversionUI { private JLabel newSubmission, updateSubmission; - private JTextField username, centerName, labName, brokerName; + private JTextField username, centerName, labName, brokerName, studyIdentifier; private JPasswordField password; private String sraAction; @@ -221,7 +226,10 @@ private Box createUserLoginSection() { userLoginSection.add(createMetadataFieldContainer(username, "Username")); userLoginSection.add(Box.createVerticalStrut(5)); userLoginSection.add(createMetadataFieldContainer(password, "Password", 1, 10)); - userLoginSection.add(Box.createVerticalStrut(55)); + + userLoginSection.add(sraAction.equals("MODIFY") + ? Box.createVerticalStrut(90) : + Box.createVerticalStrut(55)); JLabel info = UIHelper.createLabel("Don’t have an account? Create one...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); userLoginSection.add(UIHelper.wrapComponentInPanel(info)); @@ -236,6 +244,12 @@ private Box createMetadataSection() { UIHelper.renderComponent(metadataDetails, UIHelper.VER_12_BOLD, UIHelper.EMERALD, false); metadataSection.add(UIHelper.wrapComponentInPanel(metadataDetails)); + if (sraAction.equals("MODIFY")) { + studyIdentifier = new JTextField("e.g. ERAxxxxxx"); + metadataSection.add(createMetadataFieldContainer(studyIdentifier, "Study Accession")); + metadataSection.add(Box.createVerticalStrut(5)); + } + centerName = new JTextField("OXFORD"); metadataSection.add(createMetadataFieldContainer(centerName, "SRA Centre Name")); metadataSection.add(Box.createVerticalStrut(5)); @@ -323,6 +337,8 @@ public void run() { String status = submitter.submit(ENARestServer.TEST, username.getText(), new String(password.getPassword()), sraFolder); ENAReceipt receipt = ENAReceiptParser.parseReceipt(status); + + System.out.println("STATUS is " + status); if (status == null) { swapContainers(createSubmitFailed(receipt)); } else { @@ -333,10 +349,6 @@ public void run() { swapContainers(createSubmitComplete(receipt)); } } - System.out.println(status); - System.out.println("Setting config path before validation to " + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION)); - - } }); performer.start(); @@ -349,41 +361,47 @@ private void validateConvertAndSubmitFiles() { Investigation investigation = ApplicationManager.getCurrentApplicationInstance().getDataEntryEnvironment().getInvestigation(); + ApplicationManager.getCurrentApplicationInstance().saveISATab(); + ISAcreatorProperties.setProperty("sra_username", username.getText()); final Set studies = new HashSet(); for (Study study : investigation.getStudies().values()) { studies.add(study.getStudyId()); - System.out.println("SRA Action is " + sraAction); + study.addComment("Comment[SRA Submission Action]", sraAction); study.addComment("Comment[SRA Broker Name]", brokerName.getText()); study.addComment("Comment[SRA Lab Name]", labName.getText()); study.addComment("Comment[SRA Center Name]", centerName.getText()); + study.addComment("Comment[Study Accession]", sraAction.equals("MODIFY") ? studyIdentifier.getText() : ""); + } - log.info("Saving current ISAtab file"); + // We're changing the study comments programmatically, so to avoid saving with values currently in the interface, + // we save by forcing the UI to not update. This preserves the comment values we've specified above. + ISAcreatorProperties.setProperty("DO_NOT_UPDATE_FROM_GUI", "true"); ApplicationManager.getCurrentApplicationInstance().saveISATab(); - log.info("ISAtab file saved"); + ISAcreatorProperties.setProperty("DO_NOT_UPDATE_FROM_GUI", "false"); - final GUIISATABValidator isatabValidator = new GUIISATABValidator(); - GUIInvokerResult result = isatabValidator.validate(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); - final Map> errorMessages = getErrorMessages(isatabValidator.getLog()); + swapContainers(UIHelper.padComponentVerticalBox(100, new JLabel(convertISAAnimation))); + SwingUtilities.invokeLater(new Runnable() { + public void run() { - boolean strictValidationEnabled = Boolean.valueOf(ISAcreatorProperties.getProperty(ISAcreatorProperties.STRICT_VALIDATION)); - log.info("Strict validation on? " + strictValidationEnabled); - boolean shouldShowErrors = strictValidationEnabled && errorMessages.size() > 0; - if (result == GUIInvokerResult.SUCCESS && !shouldShowErrors) { + final GUIISATABValidator isatabValidator = new GUIISATABValidator(); + GUIInvokerResult result = isatabValidator.validate(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); + final Map> errorMessages = getErrorMessages(isatabValidator.getLog()); - SwingUtilities.invokeLater(new Runnable() { - public void run() { + boolean strictValidationEnabled = Boolean.valueOf(ISAcreatorProperties.getProperty(ISAcreatorProperties.STRICT_VALIDATION)); + log.info("Strict validation on? " + strictValidationEnabled); + boolean shouldShowErrors = strictValidationEnabled && errorMessages.size() > 0; - swapContainers(UIHelper.padComponentVerticalBox(100, new JLabel(convertISAAnimation))); + if (result == GUIInvokerResult.SUCCESS && !shouldShowErrors) { String outputLocation = System.getProperty("java.io.tmpdir") + "sra/" + System.currentTimeMillis() + "/"; new File(outputLocation).mkdirs(); - GUIInvokerResult result = convertISAtab(isatabValidator.getStore(), AllowedConversions.SRA, + result = convertISAtab(isatabValidator.getStore(), AllowedConversions.SRA, ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB), outputLocation); @@ -394,19 +412,18 @@ public void run() { } } - } - }); - } else - - { - log.info("Showing errors and warnings..."); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - displayValidationErrorsAndWarnings(errorMessages); - } - }); - } + } else + { + log.info("Showing errors and warnings..."); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + displayValidationErrorsAndWarnings(errorMessages); + } + }); + } + } + }); } private Box createSubmitProgressContainer() { @@ -416,39 +433,49 @@ private Box createSubmitProgressContainer() { return submitProgressContainer; } - private Box createSubmitComplete(ENAReceipt receipt) { - Box submitProgressContainer = Box.createVerticalBox(); - submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_complete))); + private Container createSubmitComplete(ENAReceipt receipt) { + JPanel submitProgressContainer = new JPanel(new BorderLayout()); + submitProgressContainer.setPreferredSize(new Dimension(600, 420)); + submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_complete)), BorderLayout.NORTH); // create 3 lists with the Sample, Experiment and Runs accessions - Box listPanel = Box.createHorizontalBox(); + JPanel listPanel = new JPanel(new GridLayout(1,3)); + listPanel.setBorder(BorderFactory.createLineBorder(Color.WHITE, 20)); + listPanel.setSize(new Dimension(600, 420)); JList experimentList = new JList(receipt.getExperimentAccessions().toArray()); JList runList = new JList(receipt.getRunAccessions().toArray()); JList sampleList = new JList(receipt.getSampleAccessions().toArray()); - Dimension listDimension = new Dimension(200, 300); - experimentList.setPreferredSize(listDimension); - runList.setPreferredSize(listDimension); - sampleList.setPreferredSize(listDimension); + Box experimentListContainer = Box.createVerticalBox(); - experimentListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Experiments", UIHelper.VER_11_BOLD, UIHelper.EMERALD))); - experimentList.add(experimentList); + JScrollPane experimentScroller = createScrollerForList(experimentList); + + experimentListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Experiments", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS))); + experimentListContainer.add(experimentScroller); listPanel.add(experimentListContainer); Box runListContainer = Box.createVerticalBox(); - runListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Runs", UIHelper.VER_11_BOLD, UIHelper.EMERALD))); - runListContainer.add(runList); + + runListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Runs", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS))); + JScrollPane runScroller = createScrollerForList(runList); + runListContainer.add(runScroller); + listPanel.add(runListContainer); Box sampleListContainer = Box.createVerticalBox(); - sampleListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Samples", UIHelper.VER_11_BOLD, UIHelper.EMERALD))); - sampleListContainer.add(runList); + + sampleListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Samples", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS))); + JScrollPane sampleScroller = createScrollerForList(sampleList); + sampleListContainer.add(sampleScroller); listPanel.add(sampleListContainer); + + submitProgressContainer.add(listPanel); + FlatButton nextButton = new FlatButton(ButtonType.RED, "Close"); nextButton.addMouseListener(new CommonMouseAdapter() { @Override @@ -459,12 +486,23 @@ public void mousePressed(MouseEvent mouseEvent) { } }); - submitProgressContainer.add(Box.createVerticalStrut(80)); - submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton)); + + submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton), BorderLayout.SOUTH); return submitProgressContainer; } + private JScrollPane createScrollerForList(JList experimentList) { + experimentList.setCellRenderer(new SimpleListCellRenderer()); + JScrollPane experimentScroller = new JScrollPane(experimentList, + JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, + JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + experimentScroller.setBorder(new EmptyBorder(0, 0, 0, 0)); + + IAppWidgetFactory.makeIAppScrollPane(experimentScroller); + return experimentScroller; + } + private Box createSubmitFailed(ENAReceipt receipt) { Box submitProgressContainer = Box.createVerticalBox(); @@ -497,5 +535,44 @@ private void addHeaderImageToContainer(Container submitProgressContainer) { submitProgressContainer.add(Box.createVerticalStrut(20)); } + public static void main(String[] args) { + ISAcreatorGUIProperties.setProperties(); + ENASubmissionUI ui = new ENASubmissionUI(); + ui.createGUI(); + ui.setVisible(true); + + Set experiments = new HashSet(); + experiments.add("ERX546955"); + experiments.add("ERX546956"); + experiments.add("ERX546957"); + experiments.add("ERX546958"); + experiments.add("ERX546959"); + experiments.add("ERX546960"); + experiments.add("ERX546961"); + experiments.add("ERX546962"); + + Set runs = new HashSet(); + runs.add("ERR546955"); + runs.add("ERR546956"); + runs.add("ERR546957"); + runs.add("ERR546958"); + runs.add("ERR546959"); + runs.add("ERR546960"); + runs.add("ERR546961"); + runs.add("ERR546962"); + + Set samples = new HashSet(); + samples.add("ERS546955"); + samples.add("ERS546956"); + samples.add("ERS546957"); + samples.add("ERS546958"); + samples.add("ERS546959"); + samples.add("ERS546960"); + samples.add("ERS546961"); + samples.add("ERS546962"); + + ENAReceipt receipt = new ENAReceipt(experiments, samples, runs, new HashSet()); + ui.swapContainers(ui.createSubmitComplete(receipt)); + } } \ No newline at end of file From 2add6a891eab9eda628ee8028fb2b05ca00d2a39 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Mon, 1 Sep 2014 19:52:17 +0100 Subject: [PATCH 40/48] Can now choose the server from the UI. --- .../validateconvert/ui/ENASubmissionUI.java | 119 ++++++++++++++++-- .../submission-package.properties | 7 ++ .../images/submission/dev_server.png | Bin 0 -> 2960 bytes .../images/submission/dev_server_over.png | Bin 0 -> 2925 bytes .../images/submission/prod_server.png | Bin 0 -> 3364 bytes .../images/submission/prod_server_over.png | Bin 0 -> 3349 bytes .../images/submission/test_server.png | Bin 0 -> 2883 bytes .../images/submission/test_server_over.png | Bin 0 -> 2869 bytes 8 files changed, 113 insertions(+), 13 deletions(-) create mode 100644 src/main/resources/images/submission/dev_server.png create mode 100644 src/main/resources/images/submission/dev_server_over.png create mode 100644 src/main/resources/images/submission/prod_server.png create mode 100644 src/main/resources/images/submission/prod_server_over.png create mode 100644 src/main/resources/images/submission/test_server.png create mode 100644 src/main/resources/images/submission/test_server_over.png diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index f9cda1d4..ab45f726 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -45,17 +45,19 @@ public class ENASubmissionUI extends CommonValidationConversionUI { @InjectedResource private ImageIcon submitIcon, created_by, new_sub, new_sub_over, update_sub, update_sub_over, - box_icon, metadata_icon, submission_complete, submission_failed; + box_icon, metadata_icon, submission_complete, submission_failed, dev_server, dev_server_over, prod_server, + prod_server_over, test_server, test_server_over; public static final float DESIRED_OPACITY = .98f; private static Logger log = Logger.getLogger(ENASubmissionUI.class.getName()); - private Container metadataPanel, menuPanel; + private Container metadataPanel, menuPanel, serverPanel; + - private JLabel newSubmission, updateSubmission; private JTextField username, centerName, labName, brokerName, studyIdentifier; private JPasswordField password; + private ENARestServer server = ENARestServer.TEST; private String sraAction; @@ -102,7 +104,7 @@ public Container createMenu() { addHeaderImageToContainer(menuPanel); - newSubmission = new JLabel(new_sub); + final JLabel newSubmission = new JLabel(new_sub); newSubmission.addMouseListener(new CommonMouseAdapter() { @Override @@ -122,11 +124,11 @@ public void mouseReleased(MouseEvent mouseEvent) { super.mouseReleased(mouseEvent); newSubmission.setIcon(new_sub); sraAction = "ADD"; - swapContainers(createMetadataEntryUI()); + swapContainers(chooseServerUI()); } }); - updateSubmission = new JLabel(update_sub); + final JLabel updateSubmission = new JLabel(update_sub); updateSubmission.addMouseListener(new CommonMouseAdapter() { @Override public void mouseEntered(MouseEvent mouseEvent) { @@ -145,7 +147,7 @@ public void mouseReleased(MouseEvent mouseEvent) { super.mouseReleased(mouseEvent); updateSubmission.setIcon(update_sub); sraAction = "MODIFY"; - swapContainers(createMetadataEntryUI()); + swapContainers(chooseServerUI()); } }); @@ -164,6 +166,100 @@ public void mouseReleased(MouseEvent mouseEvent) { return menuPanel; } + private Container chooseServerUI() { + serverPanel = Box.createVerticalBox(); + serverPanel.setPreferredSize(new Dimension(530, 390)); + + addHeaderImageToContainer(serverPanel); + + serverPanel.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Please choose a server to upload to: ", UIHelper.VER_14_PLAIN, UIHelper.EMERALD))); + serverPanel.add(Box.createVerticalStrut(10)); + + final JLabel testServer = new JLabel(test_server); + testServer.addMouseListener(new CommonMouseAdapter() { + @Override + public void mouseEntered(MouseEvent mouseEvent) { + super.mouseEntered(mouseEvent); + testServer.setIcon(test_server_over); + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates. + testServer.setIcon(test_server); + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + super.mouseReleased(mouseEvent); + testServer.setIcon(test_server); + server = ENARestServer.TEST; + swapContainers(createMetadataEntryUI()); + } + }); + + + final JLabel devServer = new JLabel(dev_server); + devServer.addMouseListener(new CommonMouseAdapter() { + @Override + public void mouseEntered(MouseEvent mouseEvent) { + super.mouseEntered(mouseEvent); + devServer.setIcon(dev_server_over); + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates. + devServer.setIcon(dev_server); + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + super.mouseReleased(mouseEvent); + devServer.setIcon(dev_server); + server = ENARestServer.DEV; + swapContainers(createMetadataEntryUI()); + } + }); + + final JLabel prodServer = new JLabel(prod_server); + prodServer.addMouseListener(new CommonMouseAdapter() { + @Override + public void mouseEntered(MouseEvent mouseEvent) { + super.mouseEntered(mouseEvent); + prodServer.setIcon(prod_server_over); + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + super.mouseExited(mouseEvent); //To change body of overridden methods use File | Settings | File Templates. + prodServer.setIcon(prod_server); + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + super.mouseReleased(mouseEvent); + prodServer.setIcon(prod_server); + server = ENARestServer.PROD; + swapContainers(createMetadataEntryUI()); + } + }); + + Box menuContainer = Box.createHorizontalBox(); + menuContainer.add(testServer); + menuContainer.add(Box.createHorizontalStrut(5)); + menuContainer.add(devServer); + menuContainer.add(Box.createHorizontalStrut(5)); + menuContainer.add(prodServer); + + + serverPanel.add(menuContainer); + + serverPanel.add(Box.createVerticalStrut(70)); + + return serverPanel; + } + private Container createMetadataEntryUI() { metadataPanel = Box.createVerticalBox(); @@ -204,7 +300,6 @@ public void mousePressed(MouseEvent mouseEvent) { buttonContainer.add(Box.createHorizontalGlue()); buttonContainer.add(nextButton); - metadataPanel.add(Box.createVerticalStrut(70)); metadataPanel.add(buttonContainer); @@ -334,7 +429,7 @@ public void run() { SRASubmitter submitter = new SRASubmitter(); - String status = submitter.submit(ENARestServer.TEST, username.getText(), new String(password.getPassword()), sraFolder); + String status = submitter.submit(server, username.getText(), new String(password.getPassword()), sraFolder); ENAReceipt receipt = ENAReceiptParser.parseReceipt(status); @@ -387,7 +482,6 @@ private void validateConvertAndSubmitFiles() { public void run() { - final GUIISATABValidator isatabValidator = new GUIISATABValidator(); GUIInvokerResult result = isatabValidator.validate(ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_ISATAB)); final Map> errorMessages = getErrorMessages(isatabValidator.getLog()); @@ -440,7 +534,7 @@ private Container createSubmitComplete(ENAReceipt receipt) { // create 3 lists with the Sample, Experiment and Runs accessions - JPanel listPanel = new JPanel(new GridLayout(1,3)); + JPanel listPanel = new JPanel(new GridLayout(1, 3)); listPanel.setBorder(BorderFactory.createLineBorder(Color.WHITE, 20)); listPanel.setSize(new Dimension(600, 420)); @@ -449,7 +543,6 @@ private Container createSubmitComplete(ENAReceipt receipt) { JList sampleList = new JList(receipt.getSampleAccessions().toArray()); - Box experimentListContainer = Box.createVerticalBox(); JScrollPane experimentScroller = createScrollerForList(experimentList); @@ -572,7 +665,7 @@ public static void main(String[] args) { samples.add("ERS546962"); ENAReceipt receipt = new ENAReceipt(experiments, samples, runs, new HashSet()); - ui.swapContainers(ui.createSubmitComplete(receipt)); +// ui.swapContainers(ui.createSubmitComplete(receipt)); } } \ No newline at end of file diff --git a/src/main/resources/dependency-injections/submission-package.properties b/src/main/resources/dependency-injections/submission-package.properties index b3d61e33..d87fe930 100644 --- a/src/main/resources/dependency-injections/submission-package.properties +++ b/src/main/resources/dependency-injections/submission-package.properties @@ -15,4 +15,11 @@ ENASubmissionUI.metadata_icon=/images/submission/metadata.png ENASubmissionUI.submission_complete=/images/submission/submission_complete.png ENASubmissionUI.submission_failed=/images/submission/submission_failed.png +ENASubmissionUI.dev_server=/images/submission/dev_server.png +ENASubmissionUI.dev_server_over=/images/submission/dev_server_over.png +ENASubmissionUI.prod_server=/images/submission/prod_server.png +ENASubmissionUI.prod_server_over=/images/submission/prod_server_over.png +ENASubmissionUI.test_server=/images/submission/test_server.png +ENASubmissionUI.test_server_over=/images/submission/test_server_over.png + ENASubmissionUI.saveISAtab=/images/validator/saveISAtab.png diff --git a/src/main/resources/images/submission/dev_server.png b/src/main/resources/images/submission/dev_server.png new file mode 100644 index 0000000000000000000000000000000000000000..d0787c4efc942ebe5bc9ab8bc4eb791f3818d057 GIT binary patch literal 2960 zcma)8X*d*W8&=0IlYO#G_Vth~(L%Beh6V|hWlHuT`~GQ0gD^%iVx%${%Mdfjp2^WE znq+N45+_Th8LG)J_W7LiovR<`yT0rCe!S29zR&&Vxt{B}@8`{Sak3K?mJ{aT;Sq({ z+qmu{asQA7`S)XpQ{ka~kc|ajj=dNW7@Oc59l&GhA8|cE339_XD8Mzq*FPzW8eqo5 zBVq`#v2;tET7EPfDjy`*ujyE+plfZ7fm#bUiRA0QF8@&u2xBzf8nKG!+@-K-yN>JM zCNDa#RGkX*3O1-zTeE7;BxcgD%bEaQylA3^%jhbqT#bK5W@BJbTZ^zf^<4I5YSeXz zk?Nq`@b=kn!!b|E91_3fcXyuSw;vuxs?ldRw5};^f)o!ZY4M;Aq7MFqzb;BzKi_|| z|0Dh1>~mTq0z31j_mgkq+D_7UI8r~cwcWJPls)z`r`LNUX6?1zr{TgkJ@`LM8h<`} z_{oljT(0f+jdlkYk;QbACq_oSQw(@y65@cR-Am-mGf~9G;;jNHthO{RO@7fZ&SgQt zxvq8akI|k|C3<5{+=7CFJ5o&t1<20ywK+F5&ua0E%T_}H%7c+jPtu|^wc>Q%1>NuZ zeBQ)J6x;A?n)}6pj1&Z%cX}r2%d>6@{)uG0GW~r;{18kESA>$s-%Hz(qH4dc!v1&U$Uy9rWB-|HZ2ly3#q4t1x;F z{+vcF`<%-;7arb>>;*GL%dX3klgsCOTlX7%hY!Bxx=olZEMB}|BgK+T7xm8O#Dqrj z`?-n7(ha-Bw_y?E54eb@*6UR?SuoI$4OQ zNS%TnrxKMTO%koSoEjLN`wAkC7p_`d)GCjnx>iX@f7l&ivI%Nbaz82k$3bypX*U}n z5LZD5D%R?6mU`g9;P&+Hqqdj8&XQh+%vtnvR^34*diLE&iQxzp_-prNVrHLF3WPWj zBG*S5?n!ixHs9k!^hAy6e6sS`@0PkPLmBNnQs6Hm?IXVwQMm3`9_CQ2n}hqK5Z*e^ z+5nz=$HzUDTJ}r1?A>uKvVBco+;#|XMW3)l+=OHoNT`CL1(z=vJG5QzZ(1@NoD6eB zZy02kc^G>cfNDlh!ZlrC270Vx!^2PM^53S|@=MaEphLRQK%jqTiF@t zU)kNNHcVVIfy|`+o^0fmr)~z_h8O2h7E)xvKzZ&rqRkDi2q zczB_FJx(D6tdw}qGp^5Y2nby)F`8WB25M}bU%NbBWL=r17$esp{v)FMmf}`JR~7bA z^kX2^R`2D9a}yFO`bxn%vJ}zdPI6%V5cR6+6nhuwX4XJ$|8DT(rO_6f{V}P#q;Z4k z8m(H?b(l?Wn}QkTa50CA1WS%eIEXjS)R`hWj(@`{pEz|zvY?_mxdgyit1ip1qPe+? z5bEM`JuCTmp@o&5_6T5ANyW}*t%1+7T!^@ZVf~Rj!e=7H^KpS-3G3Bqui|VEeGg=} zMYxn$>;my*P=^B8>@TM~k1vyh7_XckV;l`IcmO~e!rD8@kRquvObVfI$u6|`3f_6Fjj_K3$#Cd zWbgHm;OQ3?Fsz2C+U@nA%7A}iZwm$9`e~pDRa#5MBje)q@hi@p2~F^b!8xd&zPI1a zo59U+b_zLW4c-ow&#i_JQStb!a)hMmw3BJjWSkx{qf2cP9_YXvcI)X<8RWIm3~gze%f03*UjQSscYHlYlhpQUe5xdff`PVr#6;`BnJE&k zV{mc9g-U>&gG*$-s|9wA)UI9;|B&fpesZ@?xefl~`sK<8cRfWbz1Z4lj=ib~O4xzZt-?h5l4_=<#X!Wz4EF6n#_iGLxo8a`sAam?syFPiEVE=;V z^_|(9?eZz!wdvvsMq523W>I@5GtbxEa+LdZmc|1`UHa02RBpCEqx<{no$jU~jV`ym5$&da>_cQ8e5I(NajAF>U4A;<} zWDxg(;UY9Q}xd)zw3gnyS9}`iQU&KO*2?%D6nN9=9tN+9n(ulC()%QbGal zi!|5=UO}i!864$P|G2+q(Bbf?FMbJc3-ifflu4C~M`^kmhme2AU4+?ddRE)+`uo|2 zQXQ$LneJWk8T>OFmf-p#eop}$v}?j@u$c^})*_j#x23;W+S#1NhuV&L^pWKi$PeE8 zVcqiGRQkbwvzahqJj}PxJg|QPXS^ z?|>5|p%VdD6>|QlF&97q#BpjZ;lM(5a`3z_pg1QZm;0_3t5} z1CHoq=5$weIMfd^+Os-2NGCC|_sHuUFY1*i#`g0Hf~VDJY(FpoESiHsQaHHMY>Zk# z8QLXYQqMtDrfKyU0avzO)u?sUIr>f-I01AC%b?IbS16TH0BmLXt4>)kHM&^sh)f9W zw^@-Mr*@FTl+;&;;Xn-wZTPy*iJV!-hPAH^dv#r3l%N(L8<~x|AFs-pHSAB#McctM zMYTPwDYg`3hh$6b`lzGg&O0O{JXp~KOBi%T+$L>RpIF(rpd<8-GtIK9jXVF8pAuN* zhF0k$*vvO)PlY z3b#dqk@c|>_(~13@sI(j(bn8W;QtWt--7$3-ciagbX3%tf7=h+lFxN?H9|HbBk MfSqheR@YGf2F|mDBme*a literal 0 HcmV?d00001 diff --git a/src/main/resources/images/submission/dev_server_over.png b/src/main/resources/images/submission/dev_server_over.png new file mode 100644 index 0000000000000000000000000000000000000000..71ec1a8cba51d859733d60bf2bdac8cb701e41a3 GIT binary patch literal 2925 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/images/submission/prod_server.png b/src/main/resources/images/submission/prod_server.png new file mode 100644 index 0000000000000000000000000000000000000000..9a53a50931bbe8d617e85a77c474efd95f85fc72 GIT binary patch literal 3364 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 Date: Tue, 2 Sep 2014 10:02:43 +0100 Subject: [PATCH 41/48] Adding links --- .../validateconvert/ui/ENASubmissionUI.java | 73 ++++++++++++++++++- 1 file changed, 69 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index ab45f726..06d3b044 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -32,9 +32,13 @@ import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.border.EtchedBorder; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; +import javax.swing.text.html.HTMLEditorKit; import java.awt.*; import java.awt.event.MouseEvent; import java.io.*; +import java.net.URISyntaxException; import java.util.*; import java.util.List; @@ -326,8 +330,43 @@ private Box createUserLoginSection() { ? Box.createVerticalStrut(90) : Box.createVerticalStrut(55)); - JLabel info = UIHelper.createLabel("Don’t have an account? Create one...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); - userLoginSection.add(UIHelper.wrapComponentInPanel(info)); + JEditorPane registerInfo = new JEditorPane(); + UIHelper.renderComponent(registerInfo, UIHelper.VER_9_PLAIN, new Color(127, 140, 141), false); + registerInfo.setContentType("text/html"); + registerInfo.setEditable(false); + registerInfo.setEditorKit(new HTMLEditorKit()); + String label = "Don’t have an account? Create one in EBI metegenomics or EBI ENA"; + registerInfo.setText(label); + registerInfo.setVisible(true); + + registerInfo.addHyperlinkListener(new HyperlinkListener() { + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + if (Desktop.isDesktopSupported()) { + try { + Desktop.getDesktop().browse(e.getURL().toURI()); + } catch (IOException e1) { + e1.printStackTrace(); + } catch (URISyntaxException e1) { + e1.printStackTrace(); + } + } + } + } + }); + + JScrollPane registerScroll = new JScrollPane(registerInfo, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + registerScroll.setPreferredSize(new Dimension(350, 90)); + registerScroll.setBorder(null); + registerScroll.setOpaque(false); + registerScroll.getViewport().setOpaque(false); + IAppWidgetFactory.makeIAppScrollPane(registerScroll); + + //JLabel info = UIHelper.createLabel("Don’t have an account? Create one...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); + //userLoginSection.add(UIHelper.wrapComponentInPanel(info)); + + //userLoginSection.add(UIHelper.wrapComponentInPanel(registerInfo)); + userLoginSection.add(registerScroll); return userLoginSection; } @@ -357,8 +396,34 @@ private Box createMetadataSection() { metadataSection.add(createMetadataFieldContainer(labName, "SRA Lab Name", 0, 30)); metadataSection.add(Box.createVerticalStrut(20)); - JLabel info = UIHelper.createLabel("Read more about ENA Submission Requirements...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); - metadataSection.add(UIHelper.wrapComponentInPanel(info)); + JEditorPane submissionInfo = new JEditorPane(); + UIHelper.renderComponent(submissionInfo, UIHelper.VER_9_PLAIN, new Color(127, 140, 141), false); + submissionInfo.setContentType("text/html"); + submissionInfo.setEditable(false); + submissionInfo.setEditorKit(new HTMLEditorKit()); + String label = "Read more about ENA Submission Requirements..."; + submissionInfo.setText(label); + submissionInfo.setVisible(true); + + submissionInfo.addHyperlinkListener(new HyperlinkListener() { + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + if (Desktop.isDesktopSupported()) { + try { + Desktop.getDesktop().browse(e.getURL().toURI()); + } catch (IOException e1) { + e1.printStackTrace(); + } catch (URISyntaxException e1) { + e1.printStackTrace(); + } + } + } + } + }); + + //JLabel info = UIHelper.createLabel("Read more about ENA Submission Requirements...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); + //metadataSection.add(UIHelper.wrapComponentInPanel(info)); + metadataSection.add(submissionInfo); return metadataSection; } From 0078acdd52cf6bb28da079684cb57934fdd12165 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Tue, 2 Sep 2014 15:00:53 +0100 Subject: [PATCH 42/48] Finally done! :D --- .../validateconvert/ui/ENASubmissionUI.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index 06d3b044..17212b2c 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -58,7 +58,6 @@ public class ENASubmissionUI extends CommonValidationConversionUI { private Container metadataPanel, menuPanel, serverPanel; - private JTextField username, centerName, labName, brokerName, studyIdentifier; private JPasswordField password; private ENARestServer server = ENARestServer.TEST; @@ -304,7 +303,7 @@ public void mousePressed(MouseEvent mouseEvent) { buttonContainer.add(Box.createHorizontalGlue()); buttonContainer.add(nextButton); - metadataPanel.add(Box.createVerticalStrut(70)); + metadataPanel.add(Box.createVerticalStrut(sraAction.equals("MODIFY") ? 20 : 30)); metadataPanel.add(buttonContainer); return metadataPanel; @@ -327,15 +326,16 @@ private Box createUserLoginSection() { userLoginSection.add(createMetadataFieldContainer(password, "Password", 1, 10)); userLoginSection.add(sraAction.equals("MODIFY") - ? Box.createVerticalStrut(90) : - Box.createVerticalStrut(55)); + ? Box.createVerticalStrut(75) : + Box.createVerticalStrut(45)); JEditorPane registerInfo = new JEditorPane(); - UIHelper.renderComponent(registerInfo, UIHelper.VER_9_PLAIN, new Color(127, 140, 141), false); + registerInfo.setPreferredSize(new Dimension(230, 50)); + UIHelper.renderComponent(registerInfo, UIHelper.VER_9_PLAIN, UIHelper.GREY_COLOR, false); registerInfo.setContentType("text/html"); registerInfo.setEditable(false); registerInfo.setEditorKit(new HTMLEditorKit()); - String label = "Don’t have an account? Create one in EBI metegenomics or EBI ENA"; + String label = "

Don’t have an account? Create one in EBI metagenomics or EBI ENA

"; registerInfo.setText(label); registerInfo.setVisible(true); @@ -355,18 +355,13 @@ public void hyperlinkUpdate(HyperlinkEvent e) { } }); - JScrollPane registerScroll = new JScrollPane(registerInfo, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); - registerScroll.setPreferredSize(new Dimension(350, 90)); - registerScroll.setBorder(null); - registerScroll.setOpaque(false); - registerScroll.getViewport().setOpaque(false); - IAppWidgetFactory.makeIAppScrollPane(registerScroll); //JLabel info = UIHelper.createLabel("Don’t have an account? Create one...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); //userLoginSection.add(UIHelper.wrapComponentInPanel(info)); //userLoginSection.add(UIHelper.wrapComponentInPanel(registerInfo)); - userLoginSection.add(registerScroll); + userLoginSection.add(Box.createVerticalStrut(30)); + userLoginSection.add(registerInfo); return userLoginSection; } @@ -394,14 +389,16 @@ private Box createMetadataSection() { labName = new JTextField("Oxford e-Research Centre"); metadataSection.add(createMetadataFieldContainer(labName, "SRA Lab Name", 0, 30)); - metadataSection.add(Box.createVerticalStrut(20)); + metadataSection.add(Box.createVerticalStrut(50)); +// metadataSection.add(Box.createVerticalGlue()); JEditorPane submissionInfo = new JEditorPane(); + submissionInfo.setPreferredSize(new Dimension(350, 40)); UIHelper.renderComponent(submissionInfo, UIHelper.VER_9_PLAIN, new Color(127, 140, 141), false); submissionInfo.setContentType("text/html"); submissionInfo.setEditable(false); submissionInfo.setEditorKit(new HTMLEditorKit()); - String label = "Read more about ENA Submission Requirements..."; + String label = "

Read more about ENA Submission Requirements...

"; submissionInfo.setText(label); submissionInfo.setVisible(true); @@ -421,6 +418,7 @@ public void hyperlinkUpdate(HyperlinkEvent e) { } }); + //JLabel info = UIHelper.createLabel("Read more about ENA Submission Requirements...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); //metadataSection.add(UIHelper.wrapComponentInPanel(info)); metadataSection.add(submissionInfo); @@ -455,6 +453,7 @@ private Container createMetadataFieldContainer(JTextField field, String fieldNam private Box createFieldDetailWrapper(ImageIcon image_icon, String text, int padding) { Box fieldContainer = Box.createHorizontalBox(); + fieldContainer.setOpaque(true); fieldContainer.setBackground(UIHelper.VERY_LIGHT_GREY_COLOR); fieldContainer.setBorder(BorderFactory.createLineBorder(UIHelper.VERY_LIGHT_GREY_COLOR, 8)); From d6caaef1e5b52f36bc65682a5ab0e1811c590b90 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Fri, 5 Sep 2014 09:57:34 +0100 Subject: [PATCH 43/48] Dealing with login failed error message --- .../validateconvert/ui/ENASubmissionUI.java | 75 ++++++++++++++----- 1 file changed, 57 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index 17212b2c..77f142e3 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -3,6 +3,7 @@ import com.explodingpixels.macwidgets.IAppWidgetFactory; import com.sun.awt.AWTUtilities; import org.apache.log4j.Logger; +import org.isatools.errorreporter.model.ErrorLevel; import org.isatools.errorreporter.model.ErrorMessage; import org.isatools.isacreator.autofilteringlist.FilterableListCellRenderer; import org.isatools.isacreator.common.CommonMouseAdapter; @@ -20,6 +21,7 @@ import org.isatools.isacreator.settings.ISAcreatorProperties; import org.isatools.isacreator.validateconvert.ui.ENAReceipt.ENAReceipt; import org.isatools.isacreator.validateconvert.ui.ENAReceipt.ENAReceiptParser; +import org.isatools.isatab.export.sra.submission.ENAResponse; import org.isatools.isatab.export.sra.submission.ENARestServer; import org.isatools.isatab.export.sra.submission.SRASubmitter; import org.isatools.isatab.gui_invokers.AllowedConversions; @@ -331,10 +333,10 @@ private Box createUserLoginSection() { JEditorPane registerInfo = new JEditorPane(); registerInfo.setPreferredSize(new Dimension(230, 50)); - UIHelper.renderComponent(registerInfo, UIHelper.VER_9_PLAIN, UIHelper.GREY_COLOR, false); + //UIHelper.renderComponent(registerInfo, UIHelper.VER_9_PLAIN, UIHelper.GREY_COLOR, false); registerInfo.setContentType("text/html"); registerInfo.setEditable(false); - registerInfo.setEditorKit(new HTMLEditorKit()); + //registerInfo.setEditorKit(new HTMLEditorKit()); String label = "

Don’t have an account? Create one in EBI metagenomics or EBI ENA

"; registerInfo.setText(label); registerInfo.setVisible(true); @@ -356,10 +358,6 @@ public void hyperlinkUpdate(HyperlinkEvent e) { }); - //JLabel info = UIHelper.createLabel("Don’t have an account? Create one...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); - //userLoginSection.add(UIHelper.wrapComponentInPanel(info)); - - //userLoginSection.add(UIHelper.wrapComponentInPanel(registerInfo)); userLoginSection.add(Box.createVerticalStrut(30)); userLoginSection.add(registerInfo); @@ -394,7 +392,7 @@ private Box createMetadataSection() { JEditorPane submissionInfo = new JEditorPane(); submissionInfo.setPreferredSize(new Dimension(350, 40)); - UIHelper.renderComponent(submissionInfo, UIHelper.VER_9_PLAIN, new Color(127, 140, 141), false); + //UIHelper.renderComponent(submissionInfo, UIHelper.VER_9_PLAIN, new Color(127, 140, 141), false); submissionInfo.setContentType("text/html"); submissionInfo.setEditable(false); submissionInfo.setEditorKit(new HTMLEditorKit()); @@ -418,9 +416,6 @@ public void hyperlinkUpdate(HyperlinkEvent e) { } }); - - //JLabel info = UIHelper.createLabel("Read more about ENA Submission Requirements...", UIHelper.VER_9_PLAIN, new Color(127, 140, 141)); - //metadataSection.add(UIHelper.wrapComponentInPanel(info)); metadataSection.add(submissionInfo); return metadataSection; @@ -493,19 +488,33 @@ public void run() { SRASubmitter submitter = new SRASubmitter(); - String status = submitter.submit(server, username.getText(), new String(password.getPassword()), sraFolder); + ENAResponse response = submitter.submit(server, username.getText(), new String(password.getPassword()), sraFolder); + + if (response!=null){ + + int status = response.getStatus_code(); + String message = response.getReceipt(); + + System.out.println("STATUS is " + status); + System.out.println("RECEIPT/MESSAGE is " + message); + ENAReceipt receipt = null; - ENAReceipt receipt = ENAReceiptParser.parseReceipt(status); + if (status == 406) { + swapContainers(createSubmitFailed(message)); - System.out.println("STATUS is " + status); - if (status == null) { - swapContainers(createSubmitFailed(receipt)); - } else { + } else if (status != 200) { - if (receipt.getErrors().size() > 0) { + receipt = ENAReceiptParser.parseReceipt(message); swapContainers(createSubmitFailed(receipt)); + } else { - swapContainers(createSubmitComplete(receipt)); + + receipt = ENAReceiptParser.parseReceipt(message); + if (receipt.getErrors().size() > 0) { + swapContainers(createSubmitFailed(receipt)); + } else { + swapContainers(createSubmitComplete(receipt)); + } } } } @@ -660,6 +669,36 @@ private JScrollPane createScrollerForList(JList experimentList) { return experimentScroller; } + private Box createSubmitFailed(String message) { + Box submitProgressContainer = Box.createVerticalBox(); + + submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_failed))); + + ConversionErrorUI errorContainer = new ConversionErrorUI(); + + List errorMessages = new ArrayList(); + errorMessages.add(new ErrorMessage(ErrorLevel.ERROR, message)); + errorContainer.constructErrorPane(errorMessages); + errorContainer.setPreferredSize(new Dimension(650, 300)); + + submitProgressContainer.add(errorContainer); + +// SUBMIT ANOTHER, OR BACK + FlatButton nextButton = new FlatButton(ButtonType.RED, "Back to Submission Screen"); + nextButton.addMouseListener(new CommonMouseAdapter() { + @Override + public void mousePressed(MouseEvent mouseEvent) { + super.mousePressed(mouseEvent); + swapContainers(metadataPanel); + } + }); + + submitProgressContainer.add(Box.createVerticalStrut(20)); + submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton)); + + return submitProgressContainer; + } + private Box createSubmitFailed(ENAReceipt receipt) { Box submitProgressContainer = Box.createVerticalBox(); From bd53c35e1cfdac365d1ce5188f5ea626c32a770a Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Fri, 5 Sep 2014 13:49:47 +0100 Subject: [PATCH 44/48] Error messages according to conversion/submission action, added username/password validation, added studies to ENAReceipt --- .../ui/CommonValidationConversionUI.java | 4 +- .../ui/ENAReceipt/ENAReceipt.java | 13 ++- .../ui/ENAReceipt/ENAReceiptParser.java | 3 +- .../validateconvert/ui/ENASubmissionUI.java | 82 ++++++++++++++++--- 4 files changed, 86 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java index 4388921d..c2219a93 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/CommonValidationConversionUI.java @@ -133,8 +133,8 @@ protected GUIInvokerResult convertISAtab(BIIObjectStore store, AllowedConversion } } - ConversionErrorUI errorContainer = new ConversionErrorUI(); - errorContainer.constructErrorPane(messages); + ErrorUI errorContainer = new ErrorUI(); + errorContainer.constructErrorPane(messages, "Conversion"); errorContainer.setPreferredSize(new Dimension(650, 440)); swapContainers(errorContainer); diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java index 2f173718..deb60664 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java @@ -14,12 +14,17 @@ public class ENAReceipt { - private Set experimentAccessions, sampleAccession, runAccessions, errors; + private Set experimentAccessions, sampleAccession, runAccessions, studyAccessions, errors; - public ENAReceipt(Set experimentAccessions, Set sampleAccession, Set runAccessions, Set errors) { + public ENAReceipt(Set experimentAccessions, + Set sampleAccession, + Set runAccessions, + Set studyAccessions, + Set errors) { this.experimentAccessions = experimentAccessions; this.sampleAccession = sampleAccession; this.runAccessions = runAccessions; + this.studyAccessions = studyAccessions; this.errors = errors; } @@ -35,6 +40,10 @@ public Set getRunAccessions() { return runAccessions; } + public Set getStudyAccessions() { + return studyAccessions; + } + public Set getErrors() { return errors; } diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java index 2147403d..718ef353 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java @@ -23,9 +23,10 @@ public static ENAReceipt parseReceipt(String receipt) { Set experimentAccessions = parseReceiptSection(reader, "EXPERIMENT"); Set sampleAccessions = parseReceiptSection(reader, "SAMPLE"); Set runAccessions = parseReceiptSection(reader, "RUN"); + Set studyAccessions = parseReceiptSection(reader, "STUDY"); Set errors = parseReceiptErrors(reader); - return new ENAReceipt(experimentAccessions, sampleAccessions, runAccessions, errors); + return new ENAReceipt(experimentAccessions, sampleAccessions, runAccessions, studyAccessions, errors); } catch (IOException e) { log.error(e); e.printStackTrace(); diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index 77f142e3..82b077f5 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -5,7 +5,6 @@ import org.apache.log4j.Logger; import org.isatools.errorreporter.model.ErrorLevel; import org.isatools.errorreporter.model.ErrorMessage; -import org.isatools.isacreator.autofilteringlist.FilterableListCellRenderer; import org.isatools.isacreator.common.CommonMouseAdapter; import org.isatools.isacreator.common.UIHelper; import org.isatools.isacreator.common.button.ButtonType; @@ -13,7 +12,6 @@ import org.isatools.isacreator.effects.GraphicsUtils; import org.isatools.isacreator.effects.HUDTitleBar; import org.isatools.isacreator.effects.SimpleListCellRenderer; -import org.isatools.isacreator.effects.SingleSelectionListCellRenderer; import org.isatools.isacreator.launch.ISAcreatorGUIProperties; import org.isatools.isacreator.managers.ApplicationManager; import org.isatools.isacreator.model.Investigation; @@ -38,6 +36,8 @@ import javax.swing.event.HyperlinkListener; import javax.swing.text.html.HTMLEditorKit; import java.awt.*; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; import java.awt.event.MouseEvent; import java.io.*; import java.net.URISyntaxException; @@ -62,6 +62,7 @@ public class ENASubmissionUI extends CommonValidationConversionUI { private JTextField username, centerName, labName, brokerName, studyIdentifier; private JPasswordField password; + private JLabel status; private ENARestServer server = ENARestServer.TEST; private String sraAction; @@ -171,6 +172,10 @@ public void mouseReleased(MouseEvent mouseEvent) { return menuPanel; } + /** + * Screen to choose the ENA server (test, dev, prod) + * @return + */ private Container chooseServerUI() { serverPanel = Box.createVerticalBox(); serverPanel.setPreferredSize(new Dimension(530, 390)); @@ -297,7 +302,13 @@ public void mousePressed(MouseEvent mouseEvent) { @Override public void mousePressed(MouseEvent mouseEvent) { super.mousePressed(mouseEvent); - validateConvertAndSubmitFiles(); + if (username.getText().equals("") || username.equals("Username") || password.getPassword().length==0){ + + status.setText("Please complete username and password! "); + + } else { + validateConvertAndSubmitFiles(); + } } }); @@ -311,6 +322,14 @@ public void mousePressed(MouseEvent mouseEvent) { return metadataPanel; } + private void clearStatus(){ + status.setText(""); + } + + /** + * Creates a Box for the user login + * @return Box + */ private Box createUserLoginSection() { Box userLoginSection = Box.createVerticalBox(); @@ -321,11 +340,39 @@ private Box createUserLoginSection() { String sra_username = ISAcreatorProperties.getProperty("sra_username"); username = new JTextField(sra_username.isEmpty() ? "Username" : sra_username); + + username.addFocusListener(new FocusListener() { + public void focusGained(FocusEvent focusEvent) { + clearStatus(); + } + + public void focusLost(FocusEvent focusEvent) { + clearStatus(); + } + }); + password = new JPasswordField(""); + password.addFocusListener(new FocusListener() { + public void focusGained(FocusEvent focusEvent) { + clearStatus(); + } + + public void focusLost(FocusEvent focusEvent) { + clearStatus(); + } + }); + status = new JLabel(); + status.setText(""); + status.setForeground(UIHelper.RED_COLOR); + status.setSize(new Dimension(200, 25)); + status.setOpaque(true); + userLoginSection.add(createMetadataFieldContainer(username, "Username")); userLoginSection.add(Box.createVerticalStrut(5)); userLoginSection.add(createMetadataFieldContainer(password, "Password", 1, 10)); + userLoginSection.add(Box.createVerticalStrut(5)); + userLoginSection.add(UIHelper.wrapComponentInPanel(status)); userLoginSection.add(sraAction.equals("MODIFY") ? Box.createVerticalStrut(75) : @@ -333,10 +380,8 @@ private Box createUserLoginSection() { JEditorPane registerInfo = new JEditorPane(); registerInfo.setPreferredSize(new Dimension(230, 50)); - //UIHelper.renderComponent(registerInfo, UIHelper.VER_9_PLAIN, UIHelper.GREY_COLOR, false); registerInfo.setContentType("text/html"); registerInfo.setEditable(false); - //registerInfo.setEditorKit(new HTMLEditorKit()); String label = "

Don’t have an account? Create one in EBI metagenomics or EBI ENA

"; registerInfo.setText(label); registerInfo.setVisible(true); @@ -426,6 +471,8 @@ private Container createMetadataFieldContainer(JTextField field, String fieldNam } /** + * Creates a Container for a metadata field + * * @param field - Field to be created and added * @param fieldName - Name to be given to the field * @param type - 0 for JTextField, 1 for JPasswordField @@ -605,8 +652,11 @@ private Container createSubmitComplete(ENAReceipt receipt) { submitProgressContainer.setPreferredSize(new Dimension(600, 420)); submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_complete)), BorderLayout.NORTH); - // create 3 lists with the Sample, Experiment and Runs accessions + JLabel info = UIHelper.createLabel("Successful submission ", UIHelper.VER_11_BOLD, UIHelper.LIGHT_GREEN_COLOR); + submitProgressContainer.add(info); + + // create 3 lists with the Sample, Experiment and Runs accessions JPanel listPanel = new JPanel(new GridLayout(1, 3)); listPanel.setBorder(BorderFactory.createLineBorder(Color.WHITE, 20)); listPanel.setSize(new Dimension(600, 420)); @@ -674,11 +724,11 @@ private Box createSubmitFailed(String message) { submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_failed))); - ConversionErrorUI errorContainer = new ConversionErrorUI(); + ErrorUI errorContainer = new ErrorUI(); List errorMessages = new ArrayList(); errorMessages.add(new ErrorMessage(ErrorLevel.ERROR, message)); - errorContainer.constructErrorPane(errorMessages); + errorContainer.constructErrorPane(errorMessages, "Submission"); errorContainer.setPreferredSize(new Dimension(650, 300)); submitProgressContainer.add(errorContainer); @@ -699,13 +749,19 @@ public void mousePressed(MouseEvent mouseEvent) { return submitProgressContainer; } + /** + * Creates a box when submission failed + * + * @param receipt + * @return + */ private Box createSubmitFailed(ENAReceipt receipt) { Box submitProgressContainer = Box.createVerticalBox(); submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_failed))); - ConversionErrorUI errorContainer = new ConversionErrorUI(); - errorContainer.constructErrorPane(receipt.getErrorsForDisplay("Submission Errors")); + ErrorUI errorContainer = new ErrorUI(); + errorContainer.constructErrorPane(receipt.getErrorsForDisplay("Submission Errors"), "Submission"); errorContainer.setPreferredSize(new Dimension(650, 300)); submitProgressContainer.add(errorContainer); @@ -767,7 +823,11 @@ public static void main(String[] args) { samples.add("ERS546961"); samples.add("ERS546962"); - ENAReceipt receipt = new ENAReceipt(experiments, samples, runs, new HashSet()); + Set studies = new HashSet(); + studies.add("ERP006700"); + + + ENAReceipt receipt = new ENAReceipt(experiments, samples, runs, studies, new HashSet()); // ui.swapContainers(ui.createSubmitComplete(receipt)); } From 8140bc0f51350912b103231a9a266b7d21e32b32 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Fri, 5 Sep 2014 14:08:06 +0100 Subject: [PATCH 45/48] Renamed class --- .../ui/{ConversionErrorUI.java => ErrorUI.java} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename src/main/java/org/isatools/isacreator/validateconvert/ui/{ConversionErrorUI.java => ErrorUI.java} (96%) diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ConversionErrorUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ErrorUI.java similarity index 96% rename from src/main/java/org/isatools/isacreator/validateconvert/ui/ConversionErrorUI.java rename to src/main/java/org/isatools/isacreator/validateconvert/ui/ErrorUI.java index 96d3fff1..8798ddf2 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ConversionErrorUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ErrorUI.java @@ -53,16 +53,16 @@ The ISA Team and the ISA software suite have been funded by the EU Carcinogenomi * Date: 09/09/2011 * Time: 09:56 */ -public class ConversionErrorUI extends Container { +public class ErrorUI extends Container { - public ConversionErrorUI() { + public ErrorUI() { setLayout(new BorderLayout()); } - public void constructErrorPane(List errorMessages) { + public void constructErrorPane(List errorMessages, String action) { - JLabel info = UIHelper.createLabel("Conversion failed with " + JLabel info = UIHelper.createLabel(action+ " failed with " + errorMessages.size() + (errorMessages.size() > 1 ? " errors" : " error") + ". Here is why:", UIHelper.VER_11_BOLD, UIHelper.RED_COLOR); From 4ed909ae0dd179841d0e435f8620adb95e710b7b Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Fri, 5 Sep 2014 15:14:40 +0100 Subject: [PATCH 46/48] Adding studies and info messages --- .../ui/ENAReceipt/ENAReceipt.java | 20 ++++++--- .../ui/ENAReceipt/ENAReceiptParser.java | 19 +++++++- .../validateconvert/ui/ENASubmissionUI.java | 43 ++++++++++--------- .../validateconvert/ui/ErrorUI.java | 2 +- 4 files changed, 56 insertions(+), 28 deletions(-) diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java index deb60664..225528bc 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceipt.java @@ -14,17 +14,19 @@ public class ENAReceipt { - private Set experimentAccessions, sampleAccession, runAccessions, studyAccessions, errors; + private Set experimentAccessions, sampleAccession, runAccessions, studyAccessions, infoMessages, errors; public ENAReceipt(Set experimentAccessions, Set sampleAccession, Set runAccessions, Set studyAccessions, + Set infoMessages, Set errors) { this.experimentAccessions = experimentAccessions; this.sampleAccession = sampleAccession; this.runAccessions = runAccessions; this.studyAccessions = studyAccessions; + this.infoMessages = infoMessages; this.errors = errors; } @@ -44,18 +46,26 @@ public Set getStudyAccessions() { return studyAccessions; } + public Set getInfoMessages() { + return infoMessages; + } + public Set getErrors() { return errors; } - public List getErrorsForDisplay(String studyId) { - List errors = new ArrayList(); + public List getMessagesForDisplay(String studyId) { + List messages = new ArrayList(); + + for(String info: getInfoMessages()){ + messages.add(new ErrorMessage(ErrorLevel.INFO, info)); + } for(String error : getErrors()) { - errors.add(new ErrorMessage(ErrorLevel.ERROR, error)); + messages.add(new ErrorMessage(ErrorLevel.ERROR, error)); } - return errors; + return messages; } } diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java index 718ef353..d1713e4e 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENAReceipt/ENAReceiptParser.java @@ -24,9 +24,9 @@ public static ENAReceipt parseReceipt(String receipt) { Set sampleAccessions = parseReceiptSection(reader, "SAMPLE"); Set runAccessions = parseReceiptSection(reader, "RUN"); Set studyAccessions = parseReceiptSection(reader, "STUDY"); + Set infoMessages = parseReceiptInfoMessages(reader); Set errors = parseReceiptErrors(reader); - - return new ENAReceipt(experimentAccessions, sampleAccessions, runAccessions, studyAccessions, errors); + return new ENAReceipt(experimentAccessions, sampleAccessions, runAccessions, studyAccessions, infoMessages, errors); } catch (IOException e) { log.error(e); e.printStackTrace(); @@ -48,8 +48,23 @@ public static Set parseReceiptSection(XPathReader reader, String section } return accessions; } + public static Set parseReceiptInfoMessages(XPathReader reader) { + + Set infoSet = new HashSet(); + NodeList infoMessages = (NodeList) reader.read("/RECEIPT/MESSAGES/INFO", XPathConstants.NODESET); + if (infoMessages.getLength() > 0) { + for (int experimentIndex = 0; experimentIndex <= infoMessages.getLength(); experimentIndex++) { + String info = (String) reader.read("/RECEIPT/MESSAGES/INFO[" + experimentIndex + "]", XPathConstants.STRING); + if (!info.isEmpty()) { + infoSet.add(info); + } + } + } + return infoSet; + + } public static Set parseReceiptErrors(XPathReader reader) { Set errors = new HashSet(); diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index 82b077f5..53509f0c 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -652,44 +652,48 @@ private Container createSubmitComplete(ENAReceipt receipt) { submitProgressContainer.setPreferredSize(new Dimension(600, 420)); submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_complete)), BorderLayout.NORTH); - - JLabel info = UIHelper.createLabel("Successful submission ", UIHelper.VER_11_BOLD, UIHelper.LIGHT_GREEN_COLOR); - submitProgressContainer.add(info); - - // create 3 lists with the Sample, Experiment and Runs accessions + // create 4 lists with the Study, Sample, Experiment and Runs accessions JPanel listPanel = new JPanel(new GridLayout(1, 3)); listPanel.setBorder(BorderFactory.createLineBorder(Color.WHITE, 20)); listPanel.setSize(new Dimension(600, 420)); + JList studyList = new JList(receipt.getStudyAccessions().toArray()); JList experimentList = new JList(receipt.getExperimentAccessions().toArray()); JList runList = new JList(receipt.getRunAccessions().toArray()); JList sampleList = new JList(receipt.getSampleAccessions().toArray()); + Box studyListContainer = Box.createVerticalBox(); + JScrollPane studyScroller = createScrollerForList(studyList); + JLabel studies = UIHelper.createLabel("Studies", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS); + studies.setToolTipText("ENA accession numbers for the submitted studies"); + studyListContainer.add(UIHelper.wrapComponentInPanel(studies)); + studyListContainer.add(studyScroller); + listPanel.add(studyListContainer); Box experimentListContainer = Box.createVerticalBox(); - JScrollPane experimentScroller = createScrollerForList(experimentList); - - experimentListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Experiments", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS))); - experimentListContainer.add(experimentScroller); + JScrollPane experimentController = createScrollerForList(experimentList); + JLabel experiments = UIHelper.createLabel("Experiments", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS); + experiments.setToolTipText("ENA accession numbers for the submitted experiments"); + experimentListContainer.add(UIHelper.wrapComponentInPanel()); + experimentListContainer.add(experimentController); listPanel.add(experimentListContainer); Box runListContainer = Box.createVerticalBox(); - - runListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Runs", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS))); + JLabel runs = UIHelper.createLabel("Runs", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS); + runs.setToolTipText("ENA accession numbers for the submitted runs"); + runListContainer.add(UIHelper.wrapComponentInPanel(runs)); JScrollPane runScroller = createScrollerForList(runList); runListContainer.add(runScroller); - listPanel.add(runListContainer); Box sampleListContainer = Box.createVerticalBox(); - - sampleListContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("Samples", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS))); + JLabel samples = UIHelper.createLabel("Samples", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS); + samples.setToolTipText("ENA accession numbers for the submitted samples"); + sampleListContainer.add(UIHelper.wrapComponentInPanel(samples)); JScrollPane sampleScroller = createScrollerForList(sampleList); sampleListContainer.add(sampleScroller); - listPanel.add(sampleListContainer); - submitProgressContainer.add(listPanel); FlatButton nextButton = new FlatButton(ButtonType.RED, "Close"); @@ -702,7 +706,6 @@ public void mousePressed(MouseEvent mouseEvent) { } }); - submitProgressContainer.add(UIHelper.wrapComponentInPanel(nextButton), BorderLayout.SOUTH); return submitProgressContainer; @@ -761,7 +764,7 @@ private Box createSubmitFailed(ENAReceipt receipt) { submitProgressContainer.add(UIHelper.wrapComponentInPanel(new JLabel(submission_failed))); ErrorUI errorContainer = new ErrorUI(); - errorContainer.constructErrorPane(receipt.getErrorsForDisplay("Submission Errors"), "Submission"); + errorContainer.constructErrorPane(receipt.getMessagesForDisplay("Submission Errors"), "Submission"); errorContainer.setPreferredSize(new Dimension(650, 300)); submitProgressContainer.add(errorContainer); @@ -827,8 +830,8 @@ public static void main(String[] args) { studies.add("ERP006700"); - ENAReceipt receipt = new ENAReceipt(experiments, samples, runs, studies, new HashSet()); -// ui.swapContainers(ui.createSubmitComplete(receipt)); + ENAReceipt receipt = new ENAReceipt(experiments, samples, runs, studies, new HashSet(), new HashSet()); + ui.swapContainers(ui.createSubmitComplete(receipt)); } } \ No newline at end of file diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ErrorUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ErrorUI.java index 8798ddf2..475d13e0 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ErrorUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ErrorUI.java @@ -64,7 +64,7 @@ public void constructErrorPane(List errorMessages, String action) JLabel info = UIHelper.createLabel(action+ " failed with " + errorMessages.size() - + (errorMessages.size() > 1 ? " errors" : " error") + + (errorMessages.size() > 1 ? " messages" : " message") + ". Here is why:", UIHelper.VER_11_BOLD, UIHelper.RED_COLOR); info.setHorizontalAlignment(SwingConstants.LEFT); From 359917c07e44fef23a03dd7cdcd7372fffe6fcf0 Mon Sep 17 00:00:00 2001 From: Alejandra Gonzalez-Beltran Date: Mon, 8 Sep 2014 18:30:28 +0100 Subject: [PATCH 47/48] Added missing JLabel for experiments --- .../isatools/isacreator/validateconvert/ui/ENASubmissionUI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java index 53509f0c..f1f2c13e 100644 --- a/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java +++ b/src/main/java/org/isatools/isacreator/validateconvert/ui/ENASubmissionUI.java @@ -674,7 +674,7 @@ private Container createSubmitComplete(ENAReceipt receipt) { JScrollPane experimentController = createScrollerForList(experimentList); JLabel experiments = UIHelper.createLabel("Experiments", UIHelper.VER_11_BOLD, UIHelper.NEPHRITIS); experiments.setToolTipText("ENA accession numbers for the submitted experiments"); - experimentListContainer.add(UIHelper.wrapComponentInPanel()); + experimentListContainer.add(UIHelper.wrapComponentInPanel(experiments)); experimentListContainer.add(experimentController); listPanel.add(experimentListContainer); From 2db8871a82f82e552e5ff5f9b3404ba088d28d22 Mon Sep 17 00:00:00 2001 From: Eamonn Maguire Date: Wed, 10 Sep 2014 10:50:41 +0100 Subject: [PATCH 48/48] Updating import layer dependency to 1.7.8 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ca3014c9..82404f03 100644 --- a/pom.xml +++ b/pom.xml @@ -406,7 +406,7 @@ org.isatools import_layer - 1.6.7 + 1.6.8 uk.ac.ebi