#!/usr/bin/perl

use strict;
use warnings;


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

use Exporter;
use LocalConfiguration;
use DomainsManager;

my $target = $ARGV[0];

if(!defined($target) || $target !~ m/^T[0-9]{4}(s[1-9]){0,1}$/){
    die ("Improper name of target: should be in format T0123 or T0123s1\n");
}

my $DEBUG = 0;

if ($DEBUG){
#  &copyMOLPROBITY_ALL();
#  &copyBK();
#  &linkCE();
#  &linkQCS();
#  &linkSOV();
#  &linkTMscore();
#  &linkGrContS();
#   &copyMVSM();
#   &linkMVSM_clusters();
#  &linkFlexE();
#  &linkSGpy();
  exit;
}


my $tarballDir = "/local/CASP13/TARBALLS/predictions_trimmed_to_domains";
my $tarballTargetsName = "/local/CASP13/TARBALLS/targets/Targets_trimmed_to_domains.tar.gz";
&linkTarget();
#&linkModels();
&trimModels();

&copyCACA();

&linkDaliLite();
&linkMammoth();
&linkLVR();
&linkSGpy();

&linkLGA_SDA_DATA();
&linkLGA_SDA_ALIGNMENT();
&linkLGA_SDA_ROTATED();

&linkLGA_SIA_DATA();
&linkLGA_SIA_ALIGNMENT();
&linkLGA_SIA_ROTATED();

&linkLGA_SIA_DATA(5);
&linkLGA_SIA_ALIGNMENT(5);
&linkLGA_SIA_ROTATED(5);

&linkLDDT();
&linkCAD();
&linkRPF();

&copyRR();
&copyMVSM();  
&linkMVSM_clusters();

&copyMOLPROBITY_ALL();
&copyBK();
&linkFlexE();

&linkCE();
&linkQCS();
&linkSOV();
&linkTMscore();
&linkTMalign();

&linkGrContS();

&createPredictionsTarball();
&createTargetsTarball();

system("/local/Projects/Perl/casp13/src/scripts/linkModels.pl");
 
#----------------------------------------------------------
# SUBROUTINES
#----------------------------------------------------------

# TODO: handle with spice

sub linkTarget {
    my $targetFile = sprintf("%s/%s.pdb",$LOCAL_CONFIG->{DATA_TARGETS_DIR}, $target);
    my $link = sprintf("%s/%s-D1.pdb",$LOCAL_CONFIG->{DATA_TARGETS_DIR}, $target);
    if(-f $link ){ # exist files with results: domain 0 and domain 1 are different
        # do nothing
        return;
    }
    if(!-e $link ){
        system("/bin/ln -s $targetFile $link");
    }
}

