#!/usr/bin/perl
use strict;
use warnings;

use Getopt::Long;

use lib qw(Core);
use lib qw(Classes);

use DomainsManager;
use TargetsManager;

my $d_m = new DomainsManager();
my $t_m = new TargetsManager();

my $DEBUG = 0;

my $TARGET;
my $pml_script = "/tmp/tmp.pml"; # pymol script
my $PSE_FILE = "/local/CASP13/ASSESSORS/PSE/"; # pymol session file
my @colors =qw/red blue green yellow cyan magenta/;

GetOptions (
        "target|t=s" => \$TARGET,
);

if (!defined($TARGET) || $TARGET !~ m/^T[0-9]{4}(s[1-9]){0,1}$/ || (!-e "/local/CASP13/TARGETS/$TARGET.pdb" )){
  exit;
}

# get tareget id
my $t_id  = $t_m->get_id_by_name($TARGET);
if ($t_id == 0){
  exit;
}

my @domains = $d_m->get_domains($t_id);
if (scalar(@domains) == 0){
  exit;
}

$PSE_FILE .= "$TARGET.pse";

if (-f $pml_script){
   system("touch $pml_script; chgrp users $pml_script; chmod g+w $pml_script");
}
open P, "> $pml_script";
print P "set pse_export_version, 1.70\n";
print P "# set background color to white:\n";
print P "bg_color white\n";
print P "load /local/CASP13/TARGETS/$TARGET.pdb, $TARGET\n";
print P "hide everything, $TARGET\n";
print P "color grey, $TARGET\n";
print P "show cartoon, $TARGET\n";
# loop over domains

if ($DEBUG){
} else {
# set color gamma
my $max_index = 1; # max domain index in range 1-6
foreach my $dom (@domains){
    my $index = $dom->{DOMAIN_INDEX};
    if ($index>=1 && $index <= 6 && $index > $max_index){
	$max_index = $index;
    }
}
if ($max_index == 6){
	@colors = qw/blue cyan green yellow orange red/;
} elsif ($max_index == 5){
	@colors = qw/blue cyan green yellow red/;
} elsif ($max_index == 4){
        @colors = qw/blue green yellow red/;
} elsif ($max_index == 3){
        @colors = qw/blue green red/;
} elsif ($max_index == 2){
        @colors = qw/blue red/;
} elsif ($max_index == 1){
	@colors = qw/blue/;
}

foreach my $dom (@domains){
   my $index = $dom->{DOMAIN_INDEX};
   if (!($index >= 1 && $index<=6)){next;}
   my $range = $dom->{RANGE};
   $range =~ s/,/ or resi /g;
   print P "select $TARGET"."_$index , resi $range\n";
   printf P "color %s , %s_%s\n", $colors[$index-1], $TARGET, $index;
}
}
print P "deselect \n";
print P "save $PSE_FILE\n";
print P "quit\n";

close(P);

system("pymol -c $pml_script >/dev/null 2>/dev/null");

sleep(1);
if (-f $PSE_FILE){
	system("chgrp users $PSE_FILE; chmod g+w $PSE_FILE");
}

