Jump to content

Ben Johnson

Seeq Team
  • Posts

    30
  • Joined

  • Last visited

  • Days Won

    13

Ben Johnson last won the day on August 16

Ben Johnson had the most liked content!

Recent Profile Visitors

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

Ben Johnson's Achievements

  1. The "splice" is going to add unnecessary overhead. The synonym for intersection is "or", so something like ($p21h ~= "-1") OR ($p22h ~= "-1") OR ($p3hs ~= "-1") OR ($p51h ~= "-1") OR ($p52h ~= "-1") OR ($p6hs ~= "-1") OR ($p7hs ~= "-1") OR ($p8hs ~= "-1") is your most most performant answer. The signal representing the count of overlaps also has a more concise solution: countOverlaps(1h, $p21h ~= "-1", $p22h ~= "-1", $p3hs ~= "-1", $p51h ~= "-1", $p52h ~= "-1", $p6hs ~= "-1", $p7hs ~= "-1", $p8hs ~= "-1") With the "1h" saying you want a signal with a sample at least every hour to keep the interpolation flowing efficiently. That signal lets you find the condition when a minimum quantity of the conditions are met, eg $countedConditions > 3
  2. We don't currently support it, but we've noted the desires for the 2D use cases. Without committing to a specific release or date, I'll say it is on our near term roadmap 🙂
  3. The formula above needs some tweaks for new version of Seeq to be compatible with upgrades to Seeq Formula For 0.48: $condition.transformToSamples($cap -> Sample($cap.getStart(),$cap.getStart().toString()), 1d) .replace('/(?<year>....)-(?<month>..)-(?<day>..)T(?<hour>..):(?<minute>..):(?<sec>..)(?<dec>.*)Z/' , '${month}/${day}/${year} ${hour}:${minute}') For 0.49 $condition.toSamples($cap -> Sample($cap.startKey(), $cap.startKey().toString()), 1d) .replace('/(?<year>....)-(?<month>..)-(?<day>..)T(?<hour>..):(?<minute>..):(?<sec>..)(?<dec>.*)Z/' , '${month}/${day}/${year} ${hour}:${minute}') All that said, even back in 0.47, the more succinct way to express this is $condition.toSignal('Start').toLinear(1d).toString() .replace('/(?<year>....)-(?<month>..)-(?<day>..)T(?<hour>..):(?<minute>..):(?<sec>..)(?<dec>.*)Z/' , '${month}/${day}/${year} ${hour}:${minute}')
  4. I'm not able to reproduce that behavior in 0.45. The algorithm for suggesting formula variable names has had some refinements since its it was introduced in 0.43. Thanks for the feedback!
  5. You've found a bug! It's a two-fold issue The histogram is localizing the "day of week" labels using your browser's settings (The rest of the app is in English, but I infer your browser is set to prefer German) That localization code is treating the "start of the week" differently. Much of the world starts their week on Monday, others start it on Sunday, so there's an off-by-one error in looking up the proper label. I've filed CRAB-14766 so that we can track this. You've identified a creative workaround that sidesteps the bug. If your analysis can be done in English (US), changing your browser settings would also resolve it. Thanks for the question!
  6. To @dkuecker's question, I believe my example will work for all time without requiring any specific dates to be chosen. The shortcoming is everything after the signal ends is going to be considered "uncertain" (the zero values will show as a dotted line). The system is simply waiting for more data to arrive, and not making any assumptions that if data hasn't arrived since 2016, there's probably not any more coming.
  7. Here's another approach to replacing empty regions of the $choppySignal with 0 . The quick answer: $invalidCondition = days().minus($choppySignal.toCapsules()) $choppySignal.splice(0.toSignal(), $invalidCondition) How does that work? The goal is get to the last line using splice, replacing the gaps with 0. The trick is defining $invalidCondition. The straightforward way to create it is with the inverse of the valid regions of the signal: $invalidCondition = inverse( $a.validityCapsules(1wk), 2wk) But that suffers from performance problems because you need to choose the maxDuration for both when $choppySignal is good and when it's not (1wk and 2wk in this case). We don't really care about creating 1 capsule per gap because splice works just fine during adjacent capsules. So we can get rid of the inverse() by using minus(). We start with days() to make capsules that are always adjacent. Then we use minus() operator to remove the portion of those days where data is present. $invalidCondition = days().minus($choppySignal.validityCapsules(1wk)) But we still have the maxDuration of the validity capsules. Again, we don't care about getting a single capsule of validity; minus can handle adjacent capsules. The toCapsules() will create a condition with lots of short adjacent capsules. So now we have a performant condition of when the data doesn't exist. $invalidCondition = days().minus($a.toCapsules()) You can see where the adjacent days() comes into play when you change the display style of the resulting signal to show the samples. You can clearly see the daily sample during the zero portions
×
×
  • Create New...