🎉Community Raffle - Win $25

An exclusive raffle opportunity for active members like you! Complete your profile, answer questions and get your first accepted badge to enter the raffle.
Join and Win

"Using Select with Loop Operator"

User: "jeganathanvelu"
New Altair Community Member
Updated by Jocelyn
Hi,

I have used loop operator and the result set is ioo object collections [ one for each month in the data]. I want to select the last output data set and process further.
In the select operator i have to specify an index number to represent which object in the collection i have to pick.

can i some how identify how many objects are created by the loop operator and provide that as input to the Select operator index ??

Thanks Jegan

Find more posts tagged with

Sort by:
1 - 3 of 31
    User: "homburg"
    New Altair Community Member
    Hi Jegan,

    you may use a macro for your loop operator. In the parameters tab you can enable "set iteration macro" and define a name for it. By default the macro value is incresed by one with every loop iteration. For the index in the select operator you specify %{macroname} and receive the highest index. Of course you may also specify the same value for the number of iterations in the loop and for the index. This can also be a macro, just have a look at "Set Macro" operator.

    Cheers,
    Helge
    User: "bkriever"
    New Altair Community Member
    Here is an example process similar to what Helge described that may help if you are not familiar with the macros in loops and extracting macros:
    In this case I aggregated on the label value to get the distinct number of values.  In your case you could replace this with month.

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <process version="6.0.008">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="6.0.008" expanded="true" name="Process">
        <process expanded="true">
          <operator activated="true" class="generate_data" compatibility="6.0.008" expanded="true" height="60" name="Generate Data" width="90" x="45" y="30">
            <parameter key="target_function" value="multi classification"/>
            <parameter key="number_of_attributes" value="2"/>
            <parameter key="attributes_lower_bound" value="0.0"/>
          </operator>
          <operator activated="true" class="aggregate" compatibility="6.0.008" expanded="true" height="76" name="Aggregate" width="90" x="179" y="30">
            <list key="aggregation_attributes"/>
            <parameter key="group_by_attributes" value="label"/>
          </operator>
          <operator activated="true" class="extract_macro" compatibility="6.0.008" expanded="true" height="60" name="Extract Macro" width="90" x="313" y="30">
            <parameter key="macro" value="NumExamples"/>
            <list key="additional_macros"/>
          </operator>
          <operator activated="true" class="loop" compatibility="6.0.008" expanded="true" height="76" name="Loop" width="90" x="179" y="120">
            <parameter key="set_iteration_macro" value="true"/>
            <parameter key="iterations" value="%{NumExamples}"/>
            <process expanded="true">
              <operator activated="true" class="generate_attributes" compatibility="6.0.008" expanded="true" height="76" name="Generate Attributes" width="90" x="246" y="30">
                <list key="function_descriptions">
                  <parameter key="DummyAttribute_%{iteration}" value="%{iteration}"/>
                </list>
              </operator>
              <connect from_port="input 1" to_op="Generate Attributes" to_port="example set input"/>
              <connect from_op="Generate Attributes" from_port="example set output" to_port="output 1"/>
              <portSpacing port="source_input 1" spacing="0"/>
              <portSpacing port="source_input 2" spacing="0"/>
              <portSpacing port="sink_output 1" spacing="0"/>
              <portSpacing port="sink_output 2" spacing="0"/>
            </process>
          </operator>
          <operator activated="true" class="select" compatibility="6.0.008" expanded="true" height="60" name="Select" width="90" x="313" y="120">
            <parameter key="index" value="%{NumExamples}"/>
          </operator>
          <connect from_op="Generate Data" from_port="output" to_op="Aggregate" to_port="example set input"/>
          <connect from_op="Aggregate" from_port="example set output" to_op="Extract Macro" to_port="example set"/>
          <connect from_op="Aggregate" from_port="original" to_op="Loop" to_port="input 1"/>
          <connect from_op="Loop" from_port="output 1" to_op="Select" to_port="collection"/>
          <connect from_op="Select" from_port="selected" to_port="result 1"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="0"/>
          <portSpacing port="sink_result 2" spacing="0"/>
        </process>
      </operator>
    </process>


    User: "jeganathanvelu"
    New Altair Community Member
    OP
    Thanks for your help: the above solution solved my issue :)