private void validateMultiples(Family family) throws CatalogException { if (family.getMembers() == null || family.getMembers().isEmpty()) { return; } Map<String, List<String>> multiples = new HashMap<>(); // Look for all the multiples for (Individual individual : family.getMembers()) { if (individual.getMultiples() != null && individual.getMultiples().getSiblings() != null && !individual.getMultiples().getSiblings().isEmpty()) { multiples.put(individual.getId(), individual.getMultiples().getSiblings()); } } if (multiples.size() > 0) { // Check if they are all cross-referenced for (Map.Entry<String, List<String>> entry : multiples.entrySet()) { for (String sibling : entry.getValue()) { if (!multiples.containsKey(sibling)) { throw new CatalogException("Missing sibling " + sibling + " of member " + entry.getKey()); } if (!multiples.get(sibling).contains(entry.getKey())) { throw new CatalogException("Incomplete sibling information. Sibling " + sibling + " does not contain " + entry.getKey() + " as its sibling"); } } } } }
public static Pedigree getPedigreeFromFamily(Family family) { List<Individual> members = family.getMembers(); Map<String, Member> individualMap = new HashMap<>(); // Parse all the individuals for (Individual member : members) { Member individual = new Member( member.getId(), member.getName(), null, null, member.getMultiples(), Member.Sex.getEnum(member.getSex().toString()), member.getLifeStatus(), Member.AffectionStatus.getEnum(member.getAffectationStatus().toString()), member.getPhenotypes(), member.getAttributes()); individualMap.put(individual.getId(), individual); } // Fill parent information for (Individual member : members) { if (member.getFather() != null && StringUtils.isNotEmpty(member.getFather().getId())) { individualMap.get(member.getId()).setFather(individualMap.get(member.getFather().getId())); } if (member.getMother() != null && StringUtils.isNotEmpty(member.getMother().getId())) { individualMap.get(member.getId()).setMother(individualMap.get(member.getMother().getId())); } } List<Member> individuals = new ArrayList<>(individualMap.values()); return new Pedigree(family.getId(), individuals, family.getPhenotypes(), family.getAttributes()); }
if (individual.getMultiples() != null && individual.getMultiples().getSiblings() != null && !individual.getMultiples().getSiblings().isEmpty()) { individualSolrModel.setNumMultiples(individual.getMultiples().getSiblings().size()); individualSolrModel.setMultiplesType(individual.getMultiples().getType()); } else { individualSolrModel.setNumMultiples(0);
assertEquals(individualSolrModel.getMultiplesType(), individual.getMultiples().getType()); assertEquals(individualSolrModel.getSex(), individual.getSex().name()); assertEquals(individualSolrModel.getKaryotypicSex(), individual.getKaryotypicSex().name());