From 4cfcdbcd23242fd7a10f6408b0c91cf2ea4b2463 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Mon, 3 Nov 2014 16:00:10 +0000
Subject: [PATCH] SSDM-1078 : PAPER - Provide sensible defaults -
 Implementation

SVN: 32710
---
 .../newbrowser/1/as/initialize-master-data.py | 382 +++++++++++++++++-
 1 file changed, 364 insertions(+), 18 deletions(-)

diff --git a/plasmid/source/core-plugins/newbrowser/1/as/initialize-master-data.py b/plasmid/source/core-plugins/newbrowser/1/as/initialize-master-data.py
index e0a1bbea988..6364474ab58 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/initialize-master-data.py
+++ b/plasmid/source/core-plugins/newbrowser/1/as/initialize-master-data.py
@@ -14,25 +14,371 @@
 # limitations under the License.
 #
 
+# MasterDataRegistrationTransaction Class
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.DataType as DataType
 
+##
+## Help Methods
+##
+propertiesCache = {};
 tr = service.transaction()
 
-# The default ELN Experiment
-elnExperimentTypeE = tr.getOrCreateNewExperimentType("SYSTEM_EXPERIMENT")
-elnExperimentTypeE.setDescription("Lab Experiment")
-elnExperimentTypeS = tr.getOrCreateNewSampleType("SYSTEM_EXPERIMENT")
-elnExperimentTypeS.setDescription("Lab Experiment")
-elnExperimentTypeS.setListable(True)
-elnExperimentTypeS.setSubcodeUnique(False)
-elnExperimentTypeS.setAutoGeneratedCode(False)
-elnExperimentTypeS.setGeneratedCodePrefix('C')
-
-# The default experiment used by the UI, assigned automatically to new samples
-folderType = tr.getOrCreateNewExperimentType("ELN_FOLDER")
-folderType.setDescription("Folder")
-
-# Preview Image
-elnDataSetPreviewType = tr.getOrCreateNewDataSetType("ELN_PREVIEW")
-elnDataSetPreviewType.setDescription("ELN Preview");
-elnDataSetPreviewType.setDataSetKind("PHYSICAL");
\ No newline at end of file
+def createVocabularyWithTerms(vocabularyCode, terms):
+	vocabulary = tr.createNewVocabulary(vocabularyCode);
+	addTerms(vocabulary, terms);
+	
+def addTerms(vocabulary, terms):
+	for term in terms:
+		addTermWithLabel(vocabulary, term[0], term[1])
+	
+def addTermWithLabel(vocabulary, termCode, termLabel):
+	newTerm = tr.createNewVocabularyTerm(termCode);
+	newTerm.setLabel(termLabel);
+	vocabulary.addTerm(newTerm);
+
+def createExperimentTypeWithProperties(experimentTypeCode, description, properties):
+	newExperiment = tr.getOrCreateNewExperimentType(experimentTypeCode);
+	newExperiment.setDescription(description);
+	addProperties(newExperiment, properties);
+
+def addProperties(entity, properties):
+	for property in properties:
+		addProperty(entity, property[0], property[1], property[2], property[3], property[4]);
+
+def addProperty(entity, propertyCode, section, propertyLabel, dataType, propertyDescription):
+	property = None;
+	
+	if propertyCode in propertiesCache:
+		property = propertiesCache[propertyCode];
+	else:
+		property = tr.getOrCreateNewPropertyType(propertyCode, dataType);
+		property.setDescription(propertyDescription);
+		property.setLabel(propertyLabel);
+		propertiesCache[propertyCode] = property;
+	
+	propertyAssignment = tr.assignPropertyType(entity, property);
+	propertyAssignment.setSection(section);
+
+##
+## Vocabularies
+##
+
+createVocabularyWithTerms("HOST", [
+										["MOUSE", "mouse"],
+										["RAT", "rat"],
+										["GUINEA_PIG", "guinea pig"],
+										["RABBIT", "rabbit"],
+										["DONKEY", "donkey"]
+									]);
+
+createVocabularyWithTerms("DETECTION", [
+										["HRP", "horseradish peroxydase"],
+										["FLUORESCENCE", "fluorescent probe"]
+									]);
+
+createVocabularyWithTerms("STORAGE", [
+										["RT", "room temperature"],
+										["4", "+4 degrees"],
+										["-20", "-20 degrees"],
+										["-80", "-80 degrees"]
+									]);
+
+createVocabularyWithTerms("CLONALITY", [
+										["MONOCLONAL", "monoclonal"],
+										["POLYCLONAL", "polyclonal"],
+										["UNKNOWN", "unknown"]
+									]);
+
+createVocabularyWithTerms("BACKBONE", [
+										["PBLUESCRIPT_II_KS_PLUS", "pBluescript II KS +"],
+										["PBSN", "pBSN"],
+										["PSPPOLY_A", "pSPpoly(A)"],
+										["PKERG10Y", "pKERG10y"],
+										["PRS30Y", "pRS30y"],
+										["PRS31Y", "pRS31y"],
+										["PRS40Y", "pRS40y"],
+										["PRS41Y", "pRS41y"],
+										["PRS42Y", "pRS42y"],
+										["PET22B", "pET22b"],
+										["UNKNOWN", "unknown"],
+										["PFA6", "pFA6"],
+										["PGEX4T1", "pGEX4T1"],
+										["PEG202", "pEG202"],
+										["PJEXPRESS", "pJexpress"],
+										["PJEXPRESS2", "pJexpress2"],
+										["POLYLYS-PJEXPRESS2", "polyLys-pJexpress2"],
+										["OSER", "OSER"]
+									]);
+
+createVocabularyWithTerms("BACTERIAL_ANTIBIOTIC_RESISTANCE", [
+										["BLA", "bla"],
+										["KAN", "kan"],
+										["CAM", "cam"]
+									]);
+
+createVocabularyWithTerms("MARKER", [
+										["URA3", "URA3"],
+										["HIS3", "HIS3"],
+										["LEU2", "LEU2"],
+										["TRP1", "TRP1"],
+										["MET15", "MET15"],
+										["LYS2", "LYS2"],
+										["ADE1", "ADE1"],
+										["KANMX", "KanMX"],
+										["NATMX", "NatMX"],
+										["HYGMX", "HygMX"],
+										["URA3MX", "Ura3MX"],
+										["HIS3MX", "His3MX"],
+										["BAR", "bar"],
+										["CY_1", "Cy1"],
+										["E_1", "e1"],
+										["SB_1", "Sb1"],
+										["W_1", "w1"],
+										["Y1", "y1"],
+									]);
+
+createVocabularyWithTerms("STERILIZATION", [
+										["AUTOCLAVATION", "autoclavation"],
+										["FILTRATION", "filtration"],
+										["NONE", "none"]
+									]);
+
+createVocabularyWithTerms("GENETIC_BACKGROUND", [
+										["BY4743", "BY4743"],
+										["BY4741", "BY4741"],
+										["BY4742", "BY4742"],
+										["CEN.PK2-1C", "CEN.PK2-1C"],
+										["CEN.PK2-1D", "CEN.PK2-1D"],
+										["CEN.PK2", "CEN.PK2"],
+										["W303", "W303"],
+										["W303-1A", "W303-1A"],
+										["W303-1B", "W303-1B"],
+										["S288C", "S288C"],
+										["RM11", "RM11"],
+										["RM11-A", "RM11-A"],
+										["RM11-B", "RM11-B"],
+										["UNKNOWN", "unknown"],
+										["FY4", "FY4"]
+									]);
+
+createVocabularyWithTerms("MATING_TYPE", [
+										["A", "a"],
+										["ALPHA", "alpha"],
+										["DIPLOID", "diploid"],
+										["UNKNOWN", "unknown"]
+									]);
+
+createVocabularyWithTerms("BACKGROUND_SPECIFIC_MARKERS", [
+										["MET15_LYS2", "met15- lys2-"],
+										["MET15", "met15-"],
+										["LYS2", "lys2-"],
+										["TRP1_ADE2", "trp1- ade2-"],
+										["TRP1", "trp1-"],
+										["ADE2", "ade2-"],
+										["MET15_TRP1", "met15- trp1-"],
+										["HO_KAN", "ho::kanMX"],
+										["NONE", "none"],
+										["UNKNOWN", "unknown"],
+										["MET15_LYS2_TRP1_ADE2", "met15- lys2- trp1- ade2-"],
+										["LYS2_TRP1", "lys2- trp1-"],
+										["MET15_LYS2_TRP1", "met15- lys2- trp1-"]
+									]);
+
+createVocabularyWithTerms("COMMON_MARKERS", [
+										["URA3_HIS3_LEU2", "ura3- his3- leu2-"],
+										["URA3_HIS3", "ura3- his3-"],
+										["URA3_LEU2", "ura3- leu2-"],
+										["URA3", "ura3-"],
+										["HIS3_LEU2", "his3- leu2-"],
+										["HIS3", "his3-"],
+										["LEU2", "leu2-"],
+										["NONE", "none"],
+										["UNKNOWN", "unknown"]
+									]);
+
+createVocabularyWithTerms("ENDOGENOUS_PLASMID", [
+										["CIR_PLUS", "cir+"],
+										["CIR_ZERO", "cir0"],
+										["UNKNOWN", "unknown"]
+									]);
+
+createVocabularyWithTerms("DIRECTION", [
+										["FORWARD", "forward"],
+										["REVERSE", "reverse"]
+									]);
+
+createVocabularyWithTerms("STRAND", [
+										["DS", "double strand"],
+										["SS", "single strand"]
+									]);
+
+createVocabularyWithTerms("RNA_TYPE", [
+										["MIMIC", "mimic"],
+										["INHIBITOR", "inhibitor"]
+									]);
+
+createVocabularyWithTerms("RNA_BACKBONE", [
+										["LNA", "LNA"],
+										["2_O_METHYL", "2-O-methylation"]
+									]);
+
+createVocabularyWithTerms("ORIGIN", [
+										["CROSS", "cross"],
+										["TRANSFORMATION", "transformation"],
+										["SPORULATION", "transformation sporulation"],
+										["NEGATIVE_SELECTION", "negative selection"],
+										["TRANSFECTION", "transfection"]
+									]);
+
+createVocabularyWithTerms("CHECK", [
+										["PCR", "PCR"],
+										["MICROSCOPY", "microscopy"],
+										["WB", "western blotting"],
+										["SB", "southern blotting"],
+										["PCR_MICROSCOPY", "PCR and microscopy"],
+										["FLOWCYTOMETRY", "flow cytometry"],
+										["PCR_FLOWCYTOMETRY", "PCR and flow cytometry"],
+										["MORPHOLOGY", "morphology"],
+										["OTHER", "other"],
+										["NOTHING", "nothing"]
+									]);
+
+createVocabularyWithTerms("PROTOCOL_TYPE", [
+										["DNA", "DNA method"],
+										["RNA", "RNA method"],
+										["PROTEINS", "proteins method"],
+										["YEAST_BASICS", "yeast basic method"],
+										["BACTERIA_BASICS", "bacteria basic method"],
+										["FLUORESCENCE_MICROSCOPY", "fluorescence microscopy method"],
+										["FLOW_CYTOMETRY", "flow cytometry method"],
+										["CELL_SORTING", "cell sorting method"],
+										["CELL_LINE_BASICS", "cell line basics"]
+									]);
+
+createVocabularyWithTerms("TEMPLATE", [
+										["DNA", "DNA"],
+										["RNA", "RNA"],
+										["BACTERIA_COLONY", "bacteria colony"],
+										["YEAST_COLONY", "yeast colony"]
+									]);
+
+createVocabularyWithTerms("YES_NO", [
+										["YES", "yes"],
+										["NO", "no"],
+										["UNKNOWN", "unknown"]
+									]);
+
+createVocabularyWithTerms("MEMBRANE", [
+										["PVDF", "PVDF"],
+										["NITROCELLULOSE", "nitrocellulose"],
+										["PVDF_NITROCELLULOSE", "Either PVDF or nitrocellulose"]
+									]);
+
+createVocabularyWithTerms("SPECIES", [
+										["HOMO", "Homo sapiens"],
+										["MOUSE", "Mus musculus"],
+										["RAT", "Rattus norvegicus"],
+										["PIG", "Sus scrofa"],
+										["DROSOPHILA_MELANOGASTER", "Drosophila melanogaster"]
+									]);
+
+createVocabularyWithTerms("CELL_MEDIUM", [
+										["RPMI", "rpmi"],
+										["1640", "1640"],
+										["ISCOVES", "iscoves"],
+										["DMEM", "DMEM"],
+										["DMEM_NUTRIENT_MIXTURE_F-12_HAM", "DMEM nutrient mixture F-12 HAM"],
+										["DMEM_HIGH_GLUC", "DMEM high glucose"],
+										["DMEM_LOW_GLUC", "DMEM low glucose"]
+									]);
+
+createVocabularyWithTerms("OWNER", [
+										["FILL_ME_1", "Fill me with the people of your lab"],
+										["FILL_ME_2", "Fill me with the people of your lab 2"]
+									]);
+
+createVocabularyWithTerms("CELL_TYPE", [
+										["FIBROBLAST", "fibroblast"],
+										["NEURON", "neuron"]
+									]);
+
+createVocabularyWithTerms("ORGANISM", [
+										["BACTERIA", "Bacteria"],
+										["BUDDING_YEAST", "Saccharomyces cerevisiae"],
+										["MAMMALIAN", "mammalian"],
+										["DROSOPHILA_MELANOGASTER", "Drosophila melanogaster"]
+									]);
+
+createVocabularyWithTerms("EXPERIMENTAL_READOUT", [
+										["FLOW_CYTOMETRY", "flow citometry"],
+										["SORTING", "cell sorting"],
+										["GROWTH", "growth"],
+										["WESTERN_BLOTTING", "western blottong"],
+										["RT_QPCR", "RT-qPCR"]
+									]);
+
+createVocabularyWithTerms("MACHINE", [
+										["LSRII_FORTESSA", "SRII Fortessa"],
+										["TECAN_READER", "Tecan reader"],
+										["BIOLECTOR", "BioLector"],
+										["LICOR_ODYSSEY", "LI-COR Odyssey"],
+										["TI_ECLIPSE", "TI Eclipse (Nikon)"],
+										["SRX_101A", "Konica Minolta SRX-101A"],
+										["LIGHT_CYCLER", "LightCycler 480"]
+									]);
+##
+## Property Types
+##
+NOTES = tr.getOrCreateNewPropertyType("NOTES", DataType.MULTILINE_VARCHAR);
+NOTES.setDescription("Notes regarding the dataset");
+NOTES.setLabel("Notes");
+
+##
+## Experiment Types
+##
+createExperimentTypeWithProperties("ANTIBODY", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("BACTERIA", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("CHEMICAL", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("ENZYME", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("MEDIA", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("OLIGO", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("RNA", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("PLASMID", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("SOLUTION_BUFFER", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("YEAST", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("CELL_LINE", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("FLY", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+
+createExperimentTypeWithProperties("GENERAL_PROTOCOL", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("PCR_PROTOCOL", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+createExperimentTypeWithProperties("WESTERN_BLOTTING_PROTOCOL", "BOX TO HOLD SAMPLES OF THIS TYPE FOR ORGANIZATIONAL PURPOSES", []);
+
+createExperimentTypeWithProperties("DEFAULT_EXPERIMENT", "Default Experiment", [
+	["NAME", "General", "Name", DataType.VARCHAR, "Name"],
+	["EXPERIMENTAL_GOALS", "General", "Experimental goals", DataType.MULTILINE_VARCHAR, "Goal of the experiment"],
+	["GRANT", "General", "Grant", DataType.VARCHAR, "grant name"],
+	["START_DATE", "General", "Start Date", DataType.TIMESTAMP, "Start Date"],
+	["END_DATE", "General", "End Date", DataType.TIMESTAMP, "End Date"],
+	["EXPERIMENTAL_RESULTS", "General", "Experimental results", DataType.MULTILINE_VARCHAR, "Brief summary of the results obtained"]
+]);
+
+##
+## Dataset
+##
+ELN_PREVIEW = tr.getOrCreateNewDataSetType("ELN_PREVIEW")
+ELN_PREVIEW.setDescription("ELN Preview");
+ELN_PREVIEW.setDataSetKind("PHYSICAL");
+
+SEQ_FILE = tr.getOrCreateNewDataSetType("SEQ_FILE")
+SEQ_FILE.setDescription("");
+SEQ_FILE.setDataSetKind("PHYSICAL");
+
+SEQ_FILE_NOTES = tr.assignPropertyType(SEQ_FILE, NOTES);
+SEQ_FILE_NOTES.setSection("General information");
+
+RAW_DATA = tr.getOrCreateNewDataSetType("RAW_DATA")
+RAW_DATA.setDescription("");
+RAW_DATA.setDataSetKind("PHYSICAL");
+
+RAW_DATA_NOTES = tr.assignPropertyType(RAW_DATA, NOTES);
+RAW_DATA_NOTES.setSection("General information");
\ No newline at end of file
-- 
GitLab