private void buildProfiles() { log.info("Filling repository with profiles"); List<String> referenceProfile; List<String> referenceGeneNames; Set<GctReplicate> gctReplicatePairs = repositoryService.getGctReplicatesCombinations(); int dummyClusteringOrder = gctReplicatePairs.size(); for (GctReplicate gctReplicate : gctReplicatePairs) { GctFile gctFile = gctReplicate.getGctFile(); ReplicateAnnotation replicateAnnotation = gctReplicate.getReplicateAnnotation(); List<PeakArea> peakAreas = peakAreaRepository.findByGctFileAndReplicateAnnotation(gctFile, replicateAnnotation); AssayType assayType = gctFile.getAssayType(); referenceProfile = getReferenceProfile(assayType); referenceGeneNames = getReferenceGeneNames(assayType); Double[] profileVector = new Double[referenceProfile.size()]; boolean[] imputeVector = new boolean[referenceProfile.size()]; for (PeakArea peakArea : peakAreas) { int index = referenceProfile.indexOf(peakArea.getPeptideAnnotation().getPeptideId()); profileVector[index] = peakArea.getValue(); } UtilsStatistics.imputeProfileVector(profileVector, imputeVector); Profile profile = new Profile( replicateAnnotation, gctFile, ArrayUtils.toPrimitive(profileVector), imputeVector, referenceProfile, referenceGeneNames, dummyClusteringOrder--); profileRepository.save(profile); } }