Jump to content

Sean T

Seeq Team
  • Posts

  • Joined

  • Last visited

  • Days Won


Sean T last won the day on October 31 2022

Sean T had the most liked content!

Personal Information

  • Company
  • Title
    Analytics Engineer

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Sean T's Achievements


Apprentice (3/14)

  • Conversation Starter
  • Dedicated Rare
  • First Post
  • Collaborator Rare
  • Week One Done

Recent Badges



  1. Hi david, To add to joe's comment: Besides excel export and looking at this in tables and charts, an easier way to do this would be to simply add the count as a statistic in your details pane. to do this, click on the table icon in your details, it should be right underneath the "customize" button. In the pop up, simply select "count" and the count of data points for each signal will be displayed in the details pane. Hope that helps! Thanks, Sean
  2. Hi thomas, This error can have a variety of causes- some of which are fixed by upgrading your server. Can you submit a support request with the logs to support@seeq.com so we can determine how to best resolve your issue? Thanks, Sean Tropsa
  3. HI Alba, To answer your questions: 1: Currently you can only show one property at a time in the histogram. If you would like to see the product associated with that batch you can use capsule properties to create a new property that has both the batch and the product information. Here is a forum post that shows the use of the setproperties function: 2: if you want to aggregate by average batch duration- you will first need to create a new "Signal from Condition" that calculates the total duration for each batch: From here, you can use this new calculated signal in a histogram to calculate the average batch duration by product
  4. When creating signal forecasts, especially for cyclic signals that degrade, we often use forecastLinear() in formula to easily forecast a signal out into the future to determine when a threshold is met. The methodology is often the same regardless of if we are looking at a filter, a heat exchanger, or any other equipment that fouls overtime or any equipment that needs to go through some periodic maintenance when a KPI threshold is met. A question that comes up occasionally from users is how to create a signal forecast that only uses data from the current operation cycle for signal forecasting. The forecastlinear() operator only takes into account a historical training period and does not determine if that data is coming from the current cycle or not (which results in unexpected results). Before entering the formula, you will need to define: a condition that identifies the current cycle, here i have called it "$runningCycle" a Signal to do a linear forecast on, i have called it "$signal" To forecast out into the future based on only the most recent cycle, the following code snippet can be used in formula: $training = $runningCycle.setmaximumduration(10d).toGroup(capsule(now()-2h, now())) $forecast=$Signal.predict($training, timesince(toTime('2000-01-01T00:00Z'))) $signal.forecastSplice($forecast, 1d) In this code snippet, there are a few parameters that you might want to change: .setMaximumDuration(10d): results in a longest cycle duration of 10 days, this should be changed to be longer than the longest cycle you would expect to see capsule(now-2h, now()): this creates a period during which seeq will look for the most recent cycle. In this case it is any time in the last 2 hours. If you have very frequent data (data comes in every few seconds to minutes) then 2 hours or less will work. If you have infrequent data (data that comes in once a day or less) then extend this so that it covers the last 3-4 data points. $signal.forecastSplice($forecast, 1d): When using forecastLinear(), there is an option to force the prediction through the last sample point. This date parameter (1 day in this case) does something similar- it blends the last historical data point with the forecast over the given time range. In other words, if the last data point was a value of 5, but my first forecasted datapoint had a value of 10, this parameter is the time frame over which to smooth from the historical data point to the forecast. Here is a screenshot of my formula : and the formula in action:
  5. Hi John, If i am understanding correctly- you have data with one signal having multiple values at the same timestamp. Seeq does not support multiple values existing at the same time stamp for signal based data- it will only take one of the values and display that. To get this kind of data to be workable we have 3 options: You can adjust the timestamps of the other datapoints by some small amount so you can see all samples in the same signal, just slightly offset in time You can bring each measured value in as its own signal i.e. product qulaity x measurement 1, quality x measurement 2, etc You can bring this data in as an event (condition) with properties- You can have one capsule per product sample and that capsule can have properties that contain each measurement value as well as any other information about the measurement you might be interested in. Reach out to seeq support support@seeq.com if you want help exploring some of these options further -Sean
  6. A question that comes up from time to time is how to search for a list of signals or other data items in Seeq. Typically we get a request for an ability to search based on a comma separated list. While we do not currently (as of R55) support a comma separated list, you can get around this using Regex searching simply by replacing the comma with a vertical bar "|" and encapsulate the search in forward slashes as below: Compressor Power,Temperature,Relative Humidity becomes /Compressor Power|Temperature|Relative Humidity/ In this search, the forward slashes tell Seeq that this is a Regex search, and the | is an "or" in regex. I.e. it will search for something exactly containing "Compressor Power" or something exactly containing "Temperature" etc. which in effect gives you the ability to search for a list! For very long lists, do a find and replace in a word editor to build the new search. The ability to search for a list will soon become quite handy with the "add all" feature slated to come with R56 which should be coming soon!
  7. Hi Andrew and Feng, We currently do not support importing CSV files with separate date and time columns as Andrew mentioned. There are quite a few date formats and we do not yet have support for all of them including separated date and time columd, for now please use the DateTime format that Andrew mentioned above. We do have a feature request in for supporting separate columns, if you would like, i can attach you to that item so you will be notified as it is worked on. -Sean
  8. Hi Sivaji, You are correct that data pulled/pushed in SPy will be done by default in GMT (actually, UTC). Glad you were able to find a way to specify your timezones for your case where the time zone wasnt mentioned!
  9. Starting in R22.0.49, the Delay operator functionality has been rolled into the .move() function, which has long acted like the delay operator, but for capsules. Hopefully this will simplify the number of fomula operators that we need to know to work with our data in Seeq! If you search for delay in the formula documentation, it will bring up the move formula with updated documentation to represent the change.
  10. When generating a simple value search, using operators like .isLessThan() or using the mathematical operators in formula like <,> would generally be more efficient than specifying a Value Search. The .valueSearch() operator provides aditional benefit over other operators when some condition filtering is also required as we can also specify an entry/exit grace period, and max duration, among other possible operators that can be supplied directly into the valueSearch() operator without having to use other fucntions to accomplish condition filtering. An example where .ValueSearch() would be much simpler than using .isbetween() and other condition filtering operators would be: Create capsules where $signal becomes greater than 5 kW for at least 4 seconds and ending when $signal becomes greater than 15.0 kW for at least 3 seconds. Capsules longer than 1 day are discarded. $signal.valueSearch(1d, isGreaterThan(5.0 kW), 4s, true, isGreaterThan(15.0 kW), 3s, true)
  11. Thanks for the feedback Woody, I will incorporate your request into our feature logging system.
  12. Often when using capsule properties that have operational data, like alarm data, batch data, operator input comments, etc. Capsule properties are read in with multiple lines. In Seeq, we can easily leverage the capsule property and the keep function that Lindsey explained above to filter for specific key words and extract more exact information out of the properties! To do this, i will need to use Regex searching to find my keywords. (To learn more about regular expressions or validate that your search is will work as expected, check out https://regex101.com/ ). toSignal() Property We start with some capsule properties, in this case i have made a string signal out of my capsule properties using the $condition.toSignal('Value') function in formula, where 'Value' is the name of the capsule property of interest. I have an example of my condition with properties and my signal shown below so we can see the text I will be searching on. When we view multi-line propeties in trend view in Seeq, it is not immediately apparent that they have multiple lines, This is done to allow them to better fit in the Capsules pane. To verify my multi-line comment, i have made a Scorecard out of the signal where we can see the multiple lines: Regex Searching on Capsule Properties When filtering capsule properties, like my commented property shown above in Seeq, we can utilize regex searching to be more exact in our search methodology. To do this, we use a regular expressing in place of our usual search strings: $condition.keep('Value', isMatch('/.*Com.*/') Which will keep any property that has the exact string 'Com' somewhere in the first line of the property. Any other regex search can be input in place of the '.*Com.*' string. The contains() operator can also be used in place of the isMatch() operator To perform regex searching on multiple lines, a (?s) or (?si) needs to be tacked on to the front of the regex search. The (?s) will perform a case sensitive multi-line regex search and (?si) will allow the multi-line search to not be case sensitive. This way we can search for any specific keyword (or words) in a multi line capsule property: $condition.keep('Value', isMatch('/(?s).*keyword.*/') or $condition.keep('Value', isMatch('/(?si).*keyword.*/') Results in a new filtered condition that only contains capsules whose 'Value' property contains our 'keyword':
  13. Hi Greg Since you already have a condition identifying when your signal changes, to identify the magnitude of the change all you need to do is use Signal From Condition. Here is an example of how it might look: In this case i am using "Range" because it will always give me a positive value of the change in my power signal. If i wanted to know if it was positive or negative I would use "Delta" instead. Here i am using the Duration as my timestamp so i can more easily accomplish the next step- filtering the original change condition. Since you want to count the number of instances the value changes by more than some amount, we can then filter our original condition (the one that identified the change) so it only retains the capsules where the change was over your threshold. To do this i will use Formula: In this case, i am filtering my Load Swing to keep capsules where the swing is greater than 25kW. You can see the filtered condition is shown in blue where my original Condition is shown in green. From here, you can use the Scorecard Metric to count the number of the filtered capsules. Hope this helps!
  14. Hi Thorsten, A bit more information might help me directly answer your question. Are the calculations being performed on the historian server? If so, then yes we would reference like any other signal. If the calculation is performed within seeq, then the answer is also yes, we should be able to assign that to a tree within the tree file connector depending on how it was created and the specifics of the calculations. Here is an example of the data/datasource ID and datasource name for a Seeq calculation: In general you would assign a seeq internal calculation using this information in place of the equivalent historian information. If you have a bit more information on what exactly you are trying to accomplish i will try and give you a more specific answer. Hope this helps -Sean Tropsa
  15. As of Seeq R21.044 we have a couple interesting new ways to compare signals in formula! When creating a value based condition, the usual default is the value search tool, but it has always been possible using formula as well, however these functions have typically been limited to signal against scalar comparisons. As of R21.044 however, common math operators like <, <=, >, >=, == (is equal to), != (is not equal to), and && (logical and) are all available for use as signal against scalar, or signal against signal comparisons! Whenever the mathematical condition is met, a condition will be created just like a typical value search, however unlike value search the mathematical operators in formula will also work with two signals. For more information, search for "Comparison Functions for Signals" in your formula documentation. Here are a few examples of these operators in use: Signal and scalar comparison: Signal and scalar comparison with logical and: Signal against Signal: For a full list of whats new in R21.044 check out this KB article: https://seeq12.atlassian.net/wiki/spaces/KB/pages/571375775/What+s+New+in+R21.0.44
  • Create New...