sub copyCACA {
    my $resDir = sprintf("%s/CACA",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resFile1 = sprintf("%s/%s.CAerr",$resDir, $target);
    my $resFile2 = sprintf("%s/%s.CAerr.html",$resDir, $target);
    my $copyFile1 = sprintf("%s/%s-D1.CAerr",$resDir, $target);
    my $copyFile2 = sprintf("%s/%s-D1.CAerr.html",$resDir, $target); 
    my $tmp_file = sprintf("%s/%s-D1.tmp",$resDir, $target);
    if(!-f $resFile1 || !-f $resFile2){
        warn "Either $resFile1 or $resFile2 doesn't exist\n";
        return;
    }

    if(-f $copyFile1 || -f $copyFile2){ # exist files with results: domain 0 and domain 1 are different
	# do nothing
	return;
    }
    my $pattern = $target."TS[0-9][0-9][0-9]_[1-5]"; # pattern to handle with T0123TS123_1
    my $patternD1 = "\\($target"."TS[0-9][0-9][0-9]_[1-5]\\)\\(-D1\\)\\(_[1-5]\\)"; # pattern to handle with T0123TS123_1_2
    if(!-e $copyFile1 ){
	system("sed \'s:$pattern:&-D1:g\'  < $resFile1 >$tmp_file");
	system("sed \'s:$patternD1:\\1\\3\\2:g\' <$tmp_file >$copyFile1");
	system("/bin/rm -f $tmp_file");
    }
    if(!-e $copyFile2 ){
        system("sed \'s:$pattern:&-D1:g\' < $resFile2 > $tmp_file");
	system("sed \'s:$patternD1:\\1\\3\\2:g\' <$tmp_file >$copyFile2");
	system("rm -f $tmp_file");
    }
}

sub copyMOLPROBITY_ALL {
    my $resDir = sprintf("%s/MOLPROBITY_ALL/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resFile = sprintf("%s/%s.molprb",$resDir, $target);
    my $copyFile = sprintf("%s/%s-D1.molprb",$resDir, $target);
    my $tmp_file = sprintf("%s/%s-D1.tmp",$resDir, $target);
    if(!-f $resFile){
        warn "File $resFile doesn't exist\n";
        return;
    }

    if(-f $copyFile ){ # exist file with results: domain 0 and domain 1 are different
        # do nothing
        return;
    }
    my $pattern = $target."TS[0-9][0-9][0-9]_[1-5]"; # pattern to handle with T0123TS123_1
    my $patternD1 = "\\($target"."TS[0-9][0-9][0-9]_[1-5]\\)\\(-D1\\)\\(_[1-5]\\)"; # pattern to handle with T0123TS123_1_2
    if(!-e $copyFile ){
        system("sed \'s:$pattern:&-D1:g\'  < $resFile >$tmp_file");
        system("sed \'s:$patternD1:\\1\\3\\2:g\' <$tmp_file >$copyFile");
        system("/bin/rm -f $tmp_file");
    }
}

sub copyBK {
    my $resDir = sprintf("%s/BK/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resFile = sprintf("%s/%s.bk.csv",$resDir, $target);
    my $copyFile = sprintf("%s/%s-D1.bk.csv",$resDir, $target);
    my $tmp_file = sprintf("%s/%s-D1.tmp",$resDir, $target);
    if(!-f $resFile){
        warn "File $resFile doesn't exist\n";
        return;
    }

    if(-f $copyFile ){ # exist file with results: domain 0 and domain 1 are different
        # do nothing
        return;
    }
    my $pattern = $target."TS[0-9][0-9][0-9]_[1-5]"; # pattern to handle with T0123TS123_1
    my $patternD1 = "\\($target"."TS[0-9][0-9][0-9]_[1-5]\\)\\(-D1\\)\\(_[1-5]\\)"; # pattern to handle with T0123TS123_1_2
    if(!-e $copyFile ){
        system("sed \'s:$pattern:&-D1:g\'  < $resFile >$tmp_file");
        system("sed \'s:$patternD1:\\1\\3\\2:g\' <$tmp_file >$copyFile");
        system("/bin/rm -f $tmp_file");
    }
}


sub linkDaliLite {
    my $resDir = sprintf("%s/DaliLite",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        warn "$resDir_domain0 doesn't exist\n";
        return;
    }
    if(-d $resDir_domain1 ){
	return;
    }else{
	system("/bin/mkdir -p $resDir_domain1");
	system("chgrp users $resDir_domain1");
	system("chmod 775 $resDir_domain1");
    }

    # read subdirs 
    my @subDirs;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $subDir = readdir(DIR)) {
        next unless (-d "$resDir_domain0/$subDir");
        next if ($subDir =~ m/^\./);
	push(@subDirs, $subDir);
    }
    closedir(DIR);

    # create links
    foreach my $subDir (@subDirs){
	my $link = sprintf("%s/%s-D1",$resDir_domain1,$subDir);
	my $origSubDir = sprintf("%s/%s",$resDir_domain0,$subDir);
	system("/bin/ln -s $origSubDir $link");
    }
}


sub linkMammoth {
    my $resDir = sprintf("%s/MAMMOTH",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        warn "$resDir_domain0 doesn't exist\n";
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.mammoth 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
	#remove extension 
	$file =~ s/\.mammoth//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
	my $link = sprintf("%s/%s-D1.mammoth",$resDir_domain1,$file);
	my $origFile = sprintf("%s/%s.mammoth",$resDir_domain0,$file);
	system("/bin/ln -s $origFile $link");
    }

}

sub linkModels {
    my $resDir = sprintf("%s",$LOCAL_CONFIG->{DATA_MODELS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        warn "$resDir_domain0 doesn't exist\n";
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }
    
}

sub trimModels {
    my $resDir = sprintf("%s",$LOCAL_CONFIG->{DATA_MODELS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        warn "$resDir_domain0 doesn't exist\n";
        return;
    }
    if(-d $resDir_domain1){
        warn "Directory $resDir_domain1 does exist!!! You should delete it, if you are sure you want to copy domain 0 as domain 1 for target $target.\n Also pay attention if in table casp13.domains there has been defined just one domain with index '1' for target $target\n";
        return;
    }
    my $domains_manager = new DomainsManager();
    $domains_manager->split_models_to_domains($target);
}


sub linkLVR {
    my $resDir = sprintf("%s/LVR",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        warn "$resDir_domain0 doesn't exist\n";
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.csv
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
	next if ($file !~ m/csv$/);
        #remove extension 
        $file =~ s/\.csv//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.csv",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.csv",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}

sub linkSGpy {
    my $resDir = sprintf("%s/SGpy",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        warn "$resDir_domain0 doesn't exist\n";
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.csv
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/csv$/);
        #remove extension 
        $file =~ s/\.csv//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.csv",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.csv",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}


sub linkLGA_SDA_DATA {
    my $resDir = sprintf("%s/LGA/SDA/DATA",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
	warn "$resDir_domain0 doesn't exist\n";
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.mammoth 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        #remove extension 
        $file =~ s/\.lga//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.lga",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.lga",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}

sub linkLGA_SDA_ALIGNMENT {
    my $resDir = sprintf("%s/LGA/SDA/ALIGNMENT",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.mammoth 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        #remove extension 
        $file =~ s/\.lga//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.lga",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.lga",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }
}

sub linkLGA_SDA_ROTATED {
    my $resDir = sprintf("%s/LGA/SDA/ROTATED",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.mammoth 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        #remove extension 
        $file =~ s/\.lga//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.lga",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.lga",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }
}


sub linkLGA_SIA_DATA {
    my $flag = shift;
    if (!defined($flag) || $flag != 5){
	$flag = 4;
    }
    my $resDir;
    if ($flag == 4){
	$resDir = sprintf("%s/LGA/SIA/DATA",$LOCAL_CONFIG->{RESULTS_DIR});
    } else {
	$resDir = sprintf("%s/LGA/SIA_5/DATA",$LOCAL_CONFIG->{RESULTS_DIR});
    }
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.mammoth 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        #remove extension 
        $file =~ s/\.lga//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.lga",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.lga",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}

sub linkLGA_SIA_ALIGNMENT {
    my $flag = shift;
    if (!defined($flag) || $flag != 5){
        $flag = 4;
    }
    my $resDir;
    if ($flag == 4){
        $resDir = sprintf("%s/LGA/SIA/ALIGNMENT",$LOCAL_CONFIG->{RESULTS_DIR});
    } else {
        $resDir = sprintf("%s/LGA/SIA_5/ALIGNMENT",$LOCAL_CONFIG->{RESULTS_DIR});
    }

    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.mammoth 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        #remove extension 
        $file =~ s/\.lga//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.lga",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.lga",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }
}


sub linkLGA_SIA_ROTATED {
    my $flag = shift;
    if (!defined($flag) || $flag != 5){
        $flag = 4;
    }
    my $resDir;
    if ($flag == 4){
        $resDir = sprintf("%s/LGA/SIA/ROTATED",$LOCAL_CONFIG->{RESULTS_DIR});
    } else {
        $resDir = sprintf("%s/LGA/SIA_5/ROTATED",$LOCAL_CONFIG->{RESULTS_DIR});
    }
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.mammoth 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        #remove extension 
        $file =~ s/\.lga//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.lga",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.lga",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }
}

sub linkLDDT {
    my $resDir = sprintf("%s/lDDT/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.lddt 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
	next if ($file !~ m/\.lddt$/);
        #remove extension 
        $file =~ s/\.lddt//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.lddt",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.lddt",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }
}

sub linkCAD {
    my $resDir = sprintf("%s/CADscore/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }   
    # read files and delete extension T0123TS123_1.cad 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/\.cad$/);
        #remove extension 
        $file =~ s/\.cad$//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.cad",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.cad",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }
}

sub linkRPF {
    my $resDir = sprintf("%s/rpf/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.rpf 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/\.rpf$/);
        #remove extension 
        $file =~ s/\.rpf$//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.rpf",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.rpf",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }
}

sub linkCE{
    my $resDir = sprintf("%s/CE/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.ce 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/\.ce$/);
        #remove extension 
        $file =~ s/\.ce$//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.ce",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.ce",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}

sub linkFlexE{
    my $resDir = sprintf("%s/FlexE/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.ce 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/\.flexe$/);
        #remove extension 
        $file =~ s/\.flexe$//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.flexe",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.flexe",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}

sub linkQCS{
    my $resDir = sprintf("%s/QCS/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.ce 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/\.qcs$/);
        #remove extension 
        $file =~ s/\.qcs$//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.qcs",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.qcs",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}

sub linkSOV{
    my $resDir = sprintf("%s/SOV/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.ce 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/\.sov$/);
        #remove extension 
        $file =~ s/\.sov$//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.sov",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.sov",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}

sub linkTMscore{
    my $resDir = sprintf("%s/TMscore/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.tm 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/\.tm$/);
        #remove extension 
        $file =~ s/\.tm$//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.tm",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.tm",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}

sub linkTMalign{
    my $resDir = sprintf("%s/TMalign/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if (!-d $resDir_domain0) {
        return;
    }
    if (-d $resDir_domain1) {
        return;
    } else {
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.tm 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/\.tm$/);
        #remove extension 
        $file =~ s/\.tm$//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.tm",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.tm",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }
}


sub linkGrContS{
    my $resDir = sprintf("%s/GrContS/",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1.ce 
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        next if ($file !~ m/\.grconts$/);
        #remove extension 
        $file =~ s/\.grconts$//;
        push(@files, $file);
    }
    closedir(DIR);

    foreach my $file (@files){
        my $link = sprintf("%s/%s-D1.grconts",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s.grconts",$resDir_domain0,$file);
        system("/bin/ln -s $origFile $link");
    }

}


sub copyMVSM {
    my $resDir = sprintf("%s/MVSM/DATA",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        push(@files, $file);
    }
    closedir(DIR);

    my $pattern = $target."TS[0-9][0-9][0-9]_[1-5]";
    my $patternD1 = "\\($target"."TS[0-9][0-9][0-9]_[1-5]\\)\\(-D1\\)\\(_[1-5]\\)"; # pattern to handle with T0123TS123_1_2
    foreach my $file (@files){
        my $copyFile = sprintf("%s/%s-D1",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s",$resDir_domain0,$file);
	my $tmp_file = sprintf("%s/%s-D1.tmp",$resDir_domain1,$file);
        system("sed \'s:$pattern:&-D1:g\' < $origFile > $tmp_file");
        system("sed \'s:$patternD1:\\1\\3\\2:g\' <$tmp_file >$copyFile");
        system("rm -f $tmp_file");

    }
}

sub linkMVSM_clusters {
    my $resDir = "/local/CASP13/TARBALLS/results/mvsm_clusters";
    my $no = `ls -1 $resDir/$target\.* | wc -l`;
    chomp $no;
    if ($no > 0){
    	system  ("/bin/bash -c 'for t in $resDir/$target\\.* ; do if [ ! -e \${t/$target/$target-D1} ]; then ln -s \$t \${t/$target/$target-D1}; fi; done'");
    }
}


sub copyRR {
    my $resDir = sprintf("%s/RR_CONTS",$LOCAL_CONFIG->{RESULTS_DIR});
    my $resDir_domain0 = sprintf("%s/%s",$resDir, $target);
    my $resDir_domain1 = sprintf("%s/%s-D1",$resDir, $target);
    if(!-d $resDir_domain0){
        return;
    }
    if(-d $resDir_domain1){
        return;
    }else{
        system("/bin/mkdir -p $resDir_domain1");
        system("chgrp users $resDir_domain1");
        system("chmod 775 $resDir_domain1");
    }
    # read files and delete extension T0123TS123_1
    my @files;
    opendir(DIR, $resDir_domain0) or die $!;
    while (my $file = readdir(DIR)) {
        next unless (-f "$resDir_domain0/$file");
        next if ($file =~ m/^\./);
        push(@files, $file);
    }
    closedir(DIR);

    my $pattern = $target.".pdb";
    foreach my $file (@files){
        my $copyFile = sprintf("%s/%s-D1",$resDir_domain1,$file);
        my $origFile = sprintf("%s/%s",$resDir_domain0,$file);
        system("sed \'s:$pattern:$target-D1.pdb:g\' < $origFile > $copyFile");
    }

}


sub createPredictionsTarball {
    my $dir_dom1 = sprintf("%s/%s-D1", $LOCAL_CONFIG->{DATA_MODELS_DIR}, $target);
#    my $dir_dom1 = sprintf("%s/%s-D1", "/local/CASP13/MODELS", $target);
    if (! -d $dir_dom1) {
        return;
    }
    my $tar_name = sprintf("%s/%s-D1.tar.gz", $tarballDir, $target);
    if (-e $tar_name ) {
        system(sprintf("/bin/rm -f %s",$tar_name));
    }
    system(sprintf("cd %s ; tar -czhf $tar_name %s-D1 ", $LOCAL_CONFIG->{DATA_MODELS_DIR} ,$target));
    system("chgrp users $tar_name");
    system("chmod 664 $tar_name");
#    system(sprintf("cd %s ; tar -czhf $tar_name %s-D1 ", "/local/CASP13/MODELS" ,$target))
#    printf("cd %s ; tar -czhf $tar_name %s-D1 ", "/local/CASP13/MODELS" ,$target);

}


sub createTargetsTarball {
    if (-e $tarballTargetsName){
	system("/bin/rm -f $tarballTargetsName");
    }
    system(sprintf("cd %s; tar -czhf %s *-D?.pdb", $LOCAL_CONFIG->{DATA_TARGETS_DIR}, $tarballTargetsName));
    system("chgrp users $tarballTargetsName");
    system("chmod 664 $tarballTargetsName");    
}
