• To Search the Seeq Knowledgebase:

# Search the Community

Showing results for tags 'composite condition'.

• ### Search By Tags

Type tags separated by commas.

### Forums

• Community Technical Forums
• General Seeq Discussions
• Product Suggestions
• Seeq Data Lab

### Calendars

• Community Calendar

• Published
• Code
• Media

• 0 Replies

• 0 Reviews

• 0 Views

Found 11 results

1. ## Creating Periodic Conditions Relative to Now

FAQ: For reporting purposes, I want to calculate statistics based on the current period to date and display that next to the periods immediately preceding it. This is easy to do using the custom date range tool in Organizer Topic (Creating a Periodic Condition and the grabbing the capsule closest to or offset by 1 from the end). Is there a way to create these same date ranges relevant to the current time in Seeq Workbench? Solution: We can create identical conditions in Seeq Workbench by following the methods below. The first method defines how to create conditions for current and previous conditions for years, days, weeks, shifts. The second method includes an extra step that is necessary for current and previous months and quarters since the exact duration of these periods can vary based on the number of days each month. Method 1 - when the length of time in each period is definitive (e.g. year, week, day, shift). This example shows how to create conditions for "Current Week" and "Previous Week" 1. Create a Periodic Condition for "Weekly" using the Periodic Condition tool. 2. Create a Condition around the current time ("Now") using Formula --> condition(1min, capsule(now() - 1min, now())) 3. Use the Composite Condition tool to create a condition for "Current Week" when the Periodic Condition "Weekly" touches the tiny capsule at "Now". 4. Use Formula to create a condition for the "Previous Week" --> \$currentWeek.beforeStart(7d) Method 2 - when the length of time in each period is variable (e.g. month, quarter). This example creates a condition for "Current Month" and "Previous Month" 1. Create a Periodic Condition for "Monthly" using the Periodic Condition tool. 2. Create a Condition around the current time ("Now") using Formula --> condition(1min, capsule(now() - 1min, now())) 3. Use the Composite Condition tool to create a condition for "Current Month" when the Periodic Condition "Monthly" touches the tiny capsule at "Now". 4. Use Formula to create a Condition for the last day of the last period (in this case "Last Day of the Last Month") \$currentMonth.beforeStart(1d) 5. Use the Composite Condition tool to create a condition for the "Previous Month" when the Periodic Condition "Monthly" touches the "Last Day of Last Month".
2. ## Formula to create condition based on multiple criteria and analysis

Hey there, My question splits into two parts: Firstly, I want to create a condition based on multiple criteria: if signal A equal to 3, B equal to 4, C is greater than 5 than condition is valid. I know i could create 3 individual capsule and overlap them. Is there a simple way to use formula to do so? Secondly, in my analysis i have 10 signals and associated conditions(alert), then I want to know in the past 7 days how many alert in total(repeated instance or capsule doesnt count) ? and How long is the total alert time? Thank you
3. ## Identify subtle trends or step changes in a signal

Background: When looking to identify trends or step changes in a signal, we typically recommend an approach of smoothing the signal, taking the first derivative, then identifying when that derivative is positive or negative. This method works well most of the time, but employing this technique in combination with others can be more effective at capturing trends/step changes when the value change in the signal is more subtle. Solution: When looking for step changes, we can use a technique of calculating a range of the signal on a rolling periodic basis and search for when the range exceeds some limit. We can then combine this condition with when the derivative is positive (increasing step changes) or negative (decreasing step changes) to capture our final condition. 1. Create a rolling window over which you will look at the range (max-min value) of the signal. In my example I used a 4h window every 30 minutes, because my tank draining events were typically never longer than 4h. Select the smallest time period that you can that is still longer than your longest draining event. 2. Use Signal from Condition to calculate the range (max-min) of your signal over each of the rolling windows. Make sure to place the time stamp of the statistic at the end of each rolling capsule. 3. Identify time periods when that range calculation is above some threshold. In this example we used a threshold of 2 based looking at the trend output of our step 2. If we zoom in on a smaller range of time, we see that our capsules for when the range value is high actually extend beyond the completion of our decreasing signal. 4. We can intersect this condition that we have identified for high range in the signal with a condition for when the derivative of the signal is negative to capture our desired events. First calculate the first derivative of the signal. We apply a smoothing agileFilter in this step as well to remove signal noise. 5. Identify when that derivative value is less than zero using the value search tool. 6. Now take the intersection of the condition for negative derivative of the level and the condition for high range. The final view of the original signal and the events identified: Use chain view to validate your calculations:
4. ## Create function to calculate total duration with multiple conditions

