Jump to content

John Cox

Seeq Team
  • Posts

    65
  • Joined

  • Last visited

  • Days Won

    27

Everything posted by John Cox

  1. Hi Robin, I would use a Seeq formula similar to the one below, with the Can Weight signal and your existing Can Production capsules as inputs. The key functions used are aggregate(), periods(), and inside(). Note that you could also do the std deviation calculation using Signal from Condition, using a condition created in Formula with: periods(10min,1min).inside($CanProductionCapsules). $CanWeightSignal .aggregate(stdDev(), // std deviation statistic periods(10min,1min).inside($CanProductionCapsules), // do the calc over 10 min rolling window every minute // but only for 10 minute capsules fully inside CanProduction capsules endKey() // place the calculation result at the end of the 10 minute window , 0s) // max interpolation between data points, use 0s if you want discrete result Hope this helps! John
  2. Hi Sivaji, While this isn't easy to do in the current Seeq scatter plot view, below are two related forum posts that I would suggest you read. These may help with workarounds. Please note that your request (scatter plots with signals from multiple assets) is already a feature request in our system, and it will be added to the software at some point in the future.
  3. Hi Clinton, I would suggest you come to one of Seeq's open Office Hours and discuss this with one of our Analytics Engineers. They can likely get you started or make suggestions on how to approach this analysis. There are Office Hour slots available each day of the week. Please read more at this link: Seeq Office Hours
  4. Hi Muhammad, I would suggest that you start by searching for "steam" in the Seeq Formula documentation inside of Workbench. Please see the screenshot below. There are many Formula functions for doing steam table calculations.
  5. As another variation, in some cases the user may want to see the number of overlapping capsules at any point in time. In this case, the .fragment() Formula function may be helpful: $EventCondition.fragment() The .fragment() function creates a non-overlapping condition representing all the boundaries of capsules in an overlapping condition. You can see a comparison of the conditions generated using .merge() and .fragment() below. Where there are overlapping capsules, the .fragment() function creates a series of capsules touching each other. For example, note that there are 5 green capsules in the Event Condition (fragment) shown on the far right of the trend.
  6. FAQ: How do I identify time periods where I have overlapping capsules within the same condition? I may want to keep only the capsules (time periods) where capsules overlap. I may also want to keep the times where a certain number (2, 3, or more) of capsules overlap. In this example, we will find time periods where there are at least 2 overlapping capsules which make up the Event Condition. In the screenshot below, you can see there are 3 separate time periods where the Event condition capsules overlap: Step 1: Merge any overlapping capsules together using the merge() function in Formula: Now, we have a time period basis (Event Condition (merged)) over which we can count the total number of overlapping capsules. Step 2: Count the number of overlapping capsules using the count of the original Event Condition capsules over each Event Condition (merged) capsule: This creates a new signal as shown in the trend below. We can see that the new signal values (where > 1) correctly identify the 3 time periods where there are overlapping capsules in the original Event Condition. Step 3: We use Formula to find where the Event Condition (merged) capsules touch a time period where the Number of Overlapping Events signal (created in Step 2) is > 1. Note that we could test for varying number of overlapping capsules (> 2, > 3, etc.) depending on the goals of our analysis. We could also break Step 3 into 2 steps (a Value Search to find where the Number of Overlapping Events is > 1, followed by a Composite Condition to do the touches logic). This generates the final results where the Overlapping Events condition correctly identifies our time periods of interest:
  7. Hi Steve, As a follow-up to your "ability to do a first order filter in Seeq" question from earlier this year, I wanted to mention that the latest version of Seeq (R50) now includes an exponentialFilter() function in the Formula tool. This new function does the first order filter (or first order lag response) that you are interested in. You can see an example below where 3 first order filters were created with different tau values, to filter the raw signal. If you need any help testing this out, don't hesitate to let us know!
  8. In some cases you may want to do a calculation (such as an average) for a specific capsule within a condition. In Seeq Formula, the toGroup() function can be used to get a group of capsules from a condition (over a user-specified time period). The pick() function can then be used to select a specific capsule from the group. The Formula example below illustrates calculating an average temperature for a specific capsule in a high temperature condition. // Calculate the average temperature during a user selected capsule of a high temperature // condition. (The high temperature condition ($HighT) was created using the Value Search tool.) // // To prevent an unbounded search for the capsules, must define the search start/end to use in toGroup(). // Here, $capsule simply defines a search time period and does not refer to any specific capsules in the $HighT condition. $capsule = capsule('2019-06-19T09:00Z','2019-07-07T12:00Z') // Pick the 3rd capsule of the $HighT condition during the $capsule time period. // We must specify capsule boundary behavior (Intersect, EnclosedBy, etc.) to // define which $HighTcapsules are used and what their boundaries are (see // CapsuleBoundary documentation within the Formula tool for more information). $SelectedCapsule = $HighT.toGroup($capsule,CapsuleBoundary.EnclosedBy).pick(3) // Calculate the temperature average during the selected capsule. $Temperature.average($SelectedCapsule) The above example shows how to select and perform analysis on one specific capsule in a given time range. If instead you wanted to select a certain capsule of one condition within the capsule of a second condition, you can use the .transform() function. In this example, the user want to pick the first capsule from condition 2 within condition 1. Use formula tool: $condition1 .removeLongerThan(1d) .transform($c -> $condition2.removeLongerThan(1d).toGroup($c).pick(1)) The output: Content Verified DEC2023
  9. There are various methods to do this. The easiest method is by using the max() or min() functions in the Formula Tool, which are available beginning in Seeq release R21.0.40.05. Here is an example for creating a new signal which is the maximum of 4 other signals: $a.max($b).max($c).max($d) You can also see additional information in this related forum post. Content Verified DEC2023
×
×
  • Create New...