示例#1
0
 // Constructor
 public MainPage()
 {
     InitializeComponent();
     // Sample code to localize the ApplicationBar
     //BuildLocalizedApplicationBar();
     ScanControl.ScanResultFound += ScanControl_ScanResultFound;
     ScanControl.AutoFocus();
 }
示例#2
0
        public FusionBridge(string debugMzML, string logDir, bool showConsoleLogs)
        {
            Logs            = new List <string>();
            LogDir          = logDir;
            ShowConsoleLogs = showConsoleLogs;

            IFusionInstrumentAccessContainer fusionContainer = null;

            if (!String.IsNullOrEmpty(debugMzML)) // create fake Fusion container that reads from mzML file
            {
                WriteLog("FusionBridge constructor called in debug mode");
                WriteLog(string.Format("Reading scans from {0}", debugMzML));
                fusionContainer = new MzMLFusionContainer(debugMzML);
            }
            else // needs license to connect to the real instrument
            {
                //// Use the Factory creation method to create a Fusion Access Container
                WriteLog("FusionBridge constructor called");
                fusionContainer = getIFusionInstrumentAccessContainer();
            }


            // Connect to the service by going 'online'
            fusionContainer.StartOnlineAccess();

            // Wait until the service is connected
            // (better through the event, but this is nice and simple)
            while (!fusionContainer.ServiceConnected)
            {
                ;
            }

            // From the instrument container, get access to a particular instrument
            InstrumentAccess = fusionContainer.Get(1);
            ScanContainer    = InstrumentAccess.GetMsScanContainer(0);
            WriteLog("Detector class: " + ScanContainer.DetectorClass);

            // Dump key-value pairs in cs.Values
            WriteLog("Custom scan parameters: ");
            InstrumentControl = InstrumentAccess.Control;
            ScanControl       = InstrumentControl.GetScans(false);
            ICustomScan cs = ScanControl.CreateCustomScan();

            foreach (KeyValuePair <string, string> kvp in cs.Values)
            {
                string kvpString = string.Format("- cs.Values\tKey = {0}, Value = {1}", kvp.Key, kvp.Value);
                WriteLog(kvpString);
            }

            // Print instrument state
            WriteLog("FusionBridge constructor initialised");
            IState state = InstrumentControl.Acquisition.State;
            string msg   = string.Format("System mode = {0}, system state = {1}", state.SystemMode,
                                         state.SystemState);

            WriteLog(msg);
        }
示例#3
0
        public bool CreateCustomScan(long runningNumber, double precursorMass, double isolationWidth, double collisionEnergy, int msLevel,
                                     string polarity, double firstMass, double lastMass, double singleProcessingDelay)
        {
            WriteLog(String.Format("Placing a custom scan (runningNumber={0}, singleProcessingDelay={1})", runningNumber, singleProcessingDelay));

            // TODO: validate input

            if (ScanControl.PossibleParameters.Length > 0)
            {
                ICustomScan cs = ScanControl.CreateCustomScan();
                cs.RunningNumber = runningNumber;

                // Allow an extra delay of 500 ms, we will answer as fast as possible, so this is a maximum value.
                cs.SingleProcessingDelay = singleProcessingDelay;

                // Set the custom scan parameters
                cs.Values["CollisionEnergy"] = collisionEnergy.ToString();
                cs.Values["FirstMass"]       = firstMass.ToString();
                cs.Values["LastMass"]        = lastMass.ToString();
                cs.Values["Analyzer"]        = "Orbitrap";
                cs.Values["Polarity"]        = polarity;
                cs.Values["IsolationWidth"]  = isolationWidth.ToString();
                cs.Values["PrecursorMass"]   = precursorMass.ToString();
                if (msLevel == 1)
                {
                    cs.Values["ScanType"]           = "Full";
                    cs.Values["OrbitrapResolution"] = "120000";
                }
                else
                {
                    cs.Values["ScanType"]           = "MSn";
                    cs.Values["OrbitrapResolution"] = "7500";
                }
                cs.Values["ActivationType"] = "HCD";
                cs.Values["DataType"]       = "Centroid";
                cs.Values["AGCTarget"]      = "30000";
                cs.Values["MaxIT"]          = "100";
                cs.Values["Microscans"]     = "3";

                // Dump key-value pairs in cs.Values
                foreach (KeyValuePair <string, string> kvp in cs.Values)
                {
                    string msg = string.Format("- cs.Values\tKey = {0}, Value = {1}", kvp.Key, kvp.Value);
                    WriteLog(msg);
                }

                try
                {
                    if (!ScanControl.SetCustomScan(cs))
                    {
                        WriteLog(String.Format("FAILED to place a custom scan (runningNumber={0}): connection to service broken!!", cs.RunningNumber));
                        return(false);
                    }
                    else
                    {
                        if (cs.Values["ScanType"] == "Full")
                        {
                            WriteLog(String.Format("Successfully placed a custom fullscan scan (runningNumber={0})", cs.RunningNumber));
                        }
                        else if (cs.Values["ScanType"] == "MSn")
                        {
                            WriteLog(String.Format("Successfully placed a custom MSn scan (runningNumber={0})", cs.RunningNumber));
                        }
                        return(true);
                    }
                }
                catch (Exception e)
                {
                    WriteLog(String.Format("FAILED to place a custom scan (runningNumber={0}): {1}", cs.RunningNumber, e.Message));
                    WriteLog(String.Format("Stacktrace: {0}", e.StackTrace));
                    throw;
                }
            }
            else
            {
                WriteLog(String.Format("FAILED to place a custom scan (runningNumber={0}): no parameters available!!", runningNumber));
                return(false);
            }
        }