Hello Everyone, I hope you are doing well. I need some help with creating a function. I have multiple conditions that I have created that tell me if the equipment is stopped, lag, standby, or other attributes. I want to be able to be able to: ADD Durations for when equipment is stopped and in lag OR when the equipment is stopped or standby. ADD Durations for when equipment is stopped but not in lag or standby. The example variables are in hours. Stopped (\$i5) Standby(\$i6) Lag (\$i) I would appreciate the help.
5. ## Combining Different Phases of a Batch Process Into a New Condition

There are times when you may need to combine two capsule series to form a single capsule series. We've seen this is batch processing where a parent batch has two or more child series, perhaps representing operations or phases. For reporting or other purposes a capsule series where each capsule starts at the beginning for a capsule and ends at the end of another capsule. In this example we have a Parent Condition, Phase 1 Condition and Final Phase Condition. Say we want to be able to actual the average time starting when Phase 1 begins and Final Phase ends. In this case we can "join" together the Phase 1 and the Final Phase using our Composite Condition Tool. You should now see that the Combined Condition starts at the beginning of Phase 1 and ends at the end of the Final Phase. Now that we have identified this period of interest we could do a variety of calculations using the Signal from Condition tool. These calculations could include average duration of the Combined condition, maximum temperature during the combined condition, etc. You may notice in the Capsules pane that the "children" didn't inherit the Batch ID of the Parent. If you want advice on how to complete this you can reference this article. --Morgan
6. ## How to create shift conditions for different types of shift schedules.

FAQ: How do I create a condition for operational shifts if they alternate days and hours? e.g. (The EOWeO schedule) The following solution will keep the start times the same regardless of daylight savings. So, there will be an 11-hour shift in March and a 13-hour shift in November. For areas that don’t follow daylight savings a simpler solution can be found further below. Overview: To achieve the results described above the shift() function will need to be used in order to create the desired effects around daylight savings. If there was no daylight savings the periods() function would provide a simpler solution. Step 1. Create a condition for all night and day shifts. This can be done with the periodic condition tool. Note: This step will set the shift change over times, so it is important to ensure they are correct. e.g. (6:00 am and 6:00 pm et). See screenshots below for details of how to create the day and night conditions. Day setup: Night setup: Results of step 1. Note: This can also be done with 8-hour shifts as well by using 3 conditions instead of 2 Step 2. Create a condition with short capsules that contains the pattern of the shift schedule. This condition will be used to select the correct shifts from the conditions made in step 1. Only one of these conditions will need to be defined since the shift schedule for EOWeO follows a 24-day pattern and each shift group is off set 7 days from the last. This condition was created with the formula tool with some help from excel. The following was a table set up in excel that was copied into the formula tool. Note: The number format in columns B and D should be set to text to avoid problems. The numbers in column C are the offset from the start of the 28-day cycle to that particular shift. Altering these numbers would allow you to have different schedules other than EOWeO. It should be noted that more rows can be added by just dragging down the auto-fill in excel and setting the offset time in column C. See the code snippet below for all of the formula details and the result of pasting from excel. //-----inputs----- \$TimeAdj=3.5d //This allows the alignment of shifts depending //on the start date //-----Calculations------- //Note: The syntax below was set up with excel and copied in \$s1 =periods(1sec,28d).move(0h) \$s2 =periods(1sec,28d).move(24h) \$s3 =periods(1sec,28d).move(108h) \$s4 =periods(1sec,28d).move(132h) \$s5 =periods(1sec,28d).move(156h) \$s6 =periods(1sec,28d).move(216h) \$s7 =periods(1sec,28d).move(240h) \$s8 =periods(1sec,28d).move(348h) \$s9 =periods(1sec,28d).move(372h) \$s10 =periods(1sec,28d).move(432h) \$s11 =periods(1sec,28d).move(456h) \$s12 =periods(1sec,28d).move(480h) \$s13 =periods(1sec,28d).move(564h) \$s14 =periods(1sec,28d).move(588h) // Now that all 14 of the shifts have been set for their 28day // cycle and they need to be combined now combinewith(\$s1,\$s2,\$s3,\$s4,\$s5,\$s6,\$s7,\$s8,\$s9,\$s10,\$s11,\$s12,\$s13,\$s14).move(\$TimeAdj) As seen in Seeq: Step 3. Combine the Night and Day conditions with the composite condition tool to make one condition for all of the shifts. See screenshot below for details. Step 4. Use the condition created in step 2 to select the appropriate capsules of the combined day and night condition. This can be done with the composite condition tool. This will be shift #1. Note: The \$TimeAdj variable in the long formula used to create the shift pattern may need to be adjusted to ensure correct alignment. Step 5. Create the other shifts' selection conditions by using the move() function in the formula tool to move the condition created in step 2 for all the other shifts. In this case the condition will be moved three times by 7, 14, and 21 days to get the other three shift selection conditions. Formula for 7 days: Formula for 14 days: Formula for 21 days: Step 6. Repeat step 4 for the rest of the shifts. Note there will be no need to adjust the timeAdj variable this time. Final result:
7. ## Join Capsules in the same Condition

