/** * Creates and returns a laser. This will have to be linked to an instrument. * * @return See above. * @throws Exception Thrown if an error occurred. */ public Laser createLaser() throws Exception { Laser laser = new LaserI(); laser.setManufacturer(omero.rtypes.rstring("manufacturer")); laser.setModel(omero.rtypes.rstring("model")); laser.setLotNumber(omero.rtypes.rstring("lot number")); laser.setSerialNumber(omero.rtypes.rstring("serial number")); // type List<IObject> types = pixelsService.getAllEnumerations(LaserType.class.getName()); laser.setType((LaserType) types.get(0)); // laser medium types = pixelsService.getAllEnumerations(LaserMedium.class.getName()); laser.setLaserMedium((LaserMedium) types.get(0)); // pulse types = pixelsService.getAllEnumerations(Pulse.class.getName()); laser.setPulse((Pulse) types.get(0)); laser.setFrequencyMultiplication(omero.rtypes.rint(1)); laser.setPockelCell(omero.rtypes.rbool(false)); laser.setTuneable(omero.rtypes.rbool(true)); laser.setWavelength(omero.rtypes.rint(500)); laser.setPower(omero.rtypes.rdouble(1)); laser.setRepetitionRate(omero.rtypes.rdouble(1)); return laser; }
/** * Creates a pixels object. * * @param sizeX The size along the X-axis. * @param sizeY The size along the Y-axis. * @param sizeZ The number of Z-sections. * @param sizeT The number of time-points. * @param sizeC The number of channels. * @return See above. * @throws Exception Thrown if an error occurred. */ public Pixels createPixels(int sizeX, int sizeY, int sizeZ, int sizeT, int sizeC) throws Exception { List<IObject> types = pixelsService.getAllEnumerations(PixelsType.class.getName()); Iterator<IObject> i = types.iterator(); PixelsType object; PixelsType type = null; while (i.hasNext()) { object = (PixelsType) i.next(); if (UINT16.equals(object.getValue().getValue())) { type = object; break; } } if (type == null) type = (PixelsType) types.get(0); types = pixelsService.getAllEnumerations(DimensionOrder.class.getName()); i = types.iterator(); DimensionOrder o; DimensionOrder order = null; while (i.hasNext()) { o = (DimensionOrder) i.next(); if (XYZCT.equals(o.getValue().getValue())) { order = o; break; } } if (order == null) order = (DimensionOrder) types.get(0); Pixels pixels = new PixelsI(); pixels.setPhysicalSizeX(omero.rtypes.rdouble(1.0)); pixels.setPhysicalSizeY(omero.rtypes.rdouble(1.0)); pixels.setPhysicalSizeZ(omero.rtypes.rdouble(1.0)); pixels.setSizeX(omero.rtypes.rint(sizeX)); pixels.setSizeY(omero.rtypes.rint(sizeY)); pixels.setSizeZ(omero.rtypes.rint(sizeZ)); pixels.setSizeT(omero.rtypes.rint(sizeT)); pixels.setSizeC(omero.rtypes.rint(sizeC)); pixels.setSha1(omero.rtypes.rstring("Pending...")); pixels.setPixelsType(type); pixels.setDimensionOrder(order); List<Channel> channels = new ArrayList<Channel>(); for (int j = 0; j < sizeC; j++) { channels.add(createChannel(j)); } pixels.addAllChannelSet(channels); for (int z = 0; z < sizeZ; z++) { for (int t = 0; t < sizeT; t++) { for (int c = 0; c < sizeC; c++) { PlaneInfo info = new PlaneInfoI(); pixels.addPlaneInfo(createPlaneInfo(z, t, c)); } } } return pixels; }
/** * Creates and returns the settings of the specified source of light. * * @param light The light to link the settings to. * @return See above. * @throws Exception Thrown if an error occurred. */ public LightSettings createLightSettings(LightSource light) throws Exception { // already tested see PixelsService enumeration. List<IObject> types = pixelsService.getAllEnumerations(MicrobeamManipulationType.class.getName()); LightSettings settings = new LightSettingsI(); settings.setLightSource(light); settings.setAttenuation(omero.rtypes.rdouble(1)); MicrobeamManipulation mm = new MicrobeamManipulationI(); mm.setType((MicrobeamManipulationType) types.get(0)); Experiment exp = new ExperimentI(); types = pixelsService.getAllEnumerations(ExperimentType.class.getName()); exp.setType((ExperimentType) types.get(0)); mm.setExperiment(exp); // settings.setMicrobeamManipulation(mm); settings.setWavelength(omero.rtypes.rint(500)); return settings; }
/** * Creates and returns the settings of the specified objective. * * @param objective The objective to link the settings to. * @return See above. * @throws Exception Thrown if an error occurred. */ public ObjectiveSettings createObjectiveSettings(Objective objective) throws Exception { // already tested see PixelsService enumeration. List<IObject> types = pixelsService.getAllEnumerations(Medium.class.getName()); ObjectiveSettings settings = new ObjectiveSettingsI(); settings.setCorrectionCollar(omero.rtypes.rdouble(1)); settings.setRefractiveIndex(omero.rtypes.rdouble(1)); settings.setMedium((Medium) types.get(0)); settings.setObjective(objective); return settings; }
/** * Creates and returns a filament. This will have to be linked to an instrument. * * @return See above. * @throws Exception Thrown if an error occurred. */ public Arc createArc() throws Exception { List<IObject> types = pixelsService.getAllEnumerations(ArcType.class.getName()); Arc arc = new ArcI(); arc.setManufacturer(omero.rtypes.rstring("manufacturer")); arc.setModel(omero.rtypes.rstring("model")); arc.setPower(omero.rtypes.rdouble(1)); arc.setSerialNumber(omero.rtypes.rstring("serial number")); arc.setLotNumber(omero.rtypes.rstring("lot number")); arc.setType((ArcType) types.get(0)); return arc; }
/** * Creates and returns a filament. This will have to be linked to an instrument. * * @return See above. * @throws Exception Thrown if an error occurred. */ public Filament createFilament() throws Exception { List<IObject> types = pixelsService.getAllEnumerations(FilamentType.class.getName()); Filament filament = new FilamentI(); filament.setManufacturer(omero.rtypes.rstring("manufacturer")); filament.setModel(omero.rtypes.rstring("model")); filament.setPower(omero.rtypes.rdouble(1)); filament.setSerialNumber(omero.rtypes.rstring("serial number")); filament.setLotNumber(omero.rtypes.rstring("lot number")); filament.setType((FilamentType) types.get(0)); return filament; }
/** * Creates a channel. * * @param w The wavelength in nanometers. * @return See Above. * @throws Exception */ public Channel createChannel(int w) throws Exception { Channel channel = new ChannelI(); LogicalChannel lc = new LogicalChannelI(); lc.setEmissionWave(omero.rtypes.rint(200)); List<IObject> types = pixelsService.getAllEnumerations(ContrastMethod.class.getName()); ContrastMethod cm = (ContrastMethod) types.get(0); types = pixelsService.getAllEnumerations(Illumination.class.getName()); Illumination illumination = (Illumination) types.get(0); types = pixelsService.getAllEnumerations(AcquisitionMode.class.getName()); AcquisitionMode mode = (AcquisitionMode) types.get(0); lc.setContrastMethod(cm); lc.setIllumination(illumination); lc.setMode(mode); channel.setLogicalChannel(lc); StatsInfo info = new StatsInfoI(); info.setGlobalMin(omero.rtypes.rdouble(0.0)); info.setGlobalMax(omero.rtypes.rdouble(1.0)); channel.setStatsInfo(info); return channel; }
/** * Creates and returns an instrument. * * @return See above. * @throws Exception Thrown if an error occurred. */ public Instrument createInstrument() throws Exception { List<IObject> types = pixelsService.getAllEnumerations(MicroscopeType.class.getName()); Instrument instrument = new InstrumentI(); MicroscopeI microscope = new MicroscopeI(); microscope.setManufacturer(omero.rtypes.rstring("manufacturer")); microscope.setModel(omero.rtypes.rstring("model")); microscope.setSerialNumber(omero.rtypes.rstring("serial number")); microscope.setLotNumber(omero.rtypes.rstring("lot number")); microscope.setType((MicroscopeType) types.get(0)); instrument.setMicroscope(microscope); return instrument; }
/** * Creates and returns the settings of the specified detector. * * @param detector The detector to link the settings to. * @return See above. * @throws Exception Thrown if an error occurred. */ DetectorSettings createDetectorSettings(Detector detector) throws Exception { // already tested see PixelsService enumeration. List<IObject> types = pixelsService.getAllEnumerations(Binning.class.getName()); DetectorSettings settings = new DetectorSettingsI(); settings.setBinning((Binning) types.get(0)); settings.setDetector(detector); settings.setGain(omero.rtypes.rdouble(1)); settings.setOffsetValue(omero.rtypes.rdouble(1)); settings.setReadOutRate(omero.rtypes.rdouble(1)); settings.setVoltage(omero.rtypes.rdouble(1)); return settings; }
/** * Creates and returns an objective. This will have to be linked to an instrument. * * @return See above. * @throws Exception Thrown if an error occurred. */ public Objective createObjective() throws Exception { Objective objective = new ObjectiveI(); objective.setManufacturer(omero.rtypes.rstring("manufacturer")); objective.setModel(omero.rtypes.rstring("model")); objective.setSerialNumber(omero.rtypes.rstring("serial number")); objective.setLotNumber(omero.rtypes.rstring("lot number")); objective.setCalibratedMagnification(omero.rtypes.rdouble(1)); // correction // already tested see PixelsService enumeration. List<IObject> types = pixelsService.getAllEnumerations(Correction.class.getName()); objective.setCorrection((Correction) types.get(0)); // immersion types = pixelsService.getAllEnumerations(Immersion.class.getName()); objective.setImmersion((Immersion) types.get(0)); objective.setIris(omero.rtypes.rbool(true)); objective.setLensNA(omero.rtypes.rdouble(0.5)); objective.setNominalMagnification(omero.rtypes.rdouble(1)); objective.setWorkingDistance(omero.rtypes.rdouble(1)); return objective; }
/** * Creates an Optical Transfer Function object. * * @param filterSet The filter set linked to it. * @param objective The objective linked to it. * @return See above. * @throws Exception Thrown if an error occurred. */ public OTF createOTF(FilterSet filterSet, Objective objective) throws Exception { // already tested see PixelsService enumeration. List<IObject> types = pixelsService.getAllEnumerations(PixelsType.class.getName()); OTF otf = new OTFI(); otf.setFilterSet(filterSet); otf.setObjective(objective); otf.setPath(omero.rtypes.rstring("/OMERO")); otf.setOpticalAxisAveraged(omero.rtypes.rbool(true)); otf.setPixelsType((PixelsType) types.get(0)); otf.setSizeX(omero.rtypes.rint(10)); otf.setSizeY(omero.rtypes.rint(10)); return otf; }
/** * Creates and returns a detector. This will have to be linked to an instrument. * * @return See above. * @throws Exception Thrown if an error occurred. */ public Detector createDetector() throws Exception { // already tested see PixelsService enumeration. List<IObject> types = pixelsService.getAllEnumerations(DetectorType.class.getName()); Detector detector = new DetectorI(); detector.setAmplificationGain(omero.rtypes.rdouble(0)); detector.setGain(omero.rtypes.rdouble(1)); detector.setManufacturer(omero.rtypes.rstring("manufacturer")); detector.setModel(omero.rtypes.rstring("model")); detector.setSerialNumber(omero.rtypes.rstring("serial number")); detector.setLotNumber(omero.rtypes.rstring("lot number")); detector.setOffsetValue(omero.rtypes.rdouble(0)); detector.setType((DetectorType) types.get(0)); return detector; }
/** * Creates and returns a filter. This will have to be linked to an instrument. * * @param cutIn The cut in value. * @param cutOut The cut out value. * @return See above. * @throws Exception Thrown if an error occurred. */ public Filter createFilter(int cutIn, int cutOut) throws Exception { // already tested see PixelsService enumeration. List<IObject> types = pixelsService.getAllEnumerations(FilterType.class.getName()); Filter filter = new FilterI(); filter.setLotNumber(omero.rtypes.rstring("lot number")); filter.setSerialNumber(omero.rtypes.rstring("serial number")); filter.setManufacturer(omero.rtypes.rstring("manufacturer")); filter.setModel(omero.rtypes.rstring("model")); filter.setType((FilterType) types.get(0)); TransmittanceRangeI transmittance = new TransmittanceRangeI(); transmittance.setCutIn(omero.rtypes.rint(cutIn)); transmittance.setCutOut(omero.rtypes.rint(cutOut)); transmittance.setCutInTolerance(omero.rtypes.rint(1)); transmittance.setCutOutTolerance(omero.rtypes.rint(1)); filter.setTransmittanceRange(transmittance); return filter; }
/** * Creates a new image with one channel from a source image. * * @param info The information about the data to handle. */ private void CreateNewImage(ConfigurationInfo info) throws Exception { PixelsData pixels = image.getDefaultPixels(); int sizeZ = pixels.getSizeZ(); int sizeT = pixels.getSizeT(); int sizeC = pixels.getSizeC(); int sizeX = pixels.getSizeX(); int sizeY = pixels.getSizeY(); long pixelsId = pixels.getId(); if (sizeC <= 1) throw new Exception("The image must have at least 2 channels."); RawPixelsStorePrx store = null; // Create a new image. Map<Integer, byte[]> map = new LinkedHashMap<Integer, byte[]>(); try { store = connector.getRawPixelsStore(); store.setPixelsId(pixelsId, false); for (int z = 0; z < sizeZ; z++) { for (int t = 0; t < sizeT; t++) { byte[] planeC1 = store.getPlane(z, 0, t); byte[] planeC2 = store.getPlane(z, 1, t); byte[] newPlane = new byte[planeC1.length]; for (int i = 0; i < planeC1.length; i++) { newPlane[i] = (byte) ((planeC1[i] + planeC2[i]) / 2); } map.put(linearize(z, t, sizeZ), newPlane); } } } catch (Exception e) { throw new Exception("Cannot retrieve the plane", e); } finally { if (store != null) store.close(); } // Now we are going to create the new image. IPixelsPrx proxy = connector.getPixelsService(); List<IObject> l = proxy.getAllEnumerations(PixelsType.class.getName()); Iterator<IObject> i = l.iterator(); PixelsType type = null; String original = pixels.getPixelType(); while (i.hasNext()) { PixelsType o = (PixelsType) i.next(); String value = o.getValue().getValue(); if (value.equals(original)) { type = o; break; } } if (type == null) throw new Exception("Pixels Type not valid."); String name = "newImageFrom" + image.getId(); RLong idNew = proxy.createImage( sizeX, sizeY, sizeZ, sizeT, Arrays.asList(0), type, name, "From Image ID: " + image.getId()); if (idNew == null) throw new Exception("New image could not be created."); ImageData newImage = loadImage(idNew.getValue()); // link the new image and the dataset hosting the source image. DatasetImageLink link = new DatasetImageLinkI(); link.setParent(new DatasetI(info.getDatasetId(), false)); link.setChild(new ImageI(newImage.getId(), false)); connector.getUpdateService().saveAndReturnObject(link); // Write the data. try { store = connector.getRawPixelsStore(); store.setPixelsId(newImage.getDefaultPixels().getId(), false); int index = 0; for (int z = 0; z < sizeZ; z++) { for (int t = 0; t < sizeT; t++) { index = linearize(z, t, sizeZ); store.setPlane(map.get(index), z, 0, t); } } store.save(); System.err.println("image created"); } catch (Exception e) { throw new Exception("Cannot set the plane", e); } finally { if (store != null) store.close(); } }