@Test public void testOESourceAddNew() throws Exception { ReferenceSource source = new ReferenceSource("My fancy test ontology"); source.setAcc("bii:tests:MY-SRC-1"); OntologyTerm oe = new OntologyTerm("biionto:1010", "test oe", source); OntologyTerm oenew = persister.persist(oe); transaction.commit(); assertNotNull("Uh?! No object returned by the persister!", oenew); assertTrue("Ouch!? The OE returned by the persister should be the same!", oe == oenew); assertTrue("Urp! The OE was not saved!", entityManager.contains(oenew)); assertNotNull("Oh! The saved object should have an ID", oenew.getId()); ReferenceSource sourceDB = oenew.getSource(); assertNotNull("Ouch! No source for the persisted OE!", sourceDB); assertNotNull("Argh! The source of the persisted object should have an ID", source.getId()); }
@Test public void testOESourceExisting() throws Exception { ReferenceSource source = new ReferenceSource(null); source.setAcc("BII-1"); source.setName("TEST ONTOLOGY"); OntologyTerm oe = new OntologyTerm("OBI-EO1", "organism", source); OntologyTerm oenew = persister.persist(oe); transaction.commit(); assertNotNull("Uh?! No object returned by the persister!", oenew); assertTrue("Urp! The OE was not saved!", entityManager.contains(oenew)); assertTrue("Ouch!? The OE returned by the persister should be different!", oe != oenew); assertTrue("Oh! The saved object should have ID=501", oenew.getId() == 501); ReferenceSource sourceDB = oenew.getSource(); assertNotNull("Ouch! No source for the persisted OE!", sourceDB); assertTrue( "Argh! The source of the persisted object should have ID=100", sourceDB.getId() == 100); }
/** * Builds the SRA {@link PlatformType}, this is partly taken from the ISATAB "sequencing" protocol * and partly from the "platform" field in the ISATAB assay section (investigation file). * * <p>Some of these parameters are mandatory in SRA, and/or constrained to certain values, so the * method raises an exception in case they're not defined. TODO: this could be replaced by relying * on the ISA Parameter Value[sequencing instrument] available from latest configuration */ protected PlatformType buildExportedPlatform(final Assay assay) { ProtocolApplication pApp = getProtocol(assay, "sequencing"); if (pApp == null) { return null; } Protocol proto = pApp.getProtocol(); // Get the instrument information associated to that sequencing protocol // TODO: PRS: rely on a ISA Parameter Value[sequencing instrument] instead to obtain the // information // TODO: PRS: check against the declared ISA assay platform String sequencinginst = getParameterValue(assay, pApp, "sequencing instrument", true); PlatformType.LS454.INSTRUMENTMODEL.Enum.forString(sequencinginst); if (("454 GS".equalsIgnoreCase(sequencinginst) || "454 GS 20".equalsIgnoreCase(sequencinginst) || "454 GS FLX".equalsIgnoreCase(sequencinginst) || "454 GS FLX Titanium".equalsIgnoreCase(sequencinginst) || "454 GS Junior".equalsIgnoreCase(sequencinginst) || "GS20".equalsIgnoreCase(sequencinginst) || "GS FLX".equalsIgnoreCase(sequencinginst))) { // todo finish } String xinstrument = null; for (ProtocolComponent pcomp : proto.getComponents()) { for (OntologyTerm ctype : pcomp.getOntologyTerms()) { String pctypeStr = ctype.getName().toLowerCase(); if (pctypeStr.contains("instrument") || pctypeStr.contains("sequencer")) { xinstrument = pcomp.getValue(); break; } } } if (xinstrument == null) { String msg = MessageFormat.format( "The assay file of type {0} / {1} for study {2} has no Instrument declared in the ISA Sequencing Protocol", assay.getMeasurement().getName(), assay.getTechnologyName(), assay.getStudy().getAcc()); throw new TabMissingValueException(msg); } PlatformType xplatform = PlatformType.Factory.newInstance(); String platform = StringUtils.upperCase(assay.getAssayPlatform()); if (platform.toLowerCase().contains("454")) { // if ("LS454".equalsIgnoreCase(platform)) { PlatformType.LS454 ls454 = PlatformType.LS454.Factory.newInstance(); ls454.setINSTRUMENTMODEL(PlatformType.LS454.INSTRUMENTMODEL.Enum.forString(xinstrument)); ls454.setKEYSEQUENCE(getParameterValue(assay, pApp, "Key Sequence", false)); ls454.setFLOWSEQUENCE(getParameterValue(assay, pApp, "Flow Sequence", false)); String flowCountStr = getParameterValue(assay, pApp, "Flow Count", false); ls454.setFLOWCOUNT(new BigInteger(checkNumericParameter(flowCountStr))); xplatform.setLS454(ls454); } else if (platform.toLowerCase().contains("illumina")) { PlatformType.ILLUMINA illumina = PlatformType.ILLUMINA.Factory.newInstance(); illumina.setINSTRUMENTMODEL( PlatformType.ILLUMINA.INSTRUMENTMODEL.Enum.forString(xinstrument)); illumina.setCYCLESEQUENCE(getParameterValue(assay, pApp, "Cycle Sequence", true)); illumina.setCYCLECOUNT( new BigInteger( checkNumericParameter(getParameterValue(assay, pApp, "Cycle Count", true)))); xplatform.setILLUMINA(illumina); } else if (platform.toLowerCase().contains("helicos")) { // ("HELICOS".equalsIgnoreCase(platform)) { PlatformType.HELICOS helicos = PlatformType.HELICOS.Factory.newInstance(); helicos.setINSTRUMENTMODEL(PlatformType.HELICOS.INSTRUMENTMODEL.Enum.forString(xinstrument)); helicos.setFLOWSEQUENCE(getParameterValue(assay, pApp, "Flow Sequence", true)); helicos.setFLOWCOUNT( new BigInteger( checkNumericParameter(getParameterValue(assay, pApp, "Flow Count", true)))); xplatform.setHELICOS(helicos); } else if (platform.toLowerCase().contains("solid")) { // ("ABI SOLID".equalsIgnoreCase(platform) || "ABI_SOLID".equalsIgnoreCase(platform)) { PlatformType.ABISOLID abisolid = PlatformType.ABISOLID.Factory.newInstance(); abisolid.setINSTRUMENTMODEL( PlatformType.ABISOLID.INSTRUMENTMODEL.Enum.forString(xinstrument)); { String colorMatrix = getParameterValue(assay, pApp, "Color Matrix", false); // single dibase colours are semicolon-separated if (colorMatrix != null) { PlatformType.ABISOLID.COLORMATRIX xcolorMatrix = PlatformType.ABISOLID.COLORMATRIX.Factory.newInstance(); String dibases[] = colorMatrix.split("\\;"); if (dibases != null && dibases.length > 0) { PlatformType.ABISOLID.COLORMATRIX.COLOR xcolors[] = new PlatformType.ABISOLID.COLORMATRIX.COLOR[dibases.length]; int i = 0; for (String dibase : dibases) { PlatformType.ABISOLID.COLORMATRIX.COLOR xcolor = PlatformType.ABISOLID.COLORMATRIX.COLOR.Factory.newInstance(); xcolor.setDibase(dibase); xcolors[i++] = xcolor; } xcolorMatrix.setCOLORArray(xcolors); abisolid.setCOLORMATRIX(xcolorMatrix); } } } { String colorMatrixCode = getParameterValue(assay, pApp, "Color Matrix Code", false); if (colorMatrixCode != null) { abisolid.setCOLORMATRIXCODE(colorMatrixCode); } } // TODO: remove, deprecated abisolid.setCYCLECOUNT ( new BigInteger ( getParameterValue ( // assay, papp, "Cycle Count", true ) ) ); abisolid.setSEQUENCELENGTH( new BigInteger( checkNumericParameter(getParameterValue(assay, pApp, "Cycle Count", false)))); xplatform.setABISOLID(abisolid); } else { throw new TabInvalidValueException( MessageFormat.format( "The SRA platform ''{0}'' for the assay ''{1}''/''{2}'' in the study ''{3}'' is invalid. Please supply the Platform information for the Assay in the Investigation file", platform, assay.getMeasurement().getName(), assay.getTechnologyName(), assay.getStudy().getAcc())); } return xplatform; }