public <T extends Enum<T> & IChromosomeType> void set(T chromosomeType, IAllele allele) { Preconditions.checkNotNull(allele, "Allele must not be null"); if (!chromosomeType.getAlleleClass().isInstance(allele)) { throw new IllegalArgumentException("Allele is the wrong type. Expected: " + chromosomeType + " Got: " + allele); } alleles[chromosomeType.ordinal()] = allele; }
@Override public <T extends Enum<T> & IChromosomeType> void set(IAllele[] alleles, T chromosomeType, IAllele allele) { if (!chromosomeType.getAlleleClass().isInstance(allele)) { throw new IllegalArgumentException("Allele is the wrong type. Expected: " + chromosomeType + " Got: " + allele); } Collection<IChromosomeType> validTypes = AlleleManager.alleleRegistry.getChromosomeTypes(allele); if (validTypes.size() > 0 && !validTypes.contains(chromosomeType)) { throw new IllegalArgumentException("Allele can't applied to this Chromosome type. Expected: " + validTypes + " Got: " + chromosomeType); } alleles[chromosomeType.ordinal()] = allele; }
@Override public void addValidAlleleTypes(IAllele allele, IChromosomeType... chromosomeTypes) { for (IChromosomeType chromosomeType : chromosomeTypes) { if (!chromosomeType.getAlleleClass().isAssignableFrom(allele.getClass())) { throw new IllegalArgumentException("Allele class (" + allele.getClass() + ") does not match chromosome type (" + chromosomeType.getAlleleClass() + ")."); } allelesByType.put(chromosomeType, allele); typesByAllele.put(allele, chromosomeType); } }
private static IAllele validateAllele(@Nullable String speciesUid, IChromosomeType chromosomeType, @Nullable IAllele allele) { if (!chromosomeType.getAlleleClass().isInstance(allele)) { ISpeciesRoot speciesRoot = chromosomeType.getSpeciesRoot(); IAllele[] template = null; if (speciesUid != null) { template = speciesRoot.getTemplate(speciesUid); } if (template == null) { template = speciesRoot.getDefaultTemplate(); } return template[chromosomeType.ordinal()]; } return allele; }
private void loadAlleles() { this.invalidChromosomeTypes.clear(); for (IBreedingSystem system : BREEDING_SYSTEMS.values()) { ISpeciesRoot root = system.getSpeciesRoot(); Map<IChromosomeType, List<IAllele>> chromosomeMap = new LinkedHashMap<>(); for (IChromosomeType chromosome : root.getKaryotype()) { TreeSet<IAllele> alleles = new TreeSet<>(new ComparatorAllele()); for (IIndividual individual : root.getIndividualTemplates()) { IGenome genome = individual.getGenome(); IAllele activeAllele = genome.getActiveAllele(chromosome); IAllele inactiveAllele = genome.getInactiveAllele(chromosome); if (chromosome.getAlleleClass().isInstance(activeAllele)) { alleles.add(activeAllele); } if (!chromosome.getAlleleClass().isInstance(inactiveAllele)) { continue; } alleles.add(inactiveAllele); } system.addExtraAlleles(chromosome, alleles); if (alleles.size() == 0) { this.invalidChromosomeTypes.add(chromosome); } else { final List<IAllele> alleleList = new ArrayList<>(alleles); chromosomeMap.put(chromosome, alleleList); } } this.chromosomeArray.put(root, chromosomeMap); } }
if (chromosome.getAlleleClass().isInstance(allele)) { results.put(chromosome.getName(), MetaGenome.getAlleleMeta(allele));
Class<? extends IAllele> chromosomeAlleleClass = chromosomeType.getAlleleClass(); if (!chromosomeAlleleClass.isAssignableFrom(primary.getClass())) { String message = String.format("Tried to create a genome for '%s' from an invalid chromosome template. " +
public static void setGene(IGene gene, ItemStack target, boolean setPrimary, boolean setSecondary) { int chromosomeID = gene.getChromosome().ordinal(); Class<? extends IAllele> cls = gene.getChromosome().getAlleleClass(); if (!cls.isInstance(gene.getAllele())) { return;