Jump to content

Joe Reckamp

Seeq Team
  • Posts

    128
  • Joined

  • Last visited

  • Days Won

    36

Everything posted by Joe Reckamp

  1. Hi Filip, You can turn the discrete signals into step signals by doing $signal.tostep(1d) such that it will interpolate all data points within a day of each other and then the custom grid will work effectively.
  2. Hi Liam, It looks like you likely have some invalid values in the middle of Bath 8420. You should be able to fix this with something like this to fix the issue in the signal before doing .toCondition(): $signal.validvalues().toCondition('Batch Number')
  3. Hi Rohan, You'll just want to edit the Number Formatting (https://support.seeq.com/space/KB/570490943/Number%20Formatting) on the resulting formula. The precision is kept, but the formatting is just in scientific notation.
  4. Hi Conor, Two things that are needed: 1. The license needs to have the appropriate feature on it. 2. An admin needs to enable the feature in the admin panel. I'll get the first one started for you.
  5. Hi Conor, See the What's New pages (linked below) for R52 and R53 for the "Asset Groups" sections that relate to being able to create asset groups (similar to asset trees) in those versions. R52 adds this capability with the appropriate license and R53 extends upon that functionality adding the ability to create calculations: https://support.seeq.com/space/KB/1616642176/What's+New+in+R52 https://support.seeq.com/space/KB/1857093849/What's+New+in+R53
  6. Hi Corey, Currently, condition lanes are tied to the order that the conditions are added to the trend. Therefore, to modify that order, remove all conditions from the display and add them back onto the display in the order you would like them to appear (from top to bottom).
  7. Hi Prachi, A couple different options for you: Option 1 You're probably familiar that you can use Formula (or Value Search) with the following to create a capsule for when one signal is equal to 1: $signal==1 Therefore, one option is to combine this search together for each signal using the combinewith function: combinewith($signal1==1, $signal2==1, ... , $signal50==1) This will create a capsule for each signal equal to 1, which would result in multiple overlapped capsules if more than one signal was equal to 1. If you'd like to reduce that to create a capsule if "any" signal was 1, you could merge those together: combinewith($signal1==1, $signal2==1, ... , $signal50==1).merge() Alternately, if you want to know how many signals are equal to 1 at any point in time, you can use countoverlaps: combinewith($signal1==1, $signal2==1, ... , $signal50==1).countoverlaps() Option 2 Typically when counting 1 values, the signals are a 0/1 signal where it is 0 when inactive and 1 when active. If this is the case in your use case, an alternate approach could be to sum the signals and find when it is greater than or equal to 1: sum($signal1, $signal2, ... , $signal50) >= 1
  8. Hi Tim, I believe you will need to set pypi.org to a trusted host following the instructions details at this Stack Overflow post: https://stackoverflow.com/questions/16370583/pip-issue-installing-almost-any-library
  9. Hi Pat, You will need to make sure that the maximum interpolation is less than the data being removed or else the data will be interpolated through the gaps. You can set the maximum interpolation in the formula as well by adding a .setmaxinterpolation(<time>) at the end.
  10. Many batch customers want to track cycle times of batches. Histograms are a great way to aggregate and visualize the cycle times for continuous improvement. The data set involved includes a Batch ID (typically a string signal, but could also be a capsule with a Batch ID property) and optionally a signal for splitting up the batch such as a unit procedure, operation, phase, or step. In order to prepare the data for the histogram, we need to convert these signals into capsules with the appropriate Batch ID and operation as properties on each capsule. This can be done in the following ways depending on whether the optional operation is included: Only Batch ID: $signal.toCondition('Batch ID') Batch ID + Operation: $OperationSignal.toCondition('Operation').removelongerthan(30d) .transform($capsule -> $capsule.setProperty('Batch ID', $BatchIDSignal.toScalars($capsule).first())) Note that you may need to filter out certain capsules (such as "Operation 0" in the picture above) using the keep formula. Also, depending on the frequency of the Batch ID sample recording, the $BatchIDSignal may need to have a ".resample(1min)" or equivalent added in prior to the "toScalars()" operator to ensure that a sample is present during each operation. You can then build a histogram on the capsule with the "Total Duration" statistic aggregating by first the Batch ID property and then the Operation property as shown below: Note: The option to stack the histogram is available under "customize" in the Details Pane.
  11. Hi Stephanie, Currently, you cannot use Scorecard Metrics as a threshold, but you could create the same calculated metric using Signal from Condition and use that result as the threshold for the other metric. Once you have the signal created, you can use the following button to toggle from a value input to a signal input for the threshold:
  12. Hi Julian, The first formula ($signal.toCondition()) will create a capsule the length of each time frame between step changes. From there, you can use Signal from Condition to calculate the "Total Duration" statistic for each of the capsules created (use the result of the formula for both the condition of interest and bounding condition).
  13. Hi Julian, This Formula should do the trick: $signal.toCondition() Note, if you want just the time point where the change occurs, you could add another argument to shorten the time duration of each capsule: $signal.toCondition().afterstart(1s)
  14. This can now be done a lot simpler by just doing the following command: spy.search('<URL>') or as an example: spy.search('https://explore.seeq.com/workbook/741F06AE-62D6-4729-A4C3-8C9CC701A2A1/worksheet/DFAC6933-A68F-4EEB-8C57-C34956F3F238')
  15. For those Formula-savvy users, a one Formula approach to this would be as follows where you would define your percentage of the capsule in the first line: $percent = 10%.tosignal().resample(1s) $condition.transform($capsule ->{ $movetime = $capsule.duration()*$percent.toScalars($capsule).first() capsule($capsule.startKey(),$capsule.startKey()+$movetime)})
  16. Hi John, The capsule shows in progress because when the next month starts, it will jump to the next month, meaning that the capsule will continuously be moving. I think what you want is to use the following formula which will create a 1 year long capsule starting each month. periods(1y, 1mo)
  17. Hi Mattheus, You can do this by using the move (v49+) or delay (<=v48) function. For example, your equation would be: ($signal.move(5s)+$signal.move(10s)+$signal.move(60s))/3
  18. Hi Sivaji, Sorry for another "you probably need to upgrade" response to your question, but if you look through the Knowledge Base on Scatter Plot (https://support.seeq.com/space/KB/153518135/XY%20Plot), you'll see that a lot of these capabilities have been added. For example, starting in version 46, you can color by fixed date ranges, allowing more coloring options by time as you mention. The workaround on your version I believe would be to make each year its own condition using Custom Condition or something like that (one condition would be only the year of 2019, another condition being 2020 for instance). In this case, when you color by condition, it would be a different color for each condition.
  19. Hi Sivaji, This is not possible in version 45, but is available starting in version 48: https://support.seeq.com/space/KB/736035141/What's+New+in+R22.0.48
  20. Hi Aleksander, The totalize function requires the totalization to be bounded by a capsule because otherwise it has no idea how far back in history to go. For instance, if you want to view the most recent day worth of data, does it have to go back through the entire history of your data signal (maybe 10+ years worth of data) to perform the calculation on? Therefore, the condition you give it will "bound" that calculation to a certain period of time so that Seeq knows when to start and stop that calculation. If I'm understanding correctly, I think you would want to "bound" the calculation each day to match the other sensor readout and I also think you would want the integral function instead of totalized so you get the running integral across the day. If so, first create a periodic condition for "daily" and then do: $signal.integral($DailyCondition) This will integrate the signal, resetting the integration each day. If you would like it to go longer, then change your condition as appropriate.
  21. You can only set the priority color based on conditions so you would need to create a condition off the signal. For example, you may do a Value Search to find when a capsule longer than a certain time length is found. In this case, you will first need to perform the totalized or summation using Signal from Condition and then you can do a Value Search on that signal.
  22. Hi Sivaji, You could do this in a couple different ways by turning the duration of the condition into a signal. One method would be to use Signal from Condition to calculate the duration of each capsule in the condition and then performing a sum on that signal for the Treemap statistic: Since you have to place the duration at a timestamp of each capsule, it means that if the "end" timestamp were selected as in the above example, the whole capsule would be counted even though half of the capsule may be off the edge of the time selected in the display. If this is an issue, I would recommend following the second approach. The second approach is to create a time counter signal using a Formula such as: 1.tosignal().within($condition) You can then totalize that signal to get the total number of seconds: If you want the value in a unit other than seconds, you can modify the example to use "sum" and a slightly different Formula that adds the units in. For example, in minutes:
  23. You should have an option at the bottom that allows you to select files from the local machine to attach to the forum that looks like this:
  24. Hi poeu, Here's one method for doing what you want: $max = $signal.aggregate(maxValue(),$condition,maxKey()).todiscrete() $start = $signal.aggregate(startValue(),$condition,maxKey()).todiscrete() $time = timesince($condition, 1min) ($max-$start)/$time In this formula, I'm first calculating the maximum value within the condition and storing that at the timestamp where the maximum was found. I then take the start value an also put that at the max key. Finally, I use timesince to get the calculated time (you can change the units depending on how long your capsule is) at that max timestamp. Note that your condition will need to have a maximum duration so you may need to add a $condition.removelongerthan(40h) or equivalent prior to the above formulas if your condition does not already have a max duration.
  25. Hi Isaac, While it's technically the same steps, you could do this all in one Formula with: $signal > 0 and $signal.derivative() == 0 Note that in versions below 49, you will replace "and" with "&&" in the above formula.
×
×
  • Create New...