Jump to content

Teddy

Administrators
  • Posts

    95
  • Joined

  • Last visited

  • Days Won

    24

Posts posted by Teddy

  1. It looks like Graphviz can only be installed through an OS apt package which is not supported in Seeq Data Lab. I am guessing what is on PyPI is just a python wrapper.

    You can try installing Graphviz on your local machine where you have access to make OS-level changes. Since you have a data lab license the SPy library will work for you on your local machine after you run the SPy.login command. You can run SPy from any python interpreter you would like if you are running it locally. 

    There are a few things the local version can’t do that the data lab server can but for the most part, you won’t notice a difference.

  2. Since the reported vulnerability in log4j we have responded to several customer tickets and emails inquiring about the presence of log4j in Seeq. No recent version of Seeq (back to and including R50) either includes or uses log4j, therefore the issue does not apply to Seeq customers using recent versions of the software (your version of Seeq can be found in the lower left corner of the Seeq user interface).

  3. If the above doesn't get you what you are looking for can you attach a screenshot with a drawing of your goal?  I didn't fully understand what you were doing with the sum() aggregate at the end so the periods formula I supplied might not help with that part. 

  4. The rows in your table are ordered by your details pane by default. You should be able to order the details pane however you want by assigning lane numbers. Changing the lane numbers of your metrics and ordering your details pane by the lane numbers should allow you to achieve your desired row order.

    tempsnip.png

    Hope this helps,
    Teddy

  5. Recently we have gotten several requests to clear an item's cache in Seeq with Seeq Data Lab (SDL).  

    The following python script creates a function that will clear an items cache when an item's ID is given as an input. Note: this script assumes you are using SDL.

    # imports
    from seeq import sdk
    
    # Setup Items API
    items_api = sdk.ItemsApi(spy._login.client)
    
    # Cache clearing function
    def ItemCacheClearingTool(itemID):
        try:
            clearCache = items_api.clear_cache(id=itemID)
        except:
            print('Error clearing cache for item ' + itemID)

    Screenshot of the Jupyter Notebook used to create the function:

    Capture.PNG

     

    This function can be used in for loops or applied to columns in a dataframe to clear multiple items' caches at a time.  

  6. Isaac,

    In your case you might be able to set the max interpolation to 1 second on your input signal. If that does not work, you can use a certain signal, such as Area A Temperature to create, a similar result to the past() operator.  To create a similar condition to the past() condition you can use the following formula.

    $AreaATemp.isvalid()

    Once you have that you can use it the same way the past() function was used above.

    Teddy

    • Like 1
  7. There are a couple options you can take for this.  The first is to completely exclude the incomplete day and the second is to exclude the data in the signal until the day is complete. 

     

    Exclude the Incomplete Day

    This is relatively easy with the past() function in formula. This function is relatively new so older versions of Seeq may not have it.  On your condition that you are aggregating over you can remove all capsules past now and any incomplete ones with the following formula.  (Example using daily condition)

    $Daily.inside(past())

    Capture1.PNG

    Metric created with a normal daily condition:

    Capture2.PNG

    Metric created with the clipped daily condition:

    Capture3.PNG

     

    Exclude the Data in the Signal Until the Day is Complete

    This requires you to make the same clipped condition above and then apply it directly to the signal to limit the data in the signal until the last complete day.

    $signal.within($ClippedCondition)

    Capture4.PNG

    Results with the Clipped Signal and the Normal Signal:

    Capture5.PNG

    • Like 1
  8. Ben,

    You can probably use a moving standard deviation to find that condition.

    Below is an example formula. Note: you can use signal from condition too, but you may want to create a condition with the periods function so you can have better control over the moving range:

    $signal.aggregate(stdDev(), periods(20min,5min), middleKey())

    Hope this helps.

    Teddy

  9. Brent,

    I would avoid using tables and transforms for this calculation.  I would look towards the peakFrequency() and the rmspower() functions.  They are used with the aggregate function, so they are applied to a condition. 

    To find the peak frequency the following syntax can be used in the formula tool.
     

    $condition = periods(1h, 30min)
    
    $sampleRate = (1min)   //This is the spacing for used in the sampling for the FFT
    
    $waveSignal.aggregate( fft($sampleRate).peakFrequency('min'),$condition,startKey())

    Here is a screen shot of the formula tool window.

    Capture1.PNG

    For the magnitude I suggest looking at the rmsPower() function in formula.  If you know the band range where you expect the peak to occur, you can use that band range and be done.  However, if there is multiple places that the peak could occur you can use multiple rmsPower() functions and add them together or take the maximum of them.  If you are planning on taking the maximum you will want to make sure that you are using the same size band for each rmsPower() calculation so that the comparisons are equivalent.

    The example syntax below can be used to fine the maximum rms power of a set of peaks.

    $condition = periods(1h, 30min)
    
    $sampleRate = (1min)
    
    $peak1=$waveSignal.aggregate( fft($sampleRate).rmsPower(4.5min,5.5min),$condition,startKey()).toStep()
    $peak2=$waveSignal.aggregate( fft($sampleRate).rmsPower(9.5min,10.5min),$condition,startKey()).toStep()
    $peak3=$waveSignal.aggregate( fft($sampleRate).rmsPower(24.5min,25.5min),$condition,startKey()).toStep()
    
    // you will need to pick ranges and a sample rate that makes sense for your process
    
    $peak1.max($peak2).max($peak3).toStep()

    Below is a screen shot of the formula setup.

    Capture2.PNG

    Note: if you want to add the peaks instead of finding the max.  You would just add the peaks instead of using the max function.

     

    Final screenshot.

    Capture3.PNG

    Hope this helps.

    Teddy

×
×
  • Create New...