Background In this Use Case, a condition was created to identify when a compressor is running. Let's say I'd like to extend each capsule in this condition so that instead of ending when the compressor turns off, it ends when the next compressor running capsule starts. Method The method used depends on the Seeq version. Seeq R21.0.42 and Later Version R21.0.42 introduced the .growEnd() operator; this operator grows capsules in in a condition by extending the end until the start of the next capsule. Earlier Versions (Before R21.0.42) 1. First, create a condition that is the inverse of the Compressor Running condition. This can be achieved using the .inverse() function in Formula 2. Next, extend each Compressor Running capsule so that they overlap with the Downtime capsules. This is achieved using the .move() function in Formula. 3. Finally, combine the Downtime and Compressor Running - Extended conditions use the union logic in the Composite Condition tool.
8. ## scaler Value Removal

Hi All, I've got few Scaler values in my data-set (E.g High,On,OFF) , I have convert all of them into Capsule by toCapsule() Function. Now wanted to remove only those capsules which are having "OFF" Status. Regards, Jitesh Vachheta
9. ## Creating Conditions for Seasons

FAQ: I would like to create a condition for the summer season that runs from May 1 - September 30, but when I use the Periodic Condition tool to create a monthly condition and select the months May-September, I get individual monthly capsules rather than one capsule for the entire summer. Is there a better way to do this using Seeq's tools? Solution 1 - Using Seeq Point & Click Tools: 1. Use the Periodic Condition tool to create a condition for May. 2. Use the Periodic Condition tool to create a condition for September. 3. Use the Composite Condition tool (join operator, inclusive of A, inclusive of B) to create a new condition that spans from the beginning of May to the end of September. Solution 2 - Using Seeq Formula: 1. Create a monthly Periodic Condition selecting all of you "summer months". Note that while it looks like one long capsule at the top of the display pane, it is actually 5 adjacent monthly capsules. You can confirm this by looking at the capsules pane in the bottom right hand corner of the application. 2. Use Seeq Formula and the merge() function to merge adjacent capsules. The appropriate syntax for merging adjacent capsules can be found by searching the word "merge" in the search documentation bar within Seeq Formula and scrolling to the example to "merge overlapping AND adjacent capsules". Note now in the capsules pane there are still the individual capsules for summer months, but there is a new green capsule that spans the entire summer as defined in this problem statement.
10. ## Identifying Patterns in Discrete Sequences of Events

