<div dir="ltr">Hello Mathieu,<div><br></div><div>Right: also for me "something" is changing - just after adding the second input: I will have to check whether it is indeed the right thing!<br></div><div><br></div><div>So maybe this is indeed the way how it should operate - and I have to see that it does it the same way also for my own filter.</div><div><br></div><div>I was fixed on the expectation that I would have to at least press "Apply" again - or even be able to define the second input already before doing a first "Apply" - but maybe this is not what the Paraview designers had in mind...</div><div><br></div><div>However, just reasoning: In a simple case (like also mine) it may not be a big deal to do the calculation twice, but if it is more "serious", this extra "Apply" (once without then once more with the second input) looks a bit weird to me!?</div><div><br></div><div>Anyway, let's try to play according to the rules - and change them only with very serious reasons!</div><div><br></div><div>Thanks and regards,</div><div>Cornelis</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-11-15 23:18 GMT+01:00 Mathieu Westphal <span dir="ltr"><<a href="mailto:mathieu.westphal@kitware.com" target="_blank">mathieu.westphal@kitware.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Hello<br><br></div><div>Sorry i missed the part when you said that a standard filter showed this behavior.<br></div>Indeed, the behavior you are seeing is normal, considering the input management greyed out. One could argue the that it should be authorized to change input before applying but it is not supported.<br><br></div><div>However, this part<span class=""><br><div class="gmail_extra"></div><div class="gmail_extra">| Now 
the "Change Input" would be avaliable in the context menu, but 
specifying any additional input NOW has no effect: the calculation is 
not redone any more...<br><br></div></span><div class="gmail_extra">Looks like a bug in your filter. I know nothing about statistics, but a tried specifying the optional model input this way with multicorelative, and it seems to change trigger a recomputation of the filter with different results.<br></div><br></div><div>Regards, <br><br></div><div><div><div><div class="gmail_extra"><div><div class="m_-4574813724063895918gmail_signature"><div dir="ltr">Mathieu Westphal<br></div></div></div><div><div class="h5">
<br><div class="gmail_quote">On Tue, Nov 15, 2016 at 10:19 PM, Cornelis Bockemühl <span dir="ltr"><<a href="mailto:cornelis.bockemuehl@gmail.com" target="_blank">cornelis.bockemuehl@gmail.com</a><wbr>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Dear Mathieu,<div><br></div><div>As I said I do not think it is a problem in my XML or C++ code, but a "simple user question"! Which is why I explained that it also happens with the "standard filter" from the standard package: Multicorrelative Statistics.</div><div><br></div><div>For this reason I am now providing also simply the XML for that filter which is from the following file in the paraview sources:</div><div><br></div><div>ParaViewCore/ServerManager/SMA<wbr>pplication/Resources/filter.<wbr>xml</div><div><br></div><div><div>"""""""""""""""""""""""""""""<br></div></div><div>    <SourceProxy class="vtkPSciVizMultiCorrelat<wbr>iveStats"<br></div><div>                 label="Multicorrelative Statistics"</div><div>                 name="MulticorrelativeStatist<wbr>ics"></div><div>      <Documentation long_help="Compute a statistical model of a dataset and/or assess the dataset with a statistical model."</div><div>                     short_help="Compute a statistical model of a dataset and/or assess the dataset with a statistical model."></div><div>      This filter either computes a statistical model of a dataset or takes</div><div>      such a model as its second input. Then, the model (however it is</div><div>      obtained) may optionally be used to assess the input dataset.&lt;p&gt;</div><div>      This filter computes the covariance matrix for all the arrays you select</div><div>      plus the mean of each array. The model is thus a multivariate Gaussian</div><div>      distribution with the mean vector and variances provided. Data is</div><div>      assessed using this model by computing the Mahalanobis distance for each</div><div>      input point. This distance will always be positive.&lt;p&gt; The learned</div><div>      model output format is rather dense and can be confusing, so it is</div><div>      discussed here. The first filter output is a multiblock dataset</div><div>      consisting of 2 tables: &lt;ol&gt; &lt;li&gt; Raw covariance data.</div><div>      &lt;li&gt; Covariance matrix and its Cholesky decomposition. &lt;/ol&gt;</div><div>      The raw covariance table has 3 meaningful columns: 2 titled "Column1" and</div><div>      "Column2" whose entries generally refer to the N arrays you selected when</div><div>      preparing the filter and 1 column titled "Entries" that contains numeric</div><div>      values. The first row will always contain the number of observations in</div><div>      the statistical analysis. The next N rows contain the mean for each of</div><div>      the N arrays you selected. The remaining rows contain covariances of</div><div>      pairs of arrays.&lt;p&gt; The second table (covariance matrix and</div><div>      Cholesky decomposition) contains information derived from the raw</div><div>      covariance data of the first table. The first N rows of the first column</div><div>      contain the name of one array you selected for analysis. These rows are</div><div>      followed by a single entry labeled "Cholesky" for a total of N+1 rows.</div><div>      The second column, Mean contains the mean of each variable in the first N</div><div>      entries and the number of observations processed in the final (N+1)</div><div>      row.&lt;p&gt; The remaining columns (there are N, one for each array)</div><div>      contain 2 matrices in triangular format. The upper right triangle</div><div>      contains the covariance matrix (which is symmetric, so its lower triangle</div><div>      may be inferred). The lower left triangle contains the Cholesky</div><div>      decomposition of the covariance matrix (which is triangular, so its upper</div><div>      triangle is zero). Because the diagonal must be stored for both matrices,</div><div>      an additional row is required &#226;&#8364;&#8221; hence the N+1 rows and</div><div>      the final entry of the column named "Column".</Documentation></div><div>      <InputProperty command="SetInputConnection"</div><div>                     name="Input"</div><div>                     port_index="0"></div><div>        <ProxyGroupDomain name="groups"></div><div>          <Group name="sources" /></div><div>          <Group name="filters" /></div><div>        </ProxyGroupDomain></div><div>        <DataTypeDomain name="input_type"></div><div>          <DataType value="vtkImageData" /></div><div>          <DataType value="vtkStructuredGrid" /></div><div>          <DataType value="vtkPolyData" /></div><div>          <DataType value="vtkUnstructuredGrid" /></div><div>          <DataType value="vtkTable" /></div><div>          <DataType value="vtkGraph" /></div><div>        </DataTypeDomain></div><div>        <InputArrayDomain name="input_array" /></div><div>        <Documentation>The input to the filter. Arrays from this dataset will</div><div>        be used for computing statistics and/or assessed by a statistical</div><div>        model.</Documentation></div><div>      </InputProperty></div><div>      <InputProperty command="SetInputConnection"</div><div>                     name="ModelInput"</div><div>                     null_on_empty="1"</div><div>                     port_index="1"></div><div>        <Hints></div><div>          <Optional /></div><div>          <!-- No input selection dialog at instantiation --></div><div>        </Hints></div><div>        <ProxyGroupDomain name="groups"></div><div>          <Group name="sources" /></div><div>          <Group name="filters" /></div><div>        </ProxyGroupDomain></div><div>        <DataTypeDomain name="input_type"></div><div>          <DataType value="vtkTable" /></div><div>          <DataType value="vtkMultiBlockDataSet" /></div><div>        </DataTypeDomain></div><div>        <Documentation>A previously-calculated model with which to assess a</div><div>        separate dataset. This input is optional.</Documentation></div><div>      </InputProperty></div><div>      <IntVectorProperty command="SetAttributeMode"</div><div>                         default_values="0"</div><div>                         name="AttributeMode"</div><div>                         number_of_elements="1"></div><div>        <FieldDataDomain enable_field_data="1"</div><div>                         name="enum"></div><div>          <RequiredProperties></div><div>            <Property function="Input"</div><div>                      name="Input" /></div><div>          </RequiredProperties></div><div>        </FieldDataDomain></div><div>        <Documentation>Specify which type of field data the arrays will be</div><div>        drawn from.</Documentation></div><div>      </IntVectorProperty></div><div>      <StringVectorProperty clean_command="ClearAttributeA<wbr>rrays"</div><div>                            command="EnableAttributeArray"</div><div>                            label="Variables of Interest"</div><div>                            name="SelectArrays"</div><div>                            number_of_elements_per_command<wbr>="1"</div><div>                            repeat_command="1"></div><div>        <ArrayListDomain name="array_list"></div><div>          <RequiredProperties></div><div>            <Property function="Input"</div><div>                      name="Input" /></div><div>            <Property function="FieldDataSelection"</div><div>                      name="AttributeMode" /></div><div>          </RequiredProperties></div><div>        </ArrayListDomain></div><div>        <Documentation>Choose arrays whose entries will be used to form</div><div>        observations for statistical analysis.</Documentation></div><div>      </StringVectorProperty></div><div>      <IntVectorProperty animateable="0"</div><div>                         command="SetTask"</div><div>                         default_values="3"</div><div>                         name="Task"</div><div>                         number_of_elements="1"></div><div>        <EnumerationDomain name="task_list"></div><div>          <Entry text="Detailed model of input data"</div><div>                 value="0" /></div><div>          <Entry text="Model a subset of the data"</div><div>                 value="1" /></div><div>          <Entry text="Assess the data with a model"</div><div>                 value="2" /></div><div>          <Entry text="Model and assess the same data"</div><div>                 value="3" /></div><div>        </EnumerationDomain></div><div>        <Documentation>Specify the task to be performed: modeling and/or</div><div>        assessment. &lt;ol&gt; &lt;li&gt; "Detailed model of input data,"</div><div>        creates a set of output tables containing a calculated statistical</div><div>        model of the &lt;b&gt;entire&lt;/b&gt; input dataset;&lt;/li&gt;</div><div>        &lt;li&gt; "Model a subset of the data," creates an output table (or</div><div>        tables) summarizing a &lt;b&gt;randomly-chosen subset&lt;/b&gt; of the</div><div>        input dataset;&lt;/li&gt; &lt;li&gt; "Assess the data with a model,"</div><div>        adds attributes to the first input dataset using a model provided on</div><div>        the second input port; and&lt;/li&gt; &lt;li&gt; "Model and assess the</div><div>        same data," is really just operations 2 and 3 above applied to the same</div><div>        input dataset. The model is first trained using a fraction of the input</div><div>        data and then the entire dataset is assessed using that</div><div>        model.&lt;/li&gt; &lt;/ol&gt; When the task includes creating a model</div><div>        (i.e., tasks 2, and 4), you may adjust the fraction of the input</div><div>        dataset used for training. You should avoid using a large fraction of</div><div>        the input data for training as you will then not be able to detect</div><div>        overfitting. The &lt;i&gt;Training fraction&lt;/i&gt; setting will be</div><div>        ignored for tasks 1 and 3.</Documentation></div><div>      </IntVectorProperty></div><div>      <DoubleVectorProperty animateable="1"</div><div>                            command="SetTrainingFraction"</div><div>                            default_values="0.1"</div><div>                            name="TrainingFraction"</div><div>                            number_of_elements="1"></div><div>        <DoubleRangeDomain max="1"</div><div>                           min="0"</div><div>                           name="training_range" /></div><div>        <Documentation>Specify the fraction of values from the input dataset to</div><div>        be used for model fitting. The exact set of values is chosen at random</div><div>        from the dataset.</Documentation></div><div>      </DoubleVectorProperty></div><div>      <OutputPort index="0"</div><div>                  name="Statistical Model" /></div><div>      <OutputPort index="1"</div><div>                  name="Assessed Data" /></div><div>      <Hints></div><div>        <Visibility replace_input="1" /></div><div>        <!-- View can be used to specify the preferred view for the proxy --></div><div>        <View type="SpreadSheetView" /></div><div>      </Hints></div><div>    </SourceProxy></div><div>    <!-- MulticorrelativeStatistics --></div><div>    <!-- ==============================<wbr>==============================<wbr>======== --></div><div>"""""""""""""""""""""""""""""<br></div><div><br></div><div>You find the explanation about the "optional" model input, and also the second "InputProperty" tag, with the name "ModelInput", and the "Hint" "optional".</div><div><br></div><div>My problem is that if I am running ParaView just normally and try to provide a first and second input to that filter, I do not find a way to provide the second one that is "optional"!</div><div><br></div><div>With my own filter I found now some stupid workaround: just drop the "optional" in the "Hints": then it is not any more optional, but a window pops up that asks for the inputs. In this case I can of course specify the second input - or leave it: It is then a question of the RequestData function in the C++ to handle this case properly: a second input with a null pointer.</div><div><br></div><div>But this is</div><div><br></div><div>a) probably not how it SHOULD work, and</div><div>b) not an option for the standard filters (such as Multicorrelative Statistics) - if I do not want to change all the paraview sources (xml) and recompile...</div><div><br></div><div>Sorry to bother this list at all because I am afraid that the solution is in some very simple and "almost obvious" little thing that I have overlooked in the paraview GUI... ;-)</div><div><br></div><div>Regards,</div><div>Cornelis</div><div><br></div></div><div class="m_-4574813724063895918gmail-HOEnZb"><div class="m_-4574813724063895918gmail-h5"><div class="gmail_extra"><br><div class="gmail_quote">2016-11-15 21:12 GMT+01:00 Mathieu Westphal <span dir="ltr"><<a href="mailto:mathieu.westphal@kitware.com" target="_blank">mathieu.westphal@kitware.com</a>></span><wbr>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>Hello<br><br></div>Can you provide your xml file ?<br><br></div>Regards,<br></div><div class="gmail_extra"><br clear="all"><div><div class="m_-4574813724063895918gmail-m_3881606220465105433m_8180007737796009826gmail_signature"><div dir="ltr">Mathieu Westphal<br></div></div></div>
<br><div class="gmail_quote"><div><div class="m_-4574813724063895918gmail-m_3881606220465105433h5">On Tue, Nov 15, 2016 at 9:07 PM, Cornelis Bockemühl <span dir="ltr"><<a href="mailto:cornelis.bockemuehl@gmail.com" target="_blank">cornelis.bockemuehl@gmail.com</a><wbr>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="m_-4574813724063895918gmail-m_3881606220465105433h5"><div dir="ltr"><div class="gmail_extra">Looks like I may have to provide an example that everybody can follow!?</div><div class="gmail_extra"><br></div><div class="gmail_extra">The "Multicorrelative Statistics" filter is already such an example!</div><div class="gmail_extra"><br></div><div class="gmail_extra">Reading the docs and looking into the server XML it is obvious that you can optionally provide a model as a second input port. However, I cannot find any way how to specify this second input:</div><div class="gmail_extra"><br></div><div class="gmail_extra">- Directly selecting it (next to the primary input) has the effect that the filter is greyed out in Paraview - no chance!</div><div class="gmail_extra"><br></div><div class="gmail_extra">- Selecting only the primary data input allows to choose the "Multicorrelative Statistics" filter just fine. I would expect that before pressing "Apply" I should still specify the second input (the model thus), but no chance: In the context menu, the "Change Input" option is greyed out - and I cannot find any other way to enter any second input data.</div><div class="gmail_extra"><br></div><div class="gmail_extra">- Pressing "Apply" does apply the filter, but without the optional model data. Now the "Change Input" would be avaliable in the context menu, but specifying any additional input NOW has no effect: the calculation is not redone any more...</div><div class="gmail_extra"><br></div><div class="gmail_extra">Bottom line: My first example was from a self-written filter, so there is still the possibility that I have done something wrong. But with the standard filter that comes with every Paraview installation I would expect that there MUST be some way to provide that second input data item!?</div><div class="gmail_extra"><br></div><div class="gmail_extra">I am simply lost here!</div><div class="gmail_extra"><br></div><div class="gmail_extra">Regards,</div><div class="gmail_extra">Cornelis<div><div class="m_-4574813724063895918gmail-m_3881606220465105433m_8180007737796009826h5"><br><div class="gmail_quote"><pre style="white-space:pre-wrap;color:rgb(0,0,0)">>Dear Parview users,
>
>This question seems trivial - but I do not find any solution on my own!
>
>I have a filter with one mandatory and two optional input ports, and this
>is how I proceed with it:
>
>- Select some data object, then call that filter. It does not open the
>input port item selection dialog because the one mandatory input is already
>satisfied.
>
>- I want to add one of the optional inputs (or both) - but the "change
>input" option is greyed! Strange - because for me this would be the logical
>moment to specify additional input, i.e.: BEFORE pressing the Apply
>button...
>
>- Ok, I press the Apply button thus. Of course the output is not what I
>want because the optional inputs were missing...
>
>- However, now I can choose also the "change input" option - and I do so. I
>select the two optional inputs. But now nothing happens any more - and now
>the Apply button is grey, so no way to trigger an update of the output!
>
>To me this does not look very logical, so I assume that I am missing some
>point...
>
>The other "intuitive option" would be to select all the desired input
>items, and only then open the filter. However this is impossible from the
>beginning because now the filter is already greyed in the menu as being
>"not applicable"!
>
>Thanks for any helpful hints!
>
>Regards,
>Cornelis Bockemühl</pre></div><div><br></div></div></div><span class="m_-4574813724063895918gmail-m_3881606220465105433m_8180007737796009826HOEnZb"><font color="#888888">-- <br><div class="m_-4574813724063895918gmail-m_3881606220465105433m_8180007737796009826m_3923691280562266870gmail_signature">Cornelis Bockemühl<br>Basel, Schweiz<br></div>
</font></span></div></div>
<br></div></div>______________________________<wbr>_________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensou<wbr>rce/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView" rel="noreferrer" target="_blank">http://paraview.org/Wiki/ParaV<wbr>iew</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=ParaView" rel="noreferrer" target="_blank">http://markmail.org/search/?q=<wbr>ParaView</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/paraview" rel="noreferrer" target="_blank">http://public.kitware.com/mail<wbr>man/listinfo/paraview</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="m_-4574813724063895918gmail-m_3881606220465105433gmail_signature">Cornelis Bockemühl<br>Basel, Schweiz<br></div>
</div>
</div></div></blockquote></div><br></div></div></div></div></div></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Cornelis Bockemühl<br>Basel, Schweiz<br></div>
</div>