/// <summary>
 /// 
 /// </summary>
 /// <param name="identifier"></param>
 /// <param name="readOnly">Indicates whether the IRegistry is ReadOnly. If true, an exception will be thrown if the IRegistry
 /// attempts a write.</param>
 /// <param name="registryType"></param>
 protected RegistryBase(IRegistryIdentifier identifier, RegistryType registryType, bool readOnly)
 {
     this.Clear();
     this.Identifier = identifier;
     this.ReadOnly = readOnly;
     this.RegistryType = registryType;
 }
 public bool Equals(IRegistryIdentifier other)
 {
     if (other == null)
         return false;
     else if (other is RegistryIdentifier)
         return this.Identifier == ((RegistryIdentifier)other).Identifier;
     else
         return false;
 }
 public static List<IFunction> GetSumFunctions(IRegistryIdentifier[] allWriteableRegistryIdentifiers, IRegistryIdentifier[] allRegistryIdentifiers, 
     IEnumerable<ICodonConverterIdentifier> codonConverters, double weightInGeneticCode)
 {
     return
         FunctionFactory.GetFunctionsWith2Parameters(
             allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters,
             functionBaseName: "Sum",
             getFunctionName: (registryPermutation, codonConverterPermutation) => "Sum",
             functionArea: "Arithmetic",
             twoConvertedCodons: Sum2ConvertedCodons,
             evaluatedAminoAcidAndConvertedCodon: SumEvaluatedAminoAcidAndConvertedCodon,
             convertedCodonAndEvaluatedAminoAcid: SumConvertedCodonAndEvaluatedAminoAcid,
             twoEvaluatedAminoAcids: Sum2EvaluatedAminoAcids,
             weightInGeneticCode: weightInGeneticCode);
 }
            public static List<IFunction> GetWriteFunctions(IRegistryIdentifier[] allWriteableRegistryIdentifiers, IRegistryIdentifier[] allRegistryIdentifiers,
                IEnumerable<ICodonConverterIdentifier> codonConverters, double weightInGeneticCode)
            {
                weightInGeneticCode /= 2d;

                var registryWriteConvertedCodonFunctions =
                    FunctionFactory.CreatePermutationsOfFunction(
                        executeMethod: Functions.IRegistryWrite.RegistryWriteConvertedCodon,
                        functionBaseName: "WriteRegistry",
                        functionArea: "Write Registry",
                        getFunctionName:
                            (registryPermutation, codonConverterPermutation) => "WriteTo" + registryPermutation.First(),
                        allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
                        allRegistryIdentifiers: allRegistryIdentifiers,
                        codonConverters: codonConverters,
                        numberOfRegistriesUsedInFunction: 1,
                        weightInGeneticCode: weightInGeneticCode,
                        onlyUseWriteableRegistries: true,
                        parameters: new Parameter(ParameterType.ConvertedCodon));

                var registryWriteEvaluatedAminoAcidFunctions =
                    FunctionFactory.CreatePermutationsOfFunction(
                        executeMethod: Functions.IRegistryWrite.RegistryWriteEvaluatedAminoAcid,
                        functionBaseName: "WriteRegistry",
                        functionArea: "Write Registry",
                        getFunctionName:
                            (registryPermutation, codonConverterPermutation) => "WriteTo" + registryPermutation.First(),
                        allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
                        allRegistryIdentifiers: allRegistryIdentifiers,
                        codonConverters: codonConverters,
                        numberOfRegistriesUsedInFunction: 1,
                        weightInGeneticCode: weightInGeneticCode,
                        onlyUseWriteableRegistries: true,
                        parameters: new Parameter(ParameterType.EvaluatedAminoAcid));

                var functions = new List<IFunction>();
                functions.AddRange(registryWriteConvertedCodonFunctions);
                functions.AddRange(registryWriteEvaluatedAminoAcidFunctions);

                return functions;
            }
            public static List<IFunction> GetReadFunctions(IRegistryIdentifier[] allWriteableRegistryIdentifiers, IRegistryIdentifier[] allRegistryIdentifiers,
                IEnumerable<ICodonConverterIdentifier> codonConverters, double weightInGeneticCode)
            {
                var registryReadFunctions =
                    FunctionFactory.CreatePermutationsOfFunction(executeMethod: Functions.IRegistryRead.RegistryRead,
                                                                 functionBaseName: "ReadRegistry",
                                                                 functionArea: "Read Registry",
                                                                 getFunctionName:
                                                                     (registryPermutation, codonConverterPermutation) =>
                                                                     "ReadFrom" + registryPermutation.First(),
                                                                 allWriteableRegistryIdentifiers:
                                                                     allWriteableRegistryIdentifiers,
                                                                 allRegistryIdentifiers: allRegistryIdentifiers,
                                                                 codonConverters: codonConverters,
                                                                 weightInGeneticCode: weightInGeneticCode,
                                                                 numberOfRegistriesUsedInFunction: 1);

                var functions = new List<IFunction>();
                functions.AddRange(registryReadFunctions);

                return functions;
            }
