private static void Main(string[] args) { // VARIABLES var connectomeRunTime = new Stopwatch(); var userStimulatedNeuron = ""; /***** BEGIN *****/ // user input (Neuron) create output file, includes neuron and run start time read csv files Console.Write("Please enter a Neuron: "); userStimulatedNeuron = Console.ReadLine().Trim().ToUpper(); // start the Stopwatch object to gather run time connectomeRunTime.Start(); /***** BEGIN OUTPUT FILE CREATION *****/ // windows file name var programRunStartDateTimeFileName = string.Format("\\OutputFiles\\{0}_{1:dd-MM-yyyy_hh-mm-ss}.dat", userStimulatedNeuron, DateTime.Now); // mac //var programRunStartDateTimeFileName = string.Format("/OutputFiles/{0}_{1:dd-MM-yyyy_hh-mm-ss}.dat",userStimulatedNeuron,DateTime.Now); var programRunStartDateTime = string.Format("{0:dd-MMM-yyyy, hh-mm-ss tt}", DateTime.Now); var path = string.Concat(Environment.CurrentDirectory, programRunStartDateTimeFileName); var writer = new StreamWriter(path); /***** BEGIN FILE READ *****/ TheConnectome.ReadConnectomeFile(writer); TheConnectome.ReadPostsynapticFile(writer); //TestFilesWereRead(writer); if (string.IsNullOrEmpty(userStimulatedNeuron)) { // close the StreamWriter object in order to access the file move the file to // appropriate folder to isolate from successful runs delete original file writer.Close(); Console.WriteLine("You entered invalid data. Please try again."); Console.Read(); // moved failed output file to folder var failedProgramRunStartDateTimeFileName = string.Format("\\OutputFiles\\Failed\\{0}_{1:dd-MM-yyyy_hh-mm-ss}.dat", userStimulatedNeuron, DateTime.Now); //var failedProgramRunStartDateTimeFileName =string.Format("/OutputFiles/Failed/{0}_{1:dd-MM-yyyy_hh-mm-ss}.dat", userStimulatedNeuron,DateTime.Now); var failedPath = string.Concat(Environment.CurrentDirectory, failedProgramRunStartDateTimeFileName); File.Move(path, failedPath); File.Delete(path); Environment.Exit(0); } else { Console.WriteLine("Neuron Stimulated: {0}", userStimulatedNeuron); Console.WriteLine("\nThe Connectome Program Start!"); Console.WriteLine("Rune Date and Time: {0}", programRunStartDateTime); Console.WriteLine("\n"); writer.WriteLine("\nThe Connectome Program Start!"); writer.WriteLine("Rune Date and Time: {0}", programRunStartDateTime); writer.WriteLine("\n"); writer.WriteLine("Neuron Stimulated: {0}", userStimulatedNeuron); } /***** END *****/ /***** BEGIN THREADS *****/ // create threads for multi-procesing /***** END THREADS *****/ /***** START RUNCONNECTOME *****/ // pass all instances of inputted neuron to runConnectome() int counter = 1; foreach (var synapse in TheConnectome.Connectome) { if (synapse.NeuronA == userStimulatedNeuron) { counter++; Console.WriteLine("\n**********"); Console.WriteLine("Synapse Stimulated: {0}, {1}", synapse.NeuronA, synapse.NeuronB); Console.WriteLine("counter {0}", counter); Console.WriteLine("**********\n"); writer.WriteLine("\n**********"); writer.WriteLine("Synapse Stimulated: {0}, {1}", synapse.NeuronA, synapse.NeuronB); writer.WriteLine("counter {0}", counter); writer.WriteLine("**********\n"); if (counter % 2 == 0) { Thread node1 = new Thread(() => ConnectomeThread.NodeOne(synapse, writer)); node1.Start(); node1.Join(); } else if (counter % 3 == 0) { Thread node2 = new Thread(() => ConnectomeThread.NodeTwo(synapse, writer)); node2.Start(); node2.Join(); } else if (counter % 4 == 0) { Thread node3 = new Thread(() => ConnectomeThread.NodeThree(synapse, writer)); node3.Start(); node3.Join(); } else if (counter % 5 == 0) { Thread node4 = new Thread(() => ConnectomeThread.NodeFour(synapse, writer)); node4.Start(); node4.Join(); } else { Thread node5 = new Thread(() => ConnectomeThread.NodeFive(synapse, writer)); node5.Start(); node5.Join(); } //TheConnectome.RunConnectome(synapse, writer); } } // program has finished RunConnectome connectomeRunTime.Stop(); /***** END RUNCONNECTOME *****/ /***** END OF PROGRAM DATA *****/ // collected outputs for information count of how many neurons fired count of how many // muscles fired total run time of program Console.WriteLine("\n\n**********"); Console.WriteLine("Total Neurons Fired: {0}", TheConnectome.NeuronFireCount); Console.WriteLine("Total Musicles Fired: {0}", TheConnectome.MuscleFireCount); Console.WriteLine("Total Run Time: {0:hh\\:mm\\:ss} \n", connectomeRunTime.Elapsed); Console.WriteLine("**********\n"); writer.WriteLine("\n\n**********"); writer.WriteLine("\n\nTotal Neurons Fired: {0}", TheConnectome.NeuronFireCount); writer.WriteLine("Total Musicles Fired: {0}", TheConnectome.MuscleFireCount); writer.WriteLine("Total Run Time: {0:hh\\:mm\\:ss} \n", connectomeRunTime.Elapsed); writer.WriteLine("**********\n"); /***** END OF PROGRAM DATA END *****/ writer.Close(); Console.WriteLine("\nPress any key to exit..."); Console.Read(); // keeps console window open }
public static void NodeFive(Synapse n, StreamWriter writer) { //Console.WriteLine("\tNode5, {0} {1}", n.NeuronA, n.NeuronB); //writer.WriteLine("\tNode5, {0} {1}", n.NeuronA, n.NeuronB); TheConnectome.RunConnectome(n, writer, "NodeFive"); }