The Re-array workflow is a key feature of the PIXL. This workflow is made up of the following key steps:
The Re-array workflow is broken down into a flow diagram that can be viewed here.
From a clients point of view the following need steps need to be implemented in order to run a Re-array workflow:
Whenever there is a pending plate interaction it can be cancelled by calling the Abort method event on the PIXLClient.
Once the workflow has been triggered and all plates loaded the PIXL will run the workflow. By providing the name of a Pinning Profile the settings the PIXL uses run the pinning's can be adjusted. If an empty string is provided the last used Pinning Profile are used.
Running the Re-array workflow with the last used Pinning Profile |
Copy Code
|
---|---|
// Create plates. var plate1 = new Plate("Source_Plate_1", PlateTypes.PlusPlate_96, PlateRoles.Source); var plate2 = new Plate("Target_Plate_1", PlateTypes.PlusPlate_96, PlateRoles.Target); // Define pinnings. var pinnings = new[] { new ConsecutivePinningInstruction(new[] { new PinningInstruction(plate1, 1, 1), new PinningInstruction(plate2, 1, 1) }) }; // Run workflow. pixl.RunRearrayWorkflow("ID1234", string.Empty, string.Empty, pinnings); |
Alternatively the pinning definitions can be defined in a file:
Running the Re-array workflow from a file with the last used Pinning Profile |
Copy Code
|
---|---|
pixl.RunRearrayWorkflowFromFile("ID1234", string.Empty, string.Empty, "d:\Test.csv"); |
The Re-array workflow returns an instance of the RunRearrayWorkflowCommandResponse class, which contains information on the status of the finished operation as well as all data captured relating to the workflow.
Running the Re-array workflow and displaying all captured data on the Console |
Copy Code
|
---|---|
// Run the workflow. var result = pixl.RunRearrayWorkflowFromFile("ID1234", string.Empty, string.Empty, "d:\Test.csv").Result; // Display the result. Console.WriteLine(result.Result.Message.ToString()); // Display the local tracking base path. Console.WriteLine($"Tracking base: {result.TrackingPath}"); // Display the program ID. Console.WriteLine($"Program ID: {result.ProgramInformation.ProgramID}"); // Use a StringBuilder to concatenate all information to display. var stringBuilder = new StringBuilder(); // Concatenate pinning information. for (var i = 0; i < result.ProgramInformation.Pinnings.Length; i++) { var pinning = result.ProgramInformation.Pinnings[i]; stringBuilder.AppendLine($"---{i + 1} of {result.ProgramInformation.Pinnings.Length}: "); stringBuilder.AppendLine($"------ID: {pinning.PinningID}"); stringBuilder.AppendLine($"------Date/Time: {pinning.DateTime}"); // Concatenate information for each position. for (var j = 0; j < pinning.Positions.Length; j++) { var position = pinning.Positions[j]; stringBuilder.AppendLine($"---------Position {j + 1} of {pinning.Positions.Length}:"); stringBuilder.AppendLine($"------------Plate ID: {position.PlateID}"); stringBuilder.AppendLine($"------------Plate Name: {position.PlateName}"); stringBuilder.AppendLine($"------------Location: {position.Location}"); stringBuilder.AppendLine($"------------X: {position.X}"); stringBuilder.AppendLine($"------------Y: {position.Y}"); stringBuilder.AppendLine($"------------Result: {position.Result}"); } } // If there were no pinnings add an entry to inform the user of this. if (result.ProgramInformation.Pinnings.Length == 0) stringBuilder.AppendLine("-None"); // Display pinning header. Console.WriteLine("Pinnings:"); // Display pinning information Console.WriteLine(stringBuilder.ToString()); |
It is recommended that all plates should be removed from the PIXL when it finishes a workflow. After a plate has been removed call the PlateRemoved method on the PIXLClient to notify the PIXL of all plates that have been removed.