Zu Hauptinhalten wechseln

FV Decipher Unterstützung

Alle Themen, Ressourcen für FV Decipher benötigt.

 
decipher

Streamline Conditions with Vector Logic

1:  Overview

Vector logic is an additional and more abbreviated way to write Python condition logic. Consider the following examples:

Normal (Non-Vector) Logic

 

<number label="Q1" size="3" verify="range(1, 120)" title="Please enter your age." />
<suspend/>

<radio label="vQ1" where="execute" title="AGE GROUP (HIDDEN)">
  <exec>
if Q1.ival lt 18:
    vQ1.val = vQ1.r1.index
elif 18 le Q1.ival le 24:
    vQ1.val = vQ1.r2.index
elif 25 le Q1.ival le 34:
    vQ1.val = vQ1.r3.index
elif 35 le Q1.ival le 44:
    vQ1.val = vQ1.r4.index
elif 45 le Q1.ival le 54:
    vQ1.val = vQ1.r5.index
elif 55 le Q1.ival le 64:
    vQ1.val = vQ1.r6.index
else:
    vQ1.val = vQ1.r7.index
  </exec>
  <row label="r1">1-17</row>
  <row label="r2">18-24</row>
  <row label="r3">25-34</row>
  <row label="r4">35-44</row>
  <row label="r5">45-54</row>
  <row label="r6">55-64</row>
  <row label="r7">>= 65</row>
</radio>

 

Vector Logic

 

<number label="Q1" size="3" verify="range(1, 120)" title="Please enter your age."/>
<suspend/>


<stylevar name="x:xtra" type="string"/>

<radio label="vQ1" where="execute" title="AGE GROUP (HIDDEN)">
  <exec>
for eachRow in vQ1.rows:
    age_range = eachRow.o.alt # never set value using .o
    if Q1.check(age_range):
        vQ1.val = eachRow.index
        break
  </exec>
  <row label="r1" alt="1-17">1-17</row>
  <row label="r2" alt="18-24">18-24</row>
  <row label="r3" alt="25-34">25-34</row>
  <row label="r4" alt="35-44">35-44</row>
  <row label="r5" alt="45-54">45-54</row>
  <row label="r6" alt="55-64">55-64</row>
  <row label="r7" alt=">= 65">>= 65</row>
</radio>

 

Using vector logic, we can significantly reduce the amount of code we need to write to perform the same logical operations.

Vector logic does not consider nor account for rows/cols that were hidden from the respondent (e.g. disabled or failed to meet a condition). This also includes data manually populated through an <exec> block.

2:  Vector Functions

A brief description of each vector function is listed in the table below. Click on each function to learn more about it.

 

Vector Function Short Description Examples
any Was anything selected? Q1.any
Q1.r1.any
Q1.c1.any
Q1.r1.but(Q1.r1.c1).any
but Excludes selection from vector. Q1.but(Q1.r1).any
Q1.r1.but(Q1.r1.c1, Q1.r1.c3).any
Q1.c1.but(Q1.c1.r2).count
Q1.but(Q1.r1, Q1.r2).sum
all Was everything selected? Q1.r1.all
Q1.c1.all
Q1.r1.c1.all
Q1.c1.all or Q1.c2.all or ...
(e.g. straight lined)
count How many selected? Q1.r1.count
Q1.c1.count
Q1.r1.c1.count
Q1.but(Q1.c1, Q1.c2).count
sum Sum of every cell. Q1.sum
Q1.r1.sum
Q1.c1.sum
Q1.but(Q1.c1, Q1.c2).sum
check Numerical checks. Q1.r1.check("1-10")
Q1.r1.c1.check("2,4,6,8,10-20,>50")
Q1.c1.check(">=1, &lt;11")
Q1.check("!= 2")
values Tuple of raw values. Q1.values
Q1.r1.values
Q1.c1.values
Q1.but(Q1.r1).values

2.1:  any

The any function will return True if any value was provided or selected.

Example Vector Logic Result
vector_any_ex1(1).png Q1.any
Q1.r1.any
Q1.r2.any
Q1.c1.any
Q1.c2.any
Q1.but(Q1.r2, Q1.r3).any
True
False
True
False
True
False
vector_any_ex2.png Q1.any
Q1.r1.any
Q1.r2.any
Q1.c1.any
Q1.c2.any
Q1.but(Q1.r2, Q1.r3).any
True
False
True
False
True
False

2.2:  but

The but function is a way to exclude specific elements from your vector logic.

Example Vector Logic Result
vector_any_ex1(1).png Q1.but(Q1.r1).any
Q1.but(Q1.r3).sum
Q1.but(Q1.c3).sum
Q1.c3.but(Q1.c3.r3).sum
Q1.but(Q1.r3.c3).count
True
1
0
1
3
vector_any_ex2.png Q1.but(Q1.r1).any
Q1.but(Q1.r3).count
Q1.but(Q1.c3).count
Q1.c3.but(Q1.c3.r3).count
Q1.r3.but(Q1.r3.c1).all
True
2
2
1
True

2.3:  all

The all function is a way check of all items were populated.

Example Vector Logic Result
vector_any_ex1(1).png Q1.all
Q1.r1.all
Q1.but(Q1.r1, Q1.c1).all
Q1.c3.but(Q1.c3.r1).all
Q1.r3.but(Q1.r3.c1).all
False
False
True
True
True
vector_any_ex2.png Q1.all
Q1.r1.all
Q1.but(Q1.r1, Q1.c1).all
Q1.c3.but(Q1.c3.r1).all
Q1.r3.but(Q1.r3.c1).all
False
False
True
True
True

2.4:  count

The count function returns the number of inputs populated.

Example Vector Logic Result
vector_any_ex1(1).png Q1.count
Q1.r1.count
Q1.r2.count
Q1.c2.count
Q1.but(Q1.c2).count
Q1.but(Q1.r1, Q1.c1).count
4
0
2
2
2
4
vector_any_ex2.png Q1.count
Q1.r1.count
Q1.r2.count
Q1.c2.count
Q1.but(Q1.c2).count
Q1.but(Q1.r1, Q1.c1).count
4
0
2
2
2
4

2.5:  sum

The sum function returns the sum of the inputs populated.

Example Vector Logic Result
vector_any_ex1(1).png Q1.sum
Q1.r1.sum
Q1.r2.sum
Q1.c2.sum
Q1.but(Q1.c2).sum
Q1.but(Q1.r1, Q1.c1).sum
3
0
1
0
3
3
vector_any_ex2.png Q1.sum
Q1.r1.sum
Q1.r2.sum
Q1.c2.sum
Q1.but(Q1.c2).sum
Q1.but(Q1.r1, Q1.c1).sum
4
0
2
2
2
4

2.6:  check

The check function checks the numerical values provided for number questions.

A value of None (e.g. left empty) will be considered a value of 0.

 

Example Vector Logic Result
vector_any_ex1(1).png Q1.r1.c1.check("0-100")
Q1.r1.c1.check("1-100")
Q1.r2.c2.check("0, 1, 2")
Q1.r2.c2.check("> -1")
Q1.c3.r3.check("1,3,>5")
Q1.c3.r3.check("!= 2")
Q1.c3.r3.check("&lt;= 2")
True
False
True
True
False
False
True

2.7:  values

The values function returns a tuple of the values provided.

Example Vector Logic Result
vector_any_ex1(1).png Q1.r1.values
Q1.r2.values
Q1.c2.values
Q1.but(Q1.c2).values
Q1.but(Q1.r1, Q1.c1).values
(None, None, None)
(None, 0L, 1L)
(None, 0L, 0L)
(None, None, None, None, 1L, 2L)
(0L, 0L, 1L, 2L)
vector_any_ex2.png Q1.r1.values
Q1.r2.values
Q1.c2.values
Q1.but(Q1.c2).values
Q1.but(Q1.r1, Q1.c1).values
(None, None, None)
(None, True, True)
(None, True, True)
(None, None, None, None, True, True)
(True, True, True, True)

  • War dieser Artikel hilfreich?