private static List <string> ProcessLine(ShowBy showBy, PredictorCollection predictorCollection, string line, MerLength merLength, int?dOfCenter, HlaSetSpecification hlaSetSpecification, bool modelOnly) { try { string hlaOrSupertypeOrNull; string inputPeptide = ExtractInputs(hlaSetSpecification, line, predictorCollection, out hlaOrSupertypeOrNull); List <string> output = new List <string>(); foreach (List <Prediction> predictionList in predictorCollection.MaxProbabilityPredictions(showBy, inputPeptide, merLength, dOfCenter, hlaSetSpecification, hlaOrSupertypeOrNull, modelOnly).Values) { string outputLine = InsertMaterial(line, hlaSetSpecification.InputHeaderCollection().Length, Prediction.CollectionToString(predictionList, false, hlaSetSpecification.IncludeHlaInOutput())); output.Add(outputLine); } return(output); } catch (Exception exception) { string errorString = SpecialFunctions.CreateTabString( line, string.Format("Error: {0}{1}", exception.Message, exception.InnerException == null ? "" : string.Format(" ({0})", exception.InnerException))); List <string> output = new List <string>(); output.Add(errorString); return(output); } }
static public string ExtractInputs(HlaSetSpecification hlaSetSpecification, string line, PredictorCollection predictorCollection, out string hlaOrSupertypeOrNull) { List <string> fieldCollection = SpecialFunctions.Split(line, '\t'); int inputLength = hlaSetSpecification.InputHeaderCollection().Length; SpecialFunctions.CheckCondition(inputLength <= fieldCollection.Count, string.Format("Expected input to have at least {0} columns", inputLength)); string inputPeptide = fieldCollection[0]; hlaOrSupertypeOrNull = (inputLength > 1) ? fieldCollection[1] : null; return(inputPeptide); }
static public string CreateHeader(HlaSetSpecification hlaSetSpecification, TextReader textReader, bool inputHasHeader) { if (!inputHasHeader) { return(hlaSetSpecification.Header()); } //!!!this code is very similar to that which processes the non-header lines. Could/should they be combined? int splitPoint = hlaSetSpecification.InputHeaderCollection().Length; string middleStuff = Prediction.ExtraHeader(hlaSetSpecification.IncludeHlaInOutput()); List <string> columnCollection = SpecialFunctions.Split(textReader.ReadLine(), '\t'); return(InsertMaterial(columnCollection, splitPoint, middleStuff)); }
public static void Main(string[] args) { try { // Parse arguments ArgCollection argCollection = ArgCollection.GetInstance(args); if (argCollection.ExtractOptionalFlag("Help")) { Console.WriteLine(HelpString); return; } string modelName = argCollection.ExtractOptional("model", "LANLIEDB03062007"); bool modelOnly = argCollection.ExtractOptionalFlag("modelOnly"); bool inputHasHeader = argCollection.ExtractOptionalFlag("inputHasHeader"); MerLength merLength = argCollection.ExtractOptional <MerLength>("merLength", MerLength.scan); int? dOfCenter = argCollection.ExtractOptional <int?>("withinDOfCenter", null); ShowBy showBy = argCollection.ExtractOptional <ShowBy>("showBy", ShowBy.all); string hlaSetName = argCollection.ExtractOptional <string>("hlaSet", "singleton"); HlaSetSpecification hlaSetSpecification = HlaSetSpecification.GetInstance(hlaSetName); argCollection.CheckNoMoreOptions(); string inputFileName = argCollection.ExtractNext <string>("inputFile"); string outputFileName = argCollection.ExtractNext <string>("outputFile"); argCollection.CheckThatEmpty(); ReadInputCreatingOutput(showBy, modelName, inputHasHeader, merLength, dOfCenter, hlaSetSpecification, modelOnly, inputFileName, outputFileName); } catch (Exception exception) { Console.WriteLine(""); Console.WriteLine(exception.Message); if (exception.InnerException != null) { Console.WriteLine(exception.InnerException.Message); } Console.Error.WriteLine(""); Console.Error.WriteLine(@"For more help: Epipred -help"); System.Environment.Exit(-1); } }
private static void ReadInputCreatingOutput(ShowBy showBy, string modelName, bool inputHasHeader, MerLength merLength, int?dOfCenter, HlaSetSpecification hlaSetSpecification, bool modelOnly, string inputFileName, string outputFileName) { using (TextReader textReader = File.OpenText(inputFileName)) { using (TextWriter textWriter = File.CreateText(outputFileName)) { string header = CreateHeader(hlaSetSpecification, textReader, inputHasHeader); textWriter.WriteLine(header); PredictorCollection predictorCollection = PredictorCollection.GetInstance(modelName); foreach (string line in SpecialFunctions.ReadEachLine(textReader)) { foreach (string outputLine in ProcessLine(showBy, predictorCollection, line, merLength, dOfCenter, hlaSetSpecification, modelOnly)) { textWriter.WriteLine(outputLine); textWriter.Flush(); } } } } }