--- loncom/interface/statistics/lonproblemanalysis.pm 2005/02/28 23:07:32 1.116
+++ loncom/interface/statistics/lonproblemanalysis.pm 2005/03/15 00:51:43 1.119
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemanalysis.pm,v 1.116 2005/02/28 23:07:32 matthew Exp $
+# $Id: lonproblemanalysis.pm,v 1.119 2005/03/15 00:51:43 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -132,6 +132,7 @@ sub BuildProblemAnalysisPage {
my $resource = $current_problem->{'resource'};
$r->print('
'.$resource->compTitle.'
');
$r->print(''.$resource->src.'
');
+ $r->print(''.&Apache::lonstatistics::section_and_enrollment_description().'
');
if ($ENV{'form.show_prob'} eq 'true') {
$r->print(&Apache::lonstathelpers::render_resource($resource));
}
@@ -186,7 +187,7 @@ sub numerical_response_analysis {
$problem->{'respid'});
# Gather student data
my $response_data = &Apache::loncoursedata::get_response_data
- (\@Apache::lonstatistics::SelectedSections,
+ ([&Apache::lonstatistics::get_selected_sections()],
$Apache::lonstatistics::enrollment_status,
$resource->symb,$respid);
#
@@ -481,8 +482,12 @@ sub numerical_classify_responses {
if ($stats{'max_abs'} < $abs_high) {
$stats{'max_abs'} = $abs_high;
}
- my $low_percent = 100 * abs($abs_low / $subm{'correct'});
- my $high_percent = 100 * abs($abs_high / $subm{'correct'});
+ my $low_percent;
+ my $high_percent;
+ if (defined($subm{'correct'}) && $subm{'correct'} != 0) {
+ $low_percent = 100 * abs($abs_low / $subm{'correct'});
+ $high_percent = 100 * abs($abs_high / $subm{'correct'});
+ }
if (! defined($stats{'min_percent'}) ||
$stats{'min_percent'} > $low_percent) {
$stats{'min_percent'} = $low_percent;
@@ -530,6 +535,8 @@ sub numerical_classify_responses {
}
}
}
+ $stats{'correct_count'} |= 0;
+ $stats{'incorrect_count'} |= 0;
$stats{'students'}=scalar(keys(%students));
return (\%submission_data,\%stats);
}
@@ -765,7 +772,7 @@ sub radio_response_analysis {
$analysis_html .= $table;
# Gather student data
my $response_data = &Apache::loncoursedata::get_response_data
- (\@Apache::lonstatistics::SelectedSections,
+ ([&Apache::lonstatistics::get_selected_sections()],
$Apache::lonstatistics::enrollment_status,
$resource->symb,$respid);
my $correct; # either a hash reference or a scalar
@@ -881,16 +888,14 @@ sub radio_response_analysis {
$choice_plot ne '' ||
$stacked_plot ne '') {
my $correct = $foil_choice_data->{'_correct'};
- if (! defined($correct) || $correct eq '') {
- $correct = 0;
- }
- my $incorrect =
+ $correct |= 0;
+ my $incorrect = $foil_choice_data->{'_count'}-$correct;
$analysis_html.= ''.
''.
&mt($pre_graph_text,
$plot_num,$foil_choice_data->{'_count'},
$correct,
- $foil_choice_data->{'_count'}-$correct,
+ $incorrect,
$foil_choice_data->{'_students'},
@extra_data).
' |
'.$/;
@@ -1170,10 +1175,9 @@ sub OptionResponseAnalysis {
my ($r,$problem,$problem_data,$Students) = @_;
my ($resource,$respid) = ($problem->{'resource'},
$problem->{'respid'});
- &Apache::lonnet::logthis('option response analysis on '.$resource->symb);
# Note: part data is not needed.
my $PerformanceData = &Apache::loncoursedata::get_response_data
- (\@Apache::lonstatistics::SelectedSections,
+ ([&Apache::lonstatistics::get_selected_sections()],
$Apache::lonstatistics::enrollment_status,
$resource->symb,$respid);
if (! defined($PerformanceData) ||
@@ -1216,7 +1220,6 @@ sub OR_tries_analysis {
if (! defined($Concepts)) {
$Concepts = [];
}
- &Apache::lonnet::logthis('got '.scalar(@$PerformanceData).' data points');
my %response_data = &OR_analyze_by_tries($r,$PerformanceData,
$mintries,$maxtries);
my $analysis = '';
@@ -1273,7 +1276,6 @@ sub OR_tries_analysis {
if (defined($Concepts)) { $num_concepts = scalar(@$Concepts); }
#
for (my $try=$mintries;$try<=$maxtries;$try++) {
- &Apache::lonnet::logthis('try = '.$try);
if (! defined($response_data{'_total'}->[$try]) ||
$response_data{'_total'}->[$try] == 0) {
if ($try > 1) {
@@ -1307,18 +1309,16 @@ sub OR_tries_analysis {
('Correct Concepts','Concept Number','Percent Correct',
100,$plotcolors,undef,\@concept_plot_data,{xskip=>1});
}
- &Apache::lonnet::logthis('got here a_0');
#
# Create Foil Plots
my $data_count = $response_data{'_total'}->[$try];
my $correct = $response_data{'_correct'}->[$try];
+ $correct |= 0;
my @Datasets;
foreach my $option ('_correct',@{$ORdata->{'_Options'}}) {
- &Apache::lonnet::logthis('checking option '.$option);
next if (! exists($foil_plot[$try]->{$option}));
push(@Datasets,$foil_plot[$try]->{$option});
}
- &Apache::lonnet::logthis('got here a');
#
# Put a blank in the data set between concepts
for (my $set =0;$set<=$#Datasets;$set++) {
@@ -1335,7 +1335,6 @@ sub OR_tries_analysis {
}
#
# Set up the labels needed for the bar graph
- &Apache::lonnet::logthis('got here b');
my @Labels;
my $idx = 1;
foreach my $concept (@{$Concepts}) {
@@ -1351,9 +1350,7 @@ sub OR_tries_analysis {
#
#
- &Apache::lonnet::logthis('got here c');
next if (! defined($Datasets[0]));
- &Apache::lonnet::logthis('got here d');
for (my $i=0; $i< scalar(@{$Datasets[0]});$i++) {
$Datasets[0]->[$i]=0;
}
@@ -1362,7 +1359,6 @@ sub OR_tries_analysis {
my $incorrect_graph = &Apache::loncommon::DrawBarGraph
('Incorrect Statements','Statement','% Chosen Incorrectly',
100,$plotcolors,\@Labels,@Datasets,{xskip=>1});
- &Apache::lonnet::logthis('incorrect graph = '.$incorrect_graph);
$analysis_html.=
''.
''.
@@ -1480,6 +1476,7 @@ sub OR_time_analysis {
##
my ($processed_time_data,$correct,$data_count,$student_count) =
&OR_time_process_data($performance_data,$begin_index,$end_index);
+ $correct |= 0;
##
$table .= ''.
&mt('[_1] submissions from [_2] students, [_3] correct, [_4] incorrect',
| |