exner 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.autotest +23 -0
- data/.gemtest +0 -0
- data/History.txt +4 -0
- data/Manifest.txt +42 -0
- data/README.txt +49 -0
- data/Rakefile +19 -0
- data/bin/rorschach +4 -0
- data/bin/zulliger +4 -0
- data/data/.~lock.sumario_Zulliger.rtf# +1 -0
- data/data/Rorschach_Zest.txt +50 -0
- data/data/Zulliger_Zest.txt +50 -0
- data/data/sumario.rtf +240 -0
- data/data/sumario2.rtf +271 -0
- data/data/sumario_Rorschach.rtf +233 -0
- data/data/sumario_Zulliger.rtf +203 -0
- data/data/test_manchas.txt +16 -0
- data/data/zulli_test.txt +11 -0
- data/lib/exner/respuesta.rb +110 -0
- data/lib/exner/rorschach.rb +11 -0
- data/lib/exner/rorschach_plugins/cdi.rb +22 -0
- data/lib/exner/rorschach_plugins/depi.rb +38 -0
- data/lib/exner/rorschach_plugins/hvi.rb +25 -0
- data/lib/exner/rorschach_plugins/interpretacion.rb +438 -0
- data/lib/exner/rorschach_plugins/obs.rb +36 -0
- data/lib/exner/rorschach_plugins/scon.rb +44 -0
- data/lib/exner/rorschach_plugins/sczi.rb +25 -0
- data/lib/exner/rtf/rorschach.rb +69 -0
- data/lib/exner/rtf/zulliger.rb +59 -0
- data/lib/exner/rtf.rb +46 -0
- data/lib/exner/test_manchas.rb +445 -0
- data/lib/exner/zulliger.rb +26 -0
- data/lib/exner/zulliger_plugins/interpretacion.rb +328 -0
- data/lib/exner.rb +44 -0
- data/test/extras.rb +11 -0
- data/test/helpers_tests.rb +41 -0
- data/test/test_depi.rb +29 -0
- data/test/test_exner.rb +100 -0
- data/test/test_hvi.rb +33 -0
- data/test/test_obs.rb +29 -0
- data/test/test_rorschach.rb +1 -0
- data/test/test_scon.rb +34 -0
- data/test/test_sczi.rb +29 -0
- data/test/text_cdi.rb +28 -0
- data.tar.gz.sig +0 -0
- metadata +193 -0
- metadata.gz.sig +0 -0
data/lib/exner/rtf.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# -encoding: UTF-8
|
2
|
+
module Exner
|
3
|
+
module Rtf
|
4
|
+
def _dcp(c)
|
5
|
+
_ds[c.gsub('C',"C'")]
|
6
|
+
end
|
7
|
+
def _cd(c)
|
8
|
+
c+" = "+_f['contenidos_1'][c].to_s+","+_f['contenidos_2'][c].to_s
|
9
|
+
end
|
10
|
+
def detRtf
|
11
|
+
s=""
|
12
|
+
@respuestas.each {|n,r|
|
13
|
+
s+="\n\\par "+r.determinantes.join('.')+r.fq if r.determinantes.size>1
|
14
|
+
}
|
15
|
+
s
|
16
|
+
end
|
17
|
+
def _ds
|
18
|
+
determinantes_simples
|
19
|
+
end
|
20
|
+
def superscript(a)
|
21
|
+
'{{\*\updnprop5801}\up8 '+a+'}'
|
22
|
+
end
|
23
|
+
def _res_enf
|
24
|
+
a=resumen_del_enfoque.collect {|lam|
|
25
|
+
Exner.a_romano(lam[0])+":"+lam[1].join(',')
|
26
|
+
}.join("\n\\par ")+"\n"
|
27
|
+
end
|
28
|
+
def _lq(tipo)
|
29
|
+
s=''
|
30
|
+
Exner::FQ_VALIDAS.each {|fq|
|
31
|
+
s+=fq+":"+_f[tipo][fq].to_s+"\n\\par "
|
32
|
+
}
|
33
|
+
s
|
34
|
+
end
|
35
|
+
def ldq
|
36
|
+
s=''
|
37
|
+
Exner::DQ_VALIDAS.each {|dq|
|
38
|
+
s+=dq+":"+_f['dq'][dq].to_s+"\n\\par "
|
39
|
+
}
|
40
|
+
s
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
require 'exner/rtf/zulliger'
|
45
|
+
require 'exner/rtf/rorschach'
|
46
|
+
|
@@ -0,0 +1,445 @@
|
|
1
|
+
# -encoding: UTF-8
|
2
|
+
module Exner
|
3
|
+
class TestManchas
|
4
|
+
FRECUENCIAS=%w{localizacion dq contenidos contenidos_1 contenidos_2 determinantes ccee fqx fqf mq sqx wqx dqx wdx pares}
|
5
|
+
attr_reader :respuestas, :laminas, :zf,:zsum, :frecuencias, :complejos, :sencillos, :msumm, :pares, :populares, :extras, :tipos_contenidos
|
6
|
+
ZEST_FILE=''
|
7
|
+
def initialize
|
8
|
+
@zf= @zsum= @pares= @populares=@tipos_contenidos= 0
|
9
|
+
@respuestas=Hash.new
|
10
|
+
@laminas=Hash.new
|
11
|
+
@frecuencias=Hash.new
|
12
|
+
@complejos=Array.new
|
13
|
+
@extras=Array.new
|
14
|
+
FRECUENCIAS.each {|i|
|
15
|
+
@frecuencias[i]=Hash.new
|
16
|
+
}
|
17
|
+
LOC_VALIDAS.each {|i|
|
18
|
+
@frecuencias['localizacion'][i]=0;
|
19
|
+
}
|
20
|
+
DQ_VALIDAS.each {|i|
|
21
|
+
@frecuencias['dq'][i]=0;
|
22
|
+
}
|
23
|
+
DET_VALIDOS.each {|i|
|
24
|
+
@frecuencias['determinantes'][i]=0;
|
25
|
+
}
|
26
|
+
CONT_VALIDOS.each {|i|
|
27
|
+
@frecuencias['contenidos'][i]=0;
|
28
|
+
@frecuencias['contenidos_1'][i]=0;
|
29
|
+
@frecuencias['contenidos_2'][i]=0;
|
30
|
+
}
|
31
|
+
CCEE_VALIDOS.each {|i|
|
32
|
+
@frecuencias['ccee'][i]=0;
|
33
|
+
}
|
34
|
+
FQ_VALIDAS.each {|i|
|
35
|
+
@frecuencias['fqx'][i]=0;
|
36
|
+
@frecuencias['fqf'][i]=0;
|
37
|
+
@frecuencias['mq'][i]=0;
|
38
|
+
@frecuencias['sqx'][i]=0;
|
39
|
+
@frecuencias['wqx'][i]=0;
|
40
|
+
@frecuencias['dqx'][i]=0;
|
41
|
+
@frecuencias['wdx'][i]=0;
|
42
|
+
}
|
43
|
+
|
44
|
+
end
|
45
|
+
def _d
|
46
|
+
@frecuencias['determinantes']
|
47
|
+
end
|
48
|
+
def _c
|
49
|
+
@frecuencias['contenidos']
|
50
|
+
end
|
51
|
+
def _ccee
|
52
|
+
@frecuencias['ccee']
|
53
|
+
end
|
54
|
+
def _f
|
55
|
+
@frecuencias
|
56
|
+
end
|
57
|
+
def _l
|
58
|
+
localizaciones
|
59
|
+
end
|
60
|
+
|
61
|
+
def zest
|
62
|
+
aEst=Exner::open_zest(self.ZEST_FILE)
|
63
|
+
aEst[@zf]
|
64
|
+
end
|
65
|
+
def open_stream(stream)
|
66
|
+
stream.each_line {|linea|
|
67
|
+
resp=Exner::Respuesta.new(self,linea)
|
68
|
+
lam=resp.lamina
|
69
|
+
@laminas[lam]=Array.new if @laminas[lam].nil?
|
70
|
+
raise "no pueden existir dos respuestas con el mismo número" if @respuestas.has_key?(resp.respuesta)
|
71
|
+
@respuestas[resp.respuesta]=resp
|
72
|
+
@laminas[lam].push(resp)
|
73
|
+
}
|
74
|
+
end
|
75
|
+
def open_file(file)
|
76
|
+
raise "No se definió archivo" if file.nil?
|
77
|
+
File.open(file,'r') {|file|
|
78
|
+
open_stream(file)
|
79
|
+
}
|
80
|
+
end
|
81
|
+
def each_determinante
|
82
|
+
@respuestas.each {|n,resp| resp.determinantes.each {|det| yield det }}
|
83
|
+
end
|
84
|
+
def obtenerZ(lamina,tipo)
|
85
|
+
return @laminas_z[lamina][tipo]
|
86
|
+
end
|
87
|
+
def procesar
|
88
|
+
@respuestas.each do |n,resp|
|
89
|
+
@zf+=1 if resp.z >0
|
90
|
+
@zsum+=resp.z
|
91
|
+
@pares+=1 if resp.par
|
92
|
+
@populares+=1 if resp.popular
|
93
|
+
raise "No existe localizacion para la respuesta "+n.to_s if resp.localizacion.nil?
|
94
|
+
@frecuencias['localizacion'][resp.localizacion]+=1
|
95
|
+
@frecuencias['dq'][resp.dq]+=1
|
96
|
+
@frecuencias['fqx'][resp.fq]+=1
|
97
|
+
@frecuencias['fqf'][resp.fq]+=1 if resp.determinantes==['F']
|
98
|
+
@frecuencias['mq'][resp.fq]+=1 if resp.tiene_movimiento_humano?
|
99
|
+
@frecuencias['sqx'][resp.fq]+=1 if resp.localizacion=~/S/
|
100
|
+
@frecuencias['wqx'][resp.fq]+=1 if resp.localizacion_pura=='W'
|
101
|
+
@frecuencias['dqx'][resp.fq]+=1 if resp.localizacion_pura=='D'
|
102
|
+
@frecuencias['wdx'][resp.fq]+=1 if resp.localizacion_pura=='W' or resp.localizacion_pura=='D'
|
103
|
+
@complejos.push(resp) if resp.determinantes.size>1
|
104
|
+
resp.determinantes.each {|d|
|
105
|
+
@frecuencias['determinantes'][d]+=1
|
106
|
+
}
|
107
|
+
cp=true
|
108
|
+
resp.contenidos.each {|d|
|
109
|
+
@frecuencias['contenidos'][d]+=1
|
110
|
+
@tipos_contenidos+=1 if @frecuencias['contenidos'][d]==1
|
111
|
+
if cp
|
112
|
+
@frecuencias['contenidos_1'][d]+=1
|
113
|
+
cp=false
|
114
|
+
else
|
115
|
+
@frecuencias['contenidos_2'][d]+=1
|
116
|
+
end
|
117
|
+
|
118
|
+
}
|
119
|
+
resp.ccee.each {|d|
|
120
|
+
@frecuencias['ccee'][d]+=1
|
121
|
+
}
|
122
|
+
end
|
123
|
+
procesar_extras
|
124
|
+
end
|
125
|
+
def procesar_extras
|
126
|
+
Dir[Exner.dir_root+'/exner/'+self.class.to_s.gsub('Exner::','').downcase+'_plugins/*.rb'].each {|file|
|
127
|
+
require file
|
128
|
+
}
|
129
|
+
|
130
|
+
end
|
131
|
+
def localizaciones
|
132
|
+
res=Hash.new
|
133
|
+
locs=%w{W Wv D Dd S}
|
134
|
+
locs.each {|i| res[i]=0}
|
135
|
+
@respuestas.each {|n,resp|
|
136
|
+
res['W']+=1 if resp.localizacion_pura=='W'
|
137
|
+
res['Wv']+=1 if resp.localizacion_pura=='W' and resp.dq=='v'
|
138
|
+
res['D']+=1 if resp.localizacion_pura=='D'
|
139
|
+
res['Dd']+=1 if resp.localizacion_pura=='Dd'
|
140
|
+
res['S']+=1 if resp.localizacion=~/S/
|
141
|
+
}
|
142
|
+
res
|
143
|
+
end
|
144
|
+
def determinantes_simples
|
145
|
+
res=@frecuencias['determinantes'].dup
|
146
|
+
['M','FM','m'].each {|mov|
|
147
|
+
res[mov]=res[mov+'a']+res[mov+'p']
|
148
|
+
res.delete(mov+'a')
|
149
|
+
res.delete(mov+'p')
|
150
|
+
}
|
151
|
+
res['(2)']=@pares
|
152
|
+
res
|
153
|
+
end
|
154
|
+
|
155
|
+
def msum
|
156
|
+
sumdet('M')
|
157
|
+
end
|
158
|
+
# sumatoria de color ponderado
|
159
|
+
def det
|
160
|
+
@frecuencias['determinantes']
|
161
|
+
end
|
162
|
+
def sumcolpond
|
163
|
+
_d['C']*1.5+_d['CF']+_d['FC']*0.5
|
164
|
+
end
|
165
|
+
|
166
|
+
# sumatoria de items de un determinado tipo
|
167
|
+
def sumdet(tipo)
|
168
|
+
suma=0
|
169
|
+
each_determinante {|det|
|
170
|
+
if tipo=='M'
|
171
|
+
suma+=1 if det=='Ma' or det=='Mp'
|
172
|
+
elsif tipo=='FD'
|
173
|
+
suma+=1 if det=='FD'
|
174
|
+
elsif tipo=='C'
|
175
|
+
suma+=1 if det=='C' or det=='FC' or det=='CF'
|
176
|
+
elsif tipo=='Cn'
|
177
|
+
suma+=1 if det=='Cn'
|
178
|
+
elsif tipo=='F'
|
179
|
+
suma+1 if det=='F'
|
180
|
+
else
|
181
|
+
det=det.gsub(/[ap]/,'')
|
182
|
+
suma+=1 if det=~/#{tipo}/
|
183
|
+
end
|
184
|
+
}
|
185
|
+
suma
|
186
|
+
end
|
187
|
+
def resumen_del_enfoque
|
188
|
+
res=Hash.new
|
189
|
+
@laminas.each {|ln,resps|
|
190
|
+
resps.sort.each {|resp|
|
191
|
+
res[ln]=Array.new if res[ln].nil?
|
192
|
+
res[ln].push(resp.localizacion_pura)
|
193
|
+
}
|
194
|
+
}
|
195
|
+
res.sort
|
196
|
+
end
|
197
|
+
# Controles
|
198
|
+
def R
|
199
|
+
@respuestas.size
|
200
|
+
end
|
201
|
+
def L
|
202
|
+
fp=0.0
|
203
|
+
@respuestas.each {|n,resp|
|
204
|
+
fp+=1 if resp.determinantes==['F']
|
205
|
+
}
|
206
|
+
return fp.to_f / (self.R-fp)
|
207
|
+
end
|
208
|
+
def EB
|
209
|
+
sumdet('M').to_s+":"+sumcolpond.to_s
|
210
|
+
end
|
211
|
+
def EA
|
212
|
+
(msum+sumcolpond).to_f
|
213
|
+
end
|
214
|
+
def eb_izq
|
215
|
+
(sumdet('FM')+sumdet('m'))
|
216
|
+
end
|
217
|
+
def eb_der
|
218
|
+
(sumdet('T')+sumdet('V')+sumdet("C'")+ sumdet('Y'))
|
219
|
+
end
|
220
|
+
def eb
|
221
|
+
eb_izq.to_s+":"+eb_der.to_s
|
222
|
+
end
|
223
|
+
def es
|
224
|
+
eb_izq+eb_der
|
225
|
+
end
|
226
|
+
def Adjes
|
227
|
+
madj=(sumdet('m')>0) ? 1:0;
|
228
|
+
yadj=(sumdet('Y')>0) ? 1:0;
|
229
|
+
sumdet('FM')+madj+(sumdet('T')+sumdet('V')+sumdet("C'")+ yadj)
|
230
|
+
end
|
231
|
+
def EBPer
|
232
|
+
if (((msum-sumcolpond).abs<=2 and self.EA<=10) or
|
233
|
+
self.EA>10)
|
234
|
+
if msum>sumcolpond
|
235
|
+
msum/sumcolpond
|
236
|
+
else
|
237
|
+
sumcolpond/msum
|
238
|
+
end
|
239
|
+
else
|
240
|
+
false
|
241
|
+
end
|
242
|
+
end
|
243
|
+
def Dscore(d)
|
244
|
+
return 0 if d>=-2.5 and d<=2.5
|
245
|
+
(((d.abs-3)/2.5)+1).to_i*(d<0 ? -1:+1)
|
246
|
+
end
|
247
|
+
def D
|
248
|
+
Dscore(self.EA-es)
|
249
|
+
end
|
250
|
+
def AdjD
|
251
|
+
Dscore(self.EA-self.Adjes)
|
252
|
+
end
|
253
|
+
#Afectos
|
254
|
+
|
255
|
+
#FC:CF+C
|
256
|
+
def fc_cf_c
|
257
|
+
(det['FC']).to_s+':'+(det['CF']+det['C']).to_s
|
258
|
+
end
|
259
|
+
def sumc_wsumc
|
260
|
+
(sumdet("C'")).to_s+":"+(det['FC']*0.5+det['CF']+det['C']*1.5).to_s
|
261
|
+
end
|
262
|
+
def Afr
|
263
|
+
n=Hash.new
|
264
|
+
@laminas.each {|x,l|
|
265
|
+
n[x]=l.size
|
266
|
+
}
|
267
|
+
(n[8]+n[9]+n[10]).to_f/(n[1]+n[2]+n[3]+n[4]+n[5]+n[6]+n[7]).to_f
|
268
|
+
end
|
269
|
+
def complj_r
|
270
|
+
porcentaje(@complejos.size)
|
271
|
+
end
|
272
|
+
def CP
|
273
|
+
@frecuencias['ccee']['CP']
|
274
|
+
end
|
275
|
+
#interpersonal
|
276
|
+
def COP
|
277
|
+
@frecuencias['ccee']['COP']
|
278
|
+
end
|
279
|
+
def Fd
|
280
|
+
@frecuencias['contenidos']['Fd']
|
281
|
+
end
|
282
|
+
def AG
|
283
|
+
@frecuencias['ccee']['AG']
|
284
|
+
end
|
285
|
+
def aislamiento_r
|
286
|
+
c=@frecuencias['contenidos']
|
287
|
+
(2*c['Na']+2*c['Cl']+c['Bt']+c['Ls']+c['Ge']).to_f/self.R
|
288
|
+
end
|
289
|
+
def h_h_hd_hd
|
290
|
+
_c['H'].to_s+':'+(_c['(H)']+_c['Hd']+_c['(Hd)']).to_s
|
291
|
+
end
|
292
|
+
def p_h_hd_p_a_ad
|
293
|
+
c=@frecuencias['contenidos']
|
294
|
+
(c['(H)']+c['(Hd)']).to_s+':'+(c['(A)']+c['(Ad)']).to_s
|
295
|
+
|
296
|
+
end
|
297
|
+
def h_a_hd_ad
|
298
|
+
c=@frecuencias['contenidos']
|
299
|
+
(c['H']+c['A']).to_s+':'+(c['Hd']+c['Ad']).to_s
|
300
|
+
end
|
301
|
+
def a_porciento
|
302
|
+
c=@frecuencias['contenidos']
|
303
|
+
porcentaje(c['A']+c['Ad'])
|
304
|
+
end
|
305
|
+
def porcentaje(valor)
|
306
|
+
return valor.to_f/self.R
|
307
|
+
end
|
308
|
+
#Ideación
|
309
|
+
def suma_preg(p)
|
310
|
+
suma=0
|
311
|
+
each_determinante {|det| suma+=1 if det=~/#{p}/ }
|
312
|
+
suma
|
313
|
+
end
|
314
|
+
def activos
|
315
|
+
suma_preg('a')
|
316
|
+
end
|
317
|
+
def pasivos
|
318
|
+
suma_preg('p')
|
319
|
+
end
|
320
|
+
def a_p
|
321
|
+
activos.to_s+":"+pasivos.to_s
|
322
|
+
end
|
323
|
+
def Ma_Mp
|
324
|
+
a=p=0
|
325
|
+
each_determinante {|det|
|
326
|
+
if(det=='Ma' or det=='Mp')
|
327
|
+
a+=1 if det=~/a/
|
328
|
+
p+=1 if det=~/p/
|
329
|
+
end
|
330
|
+
}
|
331
|
+
a.to_s+":"+p.to_s
|
332
|
+
end
|
333
|
+
def intelectualizacion
|
334
|
+
c=@frecuencias['contenidos']
|
335
|
+
2*@frecuencias['ccee']['AB']+(c['Art']+c['Ay'])
|
336
|
+
end
|
337
|
+
def m_menos
|
338
|
+
@frecuencias['mq']['-']
|
339
|
+
end
|
340
|
+
def SumBr6
|
341
|
+
suma=0
|
342
|
+
@respuestas.each {|n,resp|
|
343
|
+
resp.ccee.each {|ccee|
|
344
|
+
suma+=1 if CCEE_IDEACION.has_key?(ccee)
|
345
|
+
}
|
346
|
+
}
|
347
|
+
suma
|
348
|
+
end
|
349
|
+
def SumPon6
|
350
|
+
suma=0
|
351
|
+
@respuestas.each {|n,resp|
|
352
|
+
resp.ccee.each {|ccee|
|
353
|
+
suma+=CCEE_IDEACION[ccee] if CCEE_IDEACION.has_key?(ccee)
|
354
|
+
}
|
355
|
+
}
|
356
|
+
suma
|
357
|
+
end
|
358
|
+
def nvl2
|
359
|
+
suma=0
|
360
|
+
@respuestas.each {|n,resp|
|
361
|
+
resp.ccee.each {|ccee|
|
362
|
+
suma+=1 if CCEE_IDEACION.has_key?(ccee) and ccee=~/2/
|
363
|
+
}
|
364
|
+
}
|
365
|
+
suma
|
366
|
+
end
|
367
|
+
def msin
|
368
|
+
suma=0
|
369
|
+
@respuestas.each {|n,resp|
|
370
|
+
suma+=1 if resp.fq=='sin' and resp.determinantes.detect {|a| a=='Ma' or a=='Mp'}
|
371
|
+
}
|
372
|
+
suma
|
373
|
+
end
|
374
|
+
# mediacion
|
375
|
+
def P
|
376
|
+
@populares
|
377
|
+
end
|
378
|
+
def xmas
|
379
|
+
(@frecuencias['fqx']['o']+@frecuencias['fqx']['+']).to_f/self.R
|
380
|
+
end
|
381
|
+
def fmas
|
382
|
+
(@frecuencias['fqf']['o']+@frecuencias['fqf']['+']).to_f/ determinantes_simples['F']
|
383
|
+
end
|
384
|
+
def xmenos
|
385
|
+
@frecuencias['fqx']['-'].to_f/self.R
|
386
|
+
end
|
387
|
+
def smenos
|
388
|
+
@frecuencias['sqx']['-'].to_f/@frecuencias['fqx']['-']
|
389
|
+
|
390
|
+
end
|
391
|
+
def xu
|
392
|
+
@frecuencias['fqx']['u'].to_f/self.R
|
393
|
+
end
|
394
|
+
def xa
|
395
|
+
(@frecuencias['fqx']['o']+@frecuencias['fqx']['+']+ @frecuencias['fqx']['u']).to_f/self.R
|
396
|
+
end
|
397
|
+
def wda
|
398
|
+
wdx=@frecuencias['wdx']
|
399
|
+
loc=localizaciones
|
400
|
+
(wdx['+']+wdx['o']+wdx['u']).to_f/(loc['W']+loc['D'])
|
401
|
+
end
|
402
|
+
#Procesamiento
|
403
|
+
def Zf
|
404
|
+
@zf
|
405
|
+
end
|
406
|
+
def Zd
|
407
|
+
@zsum-zest
|
408
|
+
end
|
409
|
+
def w_d_dd
|
410
|
+
l=localizaciones
|
411
|
+
sprintf("%d:%d:%d",l['W'],l['D'],l['Dd'])
|
412
|
+
end
|
413
|
+
def w_m
|
414
|
+
l=localizaciones
|
415
|
+
sprintf("%d:%d",l['W'],determinantes_simples['M'])
|
416
|
+
end
|
417
|
+
def dqmas
|
418
|
+
@frecuencias['dq']['+']
|
419
|
+
end
|
420
|
+
def dqv
|
421
|
+
@frecuencias['dq']['v']
|
422
|
+
end
|
423
|
+
# autopercepcion
|
424
|
+
def autocentracion
|
425
|
+
(3*sumdet('r')+@pares).to_f/self.R
|
426
|
+
end
|
427
|
+
def fr_rf
|
428
|
+
sumdet('r')
|
429
|
+
end
|
430
|
+
def FD
|
431
|
+
@frecuencias['determinantes']['FD']
|
432
|
+
end
|
433
|
+
def an_xy
|
434
|
+
@frecuencias['contenidos']['An']+@frecuencias['contenidos']['Xy']
|
435
|
+
end
|
436
|
+
def mor
|
437
|
+
@frecuencias['ccee']['MOR']
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
441
|
+
|
442
|
+
end
|
443
|
+
|
444
|
+
require 'exner/rorschach'
|
445
|
+
require 'exner/zulliger'
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -encoding: UTF-8
|
2
|
+
module Exner
|
3
|
+
class Zulliger < TestManchas
|
4
|
+
def initialize
|
5
|
+
@laminas_z={
|
6
|
+
1=>{'a'=>1.0,'b'=>4.0,'c'=>6.0,'d'=>3.5},
|
7
|
+
2=>{'a'=>5.5,'b'=>3.0,'c'=>3.0,'d'=>4.0},
|
8
|
+
3=>{'a'=>5.5,'b'=>3.0,'c'=>4.0,'d'=>4.5}
|
9
|
+
}
|
10
|
+
super
|
11
|
+
end
|
12
|
+
def ZEST_FILE
|
13
|
+
Exner.dir_data+'/Zulliger_Zest.txt'
|
14
|
+
end
|
15
|
+
def N
|
16
|
+
3
|
17
|
+
end
|
18
|
+
def Afr
|
19
|
+
n=Hash.new
|
20
|
+
@laminas.each {|x,l|
|
21
|
+
n[x]=l.size
|
22
|
+
}
|
23
|
+
n[2].to_f/(n[1]+n[3]).to_f
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|