Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
1717782c
Commit
1717782c
authored
Apr 04, 2013
by
Piotr Mitros
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1776 from MITx/feature/ichuang/psychometrics-fix
fix psychometrics to be compatible with new xblocks
parents
56d5f13b
febcb511
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
15 deletions
+22
-15
common/lib/xmodule/xmodule/capa_module.py
+1
-1
lms/djangoapps/psychometrics/psychoanalyze.py
+21
-14
No files found.
common/lib/xmodule/xmodule/capa_module.py
View file @
1717782c
...
...
@@ -783,7 +783,7 @@ class CapaModule(CapaFields, XModule):
self
.
system
.
track_function
(
'save_problem_check'
,
event_info
)
if
hasattr
(
self
.
system
,
'psychometrics_handler'
):
# update PsychometricsData using callback
self
.
system
.
psychometrics_handler
(
self
.
get_
instance_state
())
self
.
system
.
psychometrics_handler
(
self
.
get_
state_for_lcp
())
# render problem into HTML
html
=
self
.
get_problem_html
(
encapsulate
=
False
)
...
...
lms/djangoapps/psychometrics/psychoanalyze.py
View file @
1717782c
...
...
@@ -246,13 +246,16 @@ def generate_plots_for_problem(problem):
yset
[
'ydat'
]
=
ydat
if
len
(
ydat
)
>
3
:
# try to fit to logistic function if enough data points
cfp
=
curve_fit
(
func_2pl
,
xdat
,
ydat
,
[
1.0
,
max_attempts
/
2.0
])
yset
[
'fitparam'
]
=
cfp
yset
[
'fitpts'
]
=
func_2pl
(
np
.
array
(
xdat
),
*
cfp
[
0
])
yset
[
'fiterr'
]
=
[
yd
-
yf
for
(
yd
,
yf
)
in
zip
(
ydat
,
yset
[
'fitpts'
])]
fitx
=
np
.
linspace
(
xdat
[
0
],
xdat
[
-
1
],
100
)
yset
[
'fitx'
]
=
fitx
yset
[
'fity'
]
=
func_2pl
(
np
.
array
(
fitx
),
*
cfp
[
0
])
try
:
cfp
=
curve_fit
(
func_2pl
,
xdat
,
ydat
,
[
1.0
,
max_attempts
/
2.0
])
yset
[
'fitparam'
]
=
cfp
yset
[
'fitpts'
]
=
func_2pl
(
np
.
array
(
xdat
),
*
cfp
[
0
])
yset
[
'fiterr'
]
=
[
yd
-
yf
for
(
yd
,
yf
)
in
zip
(
ydat
,
yset
[
'fitpts'
])]
fitx
=
np
.
linspace
(
xdat
[
0
],
xdat
[
-
1
],
100
)
yset
[
'fitx'
]
=
fitx
yset
[
'fity'
]
=
func_2pl
(
np
.
array
(
fitx
),
*
cfp
[
0
])
except
Exception
as
err
:
log
.
debug
(
'Error in psychoanalyze curve fitting:
%
s'
%
err
)
dataset
[
'grade_
%
d'
%
grade
]
=
yset
...
...
@@ -302,12 +305,12 @@ def make_psychometrics_data_update_handler(course_id, user, module_state_key):
Construct and return a procedure which may be called to update
the PsychometricsData instance for the given StudentModule instance.
"""
sm
=
studentm
odule
.
objects
.
get_or_create
(
course_id
=
course_id
,
student
=
user
,
module_state_key
=
module_state_key
,
defaults
=
{
'state'
:
'{}'
,
'module_type'
:
'problem'
},
)
sm
,
status
=
StudentM
odule
.
objects
.
get_or_create
(
course_id
=
course_id
,
student
=
user
,
module_state_key
=
module_state_key
,
defaults
=
{
'state'
:
'{}'
,
'module_type'
:
'problem'
},
)
try
:
pmd
=
PsychometricData
.
objects
.
using
(
db
)
.
get
(
studentmodule
=
sm
)
...
...
@@ -329,7 +332,11 @@ def make_psychometrics_data_update_handler(course_id, user, module_state_key):
return
pmd
.
done
=
done
pmd
.
attempts
=
state
[
'attempts'
]
try
:
pmd
.
attempts
=
state
.
get
(
'attempts'
,
0
)
except
:
log
.
exception
(
"no attempts for
%
s (state=
%
s)"
%
(
sm
,
sm
.
state
))
try
:
checktimes
=
eval
(
pmd
.
checktimes
)
# update log of attempt timestamps
except
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment