Exemple #1
0
        public static void Main()
        {
            var sequenceLength       = 250;
            var chromosomeNr         = 7;
            var chromosomeDataSource = new ChromosomeDataSource($@"G:\Projects\HumanGenome\chromosomes\Homo_sapiens.GRCh38.dna.primary_assembly.chromosome_{chromosomeNr}.fa", sequenceLength);
            var rbmSettings          = new RestrictedBoltzmannMachineSettings
            {
                HiddenNodes        = (int)(0.2 * sequenceLength),
                InputNodes         = 2 * sequenceLength,
                LearningRate       = 0.1,
                TrainingIterations = 10 * 1000 * 1000
            };
            var rbm = new RestrictedBoltzmannMachine(rbmSettings);

            rbm.Train(chromosomeDataSource);

            //rbm.OutputModel($@"G:\Projects\HumanGenome\chromosomes\chromosome{chromosomeNr}_rbm_model.txt");
            OutputNucleotideSequences(rbm, rbmSettings, $@"G:\Projects\HumanGenome\chromosomes\chromosome{chromosomeNr}_nucelotides.txt");
        }
Exemple #2
0
        private static void OutputNucleotideSequences(RestrictedBoltzmannMachine rbm, RestrictedBoltzmannMachineSettings rbmSettings, string outputFile)
        {
            var output = new List <string>();

            for (var hiddenIdx = 0; hiddenIdx < rbmSettings.HiddenNodes; hiddenIdx++)
            {
                var unitVector          = Enumerable.Range(0, rbmSettings.HiddenNodes).Select(x => x == hiddenIdx ? 1.0 : 0.0).ToArray();
                var response            = rbm.ToInputLayer(unitVector);
                var thresholdedResponse = response.Select(x => x > 0.5).ToArray();
                var nucleotides         = NucleotidesFromBoolArray(thresholdedResponse);
                output.Add(new string(nucleotides.ToArray()));
            }
            File.WriteAllLines(outputFile, output);
        }