#!usr/bin/perl -w
#	
#	By Jennifer Deegan, October, 2007
#
# This script parses the output of the obodiff script and 
# counts up the edits of different types and displays the 
# list of types of edits, and how many were done. 




use strict;
my $add_dbxref = 0;
my $merge = 0;
my $add_synonym = 0;
my $name_change = 0;
my $synonym_scope_change = 0;
my $new_part_of = 0;
my $new_is_a = 0;
my $added_def = 0;
my $new_general_dbxref = 0;
my $added_to_subset = 0;
my $changed_comment = 0;
my $changed_def = 0;
my $new_terms = 0;
my $definition_dbxref_deleted = 0;
my $part_of_relationships_deleted = 0;
my $is_a_relationships_deleted = 0;
my $synonyms_deleted = 0;

my $line;

#open(OUTPUT, ">  wiki.txt") || die("can't open wiki.txt");
open (FILE, "obodiff_output.txt") || die "Can't open obodiff_output.txt.\n";
$/ = "\n";
while(<FILE>){
     $line = $_;

	# definition dbxrefs added.
	if	($line =~m/Added definition dbxref/) {
	$add_dbxref++;
	}

	# merges.
	if	($line =~m/added secondary id /) {
	$merge++;
	}

	# synonyms added.
	if	($line =~m/Added synonym/) {
	$add_synonym++;
	}

	# name change
	if	(($line =~m/Changed name of/) && ($line !~m/"<new term>"/)) {
	$name_change++;
	}

	# synonym scope change
	if	($line =~m/Changed synonym scope of/) {
	$synonym_scope_change++;
	}

	# part_of relationship added
	if	($line =~m/Copied.* with type part_of/) {
	$new_part_of++;
	}

	# is_a relationship added
	if	($line =~m/Copied.* with type OBO_REL:is_a/) {
	$new_is_a++;
	}

	# definitions added
	if	($line =~m/Set definition of/) {
	$added_def++;
	}

	# general dbxrefs added
	if	($line =~m/Added general dbxref/) {
	$new_general_dbxref++;
	}

	# added to subset
	if	($line =~m/Added .* to category gosubset/) {
	$added_to_subset++;
	}

	# comments changed
	if	($line =~m/Changed comment from/) {
	$changed_comment++;
	}

	# comments changed
	if	($line =~m/Changed definition of/) {
	$changed_def++;
	}

	# comments changed
	if	($line =~m/Created object of type/) {
	$new_terms++;
	}

	# comments changed
	if	($line =~m/Deleted definition dbxref/) {
	$definition_dbxref_deleted++;
	}

	# is_a relationships deleted
	if	($line =~m/Deleted .* --OBO_REL:is_a--> /) {
	$is_a_relationships_deleted++;
	}
	
	# part_of relationships deleted
	if	($line =~m/Deleted .* --part_of--> /) {
	$part_of_relationships_deleted++;
	}

	# synonyms deleted
	if	($line =~m/Deleted synonym/) {
	$synonyms_deleted++;
	}
}

print "Terms:\n";
print $new_terms, " new terms were made.\n";
print $merge, " term merges took place.\n";
print $name_change, " names were changed.\n";
print $new_general_dbxref, " general dbxrefs were added.\n";
print $added_to_subset, " terms were added to subsets.\n";
print "Relationships:\n";
print $new_part_of, " new part_of relationships were made.\n";
print $new_is_a, " new is_a relationships were made.\n";
print $part_of_relationships_deleted, " part_of relationships were deleted.\n";
print $is_a_relationships_deleted, " is_a relationships were deleted.\n";
print "Definitions:\n";
print $added_def, " definitions were added.\n";
print $changed_def, " definitions were changed.\n";
print $add_dbxref, " definition dbxrefs were added.\n";
print $definition_dbxref_deleted, " definition dbxrefs were deleted.\n";
print "Synonyms:\n";
print $add_synonym, " new synonyms were added.\n";
print $synonym_scope_change, " syonyms were assigned a scope.\n";
print $synonyms_deleted, " synonyms were deleted.\n";
print "Comments:\n";
print $changed_comment, " comments were changed.\n";

close FILE;
	
getc();

print "done.";