Use case: A piece of equipment has a start-up sequence in which it goes through different discrete states sequentially before completing the sequence and reaching steady state. When the equipment is off, the state is 0. When the equipment enters the start-up sequence it cycles through states 1-6 in the pattern "1-2-3-4-5-6". A successful start-up sequence will have all 6 states in the pattern "1-2-3-4-5-6." If a disruption occurs at any point in the start-up sequence the state number will read as state 7, thus a failed start-up sequence could have the pattern "1-7", "1-2-7", 1-2-3-7", etc. This use case describes methods to identify only the successful start-up sequences. Approach 1: If the signal for the state is numeric (e.g. with discrete numeric values of 0-7) 1. Create a new signal that is the running delta of the STATENUMBER signal. Use Seeq Formula and syntax: \$statenumbersignal.runningDelta() 2. Create a new condition for all start-up sequences using value search for when the runningDelta signal just created is greater than zero. 3. Calculate the delta in your STATENUMBER signal over each start-up sequence. This value should always be equal to 6 or 7 as the sequence will either complete successfully (go to 6) or fail and end with a value of 7. Use the signal from condition tool to calculate this. 4. Create a new condition for when this delta in the STATENUMBER signal just created is equal to 6. This must be done in Seeq formula (there is a known issue in using value search for this operation) with the following syntax: \$deltaInSTATENUMBERsignal.valueSearch(isEqualTo(6)) Approach 2: If the signal for the state is a string that is easily convertible to a numeric signal. This example is a string with discrete values "STAGE0", "STAGE6", etc. 1. In Seeq formula, use the replace() function with the following syntax: \$StringSignalForStateNumber.replace('STATE','') 2. In a new Seeq Formula Window apply the toNumber() function to the signal created in step 1 with the following syntax: \$SignalFromStep1.toNumber() - this will create a numeric signal with discrete values of 0-7. Approach 3: If the signal for the state is a string value, not easily converted to a numeric signal or if you wish to proceed using the string signal. 1. Use Value Search to identify STATE6 2. Use Value Search to identify STATE7 3. Use Composite Condition (union operator) to create a combined condition "finalStateinSequence" for the final state in sequence, either STATE6 or STATE7. 4. Use formula to create a condition for all start-up sequences (successful and failed). Syntax: \$FinalStateInSequence.inverse().move(0,1h) This formula code is identifying all of the time when the final state in sequence condition is not true and extending those capsules by a short amount of time so that the final state value is contained within the "all start-up sequences" capsules. 5. Use Signal from Condition to identify the ending STATENUMBER value for each of the start-up sequences. 6. Identify your successful start-up sequences by doing a valueSearch in Formula to identify when the ending STATENUMBER is equal to STATE7. Formula syntax: \$endingSTATENUMBERsignal.valueSearch(isEqualTo("STATE7"))
11. ## Oil and Gas Use Case

Upstream O&G Customer Use Case: I have created a condition for when my well is shut-in based on a value search on the down hole pressure. I've created another condition for the first hour after the well is shut-in. I would like to create another condition that runs from the end of my 1-hour after shut-in condition until the down hold pressure returns to within 10% of it's pre-shut-in value. Once I have isolated this period of time I would like to calculate an hourly rolling average over only that time period and do the same for my 1 hour after shut-in condition. Solution: To address your first question of creating the t>1 hr after shut-in capsule. One method to do this is below: 1. Create a condition for ~5 min before shut-in and shift it by ~5 min to make sure you have the Steady state DHP prior to shut-in. This is done using Formula. The syntax (quotes not part of code) is "\$ShutinCondition.beforeStart(5min).move(-5min)". The beforeStart(5 min) creates a new 5 minute long capsule directly preceding your shut-in capsule. The move(-5 min) function shifts this new beforeStart capsule backwards in time by 5 minutes. 2. Calculate a new signal that represents the average DHP over the condition created in step 1. Use signal from Condition with the following inputs: Signal or condition = DHP Summary Statistic = Average Bounding Condition = condition from step 1 Where to place timestamp = Start Interpolation Method = step Max interpolation = a duration longer than the time between shut-in events 3. Calculate a new signal that is the signal created in step 2 (DHP right before shut-in) + 10%. Use Formula and the syntax "\$signalFromStep2*(1.10)". 4. Calculate a new signal that is the delta between the DHP and this initial + 10% signal. Use Formula and the syntax "\$DHPsignal-\$signalFromstep3". 5. Create a condition for when this delta signal created in step 4 drops below zero. Use value search and <0 as inputs. 6. Create a composite condition that joins the end of your existing capsules t<1 hr after shut-in to the start of your condition created in step 5. The inputs to this composite condition will be: Condition A = t<1 hour after shut in Condition B = Delta signal drops below zero Logic = join Not inclusive of A Not inclusive of B Max capsule duration = long enough to capture the time back down to initial DHP. For each of the two new signals you want to create, you can use formula and the following syntax, where \$ChooseCondition will be your t<1 hr and t>1 hr conditions in each formula. "\$DHP.within(\$ChooseCondition).runningAggregate(average(),hours())" This will give you a new signal of the 1-hr rolling average of DHP only during the specified condition.﻿
×
×
• Create New...