Example #1
0
        public void ProcessData(IMatrixData inData, INetworkData outData, Parameters param, ref IData[] supplData, ProcessInfo processInfo)
        {
            var remoteExe = param.GetParam <string>(InterpreterLabel).Value;
            var inFile    = Path.GetTempFileName();

            PerseusUtils.WriteMatrixToFile(inData, inFile, false);
            var paramFile = Path.GetTempFileName();

            param.ToFile(paramFile);
            var outFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            if (!TryGetCodeFile(param, out string codeFile))
            {
                processInfo.ErrString = $"Code file '{codeFile}' was not found";
                return;
            }
            var suppFiles = SupplDataTypes.Select(Utils.CreateTemporaryPath).ToArray();
            var args      = $"{codeFile} {paramFile} {inFile} {outFolder} {string.Join(" ", suppFiles)}";

            Debug.WriteLine($"executing > {remoteExe} {args}");
            if (Utils.RunProcess(remoteExe, args, processInfo.Status, out string processInfoErrString) != 0)
            {
                processInfo.ErrString = processInfoErrString;
                return;
            }
            ;
            FolderFormat.Read(outData, outFolder, processInfo);
            supplData = Utils.ReadSupplementaryData(suppFiles, SupplDataTypes, processInfo);
        }
Example #2
0
        /// <summary>
        /// Read supplementary files according to file paths and data types.
        /// </summary>
        /// <param name="suppFiles"></param>
        /// <param name="supplDataTypes"></param>
        /// <param name="processInfo"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public static IData[] ReadSupplementaryData(string[] suppFiles, DataType[] supplDataTypes, ProcessInfo processInfo)
        {
            var numSupplTables = suppFiles.Length;

            IData[] supplData = new IData[numSupplTables];
            for (int i = 0; i < numSupplTables; i++)
            {
                switch (supplDataTypes[i])
                {
                case DataType.Matrix:
                    var mdata = PerseusFactory.CreateMatrixData();
                    PerseusUtils.ReadMatrixFromFile(mdata, processInfo, suppFiles[i], '\t');
                    supplData[i] = mdata;
                    break;

                case DataType.Network:
                    var ndata = PerseusFactory.CreateNetworkData();
                    FolderFormat.Read(ndata, suppFiles[i], processInfo);
                    supplData[i] = ndata;
                    break;

                default:
                    throw new NotImplementedException($"Data type {supplDataTypes[i]} not supported!");
                }
            }
            return(supplData);
        }
Example #3
0
        public void LoadData(INetworkDataAnnColumns ndata, Parameters param, ref IData[] supplData, ProcessInfo processInfo)
        {
            var remoteExe = GetExectuable(param);

            if (string.IsNullOrWhiteSpace(remoteExe))
            {
                processInfo.ErrString = Resources.RemoteExeNotSpecified;
            }
            var outFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            if (!TryGetCodeFile(param, out string codeFile))
            {
                processInfo.ErrString = $"Code file '{codeFile}' was not found";
                return;
            }
            var suppFiles            = SupplDataTypes.Select(Utils.CreateTemporaryPath).ToArray();
            var commandLineArguments = GetCommandLineArguments(param);
            var args = $"{codeFile} {commandLineArguments} {outFolder} {string.Join(" ", suppFiles)}";

            Debug.WriteLine($"executing > {remoteExe} {args}");
            if (Utils.RunProcess(remoteExe, args, processInfo.Status, out string processInfoErrString) != 0)
            {
                processInfo.ErrString = processInfoErrString;
                return;
            }
            FolderFormat.Read(ndata, outFolder, processInfo);
            supplData = Utils.ReadSupplementaryData(suppFiles, SupplDataTypes, processInfo);
        }
Example #4
0
 public static ButtonParamWf DataPreviewButton(INetworkData ndata)
 {
     return(new ButtonParamWf("Download data for preview", "save", (o, args) =>
     {
         var dialog = new FolderBrowserDialog
         {
             ShowNewFolderButton = true
         };
         if (dialog.ShowDialog() == DialogResult.OK)
         {
             FolderFormat.Write(ndata, dialog.SelectedPath);
         }
     }));
 }