Hello Mathieu, 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!
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. 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... 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!? Anyway, let's try to play according to the rules - and change them only with very serious reasons! Thanks and regards, Cornelis 2016-11-15 23:18 GMT+01:00 Mathieu Westphal <[email protected]>: > Hello > > Sorry i missed the part when you said that a standard filter showed this > behavior. > 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. > > However, this part > | 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... > > 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. > > Regards, > > Mathieu Westphal > > On Tue, Nov 15, 2016 at 10:19 PM, Cornelis Bockemühl < > [email protected]> wrote: > >> Dear Mathieu, >> >> 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. >> >> For this reason I am now providing also simply the XML for that filter >> which is from the following file in the paraview sources: >> >> ParaViewCore/ServerManager/SMApplication/Resources/filter.xml >> >> """"""""""""""""""""""""""""" >> <SourceProxy class="vtkPSciVizMultiCorrelativeStats" >> label="Multicorrelative Statistics" >> name="MulticorrelativeStatistics"> >> <Documentation long_help="Compute a statistical model of a dataset >> and/or assess the dataset with a statistical model." >> short_help="Compute a statistical model of a dataset >> and/or assess the dataset with a statistical model."> >> This filter either computes a statistical model of a dataset or >> takes >> such a model as its second input. Then, the model (however it is >> obtained) may optionally be used to assess the input >> dataset.<p> >> This filter computes the covariance matrix for all the arrays you >> select >> plus the mean of each array. The model is thus a multivariate >> Gaussian >> distribution with the mean vector and variances provided. Data is >> assessed using this model by computing the Mahalanobis distance for >> each >> input point. This distance will always be positive.<p> The >> learned >> model output format is rather dense and can be confusing, so it is >> discussed here. The first filter output is a multiblock dataset >> consisting of 2 tables: <ol> <li> Raw covariance data. >> <li> Covariance matrix and its Cholesky decomposition. >> </ol> >> The raw covariance table has 3 meaningful columns: 2 titled >> "Column1" and >> "Column2" whose entries generally refer to the N arrays you >> selected when >> preparing the filter and 1 column titled "Entries" that contains >> numeric >> values. The first row will always contain the number of >> observations in >> the statistical analysis. The next N rows contain the mean for each >> of >> the N arrays you selected. The remaining rows contain covariances of >> pairs of arrays.<p> The second table (covariance matrix and >> Cholesky decomposition) contains information derived from the raw >> covariance data of the first table. The first N rows of the first >> column >> contain the name of one array you selected for analysis. These rows >> are >> followed by a single entry labeled "Cholesky" for a total of N+1 >> rows. >> The second column, Mean contains the mean of each variable in the >> first N >> entries and the number of observations processed in the final (N+1) >> row.<p> The remaining columns (there are N, one for each >> array) >> contain 2 matrices in triangular format. The upper right triangle >> contains the covariance matrix (which is symmetric, so its lower >> triangle >> may be inferred). The lower left triangle contains the Cholesky >> decomposition of the covariance matrix (which is triangular, so its >> upper >> triangle is zero). Because the diagonal must be stored for both >> matrices, >> an additional row is required — hence the N+1 >> rows and >> the final entry of the column named "Column".</Documentation> >> <InputProperty command="SetInputConnection" >> name="Input" >> port_index="0"> >> <ProxyGroupDomain name="groups"> >> <Group name="sources" /> >> <Group name="filters" /> >> </ProxyGroupDomain> >> <DataTypeDomain name="input_type"> >> <DataType value="vtkImageData" /> >> <DataType value="vtkStructuredGrid" /> >> <DataType value="vtkPolyData" /> >> <DataType value="vtkUnstructuredGrid" /> >> <DataType value="vtkTable" /> >> <DataType value="vtkGraph" /> >> </DataTypeDomain> >> <InputArrayDomain name="input_array" /> >> <Documentation>The input to the filter. Arrays from this dataset >> will >> be used for computing statistics and/or assessed by a statistical >> model.</Documentation> >> </InputProperty> >> <InputProperty command="SetInputConnection" >> name="ModelInput" >> null_on_empty="1" >> port_index="1"> >> <Hints> >> <Optional /> >> <!-- No input selection dialog at instantiation --> >> </Hints> >> <ProxyGroupDomain name="groups"> >> <Group name="sources" /> >> <Group name="filters" /> >> </ProxyGroupDomain> >> <DataTypeDomain name="input_type"> >> <DataType value="vtkTable" /> >> <DataType value="vtkMultiBlockDataSet" /> >> </DataTypeDomain> >> <Documentation>A previously-calculated model with which to assess >> a >> separate dataset. This input is optional.</Documentation> >> </InputProperty> >> <IntVectorProperty command="SetAttributeMode" >> default_values="0" >> name="AttributeMode" >> number_of_elements="1"> >> <FieldDataDomain enable_field_data="1" >> name="enum"> >> <RequiredProperties> >> <Property function="Input" >> name="Input" /> >> </RequiredProperties> >> </FieldDataDomain> >> <Documentation>Specify which type of field data the arrays will be >> drawn from.</Documentation> >> </IntVectorProperty> >> <StringVectorProperty clean_command="ClearAttributeArrays" >> command="EnableAttributeArray" >> label="Variables of Interest" >> name="SelectArrays" >> number_of_elements_per_command="1" >> repeat_command="1"> >> <ArrayListDomain name="array_list"> >> <RequiredProperties> >> <Property function="Input" >> name="Input" /> >> <Property function="FieldDataSelection" >> name="AttributeMode" /> >> </RequiredProperties> >> </ArrayListDomain> >> <Documentation>Choose arrays whose entries will be used to form >> observations for statistical analysis.</Documentation> >> </StringVectorProperty> >> <IntVectorProperty animateable="0" >> command="SetTask" >> default_values="3" >> name="Task" >> number_of_elements="1"> >> <EnumerationDomain name="task_list"> >> <Entry text="Detailed model of input data" >> value="0" /> >> <Entry text="Model a subset of the data" >> value="1" /> >> <Entry text="Assess the data with a model" >> value="2" /> >> <Entry text="Model and assess the same data" >> value="3" /> >> </EnumerationDomain> >> <Documentation>Specify the task to be performed: modeling and/or >> assessment. <ol> <li> "Detailed model of input data," >> creates a set of output tables containing a calculated statistical >> model of the <b>entire</b> input dataset;</li> >> <li> "Model a subset of the data," creates an output table >> (or >> tables) summarizing a <b>randomly-chosen subset</b> >> of the >> input dataset;</li> <li> "Assess the data with a >> model," >> adds attributes to the first input dataset using a model provided >> on >> the second input port; and</li> <li> "Model and >> assess the >> same data," is really just operations 2 and 3 above applied to >> the same >> input dataset. The model is first trained using a fraction of the >> input >> data and then the entire dataset is assessed using that >> model.</li> </ol> When the task includes creating a >> model >> (i.e., tasks 2, and 4), you may adjust the fraction of the input >> dataset used for training. You should avoid using a large >> fraction of >> the input data for training as you will then not be able to detect >> overfitting. The <i>Training fraction</i> setting >> will be >> ignored for tasks 1 and 3.</Documentation> >> </IntVectorProperty> >> <DoubleVectorProperty animateable="1" >> command="SetTrainingFraction" >> default_values="0.1" >> name="TrainingFraction" >> number_of_elements="1"> >> <DoubleRangeDomain max="1" >> min="0" >> name="training_range" /> >> <Documentation>Specify the fraction of values from the input >> dataset to >> be used for model fitting. The exact set of values is chosen at >> random >> from the dataset.</Documentation> >> </DoubleVectorProperty> >> <OutputPort index="0" >> name="Statistical Model" /> >> <OutputPort index="1" >> name="Assessed Data" /> >> <Hints> >> <Visibility replace_input="1" /> >> <!-- View can be used to specify the preferred view for the proxy >> --> >> <View type="SpreadSheetView" /> >> </Hints> >> </SourceProxy> >> <!-- MulticorrelativeStatistics --> >> <!-- ==================================================================== >> --> >> """"""""""""""""""""""""""""" >> >> You find the explanation about the "optional" model input, and also the >> second "InputProperty" tag, with the name "ModelInput", and the "Hint" >> "optional". >> >> 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"! >> >> 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. >> >> But this is >> >> a) probably not how it SHOULD work, and >> 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... >> >> 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... ;-) >> >> Regards, >> Cornelis >> >> >> 2016-11-15 21:12 GMT+01:00 Mathieu Westphal <[email protected] >> >: >> >>> Hello >>> >>> Can you provide your xml file ? >>> >>> Regards, >>> >>> Mathieu Westphal >>> >>> On Tue, Nov 15, 2016 at 9:07 PM, Cornelis Bockemühl < >>> [email protected]> wrote: >>> >>>> Looks like I may have to provide an example that everybody can follow!? >>>> >>>> The "Multicorrelative Statistics" filter is already such an example! >>>> >>>> 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: >>>> >>>> - Directly selecting it (next to the primary input) has the effect that >>>> the filter is greyed out in Paraview - no chance! >>>> >>>> - 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. >>>> >>>> - 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... >>>> >>>> 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!? >>>> >>>> I am simply lost here! >>>> >>>> Regards, >>>> Cornelis >>>> >>>> >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 >>>> >>>> >>>> -- >>>> Cornelis Bockemühl >>>> Basel, Schweiz >>>> >>>> _______________________________________________ >>>> Powered by www.kitware.com >>>> >>>> Visit other Kitware open-source projects at >>>> http://www.kitware.com/opensource/opensource.html >>>> >>>> Please keep messages on-topic and check the ParaView Wiki at: >>>> http://paraview.org/Wiki/ParaView >>>> >>>> Search the list archives at: http://markmail.org/search/?q=ParaView >>>> >>>> Follow this link to subscribe/unsubscribe: >>>> http://public.kitware.com/mailman/listinfo/paraview >>>> >>>> >>> >> >> >> -- >> Cornelis Bockemühl >> Basel, Schweiz >> > > -- Cornelis Bockemühl Basel, Schweiz
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Search the list archives at: http://markmail.org/search/?q=ParaView Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/paraview