Beispiel #6
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="identifier"></param>
 /// <param name="registryType"></param>
 /// <param name="readOnly">Indicates whether the IRegistry is ReadOnly. If true, an exception will be thrown if the IRegistry
 /// attempts a write.</param>
 public Registry(IRegistryIdentifier identifier, RegistryType registryType, bool readOnly) 
     : base(identifier: identifier, registryType: registryType, readOnly: readOnly)
 {
 }
 public static List<IFunction> GetPredecessorFunctions(IRegistryIdentifier[] allWriteableRegistryIdentifiers, IRegistryIdentifier[] allRegistryIdentifiers,
     IEnumerable<ICodonConverterIdentifier> codonConverters, double weightInGeneticCode)
 {
     return
         FunctionFactory.GetFunctionsWith1Parameter(
             allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, functionBaseName: "Predecessor",
             getFunctionName: (registryPermutation, codonConverterPermutation) => "Predecessor",
             functionArea: "Arithmetic",
             evaluatedAminoAcid: PredecessorEvaluatedAminoAcid,
             convertedCodons: PredecessorConvertedCodons,
             weightInGeneticCode: weightInGeneticCode);
 }
 public static List<IFunction> GetFunctions(IRegistryIdentifier[] allWriteableRegistryIdentifiers, IRegistryIdentifier[] allRegistryIdentifiers,
     ICodonConverterIdentifier[] codonConverters, IFunctionBaseIdentifier functionBaseIdentifier)
 {
     var identifier = functionBaseIdentifier.Identifier;
     if(identifier == "ReadRegistry")
     {
         return GeneticFaraday.GEP.Functions.Functions.IRegistryRead.GetReadFunctions(
             allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if(identifier == "WriteRegistry")
     {
         return GeneticFaraday.GEP.Functions.Functions.IRegistryWrite.GetWriteFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Sum")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetSumFunctions(
             allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Difference")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetDifferenceFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Multiply")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetMultiplyFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Divide")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetDivideFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Square")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetSquareFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Power")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetPowerFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "SquareRoot")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetSquareRootFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Negate")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetNegateFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "ForceNegate")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetForceNegateFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Absolute")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetAbsoluteFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "RoundToNearestWholeNumber")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetRoundToNearestWholeNumberFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Successor")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetSuccessorFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Predecessor")
     {
         return GeneticFaraday.GEP.Functions.Functions.Arithmetic.GetPredecessorFunctions(allWriteableRegistryIdentifiers: allWriteableRegistryIdentifiers,
             allRegistryIdentifiers: allRegistryIdentifiers,
             codonConverters: codonConverters, weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else if (identifier == "Constants")
     {
         return GeneticFaraday.GEP.Functions.Functions.Constants.GetConstantsFunctions(weightInGeneticCode: functionBaseIdentifier.WeightInGeneticCode);
     }
     else
     {
         throw new ValueNotYetSupported(identifier, typeof(IFunctionBaseIdentifier));
     }
 }
 public int CompareTo(IRegistryIdentifier other)
 {
     return this.Identifier.CompareTo(other.ToString());
 }