/// <summary> /// Prompts user to enter certain user settings via Console /// and writes back to Ceres.json. /// </summary> public static void DoSetupInitialize() { string dirLC0Binaries = GetDirectoryString(" LC0 binaries (with plug-in Ceres.DLL) : ", true); string dirLC0Networks = GetDirectoryString(" LC0 network weights files : "); string defaultNetworkString = GetString(" Default network specification (e.g. \"LC0:703810\") : ", s => NNNetSpecificationString.IsValid(s)); string defaultDeviceString = GetString(" Default device specification (e.g. \"GPU:0\") : ", s => NNDevicesSpecificationString.IsValid(s)); settings = new CeresUserSettings(); settings.DirLC0Binaries = dirLC0Binaries; settings.DirLC0Networks = dirLC0Networks; settings.DefaultNetworkSpecString = defaultNetworkString; settings.DefaultDeviceSpecString = defaultDeviceString; SaveToDefaultFile(); LoadFromDefaultFile(); // this cause directory registration Console.WriteLine(); ConsoleUtils.WriteLineColored(ConsoleColor.Cyan, "NEW CONTENTS OF " + CeresUserSettingsManager.DefaultCeresConfigFileName); Console.WriteLine("(additional changes can be made by editing in a text editor or using SETOP command in Ceres"); string fileContext = File.ReadAllText(CeresUserSettingsManager.DefaultCeresConfigFileName); Console.WriteLine(fileContext); }
/// <summary> /// Reads settings from specified settings file. /// The DirLC0Networks directory (if present) will be registered with NNWeightsFilesLC0. /// </summary> public static void LoadFromFile(string settingsFileName) { if (!File.Exists(settingsFileName)) { throw new ArgumentException($"No such file: {settingsFileName}"); } string jsonString = File.ReadAllText(settingsFileName); settings = JsonSerializer.Deserialize <CeresUserSettings>(jsonString); if (settings.DirLC0Networks != null & settings.DirLC0Networks != "") { NNWeightsFilesLC0.RegisterDirectory(settings.DirLC0Networks); } Console.WriteLine($"Ceres user settings loaded from file {settingsFileName}"); }