private static boolean isCheckNecessary(PoolableElementView view1, PoolableElementView view2, int minimumDistance) { return !((hasFakeSequence(view1) || hasFakeSequence(view2)) && (minimumDistance > 1 || getCombinedIndexSequences(view1).length() != getCombinedIndexSequences(view2).length())); }
@Override public String getBarcodeSizeInfo() { return LimsUtils.makeVolumeAndConcentrationLabel(getVolume(), getConcentration(), getVolumeUnits(), getConcentrationUnits()); }
public static Pool to(@Nonnull PoolDto dto) { PoolImpl to = new PoolImpl(); to.setId(dto.getId() == null ? PoolImpl.UNSAVED_ID : dto.getId()); to.setAlias(dto.getAlias()); to.setConcentration(dto.getConcentration() == null ? null : Double.valueOf(dto.getConcentration())); to.setConcentrationUnits(dto.getConcentrationUnits()); to.setCreationDate(parseDate(dto.getCreationDate())); to.setDescription(dto.getDescription()); to.setIdentificationBarcode(dto.getIdentificationBarcode()); to.setDiscarded(dto.isDiscarded()); if (dto.getVolume() != null) { to.setVolume(Double.valueOf(dto.getVolume())); } to.setVolumeUnits(dto.getVolumeUnits()); to.setPlatformType(PlatformType.valueOf(dto.getPlatformType())); to.setPoolDilutions(dto.getPooledElements().stream().map(dilution -> { PoolableElementView view = new PoolableElementView(); view.setDilutionId(dilution.getId()); view.setDilutionName(dilution.getName()); view.setDilutionVolumeUsed(dilution.getVolumeUsed() == null ? null : Double.valueOf(dilution.getVolumeUsed())); PoolDilution link = new PoolDilution(to, view); if (dilution.getProportion() != null) { link.setProportion(dilution.getProportion()); } return link; }).collect(Collectors.toSet())); to.setQcPassed(dto.getQcPassed()); to.setBoxPosition((PoolBoxPosition) makeBoxablePosition(dto, to)); return to; }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(getId()); sb.append(" : "); sb.append(getName()); if (!getPoolDilutions().isEmpty()) { sb.append(" : "); sb.append(getPoolDilutions()); } return sb.toString(); }
@Override public int compareTo(Pool t) { if (getId() != 0L && t.getId() != 0L) { if (getId() < t.getId()) return -1; if (getId() > t.getId()) return 1; } else if (getName() != null && t.getName() != null) { return getName().compareTo(t.getName()); } else if (getAlias() != null && t.getAlias() != null) { return getAlias().compareTo(t.getAlias()); } return 0; }
private Set<String> getIndexSequencesWithMinimumEditDistance(int minimumDistance) { Set<String> sequences = new HashSet<>(); List<PoolableElementView> views = getPoolDilutions().stream().map(PoolDilution::getPoolableElementView).collect(Collectors.toList()); if (minimumDistance > 1 && views.stream().allMatch(PoolImpl::hasFakeSequence)) return Collections.emptySet(); for (int i = 0; i < views.size(); i++) { String sequence1 = getCombinedIndexSequences(views.get(i)); if (sequence1.length() == 0) { continue; } for (int j = i + 1; j < views.size(); j++) { String sequence2 = getCombinedIndexSequences(views.get(j)); if (sequence2.length() == 0 || !isCheckNecessary(views.get(i), views.get(j), minimumDistance)) { continue; } if (Index.checkEditDistance(sequence1, sequence2) < minimumDistance) { sequences.add(sequence1); sequences.add(sequence2); } } } return sequences; }
@Override public Set<String> getDuplicateIndicesSequences() { return getIndexSequencesWithMinimumEditDistance(1); }
@Override public String getBarcodeExtraInfo() { return getDescription(); }
@Override public Date getBarcodeDate() { return getCreationDate(); }
@Override public boolean isSaved() { return getId() != UNSAVED_ID; }
@Override public String getLabelText() { return getAlias(); }
case Pool: PoolQC newPoolQc = new PoolQC(); Pool ownerPool = new PoolImpl(); ownerPool.setId(dto.getEntityId()); newPoolQc.setPool(ownerPool);
@Override public Set<String> getNearDuplicateIndicesSequences() { return getIndexSequencesWithMinimumEditDistance(3); }