private void doTraining(CreatePredictorVM vm, IEnumerable <PDBFile> trainingFiles, IDictionary <string, IDictionary <Residue, bool> > referenceInterface, IDictionary <string, IDictionary <string, ProteinGraph> > graphs) { var Feature = new AverageHydrophobicityFeature(); var values = new LinkedList <AgO <double, ResidueNode> >(); foreach (var trainingFile in trainingFiles) { var req = new RequestRasa(trainingFile); req.RequestInDefaultContext(); var rasa = req.Rasavalues; foreach (var entry in graphs[trainingFile.Name]) { Feature.Compute(entry.Value); //values.AddRange(entry.Value.Nodes.Select(node => new AgO<double, ResidueNode>(Feature.ValueOf(node.Data.Residue) * rasa[node.Data.Residue], node.D //))); } } Max = values.Max(v => v.Data1); //var intervals = values.DivideByScoreAequidistant(val => val.Data1, vm.DivisionIntervals); //var pts = new LinkedList<AgO<double, double>>(); //for (int i = 0; i < intervals.Length; i++) //{ // var interval = intervals[i]; // var pt = new AgO<double, double>(); // pt.Data1 = ((double)i + 1) / intervals.Length; // var iface = (interval.Sum(val => referenceInterface[val.Data2.Residue.PDB.Name][val.Data2.Residue] ? 1.0 : 0.0)); // pt.Data2 = iface / interval.Count(); // pts.Add(pt); //} //ValueFunction = new StepFunction(pts); }
private void OnRequest(RequestRasa obj) { if (buffer.ContainsKey(obj.File)) { obj.Rasavalues = new Dictionary <Residue, double>(buffer[obj.File]); } else { foreach (var chain in obj.File.Chains) { var rasaFile = Directory.GetFiles(RasaFiles).FirstOrDefault(file => file.Contains(obj.File.Name + "_" + chain.Name)); if (rasaFile == null) { var temp = " -jar protein-pdb-asa.jar -pdbfile " + PDBFiles + obj.File.Name + "_" + chain.Name + ".txt" + " -pdb " + obj.File.Name + " -chain " + chain.Name + " -rasafile " + RasaFiles + obj.File.Name + "_" + chain.Name + ".rasa"; //compute Rasa: var processInfo = new ProcessStartInfo("java", temp) { CreateNoWindow = true, UseShellExecute = false }; Process proc; if ((proc = Process.Start(processInfo)) == null) { throw new InvalidOperationException("??"); } proc.WaitForExit(); int exitCode = proc.ExitCode; proc.Close(); } //else { rasaFile = rasaFile ?? Directory.GetFiles(RasaFiles).FirstOrDefault(file => file.Contains(obj.File.Name + "_" + chain.Name)); using (var reader = new StreamReader(rasaFile)) { string line = ""; while ((line = reader.ReadLine()) != null) { var words = Regex.Split(line, "\\s"); var nodeid = words[0].Substring(7); var rasa = Math.Min(1.0, double.Parse(words[3], CultureInfo.InvariantCulture)); var residue = chain.Residues.First(res => res.Id.Equals(nodeid)); obj.Rasavalues.Add(residue, rasa); } } } } buffer.Add(obj.File, new Dictionary <Residue, double>(obj.Rasavalues)); } }
private Dictionary <string, Dictionary <Residue, bool> > doPrediction(PDBFile file, IDictionary <string, ProteinGraph> graphs) { var dict = new Dictionary <string, Dictionary <Residue, bool> >(); var Feature = new AverageHydrophobicityFeature(); var req = new RequestRasa(file); req.RequestInDefaultContext(); var rasa = req.Rasavalues; //Threshold = 0.5; //foreach (var graph in graphs) //{ // Feature.Compute(graph.Value); // var valdict = new Dictionary<ResidueNode, double[]>(); // var edgeScores = new double[2, 2] { { 1.2, 0.6 }, { 0.6, 1.0 } }; // foreach (var node in graph.Value.Nodes) // { // var val = (Feature.ValueOf(node.Data.Residue) * rasa[node.Data.Residue]) / Max; // valdict.Add(node, new double[2] { val, 1 - val }); // } // var edgedict = new Dictionary<SimpleEdge<ResidueNode>, double[,]>(); // foreach (var edge in graph.Value.Edges) // { // edgedict.Add(edge, edgeScores); // } // var predDict = new Dictionary<Residue, bool>(); // dict.Add(graph.Key, predDict); // var crfGraph = graph.Value.CreateGraph(valdict, edgedict); // //var options = new MarginalizeByResamplingOptions(2, 200); // //foreach (var node in crfNodes) // //{ // // var probs = MarginalizeByResampling.Do(crfNodes, node, options); // // predDict.Add(graph.Value.Nodes.First(nd => nd.Residue.Id.Equals(node.Id)).Residue, probs[0] >= Threshold); // //} // var result = SimpleSampling.Do(crfGraph, 2000); // foreach (var node in crfGraph.Nodes) // { // var score1 = result[new Assign() { Node = node, Label = 0 }]; // var score2 = result[new Assign() { Node = node, Label = 1 }]; // var prob = score2 / (score1 + score2); // predDict.Add(graph.Value.Nodes.First(nd => nd.Data.Residue.Id.Equals(node.Data.Id)).Residue, prob >= Threshold); // } //} return(dict); }
private void OnProvidePDBInfo(ProvidePDBInfo obj) { var options = obj.Options; var pdbId = options.PDBId; var pdbinfo = default(PDBInfo); var req = new GetPDBs(pdbId.ToIEnumerable()); req.RequestInDefaultContext(); var file = req.Files.FirstOrDefault(); if (req.Files.NotNullOrEmpty()) { pdbinfo = new PDBInfo(file); } if (options.ComputeRasa) { var reqR = new RequestRasa(file); reqR.RequestInDefaultContext(); var rasa = reqR.Rasavalues; } if (options.ComputeInterface) { var request = new RequestInterface(pdbinfo.PDBFile.ToIEnumerable(), options.InterfaceDefDistance, options.InterfaceUseVanDerWaalsRadii); request.RequestInDefaultContext(); pdbinfo.Interface.Clear(); foreach (var residue in pdbinfo.PDBFile.Residues) { pdbinfo.Interface.Add(residue, request.Interface[pdbinfo.PDBFile.Name][residue]); } } if (options.ComputeGraph) { pdbinfo.Graphs = CreateProteinGraph.Do(pdbinfo.PDBFile, options.GraphNeighbourDistance, options.GraphNodeCenterDef); if (!(pdbinfo.Interface.Count == 0)) { foreach (var pgraph in pdbinfo.Graphs) { pgraph.Value.Nodes.Where(n => pdbinfo.Interface[n.Data.Residue]).Each((node) => node.Data.IsRefInterface = true); } } } obj.PDBInfo = pdbinfo; }
private void doTraining(CreatePredictorVM vm, IEnumerable <PDBFile> trainingFiles, IDictionary <string, IDictionary <Residue, bool> > referenceInterface, IDictionary <string, IDictionary <string, ProteinGraph> > graphs) { var Feature = new AverageHydrophobicityFeature(); var values = new LinkedList <AgO <double, ResidueNode> >(); foreach (var trainingFile in trainingFiles) { var req = new RequestRasa(trainingFile); req.RequestInDefaultContext(); var rasa = req.Rasavalues; foreach (var entry in graphs[trainingFile.Name]) { Feature.Compute(entry.Value); //values.AddRange(entry.Value.Nodes.Select(node => new AgO<double, ResidueNode>(Feature.ValueOf(node.Data.Residue) * rasa[node.Data.Residue], node))); } } Max = values.Max(v => v.Data1); }
private Dictionary <string, Dictionary <Residue, bool> > doPrediction(PDBFile file, IDictionary <string, ProteinGraph> graphs) { var dict = new Dictionary <string, Dictionary <Residue, bool> >(); var Feature = new AverageHydrophobicityFeature(); var req = new RequestRasa(file); req.RequestInDefaultContext(); var rasa = req.Rasavalues; foreach (var graph in graphs) { Feature.Compute(graph.Value); var predDict = new Dictionary <Residue, bool>(); dict.Add(graph.Key, predDict); foreach (var node in graph.Value.Nodes) { predDict.Add(node.Data.Residue, (Feature.ValueOf(node.Data.Residue) * rasa[node.Data.Residue]) / Max >= Threshold); } } return(dict); }