Logo Search packages:      
Sourcecode: t-coffee version File versions  Download package

perl_header_lib.h

char *PerlScriptName[]={"rec_sum.pl","process_list.pl","make_license.pl","change_program_version.pl","CCsed.script","t_coffee_dpa","t_coffee_dpa2","tc_generic_method.pl","generic_method.tc_method","clustalw_method.tc_method","mocca","msf_aln2fasta_aln.pl","blast_aln2fasta_aln.pl","fasta_aln2fasta_aln_unique_name.pl","extract_from_pdb","fugue_client","newick2name_list.pl","excel2fasta.pl","EndList"};
char *PerlScriptFile[]={"use File::Copy;\nuse Env qw(HOST);\nuse Env qw(HOME);\nuse Env qw(USER);\n$x_field=0;\n$y_field=1;\n$interval=0;\n$file=\"stdin\";\n$print_avg=1;\n$print_sd=0;\n$print_sum=0;\n$print_n=0;\nforeach $value ( @ARGV)\n    {\n      if ($value ne $ARGV[$np]) \n      {\n         ;\n         }\n     elsif($value eq \"-print_all\")\n       {\n         $print_sd=$print_avg=$print_n=$print_sum=1;\n         $np++;\n          }\n     elsif($value eq \"-print_sum\")\n       {\n         $print_sum=1;\n         $print_avg=0;\n         $np++;\n          }\n     elsif($value eq \"-print_n\")\n         {\n         $print_n=1;\n     $print_avg=0;\n         $np++;\n          }\n     elsif($value eq \"-print_avg\")\n       {\n         $print_avg=1;\n         $print_avg=0;\n         $np++;\n          }\n     elsif($value eq \"-print_sd\")\n        {\n         $print_sd=1;\n          $print_avg=0;\n         $np++;\n          }\n     elsif($value eq \"-header\")\n          {\n         $header=1;\n      $np++;\n          }\n     elsif ($value eq \"-interval\")\n       {\n         $interval= $ARGV[++$np];\n          $np++;\n          }\n     elsif ($value eq \"-x_field\")\n        {\n         $x_field= $ARGV[++$np]-1;\n         $np++;\n          }\n     elsif ($value eq \"-y_field\")\n        {\n           \n        while ($ARGV[$np+1] && !($ARGV[$np+1]=~/\\-/))\n        {\n         $y_field[$nyf++]=$ARGV[++$np]-1;\n        $y_field_set=1;\n       }\n\n     $np++;\n          }\n     elsif ($value eq \"-file\")\n     {\n         $file= $ARGV[++$np];\n        $file_set=1;\n          $np++;\n          }       \n    elsif ( $value eq \"-spec\")\n        {\n     $do_specificity=1;\n        }\n elsif ( $value eq \"h\" ||  $value eq \"-h\" || $value eq \"-H\" || $value eq \"-help\" || $value eq \"help\")\n    {\n     print STDOUT \"data_analyse: Analyse and discretization of data\\n\";\n       print STDOUT \"       -file:    <file containing the data to analyze>,.<def=STDIN>\\n\";\n      print STDOUT \"       -x_field: <field containing the X>,...............<Def=0>\\n\";\n         print STDOUT \"       -y_field: <field containing the Y>,...............<Def=1>\\n\";\n         print STDOUT \"       -interval:<Interval size on the Y>,...............<Def=0>\\n\";\n         print STDOUT \"       -interval:<0:only one interval>\\n\";\n     print STDOUT \"       -header  : print column header \\n\";\n     print STDOUT \"       -spec    : read TP TN FP FN \\n\";\n        exit (0);\n     }\n elsif ($value=~/-/)\n     {\n     print \"$value is not a valid FLAG[FATAL]\\n\";\n     exit (0);\n      } \n     elsif ($list eq \"\") \n          {\n         $file=$ARGV[$np];\n     $np++;\n          }\n     \n    \n      }\n\n\n\n\n\nif ($file eq \"stdin\")\n  {\n   $remove_file=1;\n $file=\"tmp$$\";\n      open (F, \">$file\");\n while (<STDIN>)\n       {\n         print F $_;\n           }\n   close (F);\n       \n   ;}\n\n\nopen(F,$file);\n\nwhile (<F>)\n          {\n      $line=$_;\n       @list=/(\\S+)/g;\n  \n        if ( $do_specificity)\n         {\n         $tp+=$list[0];\n        $tn+=$list[1];\n        $fp+=$list[2];\n        $fn+=$list[3];\n        }\n       if ($interval==0){$bin=0;}\n        else{$bin=$list[$x_field]/$interval;}\n     \n        for ( $a=0; $a<$nyf; $a++)\n          {\n         $sum{$a}{$bin}+=$list[$y_field[$a]];\n          $sum2{$a}{$bin}+=$list[$y_field[$a]]*$list[$y_field[$a]];\n       $n{$a}{$bin}++;\n       }\n       if ( $bin>$max_bin){$max_bin=$bin;}\n   }\n\n\nif ( !$do_specificity)\n  {\n    \n    if ( $header)\n      {\n      for ( $a=0; $a<=$max_bin; $a++)\n     {\n     $i=$interval*$a;\n      printf \"%10.2f \", $i;\n   }\n  printf \"\\n\";\n      }\n    for ( $b=0; $b<$nyf; $b++)\n      {\n    for ( $a=0; $a<=$max_bin; $a++)\n           {\n     $i=$interval*$a;\n      if ( $n{$b}{$a}==0)\n           {\n         $avg=0;\n         $sd=0;\n          }\n       else\n        {\n         $avg=$sum{$b}{$a}/$n{$b}{$a};\n           $sd=sqrt($sum2{$b}{$a}*$n{$b}{$a}-$sum{$b}{$a}*$sum{$b}{$a})/($n{$b}{$a}*$n{$b}{$a});\n         \n          if ($print_n) {printf \"%10.2f \", $n{$b}{$a};}\n           if ($print_sum){printf \"%10.2f \", $sum{$b}{$a};}\n        if ($print_avg){printf \"%10.2f \", $avg}\n           if ($print_sd) {printf \"%10.2f \", $sd;}\n           }\n     }\n printf (\"\\n\");\n      }\n  }\nelse\n  {\n    $positive=$tp+$fn;\n    $negative=$tn+$fp;\n\n    $sn=$tp/($tp+$fn);\n    $sp=$tn/($tn+$fp);\n    $sp2=$tp/($tp+$fp);\n    $smc=($tp+$fn)/($tp+$fn+$fp+$tn);\n    printf  (\"|Sn %10.2f |Sp %10.2f |Sp2=%10.2f |Pos %10d |Neg %10d\\n\", $sn, $sp, $sp2, $positive, $negative);\n  }\n\n\nif ( $remove_file){unlink $file;}\n","\nuse Env qw(HOST);\nuse Env qw(HOME);\nuse Env qw(USER);\n$random_tag=int (rand 10000)+1;\n$unique_prefix=\"$$.$HOST.$random_tag\";\n$queue=\"distillery.and.mid\";\n$monitor=0;\n$stderr_file=\"/dev/null\";\n$stdio_file=\"/dev/null\";\n$log_file=\"/dev/null\";\n$pause_time=0;\n$max_sub_jobs=60;\n$min_sub_jobs=30;\n$output_all=0;\n$var='\\$';\n\nforeach $value ( @ARGV)\n    {\n   if ($value ne $ARGV[$np]) \n      {\n         ;\n         }\n     elsif ($value eq \"-max_sub_jobs\")\n         {\n         $max_sub_jobs= $ARGV[++$np];\n      $np++;\n          } \n    elsif ($value eq \"-min_sub_jobs\" )\n        {\n         $min_sub_jobs= $ARGV[++$np];\n      $np++;\n          }\n     elsif ($value eq \"-para\")\n     {\n         $para=1;\n        $monitor=1;\n     $np++;\n          }\n     elsif ($value eq \"-monitor\") \n       {\n         $monitor=1;\n     $np++;\n          }\n     elsif ($value eq \"-no_monitor\") \n          {\n         $monitor=0;\n     $np++;\n          }\n     elsif ($value eq \"-queue\")\n          {\n         $queue=$ARGV[++$np];\n        $np++;\n          } \n    elsif ($value eq \"-stderr_file\")\n          {\n         $stderr_file=$ARGV[++$np];\n        $np++;\n          }\n     elsif ($value eq \"-stdio_file\")\n     {\n         $stdio_file=$ARGV[++$np];\n         $np++;\n          }\n     elsif ($value eq \"-output_all\")\n     {\n         $output_all=1;\n        $np++;\n          }\n     elsif ($value eq \"-pause\") \n         {\n         $pause_time=$ARGV[++$np];\n         $np++;\n          }\n     elsif ($value eq \"-log\")\n        {\n          $log=1;\n         \n          if ($ARGV[$np+1]=~/\\-\\S+/) \n              {\n             $log_file=\"stderr\";\n               }\n            else \n              {\n             $log_file=$ARGV[++$np]; \n          ++$np;\n         \n             }\n           }\n   elsif ( $value eq \"-com\")\n     {\n           \n          if (!$ARGV[$np+1]=~/^\\'/) { $com=$ARGV[++$np];}\n          else {$com=$ARGV[++$np];}\n\n      $np++;\n         }\n     elsif ($com eq \"\") \n     {\n         $com_set=1;\n     $com=$ARGV[$np];\n      \n          $np++;\n          }\n     elsif ($list eq \"\") \n          {\n         $list_set=1;\n          $list=$ARGV[$np];\n     $np++;\n          }\n     elsif ( $var_set eq \"\")\n       {\n         $var_set=1;\n     $var=$ARGV[$np];\n      $np++;\n          }\n     }\n\n\n\n\nif ( $com eq \"\"){print \"You Need to Provide a Command [FATAL]\\n\";\n       die;\n           }\n\n\n\nif ($list_set==0) \n    {\n    $x= int (rand 100000)+1;\n    $tmp_file_name=\"tmp_file_$x\";\n    open ( TMP, \">$tmp_file_name\");\n    while (<STDIN>)\n      {\n   print TMP $_;\n      }\n    close (TMP);\n    open (F, $tmp_file_name);\n    }\nelse \n    {\n    open (F, $list);\n    }\n\nif ($para==0) \n    {\n\n     @tc_list= <F>;\n     close (F); \n\n     foreach $val(@tc_list) \n     {\n           \n          \n          $loc_com=$com;\n        \n          @i_val=($val=~/([^\\s]+)/g);\n            \n          if ( $#i_val==0)\n              {\n          \n           $loc_com=~s/$var/$i_val[0]/g;\n         }\n       else\n              {\n           for ($n=1; $n<=$#i_val+1;$n++ )\n                  {\n  \n                 $sub=\"$var$n\";\n                  \n                $loc_com=~s/$sub/$i_val[$n-1]/g;\n              }\n          }\n \n            system \"$loc_com\";\n    \n          }\n    exit;\n    }\n\nelsif ($para==1) \n    {\n    print STDERR \"do parallel execution of: \\\"$com $list\\\"\\n\";\n    \n    if ($log==1) \n {\n   if ($log_file eq \"stdout\" || $log_file eq \"stderr\" ) \n       {\n         $log_file=\"\";\n         }\n\n        else \n        {\n         system \"echo LOG FILE> $log_file\";\n          \n            }\n }\n    else \n    {\n   open ( OUT, \">/dev/null\");\n      }\n   \n    \n    $id=0;\n    $n_sub=0;\n    while ($val=<F>) \n      {           \n          $job_log[$id]=\"$HOME/tmp/$unique_prefix.$id.log_file\";\n        \n          $job=$unique_prefix.\"_$id\";\n     open (JOB, \">$job\");\n      \n          $loc_com=$com;\n        chop $val;\n\n          $loc_com=~s/\\$/$val/g;\n  \n       print JOB \"#!/bin/csh\\n\";\n      print JOB \"#\\$ -cwd\\n\";\n       print JOB \"#\\$ -N $unique_prefix\\n\";\n      if ($queue && !($queue eq \" \")) {print JOB \"#\\$ -l $queue\\n\";}\n        print JOB \"#\\n\";     \n            print JOB \"$loc_com\\n\";\n      print JOB \"echo FINISHED  >> $job_log[$id]\\n\";\n         print JOB \"pwd\\n\";\n       \n          close (JOB);\n          if ( $output_all==1)\n          {\n         system \"qsub $job >  $unique_prefix\";         \n            }\n     else\n        {system \"qsub $job -e $stderr_file -o $stdio_file >$unique_prefix\";           \n          } \n\n\n\n          print STDERR \"$id: $output_all\\n\";\n         $n_sub++;\n       if ( $max_sub_jobs && $n_sub==$max_sub_jobs) \n         {\n         $n_sub=monitor_process($min_sub_jobs,@job_log);              \n         \n            }   \n       \n            unlink $unique_prefix;\n     sleep $pause_time;\n          $id++;\n          }\n\n    close (OUT);\n    close (F);\n\n    print STDERR \"Your $id Jobs Have Been Submited (NAME=$unique_prefix)\\n\";\n    monitor_process (0, @job_log);\n    foreach $file(@job_log) {if (-e $file) {unlink($file);}}\n    \n    }\n\nsub monitor_process ( @job_list)\n    {\n    my (@job_list)=@_;\n    my $min_sub_jobs=shift (@job_list);\n    my $n_sub_jobs;\n    my $finished;\n    my $n=0;\n\n    $n_sub_jobs=-1;\n    $finished=0;\n    print STDERR \"\\nMonitor Batch: [$min_sub_jobs]\";\n       \n    while (!$finished && (($n_sub_jobs>$min_sub_jobs)|| $n_sub_jobs==-1) ) \n     {\n   $finished=1;\n    $n_sub_jobs=0;\n  $n=0;\n     foreach $file (@job_list)\n           {\n \n          if (-e $file){;}\n            else \n               {\n               $finished=0; $n_sub_jobs++;\n               }\n           }\n system \"sleep 1\";\n        }\n    \n    return $n_sub_jobs;\n    }\n    \n    \nif ($tmp_file_name){unlink($tmp_file_name);}\n","\n\nforeach ($np=0; $np<=$#ARGV; $np++)\n    {\n    $value=$ARGV[$np];\n\n    if ($value eq \"-file\")\n      {\n      $file= $ARGV[++$np];\n      }\n    elsif ($value eq \"-type\")\n      {\n        $type= $ARGV[++$np];\n      }\n    elsif ($value eq \"-institute\")\n      {\n        $institute= $ARGV[++$np];\n      }\n    elsif ($value eq \"-author\")\n      {\n        $author= $ARGV[++$np];\n      }\n    elsif ($value eq \"-date\")\n      {\n        $date= $ARGV[++$np];\n      }\n     elsif ($value eq \"-program\")\n      {\n        $program= $ARGV[++$np];\n      }\n    elsif ($value eq \"-email\")\n      {\n        $email= $ARGV[++$np];\n      }\n    else\n      {\n print \"$value is an unkown argument[FATAL]\\n\";\n   exit (1);\n      }\n  }\n\n\n\nopen F, $file || die;\nprint $INSTITUTE;\nif ( $type eq \"c\"){print \"/*********************************COPYRIGHT NOTICE**********************************/\\n\";}\nif ( $type eq \"perl\"){print \"#################################COPYRIGHT NOTICE#################################/\\n\";}\nif ( $type eq \"txt\"){print \"----------------------------------COPYRIGHT NOTICE---------------------------------/\\n\";}\n\n\nwhile (<F>)\n  {\n  s/\\$INSTITUTE/$institute/g;\n  s/\\$AUTHOR/$author/g;\n  s/\\$DATE/$date/g;\n  s/\\$PROGRAM/$program/g;  \n  s/\\$EMAIL/$email/g;  \n  if ( $type eq \"txt\"){print $_;}\n  elsif ($type eq \"c\"){chop $_; print \"\\/*$_*\\/\\n\";}\n  elsif ($type eq \"perl\"){print \"\\#$_\";}\n}\nclose (F);\nif ( $type eq \"c\"){print \"/*********************************COPYRIGHT NOTICE**********************************/\\n\";}\nif ( $type eq \"perl\"){print \"#################################COPYRIGHT NOTICE#################################/\\n\";}\nif ( $type eq \"txt\"){print \"----------------------------------COPYRIGHT NOTICE---------------------------------/\\n\";}\n\n","\n\nif( $ARGV[0] && -e $ARGV[0]){$file=$ARGV[0];}\nelse{$file=\"version_number.version\";}\n\n\nif (!(-e $file))\n  {\n   $line=$ARGV[1];\n }\nelse\n   {\n   open (INFILE,$file);\n  while (<INFILE>)\n            {\n         $line=$_;\n       }\n   close (INFILE);\n }\n\n\n$line=~/Version_(.*)\\.([0-9]+)/;\n\n$main=$1;\n$secondary=$2;\n\nif ( $secondary>=99)\n  {\n    $main++;\n    $secondary=1;\n  }\nelse\n  {\n    $secondary++;\n  }\n\nif ($secondary<10){$secondary=\"0$secondary\";}\n\n\nopen(INFILE,\">$file\");\nprint INFILE \"Version_$main\\.$secondary\\n\";\nclose (INFILE);\n\n\n","\nwhile (<>)   \n    {\n   s/\\=cc/123456789/g;\n  s/\\bcc/\\$\\(CC\\)/g;\n      s/123456789/\\=cc/g;\n  print $_;\n }\n\n","use Env;\n$seq_reformat=\"t_coffee -other_pg seq_reformat \";\n$VersionTag=\"1.00\";\n$step=1;\n$unset=\"\";\n$scoreT1=$scoreT2=$nseqT=$dp_limit=$unset;\n@tl=();\nchomp($tc_version=`t_coffee -version`);$tc_version=~s/PROGRAM: //;\n\n\nprint STDERR \"\\n*****************************************************************\";\nprint STDERR \"\\n*           HIGH LEVEL PROGRAM: T-COFFEE_DPA Version $VersionTag\";\nprint STDERR \"\\n*           LOW  LEVEL PROGRAM: $tc_version \";\nprint STDERR \"\\n*****************************************************************\";\n\nif (!@ARGV)\n  {\n    print \"t_coffee_dpa accepts every t_coffee_flag.\\nType t_coffee to obtain a list\\n\";\n    print \"Requires $TC_VERSION\\n\";\n    print \"Requires \";\n    print \"t_coffee_dpa specific flags:\\n\";\n    print \"\\t-dpa_master_aln....................Master alignment: provided OR computed\\n\";\n    print \"\\t-dpa_master_aln....................By default, Computed with t_coffee -very_fast\\n\";\n    print \"\\t-dpa_master_aln=<file>.............Use file, (must be an aln in Fasta or ClustalW\\n\";\n    print \"\\t-dpa_master_aln=<program>..........Compute aln with pg -in seq -out aln`\\n\";\n    print \"\\t-dpa_maxnseq.......................Maximum number of sequences in subgroups\\n\";\n    print \"\\t-dpa_min_score1....................Minimum Id for two sequences to be grouped in ref_aln\\n\";\n    print \"\\t-dpa_min_score2....................Minimum Id within a subgroup\\n\";\n    print \"\\t-dpa_debug.........................Keep Tmp File (for debug purpose)\\n\\n\";\n    \n    exit (0);\n  }\nforeach $arg (@ARGV)\n  {\n    $arg_list.=\" $arg\";\n  }\n$arg_list=~s/[=,;]/ /g;\n\n\n($seq0, $arg_list)=&extract_val_from_arg_list(\"^\",$arg_list, \"SPLICE\",\"unset\");\n($seq1, $arg_list)=&extract_val_from_arg_list(\"-seq\",$arg_list, \"SPLICE\",\"unset\");\n($seq2, $arg_list)=&extract_val_from_arg_list(\"-in\",$arg_list, \"KEEP\",\"unset\");\n($seq3, $arg_list)=&extract_val_from_arg_list(\"-infile\",$arg_list, \"SPLICE\",\"unset\");\n($prf,  $arg_list)=&extract_val_from_arg_list(\"-profile\",$arg_list, \"SPLICE\",\"unset\");\n$seq=&vtmpnam();#file containing all the sequences\n\n   #1-remove sequences from -in\nif ( $arg_list =~/\\-in\\b/)\n  {\n    my $save, $name;\n    while($arg_list=~/\\-in\\b[^-]+(\\bS[\\w.]+)/)\n      {\n      $name=$1;$name=~s/^.//;\n     if ( !-e $name){$save.=\" S$name \";}\n\n $arg_list=~s/S$name/ /;\n      }\n    $arg_list=~s/\\-in\\b/\\-in $save /;\n  }\n   #2-prepare \n\nif (!($arg_list=~/\\-outorder/))\n  {\n    \n    $output_cl .=\" -outorder=$seq\";\n  }\n@output_flag=(\"-output\",\"-outfile\", \"-run_name\", \"-outorder\"); \nforeach $v1 (@output_flag)\n  {\n    ($v2, $arg_list)=&extract_val_from_arg_list($v1,$arg_list, \"SPLICE\",\"unset\");\n    if ($v2 ne \"\")\n      {\n\n      if ($v1 eq \"-run_name\"){$run_name=$v2;$output_cl .=\" $v1 $v2 \";}\n  elsif ( $v1 eq \"-outorder\")\n       {\n     if ( $v2 eq \"input\"){$v2=$seq;}\n       $outorder=$v2;$output_cl .=\" $v1 $v2 \";\n   }\n else\n        {\n     $output_cl .=\" $v1 $v2 \";\n     }\n      }\n }\n\n\n($dpa_master_aln, $arg_list)  =&extract_val_from_arg_list(\"-dpa_master_aln\",$arg_list, \"SPLICE\", \"t_coffee\");\n$dpa_master_aln=~s/\\s//g;\n($nseqT, $arg_list)           =&extract_val_from_arg_list(\"-dpa_maxnseq\",$arg_list, \"SPLICE\", 30);\n($scoreT1, $arg_list)         =&extract_val_from_arg_list(\"-dpa_min_score1\",$arg_list, \"SPLICE\", 80);\n($scoreT2, $arg_list)         =&extract_val_from_arg_list(\"-dpa_min_score2\"    ,$arg_list, \"SPLICE\", 30);\n($dpa_limit, $arg_list)       =&extract_val_from_arg_list(\"-dpa_limit\"        ,$arg_list, \"SPLICE\", 0);\n($dpa_delta_id, $arg_list)    =&extract_val_from_arg_list(\"-dpa_delta_id\"        ,$arg_list, \"SPLICE\", 1);\n($dpa_debug, $arg_list)       =&extract_val_from_arg_list(\"-dpa_debug\"           ,$arg_list, \"SPLICE\", 0);\n\n\n$in_seq=$seq0.\" \".$seq1.\" \".$seq2.\" \".$seq3;\n$in_prf=(($prf ne $unset)?\"$prf \":\"\");\n&exit_dpa (($in_seq eq \"\" && $in_prf eq \"\")?1:0, \"ERROR: You did not Provide any sequences. Use the -seq flag [FATAL: t_coffee_dpa]\\n\", EXIT_FAILURE);\n\n\nprint STDERR \"\\nSTART DPA COMPUTATION\";\n\n\n\nif ($in_seq=~/\\S+/)\n  {\n    \n    print STDERR \"\\n Step $step: Gather all the sequences into the tmp file: [$seq]\";$step++;  \n    &my_system (\"t_coffee $in_seq -convert -quiet -output fasta_seq -outfile=$seq -maxnseq 0\");\n  }\n\nif ( !-e $seq){$seq=\"\";}\n\nif ($in_prf=~/\\S+/)\n  {\n    $seq_in_type=\"profile\"; \n    $seq.= $in_prf; \n  }\nif ($seq eq \"\"){ &exit_dpa (1, \"\\nERROR: No Sequence FOund. Provide Sequences with the -seq flag [FATAL: t_coffee_dpa]\", EXIT_FAILURE);}\n\n \n\nif ( $run_name)\n  {\n    $suffix=$run_name;\n  }\nelsif ($in_seq=~/\\b(S[\\w.]+\\b)/)\n  {\n    my $suffix1, $sufffix2;\n    $suffix1=$suffix2=$1;\n    $suffix2=~s/^S//;\n    if ( -e $suffix1){$suffix=$suffix1;}\n    elsif ( -e $suffix2){$suffix=$suffix2;}\n    else\n      {\n  $suffix=&vtmpnam();     \n      }\n    $suffix=~s/\\.\\w+//;\n  }\n\nelse\n  {\n    $suffix=&vtmpnam();\n  }\n\n\nif (!$run_name){$output_cl.=\" -run_name $suffix \";}\n\n\n\n\nif (-e $dpa_master_aln==0)\n     {\n     $dpa_master_aln_pg=$dpa_master_aln;\n     $dpa_master_aln=\"$suffix.\".\"guide_\".\"$dpa_master_aln\";\n    print STDERR \"\\n Step $step: Compute a fast and approximate alignment [$dpa_master_aln] with $dpa_master_aln_pg\";$step++;\n      if ($dpa_master_aln_pg eq \"t_coffee\")\n         {\n           &my_system (\"t_coffee -seq $seq -special_mode quickaln -outfile $dpa_master_aln -quiet -maxnseq 0\");\n        }\n       else\n        {\n           &my_system (\"$dpa_master_aln_pg -in $seq -out $dpa_master_aln\");\n        }\n       print STDERR \" [DONE]\\n\";\n    }\nelse\n   {\n   print STDERR \"\\n Step $step: Load precomputed alignment: $dpa_master_aln\";$step++;\n   }\n\n$gl{'MasterAln'}=&vtmpnam();\n&my_system (\"cp $dpa_master_aln $gl{'MasterAln'}\");\n&exit_dpa (!(-e $dpa_master_aln), \"\\nFailed to produce the guide aln $dpa_master_aln\\n[FATAL: t_coffee_dpa]\\n\", EXIT_FAILURE);\n\n\n$gl{'Tree'}=&aln2dpa_tree ($gl{'MasterAln'});\n\nprint STDERR \"\\n Step $step: Prepare guide tree: $dpa_master_aln\";$step++;\nprint STDERR \"\\n Step $step: Identify Closely Related Groups\";$step++;\n%gl=&make_one_pass (0, $scoreT1,\"Extract\",%gl);\n\nprint STDERR \"\\n Step $step: Make Multiple Group Alignment\";$step++;\nwhile (!%gl ||$gl{'Ng'}>$nseqT)\n  {\n    %gl=&make_one_pass ($nseqT, $scoreT2,\"t_coffee\",%gl);\n    if ( $gl{'Newgroups'}==0){$scoreT2--;}    \n  }\nprint STDERR \"\\n Step $step: Make The Final Alignment\";$step++;\n\n\n$arg_list .=$output_cl;\n\n\n%gl=&tree2group (0,0, %gl);\n$gl{$gl{'0'}{'File'}}{'Output'}=\"\";\n$a=0;\n&align_groups (\"t_coffee\",'0', $arg_list, \" \", %gl);\n\n\n\nif ( !$dpa_keep_tmpfile){&clean_tmp_file (@tl);}\n\n\n\n          \nsub aln2dpa_tree \n  {\n    my $aln=@_[0];\n    my $newtree=&vtmpnam();\n    \n    &my_system(\"$seq_reformat -in $aln -action +aln2tree +tree2dpatree -output newick > $newtree\");\n    return $newtree;\n  }\nsub group_file2ngroups\n  {\n    my $file=@_[0];\n    my $n;\n    \n    open ( F, $file);\n    while (<F>)\n      {\n  $n+=/\\>/;\n      }\n    close (F);\n    return $n;\n  }\n\nsub make_one_pass\n  {\n    my ($N, $ID,$pg, %gl)=@_;\n    my $a;\n\n    %gl=&tree2group ($N,$ID,%gl);\n    if (!$gl{'Newgroups'}){return %gl;}\n    else\n      {\n    for ( $a=0; $a< $ng; $a++)\n    {\n     if ($gl{$gl{$a}{'File'}}{'Ng'}>1){&display_group($a, %gl);}\n     &align_groups ($pg, $a, $arg_list, \" -quiet=quiet \", %gl);\n        }\n return %gl;\n      }\n  }\n\nsub tree2group \n  {\n    my ($N, $ID, %gl)=@_;\n    my $prefix=&vtmpnam();\n    my $group_file=&vtmpnam();\n    my $file;\n    my $oldtree=&vtmpnam();\n    my $n;\n    my $tree;\n\n\n    if ( $gl{'Ng'}==1){return %gl;}\n    $tree=$gl{'Tree'}; \n    \n    #1 extract the groups\n    &my_system (\"$seq_reformat -in $tree -action +tree2group $N $ID $prefix > $group_file\");\n    $n=group_file2ngroups($group_file);\n    \n    \n    $gl{'Newgroups'}=1;\n    if ( $n==$gl{'Ng'})\n      {\n      $gl{'Newgroups'}=0;\n   return %gl;\n      }\n    $gl{'Iteration'}++;\n    $gl{'MaxNseq'}=$N;$gl{'MinID'}=$ID;\n    $gl{'GroupFile'}=$group_file;$gl{'Ng'}=$ng=0;\n    #2 Process the group list into the hash\n    open (F, $group_file);\n    while (<F>)\n      {\n  $gl{'File'}.=$_;\n      if (/\\>/)\n        {\n     $line=$_;\n       $line=~s/\\>//;\n       @list=($line=~/(\\S+)/g);\n         $file=$gl{$ng}{'File'}=shift @list;\n     $gl{$file}{'Output'}=$file;\n       \n          $gl{$file}{'Ng'}=$#list+1;\n        if ($gl{$file}{'Ng'}>1){ $gl{$file}{'Tlist'}=$gl{$file}{'Alist'}=\"(\";}\n          foreach $l (@list)\n            {\n   \n          $gl{$file}{'List'}.=\" $l \";\n           \n          if (!$gl{$l}{'Tlist'})\n              {\n           $gl{$l}{'Tlist'}=\"$l\";\n                $gl{$l}{'Alist'}=\"$l\";\n                $gl{$l}{'Nseq'}=1;\n                $gl{$l}{'Ng'}=1;\n          }\n       $gl{$file}{'Tlist'}.=\"$gl{$l}{'Tlist'},\";\n         $gl{$file}{'Alist'}.=\"$gl{$l}{'Tlist'}|\";\n         $gl{$file}{'Nseq'}+=$gl{$l}{'Nseq'};\n          }\n       \n\n        chop($gl{$file}{'Tlist'});chop($gl{$file}{'Alist'});\n      if ($gl{$file}{'Ng'}>1){$gl{$file}{'Tlist'}.=\")\"; $gl{$file}{'Alist'}.=\");\";}\n       $ng++;\n        }   \n      }\n    $gl{'Ng'}=$ng;\n    close (F);\n    \n    #3 Update the old tree with the new groups\n    $gl{'Tree'}=&vtmpnam();\n    &my_system (\"$seq_reformat -in $tree -action +collapse_tree $group_file -output newick > $gl{'Tree'}\");\n    \n    return %gl;\n  }\n\nsub display_group \n  {\n    my ($g,%gl)=@_;\n    my $f;\n    \n    if ( $g==-1)\n      {\n    print STDERR \"\\nIteration $gl{'Iteration'} [MaxN=$gl{'MaxNseq'}][MinID=$gl{'MinID'}]\";\n      }\n    else\n      {\n\n     $f=$gl{$g}{'File'};\n   $action=($gl{$f}{'Ng'}==1 || $gl{'Iteration'}==1)?\"KEEP  \":\"ALIGN \";\n        print STDERR \"\\n\\t[$action][MaxN=$gl{'MaxNseq'}][MinID=$gl{'MinID'}][File $f][Nseq=$gl{$f}{'Nseq'}][Ngroups=$gl{$f}{'Ng'}][$gl{$f}{'Alist'}]\";\n      }\n  }\n      \n\n\nsub align_groups\n  {\n    my ($pg, $g, $arg, $extra_arg,%gl)=@_;\n    my $f;\n    my $Output,$Outflag;\n    \n    \n    $f=$gl{$g}{'File'};\n    $Output=($gl{$f}{'Output'});\n    \n    if ( $pg eq \"Extract\")\n      {\n   if ( !-e $f){$command=\"$seq_reformat -in $gl{'MasterAln'}  -action +extract_aln $gl{'GroupFile'}\";}\n     else \n       {$command=\"\";}\n      }\n    elsif ( -e $f)\n      {    \n    $Outflag=($Output)?\"-outfile=$Output\":\"\";\n $command=\"$pg -infile $f $Outflag -quiet stdout $arg $extra_arg -maxnseq 0 -convert -quiet stdout\";\n      }\n    elsif ( $gl{$f}{'Ng'}==1)\n      {\n    $action=($dpa_debug)?\"cp\":\"mv\";\n     $command=\"$action $gl{$f}{'List'} $Output\";\n      }\n    else\n      {\n   $Outflag=($Output)?\"-outfile=$Output\":\"\";\n $command=\"$pg -profile $gl{$f}{'List'} $Outflag $arg $extra_arg -maxnseq 0\";\n      }\n    \n    &my_system ($command);\n    return $outfile;\n  }\n    \nsub my_system \n  {\n    my $command=@_[0];\n    my $force=@_[1];\n    my $status;\n\n    if ( $dpa_debug) {print STDERR \"\\nCOMMAND: $command\";}\n    $status=system ($command);\n\n    if (!$force)\n       {\n      &exit_dpa (($status==1), \"Failed in Command:\\n$command\\n[FATAL: t_coffee_dpa]\\n\", EXIT_FAILURE);\n       }\n    \n    return $status;\n  }\n\nsub vtmpnam\n  {\n    my $prefix=@_[0];\n    my $tmp_file_name;\n\n    $tmp_prefix=($prefix)?$prefix:\"dpa_tmp_file_$$\";\n   \n    $tmp_count++;\n    $tmp_file_name=\"$tmp_prefix\".\"$tmp_count\";\n    $tl[$#tl+1]=$tmp_file_name;\n    return $tmp_file_name;\n  }\n\nsub clean_tmp_file\n  {\n\n    my $list;\n    my $file;\n    \n    if ($dpa_debug){return;}\n    $list=vtmpnam();\n    `ls -1 | grep $tmp_prefix>$list`;\n    \n    open (F,$list);\n    while ( <F>)\n      {\n $file=$_;\n chop $file;\n     if ( -e $file){unlink $file;}\n      }\n    close (F);\n    unlink $list;\n  }\n\n\nsub exit_dpa\n  {\n  my $condition=@_[0];\n  my $error_msg=@_[1];\n  my $exit_value=@_[2];\n  if ( $condition)\n    {\n      print \"$error_msg\\n\";\n      exit ($exit_value);\n    }\n  else\n    {\n      return;\n    }\n  \n}\nsub extract_val_from_arg_list\n  {\n    my $arg=@_[0];\n    my $arg_list=@_[1];\n    my $keep_flag=@_[2];\n    my $default_value=@_[3];\n    my $val=\"\";\n    \n    #protect\n    $arg_list=~s/\\s-/ \\@/g;\n    $arg=~s/-/\\@/g;\n    \n    #search\n    if ($arg eq \"^\")\n      {\n      $arg_list=~/^([^@]*)/;\n      $val=$1;\n      }\n    else\n      {$arg_list=~/$arg ([^@]*)/;$val=$1;}\n    \n    #remove trailing spaces\n    $val=~s/\\s*$//;\n    \n    #remove the parsed sequence if needed\n    if (($val ne \"\") && $keep_flag ne \"KEEP\")\n      {\n if ( $arg eq \"^\"){$arg_list=~s/$val/ /;}\n    else {$arg_list=~s/($arg [^@]*)/ /;}\n      }\n \n    #unprotect\n    $arg_list=~s/\\@/-/g;\n    $arg=~s/\\@/-/g;\n    \n    if (($val eq \"\") && $default_value ne \"unset\"){$val=$default_value;}\n    \n    return $val, $arg_list;\n  }\n$program=\"T-COFFEE (Version_2.34)\";\\n\n","\n$DEBUG=1;\n$dpa_nseq=10;\n$dpa_sim=0;\nif (!@ARGV)\n  {\n    `t_coffee`;\n    exit (0);\n  }\nforeach $arg (@ARGV)\n  {\n    $arg_list.=\" $arg\";\n  }\n$max_nseq=10;\n($seq0, $arg_list)=&extract_val_from_arg_list(\"^\",$arg_list);\n($seq1, $arg_list)=&extract_val_from_arg_list(\"-seq\",$arg_list);\n($seq2, $arg_list)=&extract_val_from_arg_list(\"-in\",$arg_list, \"KEEP\");\n($seq3, $arg_list)=&extract_val_from_arg_list(\"-infile\",$arg_list);\n$in_seq=$seq0.\" \".$seq1.\" \".$seq2.\" \".$seq3;\n\n$seq=vtmpnam();\n`t_coffee $in_seq -convert -output fasta_seq -outfile=$seq`;\n\n\n($dpa_nseq, $arg_list)=&extract_val_from_arg_list(\"-dpa_nseq\",$arg_list);\n($master_aln, $arg_list)=&extract_val_from_arg_list(\"-master_aln\",$arg_list);\n($sim_matrix, $arg_list)=&extract_val_from_arg_list(\"-sim_matrix\",$arg_list);\n($core_seq, $arg_list)=&extract_val_from_arg_list(\"-core_seq\",$arg_list);\n($dpa_sim, $arg_list)=&extract_val_from_arg_list(\"-dpa_sim\",$arg_list);\n($run_name, $arg_list)=&extract_val_from_arg_list(\"-run_name\",$arg_list);\n($output, $arg_list)=&extract_val_from_arg_list(\"-output\",$arg_list);\n\n\n\nif (!$sim_mat && !$master_aln)#Compute the fast alignment\n  {\n    $ref_aln=vtmpnam();\n    `t_coffee -seq=$seq -very_fast -outfile=$ref_aln -quiet`;\n    \n  }\n\nif (!$sim_mat)\n  {\n    $sim_mat=vtmpnam();\n    `seq_reformat -in $ref_aln -output sim > $sim_mat`;\n  }\n\nif ( !$core_seq)\n  {\n    $core_seq=vtmpnam();\n    `seq_reformat -in $ref_aln -action +trimTC N$max_nseq -output fasta_seq > $core_seq`;\n  }\n@core_name=`seq_reformat -in $core_seq -output name `; \n\n@tot_name=`seq_reformat -in $seq -output name `;\n\nforeach $s (@core_name){$s=~s/\\s//g;$hcore{$s}=1;}\nforeach $s (@tot_name){$s=~s/\\s//g;}\nprint STDERR \"T-Coffee_dpa:\\n\";\nprint STDERR \"\\tTOTAL  SEQ: @tot_name\\n\";\nprint STDERR \"\\tCHOSEN SEQ: @core_name\\n\";\n\n\n\nopen (F, $sim_mat);\nwhile ( <F>)\n  {\n    @l=($_=~/(\\b[\\S]+\\b)/g);\n    if (($l[0] eq \"TOP\" || $l[0] eq \"BOT\"))\n      {\n      $s1=$l[1];$s2=$l[2];$v=$l[3];\n     if ($hcore{$s1} && !$hcore{$s2})\n    {\n     if (!$hseq{$s2}{\"sim\"} || $v>$hseq{$s2}{\"sim\"})\n         {\n         $hseq{$s2}{\"sim\"}=$v;$hseq{$s2}{\"seq\"}=$s1;\n           }\n     }\n      }\n  }\nclose (F);\nforeach $s (@tot_name)\n  {\n\n    if ( !$hseq{$s}{\"seq\"}){;}\n    else\n      {\n     $s2=$hseq{$s}{\"seq\"};\n     $v=$hseq{$s}{\"sim\"};\n            \n    if ($v>$dpa_sim)\n        {\n     $hseq{$s}{'used'}=1;\n        $seq_list{$s2}{$seq_list{$s2}{'nseq'}++}=$s;\n      }\n      }\n  }\nforeach $s (@core_name){$seq_list{$s}{$seq_list{$s}{'nseq'}++}=$s;$hseq{$s}{'used'}=1;}\nforeach $s (@tot_name){if (!$hseq{$s}{'used'}){$seq_list{'unused'}{$seq_list{'unused'}{'nseq'}++}=$s;}}\n\n\n$n=0;\nforeach $s (@core_name)\n  {\n    $ng++;\n    $n=$seq_list{$s}{'nseq'};\n    for (@g_list=(), $a=0; $a<$n; $a++){@g_list=(@g_list,$seq_list{$s}{$a});}\n\n    $g_seq=vtmpnam();\n    $g_aln=vtmpnam();\n    \n    print STDERR \"Group $ng: $#g_list Seq: @g_list: \";\n    \n    \n    `seq_reformat -in $seq -action +lower +keep_name +extract_seq  @g_list -output fasta_seq > $g_seq`;\n    \n    \n    if ( $#g_list==0)\n      {\n     print STDERR \"[No aln]\\n\";\n     $g_aln=$g_seq;\n      }\n    elsif ($#g_list<$max_nseq) \n      {\n     print STDERR \"[t_coffee]\\n\";\n   `t_coffee $g_seq -outfile=$g_aln -quiet $arg_list`;\n      }\n    else\n      {\n   print STDERR \"[t_coffee_dpa]\\n\";\n     `t_coffee_dpa2 $g_seq -outfile=$g_aln $arg_list -sim_matrix $sim_matrix -dpa_nseq $dpa_nseq`;\n      }\n    @profile_list=(@profile_list, $g_aln);\n  }\n\n\nprint \"UNUSED $seq_list{'unused'}{'nseq'}\";\n\nif ($seq_list{'unused'}{'nseq'})\n    {\n      $prf=vtmpnam();\n      \n      `t_coffee -profile @profile_list $arg_list -outfile=$prf -quiet`;\n      $n=$seq_list{\"unused\"}{'nseq'};\n      $new_seq=vtmpnam();\n      $new_prf=vtmpnam();\n      for ($a=0; $a<$n-1; $a++)\n {\n     $s=$seq_list{\"unused\"}{$a};\n     print STDERR \"\\nADD Sequence $s\";\n    \n    `seq_reformat -in $seq -action +lower +keep_name +extract_seq $s  -output fasta_seq > $new_seq`;\n    `t_coffee -profile $prf $new_seq $arg_list -outfile=$new_prf`;\n        `cp $new_prf $prf`;\n }\n      $s=$seq_list{\"unused\"}{$a};\n      `seq_reformat -in $seq -action +lower +keep_name +extract_seq $s  -output fasta_seq > $new_seq`;\n      @profile_list=($prf, $new_seq);\n    }\n    \n      \nif ($run_name){$arg_list.=\" -run_name $run_name\";}\nelse \n  {\n    $in_seq=~/([\\w-]+)/;\n    $arg_list.=\" -run_name $1\";\n  }\nif ( $output){$arg_list.=\" -output $output \";}\n\n`t_coffee -profile @profile_list $arg_list`;\n\n\n&clean (@tmp_file_list);\n\n\nsub vtmpnam\n  {\n    my $tmp_file_name;\n    $tmp_name_counter++;\n    $tmp_file_name=\"tmp_file_$tmp_name_counter\\_Pid$$\";\n    $tmp_file_list[$ntmp_file++]=$tmp_file_name;\n    return $tmp_file_name;\n  }\nsub clean\n  {\n  my @fl=@_;\n  my $file;\n  return;\n\n  foreach $file ( @fl)\n    {\n      if ( -e $file){unlink($file);}\n    }\n}\nsub extract_val_from_arg_list\n  {\n    my $arg=@_[0];\n    my $arg_list=@_[1];\n    my $keep_flag=@_[2];\n    #protect\n    $arg_list=~s/\\s-/ \\@/g;\n    $arg=~s/-/\\@/g;\n    \n    #search\n    if ($arg eq \"^\")\n      {\n   $arg_list=~/^([^@]*)/;\n      $val=$1;\n      }\n    else\n      {$arg_list=~/$arg ([^@]*)/;$val=$1;}\n    \n    #remove the parsed sequence if needed\n    if ($val && $keep_flag ne \"KEEP\")\n      {\n  if ( $arg eq \"^\"){$arg_list=~s/$val/ /;}\n    else {$arg_list=~s/($arg [^@]*)/ /;}\n      }\n \n    #unprotect\n    $arg_list=~s/\\@/-/g;\n    $arg=~s/\\@/-/g;\n    \n    return $val, $arg_list;\n  }\n\n","use Env;\n\nif ($argv[0] eq \"-support\"){$support=1;}\n\nforeach $a (@ARGV)\n  {\n    $in.=\"$a \";\n  }\nprint ( STDERR \"IN: $in\");\nif ($in=~/-infile=([^-]*)/){$infile=$1;$infile=~s/\\s//g;}\nif ($in=~/-outfile=([^-]*)/){$outfile=$1;$outfile=~s/\\s//g;}\nif ($in=~/-method=([^-]*)/){$method=$1;$method=~s/\\s//g;}\nif ($in=~/-support/){$support=1;}\nif ($in=~/-param=([^-]*)/){$param=$1;}\n\n$param.=\" >/dev/null 2>&1 \";\n@method_list=(\"clustalw\", \"t_coffee\",\"muscle\");\n\nif (!$infile)\n  {\n    print STDERR \"generic wrapper for alignment methods\\n\";\n    print STDERR \"\\t-infile=<infile> -outfile=<outfile> -method=<method> -parameter=<parmeter list>\\n\";\n    print STDERR \"Supported Methods: @method_list\\n\";\n    exit (EXIT_SUCCESS);\n  }\nelse\n  {\n    check_pg_is_installed ($method, @method_list);\n  }\nif ($method eq \"clustalw\")\n  {\n    $command=\"clustalw -infile=$infile -outfile=$outfile $param\";\n    `$command`;\n  }\nelsif ($method eq \"t_coffee\")\n  {\n    $command=\"t_coffee2 -infile=$infile -outfile=$outfile $param\";\n    `$command`;\n  }\nelsif ($method eq \"muscle\")\n  {\n    `muscle $infile > $outfile`;\n  }\nelse\n  {\n  `$method -infile=$infile -outfile=$outfile $param`;  \n  }\n\nif ( -e $outfile){exit (EXIT_SUCCESS);}\nelse\n  {\n    print STDERR \"\\nCommand $command Did Not Produce File $outfile [FATAL]\\n\";\n    exit (EXIT_FAILURE);\n  }\n\nsub check_pg_is_installed\n  {\n    my @ml=@_;\n    my $r, $p, $m;\n    my $supported=0;\n    \n    my $p=shift (@ml);\n    $r=`which $p`;\n    if ($r eq \"\")\n      {\n     print STDERR \"\\nProgram $p Supported but Not Installed on your system [FATAL:tc_generic_method]\\n\";\n   exit (EXIT_FAILURE);\n      }\n    else\n      {\n    return 1;\n      }\n  }\n$program=\"T-COFFEE (Version_2.36)\";\\n\n","*TC_METHOD_FORMAT_01\n******************generic_method.tc_method*************\n*\n*       Incorporating new methods in T-Coffee\n*       Cedric Notredame 17/04/05\n*\n*******************************************************\n*This file is a method file\n*Copy it and adapt it to your need so that the method \n*you want to use can be incorporated within T-Coffee\n*******************************************************\n*                  USAGE                              *\n*******************************************************\n*This file is passed to t_coffee via -in:\n*\n*   t_coffee -in Mgeneric_method.method\n*\n* The method is passed to the shell using the following\n*call:\n*<EXECUTABLE><IN_FLAG><seq_file><OUT_FLAG><outname><PARAM>\n*\n*Conventions:\n*<FLAG_NAME>   <TYPE>            <VALUE>\n*<VALUE>:      no_name     <=> Replaced with a space\n*<VALUE>:      &nbsp <=> Replaced with a space\n*\n*******************************************************\n*                  EXECUTABLE                         *\n*******************************************************\n*name of the executable\n*passed to the shell: executable\n*   \nEXECUTABLE      tc_generic_method.pl\n*\n*******************************************************\n*                  ALN_MODE                           *\n*******************************************************\n*pairwise   ->all Vs all (no self )[(n2-n)/2aln]\n*m_pairwise ->all Vs all (no self)[n^2-n]^2\n*s_pairwise ->all Vs all (self): [n^2-n]/2 + n\n*multiple   ->All the sequences in one go\n*\nALN_MODE         pairwise\n*\n*******************************************************\n*                  OUT_MODE                           *\n*******************************************************\n* mode for the output:\n*External methods: \n* aln -> alignmnent File (Fasta or ClustalW Format)\n* list-> List file (TC_LIB_FORMAT_01)\n*Internal Methods:\n* fL -> Internal Function returning a List (Librairie)\n* fA -> Internal Function returning an Alignmnent\n*\nOUT_MODE         aln\n*\n*******************************************************\n*                  IN_FLAG                             *\n*******************************************************\n*IN_FLAG\n*flag indicating the name of the in coming sequences\n*IN_FLAG S no_name ->no flag\n*IN_FLAG S &nbsp-in&nbsp -> \" -in \"\n*\nIN_FLAG       -infile=\n*\n*******************************************************\n*                  OUT_FLAG                           *\n*******************************************************\n*OUT_FLAG\n*flag indicating the name of the out-coming data\n*same conventions as IN_FLAG\n*OUT_FLAG    S no_name ->no flag\n*\nOUT_FLAG          -outfile=\n*\n*******************************************************\n*                  SEQ_TYPE                           *\n*******************************************************\n*G: Genomic, S: Sequence, P: PDB, R: Profile\n*Examples:\n*SEQTYPE S     sequences against sequences (default)\n*SEQTYPE S_P   sequence against structure\n*SEQTYPE      P_P   structure against structure\n*SEQTYPE     PS    mix of sequences and structure      \n*\nSEQ_TYPE     S\n*\n*******************************************************\n*                  PARAM                              *\n*******************************************************\n*Parameters sent to the EXECUTABLE \n*If there is more than 1 PARAM line, the lines are\n*concatenated\n*\nPARAM     -method=clustalw\nPARAM   -OUTORDER=INPUT -NEWTREE=core -align -gapopen=-15\n*\n*******************************************************\n*                  END                                *\n*******************************************************\n","*TC_METHOD_FORMAT_01\n***************clustalw_method.tc_method*********\nEXECUTABLE     clustalw\nALN_MODE            pairwise\nIN_FLAG       -INFILE=\nOUT_FLAG            -OUTFILE=\nOUT_MODE           aln\nPARAM        -gapopen=-10\nSEQ_TYPE        S\n*************************************************\n","\n$t_coffee=\"t_coffee\";\n\nforeach $value ( @ARGV)\n  {\n    $seq_file=$seq_file.\" \".$value;\n  }\n\n$name=$ARGV[0];\n$name=~s/\\.[^\\.]*$//;\n$lib_name=\"$name.mocca_lib\";\n$type=`t_coffee $seq_file -get_type -quiet`;\nchop ($type);\n\nif ( $type eq \"PROTEIN\"){$lib_mode=\"lalign_rs_s_pair -lalign_n_top 20\";}\nelsif ( $type eq\"DNA\"){$lib_mode=\"lalign_rs_s_dna_pair -lalign_n_top 40\";}\n\nif ( !(-e $lib_name))\n  {\n       \n  $command=\"$t_coffee -mocca -seq_weight=no -cosmetic_penalty=0 -mocca_interactive -in $lib_mode -out_lib $lib_name -infile $seq_file\";\n  \n  }\nelsif ( (-e $lib_name))\n  {\n  $command=\"$t_coffee -mocca -seq_weight=no -cosmetic_penalty=0 -mocca_interactive -in $lib_name -infile $seq_file\";\n  \n  }\n\nsystem ($command);\n\nexit;\n\n","use Env qw(HOST);\nuse Env qw(HOME);\nuse Env qw(USER);\n\n\n$query_start=-1;\n$query_end=-1;\n\nwhile (<>)\n  {\n    if ( /\\/\\//){$in_aln=1;}\n    elsif ( $in_aln && /(\\S+)\\s+(.*)/)\n      {\n\n\n    $name=$1;\n \n\n  $seq=$2;\n  $seq=~s/\\s//g;\n        $seq=~s/\\~/\\-/g;\n   $seq=~s/\\./\\-/g;\n    if ( $list{$n}{'name'} && $list{$n}{'name'} ne $name)\n       {\n     print \"$list{$n}{'name'} Vs $name\";\n         \n          exit (EXIT_FAILURE);\n      }\n else\n        {\n     $list{$n}{'name'}= $name;\n       }\n\n     $list{$n}{'seq'}=$list{$n}{'seq'}.$seq;\n \n    $nseq=++$n;\n     \n      }\n    else\n      {$n=0;}\n  }\n\n\nfor ($a=0; $a<$nseq; $a++)\n  {\n    print \">$list{$a}{'name'}\\n$list{$a}{'seq'}\\n\";\n  }\n      \n","use Env qw(HOST);\nuse Env qw(HOME);\nuse Env qw(USER);\n\n$query_start=-1;\n$query_end=-1;\nopen (F, \">tmp\");\nwhile (<>)\n  {\n    print F \"$_\";\n    if ( /Sequences producing significant alignments/){$in_hit_list=1;}\n\n    if ( /(\\S+).*\\s+(\\d+)\\s+([0-9e.-]+)/ && $in_hit_list)\n      {  \n    $name_list{$n_seq++}=$1;\n    $name_list{$n_seq-1}=~s/.*\\|//g;\n\n      }\n    if ( /QUERY/) {$in_aln=1;}\n    if ( /(\\S+)\\s+(\\d+)\\s+([a-zA-Z-]+)\\s+(\\d+)/ || /(\\S+)(\\s+)(\\-+)(\\s+)/ && $in_aln)\n      {\n  \n    $name=$1;\n $start=$2;\n      $seq=$3;\n  $end=$4;\n\n      if ($1 eq \"QUERY\")\n    {\n     $n=0;\n     if ( $query_start==-1){$query_start=$start;}          \n          $query_end=$end;\n    }\n else\n        {\n     $list{$n}{'real_name'}=$name_list{$n-1};\n    }\n\n     $list{$n}{'name'}=$name;\n    if ( !$list{$n}{'real_name'})\n       {\n     $list{$n}{'real_name'}=$name_list{$n+1};\n    }\n $seq=~tr/a-z/A-Z/;\n    $list{$n}{'seq'}=$list{$n}{'seq'}.$seq;\n \n    $n++;\n     \n      }\n}\n\n$list{0}{'real_name'}=\"QUERY_\".\"$query_start\".\"_\".\"$query_end\";\n\nfor ($a=0; $a<$n; $a++)\n  {\n    print F \">$list{$a}{'real_name'}\\n$list{$a}{'seq'}\\n\";\n\n    print \">$list{$a}{'real_name'}\\n$list{$a}{'seq'}\\n\";\n  }\n      \n","use Env qw(HOST);\nuse Env qw(HOME);\nuse Env qw(USER);\n\n\nwhile (<>)\n  {\n    if ( /^>(\\S+)/)\n      {\n    if ($list{$1})\n    {\n     print \">$1_$list{$1}\\n\";\n       $list{$1}++;\n        }\n else\n        {\n     print $_;\n       $list{$1}=1;\n        }\n      }\n    else\n      {\n   print $_;\n      }\n  }\n      \n","$VersionTag =                                                                        1.83;\n\n\nuse FileHandle;\nuse Env qw(HOME);\n\n%onelett=&fill_onelett();\n%threelett=&fill_threelett();\n\nif($ARGV[0]=~/help/ ||$ARGV[0]=~/man/ || $ARGV[0]=~/HELP/ || $ARGV[0]=~/Man/ || $ARGV[0] eq \"-h\"  || $ARGV[0] eq \"-H\"  )\n        {die \"SYNTAX: extract_from_pdb Version $VersionTag     \n    Minimum:             [extract_from_pdb file] \n                OR \n                     [... | extract_from_pdb]\n     Flags (Default setting on the first line)\n        -version...................[Returns the Version Number]\n           -force.....................[Forces the file to be treated like a PDB file]\n                                      [Regenerates the header and SEQRES fields]\n           -force_name................[Forces the file to be named after name]]\n           -infile.....file...........[Flag can be omited]\n                            [File must be pdb or fro pgm]\n                                      [File can also be compressed Z or gz]\n                                      [In the case of a compressed file, you can omit the gz|Z extension]\n           -netfile...................[File will be fetch from the net using wget]\n                                      [wget must be installed]\n                                      [ftp://ftp.gnu.org/pub/gnu/wget/]\n                                      [Must also be used to retrieve the file from a local pdb copy (cf netaddress)]\n           -netaddress................[Address used for the retrieving the netfile]\n                                      [http://www.rcsb.org/pdb/cgi/export.cgi/%%.pdb.gz?format=PDB&pdbId=%%&compression=gz]\n                                      [http://www.expasy.ch/cgi-bin/get-pdb-entry.pl?%%]\n                                      [local -> will get the file from pdb_dir (see pdb_dir)]\n           -netcompression............[Extension if the netfile comes compressed]\n                                      [gz]\n           -pdb_dir...................[address of the repertory where the pdb is installed]\n                                      [Supports standard ftp style installation OR every stru in DIR]\n                                      [Give the ..../pdb/structure/ dir]\n                                      [If value omitted, the pg gets it from the env variable PDB_DIR]\n           -netcompression_pg.........[gunzip]\n           -is_pdb_name........name...[Returns 1 if the name is a PDB ID, 0 otherwise]\n           -get_pdb_chains.....name...[Returns the list of chains corresponding to the entry]\n           -get_pdb_id.........name...[Returns the PDB id within the provided pdb file]\n           -get_fugue_name.....name...[Turns a name into a name valid for fugue]\n                                      [Uses the netaddress to do so]\n     -chain......FIRST..........[Extract the first chain only]\n                 A B C..........[Extract Several chains if needed]\n               ALL............[Extract all the chains]  \n           -ligand.....ALL............[Extract the ligands in the chain (HETATM)]\n                       <name1>,<name2>[Extract All the named lignds]\n    -ligand_only...............[Extract only the ligands]\n           -ligand_list...............[Extract the list of ligands]\n        -coor.......<start>..<end>.[Coordinates of the fragment to extract]\n                                [Omit end to include the Cter]\n           -num........absolute.......[absolute: relative to the seq] \n                       file...........[file: relative to file]\n           -num_out....new............[new: start 1->L]\n                       old............[old: keep the file coordinates]\n           -delete.....<start>..<end>.[Delete from residue start to residue end]\n      -atom.......CA.............[Atoms to include, ALL for all of them]\n              CA O N.........[Indicate several atoms if needed]\n     -code.......3..............[Use the 1 letter code or the 3 letters code]\n    -mode.......raw............[Output original pdb file]\n                       pdb............[Output something that looks like pdb]\n               fasta..........[Output the sequences in fasta format]\n                 simple.........[Output a format easy to parse in C ]    \n    -seq_field..ATOM...........[Field used to extract the sequence]\n                 SEQRES.........[Use the complete sequence]\n      -seq.......................[Equivalent to  -mode fasta]\n         -model......1..............[Chosen Model in an NMR file]\n           -nodiagnostic..............[Switches Error Messages off]\n           -debug.....................[Sets the DEBUG ON]\n           -no_remote_pdb_dir.........[Do not look for a remote file]\n           -cache_pdb.................[Cache Value, default is $HOME/.t_coffee/cache, other values: NO<=> No cache]\n\n      Environement Variables\n           These variables can be set from the environement\n           Command line values with the corresponding flag superseed evironement value\n           NO_REMOTE_PDB_DIR..........[Prevents the program from searching remote file: faster]\n           PDB_DIR....................[Indicates where PDB file must be fetched (localy)]\n\n   PROBLEMS: please contact cedric.notredame\\@europe.com\\n\";\n       }\n\n$np=0;\n$n_para=$#ARGV;\n$model=1;\n$pdb_dir=$ENV{'PDB_DIR'};if ($pdb_dir){$pdb_dir.=\"/\";}\n$debug=$ENV{'DEBUG_EXTRACT_FROM_PDB'};\n$no_remote_pdb_dir=$ENV{NO_REMOTE_PDB_DIR};\n$cache=\"$HOME/.t_coffee/cache/\";\n$force_name=\"XXX\";\n\n   \n   $netaddress=\"http://www.rcsb.org/pdb/cgi/export.cgi/%%.pdb.gz?format=PDB&pdbId=%%&compression=gz\";\n   $netcompression_pg=\"gunzip\";\n   $netcompression=\"gz\";\n\n  foreach ($np=0; $np<=$n_para; $np++)\n    {        \n    $value=$ARGV[$np];\n    \n    if  ($np==0 && !($value=~/^-.*/))\n       { \n       $pdb_file= $ARGV[$np];\n       }\n    elsif ( !($value=~/^-.*/))\n      {\n  print \"@ARGV\";\n      die;\n      } \n    \n    elsif ($value eq \"-nodiagnostic\"){$nodiagnostic=1;}\n    elsif ($value eq \"-force\")\n      {\n  $force_pdb=1;\n      }\n    elsif ($value eq \"-force_name\")\n      {\n      $force_name=$ARGV[++$np];\n   $force_pdb=1;\n      }\n    \n    elsif ($value eq \"-is_pdb_name\")\n      {\n     $pdb_file= $ARGV[++$np];\n    $is_pdb_name=1;\n      } \n    elsif ($value eq \"-debug\")\n      {\n  $debug=1;\n      }\n    elsif ($value eq \"-get_pdb_chains\")\n      {\n      $pdb_file= $ARGV[++$np];\n    $get_pdb_chains=1;\n      }\n    elsif ($value eq \"-get_pdb_ligands\")\n      {\n  $get_pdb_ligands=1;\n      }\n    \n    elsif ($value eq \"-get_pdb_id\")\n      {\n      $pdb_file= $ARGV[++$np];\n    $get_pdb_id=1;\n  \n      }\n    \n    elsif ( $value eq \"-get_fugue_name\")\n      {\n  $pdb_file= $ARGV[++$np];\n    $get_fugue_name=1;\n      }\n    elsif ( $value eq \"-infile\")\n       {\n       $pdb_file= $ARGV[++$np];\n       } \n    elsif ($value eq \"-netfile\")\n      {\n    $netfile=1;\n     if ( !($ARGV[$np+1]=~/^-.*/)){$pdb_file= $ARGV[++$np];}\n      }\n    elsif (  $value eq \"-num\")\n       {\n       $numbering= $ARGV[++$np];\n       }\n    elsif (  $value eq \"-num_out\")\n       {\n       $numbering_out= $ARGV[++$np];\n       }\n    elsif ( $value eq \"-netaddress\")\n      {\n $netadress=$ARGV[++$np];\n      }\n     \n    elsif ( $value eq \"-netcompression\")\n      {\n  $netcompression=$ARGV[++$np];\n      }\n    elsif ( $value eq \"-pdb_dir\")\n      {\n    if ( !($ARGV[$np+1]=~/^-.*/)){$pdb_dir= \"$ARGV[++$np]/\";}\n       }\n     elsif ( $value eq \"-no_remote_pdb_dir\")\n      {\n   $no_remote_pdb_dir=1;\n if ( !($ARGV[$np+1]=~/^-.*/)){$pdb_dir= \"$ARGV[++$np]/\";}\n      }\n    elsif ( $value eq \"-cache\")\n      {\n      $cache=$ARGV[++$np];\n      }\n    \n    elsif ($value eq \"-netcompression_pg\")\n      {\n      $netcompression_pg=$ARGV[++$np];\n      }\n     elsif ($value eq \"-mode\")\n       {\n       $MODE=$ARGV[++$np];\n      \n       }\n    elsif ( $value eq \"-model\")\n       {\n       $model= $ARGV[++$np];\n       }\n    elsif ($value eq \"-seq_field\" )\n       {\n       $seq_field= $ARGV[++$np];\n       }   \n    elsif ($value eq \"-coor\" )\n       {\n       $start= $ARGV[++$np];\n  \n       if (($ARGV[$np+1] eq \"\") ||($ARGV[$np+1]=~/^-.*/)){$end=\"*\";} \n       else {$end=   $ARGV[++$np];}     \n       $coor_set=1;\n       }\n    elsif ($value eq \"-delete\" )\n       {\n       $delete_start= $ARGV[++$np];\n       $delete_end= $ARGV[++$np];\n       $delete_set=1;\n       }\n    elsif  ($value eq \"-code\")\n       {\n       $code= $ARGV[++$np];\n       }\n    elsif ($value eq \"-chain\")\n       {\n       while (!($ARGV[$np+1] eq \"\") &&!($ARGV[$np+1]=~/^-.*/))\n        {\n         ++$np;\n          @c_chain=(@c_chain,  $ARGV[$np]);\n       $hc_chain{$ARGV[$np]}=$#c_chain+1;\n            }           \n       }\n    elsif ($value eq \"-atom\")\n       {\n\n       while (!($ARGV[$np+1] eq \"\") && !($ARGV[$np+1]=~/^-.*/))\n        {\n         ++$np;\n          $atom[$n_atom++]=  $ARGV[$np];\n          $atom_list{$ARGV[$np]}=1;           \n          } \n       \n       }\n    elsif ( $value eq \"-unfold\")\n      {\n    $unfold=1;\n      }\n    elsif ($value eq \"-seq\")\n       {\n       $MODE=\"fasta\";\n       }\n    elsif ( $value eq \"-version\")\n      {\n      print STDERR  \"\\nextract_from_pdb: Version $VersionTag\\n\";\n  &vexit (EXIT_SUCCESS);\n      }\n    elsif ( $value eq \"-ligand\")\n      {\n      while (!($ARGV[$np+1] eq \"\") && !($ARGV[$np+1]=~/^-.*/))\n        {\n     ++$np;\n          $ligand=1;\n      $ligand_list{$ARGV[$np]}=1;           \n      } \n      $hc_chain{'LIGAND'}=1;\n      }\n    elsif ( $value eq \"-ligand_only\")\n      {\n $ligand_only=1;\n      }\n  }\nif ( $debug)\n  {\n    print STDERR \"\\n[DEBUG:extract_from_pdb] NO_REMOTE_PDB_DIR: $no_remote_pdb_dir\\n\";\n    print STDERR \"\\n[DEBUG:extract_from_pdb] PDB_DIR: $pdb_dir\\n\";\n  }\n    \n\n\n\n$local_pdb_file=$pdb_file;\nif ( $debug){print STDERR \"\\n[DEBUG: extract_from_pdb] Scan For $local_pdb_file\\n\";}\n$tmp_pdb_file=get_pdb_file ($local_pdb_file);\n\n\nif ( !-e $tmp_pdb_file || $tmp_pdb_file eq \"\")\n  {\n    \n    $local_pdb_file=$pdb_file;\n    \n    \n    ($local_pdb_file, $suffix_chain)=&pdb_name2name_and_chain($local_pdb_file);\n   \n    if ($local_pdb_file)\n      {\n    if ( $debug){print STDERR \"\\nSplit $pdb_file into $local_pdb_file and $suffix_chain \\n\";}\n $tmp_pdb_file=get_pdb_file ($local_pdb_file);    \n   \n    if ( $tmp_pdb_file ne \"\")\n   {\n \n        @c_chain=($suffix_chain);%hc_chain=();\n        $hc_chain{$suffix_chain}=1;\n     }\n      }\n  }\n\nif ( $debug){print STDERR \"\\n$pdb_file copied into ##$tmp_pdb_file##\\n\";}\n\n\nif ( !-e $tmp_pdb_file || $tmp_pdb_file eq \"\")\n      {\n     print \"\\nEXTRACT_FROM_PDB: NO RESULT for $pdb_file [FATAL:EXTRACT_FROM_PDB Version $VersionTag]\\n\";\n   &vexit (EXIT_FAILURE);  \n      }\n\n\n$pdb_id=&get_pdb_id ($tmp_pdb_file);\n@f_chain=&get_chain_list ($tmp_pdb_file);\n\n\n\nif ( $get_pdb_chains)\n  {\n    print \"@f_chain\\n\";\n    &vexit (EXIT_SUCCESS);\n  }\nif ( $get_pdb_ligands)\n  {\n    %complete_ligand_list=&get_ligand_list ($tmp_pdb_file);\n    print $complete_ligand_list{\"result\"};\n    &vexit (EXIT_SUCCESS);\n  }\n\nelsif ( $get_pdb_id ||$get_fugue_name )\n  {\n    if    (@c_chain && $c_chain[0] eq \"FIRST\"){$pdb_id=$pdb_id.$f_chain[0];}\n    elsif (@c_chain && $c_chain[0] ne \" \"){$pdb_id=$pdb_id.$c_chain[0];}\n    \n    print \"$pdb_id\\n\";\n    &vexit (EXIT_SUCCESS);\n    \n  }\nelsif ( $is_pdb_name)\n  {\n    printf \"1\\n\";\n    &vexit (EXIT_SUCCESS);\n  }\n  \n\n$structure_file=vtmpnam();\n\n\n$INFILE=vfopen (\"$tmp_pdb_file\", \"r\"); \n$TMP=vfopen (\"$structure_file\", \"w\");\n\n$print_model=1;\n$in_model=0;\nwhile ( <$INFILE>)\n{\n  $line=$_;\n  if ($line =~/^MODEL\\s*(\\d*)/)\n    {\n    if ($1==$model)\n {\n       $in_model=1;\n          $print_model=1;\n       $is_nmr=1;\n  }\n   elsif ( $in_model==0)\n {\n       $print_model=0;\n   }\n   elsif ( $in_model==1)\n {\n       last;\n }\n    }\n  if ($print_model){print $TMP $line;}  \n\n}\nclose ($TMP);\nclose ($INFILE);\n\n    \n\n  if ($numbering eq \"\"){$numbering=\"absolute\";}\n  if ($numbering_out eq \"\"){$numbering_out=\"new\";}\n\n  if ( $delete_set && $coor_set) {die \"-delete and -coor are mutually exclusive, sorry\\n\";}\n  if ( $n_atom==0){$atom_list[$n_atom++]=\"CA\";$atom_list{$atom_list[0]}=1;}\n  if ( $seq_field eq \"\"){$seq_field=\"ATOM\";}\n  \n  if ( $MODE eq \"\"){$MODE=\"pdb\";}\n  elsif ( $MODE eq \"simple\" && $code==0){$code=1;}\n\n  if ( $code==0){$code=3;}\n\n\nif ($f_chain[0] eq \" \"){$hc_chain{' '}=1;$c_chain[0]=\" \";}\nelsif (!@c_chain){$hc_chain{FIRST}=1;$c_chain[0]=\"FIRST\";}#make sure the first chain is taken by default\n\nif    ($hc_chain{ALL}) \n      {\n      @c_chain=@f_chain;\n      foreach $e (@c_chain){$hc_chain{$e}=1;}\n      }\nelsif($hc_chain{FIRST})\n      {\n   @c_chain=($f_chain[0]);\n     $hc_chain{$f_chain[0]}=1;\n      }\n\n\n$INFILE=vfopen ($structure_file, \"r\");\n\n\nif ( $MODE eq \"raw_pdb\" || $MODE eq \"raw\")\n  {\n    while (<$INFILE>){print \"$_\";}\n    close ( $INFILE);\n    &vexit(EXIT_SUCCESS);\n  }    \n\nif ( $MODE eq \"pdb\")\n    {\n\n    $read_header=0;\n    while (<$INFILE>) \n          {\n     $line=$_;\n       if    ($line =~ /^HEADER/){print \"$line\";$read_header=1;}\n   }\n    close ($INFILE);\n\n    if (!$read_header)\n      {\n    print \"HEADER    UNKNOWN                                 00-$force_name-00   $$\\n\";\n      }\n\n    $INFILE=vfopen ($structure_file, \"r\");\n    \n    print \"COMPND   1 CHAIN:\";\n    $last=pop(@c_chain);\n    foreach $c ( @c_chain){ print \" $c,\";}\n    if ( $last eq \" \"){print \" NULL;\\n\";}\n    else \n      {\n      print \" $last;\\n\";\n    }\n    @c_chain=(@c_chain, $last);\n    \n    print \"REMARK Output of the program extract_from_pdb (Version $VersionTag)\\n\";\n    print \"REMARK Legal PDB format not Guaranteed\\n\";\n    print \"REMARK This format is not meant to be used in place of the PDB format\\n\";\n    print \"REMARK The header refers to the original entry\\n\";\n    print \"REMARK The sequence from the original file has been taken in the field: $seq_field\\n\";\n    print \"REMARK extract_from_pdb, 2001, 2002, 2003, 2004, 2005 (c) CNRS and Cedric Notredame\\n\";   \n    if ( $coor_set)\n       {\n       print \"REMARK Partial chain: Start $start End $end\\n\";\n       }\n    if ( $is_nmr)\n       {\n       print \"REMARK NMR structure: MODEL $model\\n\";\n       }\n   \n    if ( $n_atom!=0)\n       {\n       print \"REMARK Contains Coordinates of: \";\n       foreach $a (@atom){print \"$a \";}\n       print \"\\n\";\n       }  \n    }\n\n\nwhile (<$INFILE>) \n    {\n    $line=$_;\n\n\n    if ($line =~ /^SEQRES/)\n       {      \n\n       @field=/(\\S*)\\s*/g;\n       \n       $c= substr($_,11,1);\n             \n       \n       \n       $l=$#field;\n       for ($a=0; $a<$#field ;)\n           {\n       if (!$onelett{$field[$a]}){splice @field, $a, 1;}\n         else {$a++;}\n    }\n   \n       if ( $c ne $in_chain)\n          {\n\n      $pdb_chain_list[$n_pdb_chains]=$c;\n      $pdb_chain_len [$n_pdb_chains]=$len;\n    $in_chain=$c;\n   $n_pdb_chains++;\n      }\n\n       for ( $a=0; $a<$#field;$a++){@{$complete_seq{$c}}->[$complete_seq_len{$c}++]=$field[$a];}  \n       }\n    elsif ( $line=~/^ATOM/ || ($line=~/^HETATM/ && &is_aa(substr($line,17,3))))\n       {\n\n        $AT_ID=substr($line,12,4);\n        \n  $RES_ID=&is_aa(substr($line,17,3));\n     \n        $CHAIN=substr($line,21,1);\n        $RES_NO=substr($line,22,4);\n   $TEMP=substr($line,60,6);\n        $TEMP=~s/\\s//g;\n\n        $AT_ID=~s/\\s//g;\n        $CHAIN=~s/\\s//g;\n        $RES_ID=~s/\\s//g;\n        $RES_NO=~s/\\s//g;\n\n\n     if ( $CHAIN eq \"\"){$CHAIN=\" \";}\n\n   \n    if ( $already_read2{$CHAIN}{$RES_ID}{$AT_ID}{$RES_NO}){next;}\n   else{$already_read2{$CHAIN}{$RES_ID}{$AT_ID}{$RES_NO}=1;}\n\n     \n    if ($coor_set && $numbering eq \"file\" && $AT_ID eq \"CA\")\n      {\n     \n          if ( $RES_NO<=$start){$real_start{$CHAIN}++;}\n       if ( $RES_NO<=$end){$real_end{$CHAIN}++;}\n   }\n elsif ($numbering eq \"absolute\")\n        {\n     $real_start{$CHAIN}=$start;\n       $real_end{$CHAIN}=$end;\n   }\n\n        $KEY=\"ALL\";\n        if ( $CHAIN ne $in_atom_chain)\n          {\n     \n        $pdb_atom_chain_list[$n_pdb_atom_chains]=$c;\n        $pdb_atom_chain_len [$n_pdb_atom_chains]=$len;\n      $in_atom_chain=$c;\n    $n_pdb_atom_chains++;\n       }\n \n    if ( $AT_ID eq \"CA\")\n           {\n         @{$atom_seq{$CHAIN}}->[$atom_seq_len{$CHAIN}++]=$RES_ID;;\n     }\n        }\n\n    }\nclose ($INFILE);\n\n\n\n\n\n\n$INFILE=vfopen ($structure_file, \"r\");\nforeach $c (@c_chain)\n     {\n\n if    ( $seq_field eq \"SEQRES\"){@pdb_seq=@{$complete_seq{$c}};}\n     elsif ( $seq_field eq \"ATOM\")  {@pdb_seq=@{$atom_seq{$c}};}\n   \n\n  $full_length=$l=$#pdb_seq+1;\n            \n    if ( $real_end{$c}==\"*\"){$real_end{$c}=$full_length;}\n   if ( $coor_set)\n    {     \n\n        if ( $real_end{$c} < $l){splice @pdb_seq, $real_end{$c}, $l;}\n         if ( $real_start{$c} < $l){splice @pdb_seq, 0, $real_start{$c}-1;}            \n    $l=$#pdb_seq;\n         }\n\n    elsif ( $delete_set)\n     {\n         splice @pdb_seq, $delete_start, $delete_end-$delete_start+1;\n    $l=$#pdb_seq;\n         }\n      \n    $new_fasta_name=\"$pdb_id$c\";\n    if ( $coor_set)\n    {\n         if ( $n_pdb_chains==0){$new_fasta_name=\"$new_fasta_name$c\";}\n        $new_fasta_name= $new_fasta_name.\"\\_$start\\_$end\";\n    }\n         \n if ( $MODE eq \"pdb\")\n         {\n         $nl=1;\n    $n=0;\n     \n    foreach $res ( @pdb_seq)\n       {\n         if ( !$n)\n          {\n            \n           printf \"SEQRES  %2d %1s %4d  \", $nl,$c, $l;\n             $nl++;\n          }\n       $res=~s/\\s//g;\n       \n          if ($code==1){ printf \"%3s \",$onelett{$res};}\n           elsif  ($code==3){ printf \"%3s \",$res};\n           \n          $n++;          \n       if ( $n==13){$n=0;print \"\\n\";}\n       }\n      if ( $n!=0){print \"\\n\"; $n=0;}\n       }\n elsif ( $MODE eq \"simple\")\n        {\n   print \"# SIMPLE_PDB_FORMAT\\n\";\n       if ( $new_fasta_name eq \" \"){$new_fasta_name=\"dummy_name\";}\n       print \">$new_fasta_name\\n\";\n    foreach $res ( @pdb_seq)\n        {\n         print \"$onelett{$res}\";\n         }\n     print \"\\n\";\n        }\n elsif ( $MODE eq \"fasta\")\n   {\n   $n=0;\n     print \">$new_fasta_name\\n\";\n    \n    foreach $res ( @pdb_seq)\n        {\n         print \"$onelett{$res}\";\n              $n++;\n            if ( $n==60){print \"\\n\"; $n=0;}\n            }\n     print \"\\n\"; \n       }\n       }\n\nif ( $MODE eq \"fasta\")\n  {\n     &vexit(EXIT_SUCCESS);\n  \n  }\n\n  \n  $charcount=0;\n  $inchain=\"BEGIN\";\n  $n=0;\n  while (<$INFILE>) \n    {\n    $line=$_;\n     \n    if ($line =~/^ATOM/  ||  ($line=~/^HETATM/))\n      {\n  $line_header=\"UNKNWN\";\n    $RES_ID=substr($line,17,3);\n \n    if ($line =~/^ATOM/)\n    {\n     $line_header=\"ATOM\";\n      $RES_ID=(&is_aa($RES_ID))?&is_aa($RES_ID):$RES_ID;\n      }\n elsif ($line=~/^HETATM/ && ($ligand_list {$RES_ID} ||$ligand_list {'ALL'} || !&is_aa($RES_ID)))\n       {\n     $line_header=\"HETATM\";\n        }\n elsif ($line=~/^HETATM/ && &is_aa($RES_ID))\n     {\n     $line_header=\"ATOM\";\n      $RES_ID=&is_aa($RES_ID);\n        }\n\n     $AT_ID=substr($line,12,4);\n  \n    $CHAIN=substr($line,21,1);\n  if ($CHAIN eq \" \"){$CHAIN=\" \";}\n     $RES_NO=substr($line,22,4);\n $X=substr($line,30,8);     \n $Y=substr($line,38,8);\n      $Z=substr($line,46,8);\n      $TEMP=substr($line,60,6);\n\n      if ( $already_read{$CHAIN}{$RES_ID}{$AT_ID}{$RES_NO}){next;}\n      else{$already_read{$CHAIN}{$RES_ID}{$AT_ID}{$RES_NO}=1;}\n      \n   \n\n      $X=~s/\\s//g;\n      $Y=~s/\\s//g;\n      $Z=~s/\\s//g;\n      $TEMP=~s/\\s//g;\n\n      $AT_ID=~s/\\s//g;\n      $CHAIN=~s/\\s//g;\n      $RES_ID=~s/\\s//g;\n      $RES_NO=~s/\\s//g;\n      \n      if ( $CHAIN eq \"\"){$CHAIN=\" \";}\n      $KEY=\"ALL\";\n\n      \n      if ( $RES_NO ==0){$start_at_zero=1;}\n\n      $RES_NO+=$start_at_zero;    \n\n      if ( $CHAIN eq \"\"){$CHAIN = \"A\";}\n      if ( $current_chain ne $CHAIN)\n         {\n   $current_chain=$CHAIN;\n      $pos=$current_residue=0;\n    $offset=($coor_set)?($real_start{$CHAIN}-1):0;\n      if    ( $seq_field eq \"SEQRES\"){@ref_seq=@{$complete_seq{$CHAIN}};}\n       elsif ( $seq_field eq \"ATOM\")  {@ref_seq=@{$atom_seq{$CHAIN}};}\n     }\n      \n      if ($current_residue != $RES_NO)\n         {\n   $current_residue=$RES_NO;\n   if    ( $seq_field eq \"SEQRES\"){$pos=$current_residue;}\n       elsif ( $seq_field eq \"ATOM\"){$pos++;}\n      }\n      \n      \n      if ($n_atom==0 || $atom_list{$AT_ID}==1 || $atom_list{$KEY}==1)\n      {    \n       \n    $do_it=(!@c_chain || $hc_chain{$CHAIN} ||$hc_chain{'LIGAND'} );\n     \n      $do_it= ($do_it==1) && ($coor_set==0 ||($pos>=$real_start{$CHAIN} && $pos<=$real_end{$CHAIN}));\n     $do_it= ($do_it==1) && ($delete_set==0 || $pos<$delete_start ||$pos>$delete_end );\n      if ($ligand==0 && $line_header eq \"HETATM\" ){$do_it=0;}\n       if ($ligand_only==1 && $line_header eq \"ATOM\" ){$do_it=0;}\n    if ($ligand==1 && $line_header eq \"HETATM\" && $ligand_list{$RES_ID}==0 && $ligand_list{\"ALL\"}==0){$do_it=0;} \n\n       \n      if ( $do_it)\n        {\n         $n++;\n           $out_pos=$pos;\n        \n          if ( $delete_set)\n              {\n             if ( $out_pos< $delete_start){;}\n              else {$offset=$delete_end-$delete_start;}\n           }       \n             \n          if ( $numbering_out eq \"new\"){$out_pos-=$offset;}\n             elsif ( $numbering_out eq \"old\"){$out_pos=$RES_NO;}\n           \n          #if ( $ref_seq[$pos-1] ne $RES_ID)\n            #      {$error=$error.\"\\nERROR: Position $out_pos, $ref_seq[$pos-1] in SEQ $RES_ID in STRUCTURE\" ;}\n       \n             \n          if ( $code==1){$RES_ID=$onelett{$RES_ID};}\n       \n             if ($unfold)\n          {\n           $unfolded_x+=5;\n             $X=$unfolded_x;\n             $Y=0;\n           $Z=0;\n           $float=1;\n           }\n         else\n            {\n           $float=3;\n           }\n\n             \n          if ( $MODE eq \"pdb\")\n             {\n         printf \"%-6s%5d%5s%4s%2s%4d    %8.3f%8.3f%8.3f  1.00 %6.2f\\n\",$line_header, $n, $AT_ID,$RES_ID,$CHAIN,$out_pos, $X, $Y, $Z,$TEMP;            \n          }\n\n            \n          elsif ( $MODE eq \"simple\")\n               {\n               if ( $RES_ID eq \"\"){$RES_ID=\"X\";}\n             printf \"%-6s %5s %s %2s %4d    %8.3f %8.3f %8.3f\\n\",$line_header, $AT_ID, $RES_ID,($CHAIN eq\"\" || $CHAIN eq \" \")?\"A\":$CHAIN,$out_pos, $X, $Y, $Z,$TEMP;\n            }\n       }\n          }\n      }\n    }\nprint \"\\n\";\nclose($INFILE);\n\n\nif ( $error ne \"\") \n   {$error=$error.\"\\nDiagnostic:    SEQRES and the residues in ATOM are probably Incompatible\\n\";\n    $error=$error.  \"Recomendation: Rerun with '-fix 1' in order to ignore the SEQRES sequences\\n\";\n   }\nif (!$nodiagnostic){print STDERR $error;}\nvexit ( EXIT_SUCCESS);\n\n\nsub is_pdb_file\n  {\n    my @arg=@_;\n\n    if ( !-e $arg[0]){return 0;}\n    \n    $F=vfopen ($arg[0], \"r\");\n    while ( <$F>)\n      {\n    if (/^HEADER/)\n    {\n     close $F;\n       return 1;\n     }   \n      }\n    return 0;\n  }\nsub get_pdb_id\n  {\n    my $header_file=@_[0];\n    my $id;\n    \n\n    $F=vfopen (\"$header_file\", \"r\");\n\n    while ( <$F>)\n      {\n \n    if ( /HEADER/)\n    {\n     $id=substr($_,62,4 );\n       return $id;\n   }\n      }\n    close ($F);\n    \n    return \"\";\n  }\n\nsub get_ligand_list\n  {\n    my $pdb_file=@_[0];\n    my $chain;\n    my $ligand;\n    my %complete_ligand_list;\n    \n\n    $F=vfopen ($pdb_file, \"r\");\n    while ( <$F>)\n      {\n    if ( /^HETATM/)\n   {\n     $line=$_;\n       $chain=substr($line,21,1);\n        $ligand=substr($line,17,3);\n       \n          if (!$complete_ligand_list{$chain}{$ligand})\n          {\n         \n          $complete_ligand_list{\"result\"}.=\"CHAIN $chain LIGAND $ligand\\n\";\n            $complete_ligand_list{$chain}{$ligand}=1;\n           }\n     }\n      }\n    close ($F);\n    return %complete_ligand_list;\n  }\n\nsub get_chain_list \n  {\n    my $header_file;\n    my @chain_list;\n    my @list;\n    my $n_chains;\n    my %chain_hasch;\n    my $pdb_file=@_[0];\n    my $c;\n    my %hasch;\n    my $chain;\n  \n    \n    $F=vfopen ($pdb_file, \"r\");\n    while ( <$F>)\n      {\n\n      #if ( /COMPND/ &&  /CHAIN\\:/)\n    #  {\n      #    if ( /NULL/){@list=(\" \");}\n #    else {@list=(/\\ (.{1})[,;]/g);}         \n      #    foreach $c (@list){if ( !$hasch{$c}){$hasch{$c}=1;push @chain_list, $c;}}\n    #  }\n\n    if (/SEQRES\\s+\\d+\\s+(\\S+)/)\n     {\n     $chain = substr($_,11,1);$chain=~s/\\s//g;if ( $chain eq \"\"){$chain=\" \";}\n    \n     \n          if ($chain && !$hasch{$chain}){$hasch{$chain}=1;push @chain_list, $chain;}\n      }\n if (/^ATOM/ || /^HETATM/)\n     {\n     $chain = substr($_,21,1); $chain=~s/\\s//g;if ( $chain eq \"\"){$chain=\" \";}\n          if ($chain && !$hasch{$chain}){$hasch{$chain}=1;push @chain_list, $chain;}\n      }\n      }\n    \n   \n    close ($F);\n    if (!@chain_list)\n      {\n    @chain_list=(\"A\");\n      }\n    return @chain_list;\n  }\n\nsub token_is_in_list\n  {\n   #token_is_in_list (token, list )\n   #returns 0 if not in list and otherwise the index of token in list\n\n    my @list=@_;\n    my $a;\n    \n    for ($a=1; $a<=$#list; $a++)\n      {\n   if ( $list[$a] eq $list[0]){return $a;}\n      }\n  }\n\nsub pdb_name2name_and_chain \n  {\n    my $pdb_file=@_[0];\n    my $pdb_file_in;\n    my @array;\n    my $chain;\n    my $c;\n\n    $pdb_file_in=$pdb_file;\n\n    $pdb_file=~/^(.{4})/;$pdb_id=$1;\n    @array=($pdb_file=~/([\\w])/g);\n  \n  \n    $chain=uc ($array[4]);\n    $chain=($chain eq \"\")?\"FIRST\":$chain;\n    \n    return ( $pdb_id, $chain);\n\n    if ( $#array==3){return ($pdb_id, \"FIRST\");}\n    elsif ( $#array<4){ return ($pdb_id, \"\");}\n    else {return ( $pdb_id, $chain);}\n      \n    \n    \n  }\n\nsub get_pdb_file \n  {\n    my $pdb_file_in=@_[0];\n    my $result;\n    my @letter;\n    my @chain;\n    \n    \n\n    $pdb_file=($pdb_file_in=~/\\S+_S_(\\S+)/)?$1:$pdb_file_in;\n   \n    if ($no_remote_pdb_dir==0)\n      {\n  $no_remote_pdb_dir=1;\n $result=get_pdb_file3 ($pdb_file);\n      $no_remote_pdb_dir=0;\n if ( $result){return $result;}\n      }\n    return get_pdb_file3 ($pdb_file);\n  }\n\nsub get_pdb_file3 \n  {\n    my $pdb_file_in=@_[0];\n    my $result;\n    my @letter;\n    my @chain;\n    my $lcfile;\n    my $ucfile;\n\n    \n    $lcfile=lc $pdb_file;\n    $ucfile=uc $pdb_file;\n\n    if ( ($result=get_pdb_file2 ($pdb_file))){return $result;}\n    \n\n    if ($lcfile ne $pdb_file && ($result=get_pdb_file2 ($lcfile))){return $result;}\n    if ($ucfile ne $pdb_file && ($result=get_pdb_file2 ($ucfile))){return $result;}\n    \n   \n    \n    return \"\";\n  }\nsub get_pdb_file2\n  {\n    my $pdb_file=@_[0];\n    my $return_value;\n    \n    $return_value=\"\";\n    \n    if ( ($result=get_pdb_file1 ($pdb_file))){$return_value=$result;}\n    elsif ( !($pdb_file=~/\\.pdb/) && !($pdb_file=~/\\.PDB/))\n      {\n      if ( ($result=get_pdb_file1 (\"$pdb_file.PDB\"))){$return_value=$result;}\n   elsif ( ($result=get_pdb_file1 (\"$pdb_file.pdb\"))){$return_value=$result;} \n      }\n    \n  \n\n    return $return_value;\n  }\n    \nsub get_pdb_file1 \n  { \n    my $pdb_file=@_[0];\n    my $tmp_pdb_file;    \n    my $return_value;\n\n    $local_pdb_file=\"$pdb_file\";\n    if ( $local_pdb_file eq \"\")\n      {\n   $tmp_pdb_file=vtmpnam();\n    open F, \">$tmp_pdb_file\";\n \n    while (<STDIN>){print F \"$_\";}\n  close (F);\n      \n    if (-e $tmp_pdb_file && &is_pdb_file ( $local_pdb_file))\n    {return $tmp_pdb_file;}\n      }\n    \n    $local_pdb_file=\"$pdb_file\";\n    &debug_print (\"\\nTry access local file: $local_pdb_file\");\n    \n    $local_pdb_file=&check_pdb_file4compression ($local_pdb_file);\n    if ( -e $local_pdb_file && (&is_pdb_file ($local_pdb_file) || $force_pdb))\n      {\n    &debug_print ( \"\\n\\tIs in Current Dir\");\n  $tmp_pdb_file=vtmpnam();\n    `cp $local_pdb_file $tmp_pdb_file`;\n     return $tmp_pdb_file;\n     }\n    else\n      {\n    &debug_print (\"\\n\\tFile Not in Current Dir\");\n      }\n    \n\n    $local_pdb_file=\"$pdb_dir$pdb_file\";\n    $local_pdb_file=&check_pdb_file4compression ( $local_pdb_file);\n    &debug_print (\"\\nTry access file From PDB_DIR: $pdb_dir$local_pdb_file\");\n    if ($pdb_dir && -e $local_pdb_file && &is_pdb_file ($local_pdb_file))\n      {\n &debug_print ( \"\\n\\tIs in Local PDB DIR\");\n      $tmp_pdb_file=vtmpnam();\n    `cp $local_pdb_file $tmp_pdb_file`;\n     return $tmp_pdb_file;\n      }\n    else\n      {&debug_print ( \"\\n\\tNot In Local Pdb Dir\");}\n       \n    if ($cache ne \"NO\" && $cache ne \"no\")\n      {\n\n  $local_pdb_file=\"$cache/$pdb_file\";\n   $local_pdb_file=&check_pdb_file4compression ( $local_pdb_file);\n &debug_print(\"\\nTry access file From Cache: $local_pdb_file\");\n     if (-e $local_pdb_file && &is_pdb_file ($local_pdb_file))\n   {\n     &debug_print ( \"\\n\\tIs in T-Coffee Cache\");\n     $tmp_pdb_file=vtmpnam();\n          `cp $local_pdb_file $tmp_pdb_file`;\n     return $tmp_pdb_file;\n     }\n else{&debug_print ( \"\\n\\tNot in Cache Dir\");}\n      }\n\n    if (!$no_remote_pdb_dir) \n      {\n      my $return_value=\"\";\n      \n    $tmp_pdb_file=vtmpnam();\n    $netcommand=$netaddress;\n    $netcommand=~s/%%/$pdb_file/g;\n    system ( \"wget -O$tmp_pdb_file.$netcompression -q '$netcommand'\");\n  &debug_print (\"\\nTry Remote Access for $pdb_file\");\n    $compressed_tmp_file_name=\"$tmp_pdb_file.$netcompression\";\n    \n    if ((stat($compressed_tmp_file_name))[7]>0 && $netcompression)\n    {\n     &debug_print (\"\\n\\tFile Found Remotely\");\n       system ( \"$netcompression_pg $compressed_tmp_file_name\");\n     $return_value=$tmp_pdb_file;\n   }\n  else\n        {\n     &debug_print (\"\\nFile Not Found Remotely\");\n      unlink $compressed_tmp_file_name;\n     }\n #Update cache if required\n   if ($cache ne \"no\" && $cache ne \"update\" && -e $return_value)\n       {\n     `cp $return_value $cache/$pdb_file.pdb`;\n    }\n return $return_value;\n      }    \n    return \"\";\n  }\n\nsub check_pdb_file4compression \n  {\n    my $file=@_[0];\n\n    if (($file=~/\\.Z/)) {$tmp=&vtmpnam();`cp $file $tmp.Z`;`rm $tmp`;`uncompress $tmp.Z`;return $tmp;}\n    if (($file=~/\\.gz/)){$tmp=&vtmpnam();`cp $file $tmp.gz`;`gunzip $tmp.gz`;return $tmp;}\n    \n    if ( -e $file ) {return $file;}\n    \n\n    if ( -e \"$file.gz\"){$tmp=&vtmpnam(); `cp $file.gz $tmp.gz`;`gunzip     $tmp.gz`;return $tmp;}    \n    if ( -e \"$file.Z\") {$tmp=&vtmpnam(); `cp $file.Z  $tmp.gz`;`uncompress $tmp.gz`;return $tmp;}\n    \n  \n\n    return $file;\n  }\n\nsub vtmpnam\n  {\n    my $tmp_file_name;\n    $tmp_name_counter++;\n    $tmp_file_name=\"tmp_file_for_extract_from_pdb$$.$tmp_name_counter\";\n    $tmp_file_list[$ntmp_file++]=$tmp_file_name;\n    if ( -e $tmp_file_name) {return &vtmpnam ();}\n    else {return $tmp_file_name;}\n  }\n\n\n    \n\n\n\nsub vexit\n  {\n    my $exit_status=@_[0];\n    \n    &clean(@tmp_file_list);\n    exit ( $exit_status);\n  }\n\nsub clean\n  {\n  my @fl=@_;\n  my $file;\n  \n\n   if ( $debug){print \"remove $#fl files\\n\";}\n\n  foreach $file ( @fl)\n    {\n      if (-e $file)\n {\n     if ( $debug){print STDERR \"\\n$file [NOT DELETED]\";}\n    else{unlink ($file);} \n    }\n    }\n}\nsub vfopen \n  {\n    my $file=@_[0];\n    my $mode=@_[1];\n    my $tmp;\n    my $F = new FileHandle;\n    \n    \n    $tmp=$file;\n     \n    \n    if ( $mode eq \"r\" && !-e $file){ die \"Cannot open file $file [FATAL: EXTRACT_FROM_PDB]\\n\";}\n    elsif ($mode eq \"w\"){$tmp=\">$file\";}\n    elsif ($mode eq \"a\"){$tmp=\">>$file\";}\n    \n    \n    open ($F,$tmp);\n    return $F;\n  }\nsub debug_print\n  {\n    my $message =@_[0];\n    if ($debug){print STDERR \"$message [DEBUG:extract_from_pdb]\";}\n    return;\n    }\nsub is_aa \n  {\n    my $aa=@_[0];\n    my $one;\n    my $trhee;\n    \n    if ( $onelett{$aa} eq 'X' || !$onelett{$aa} ){return '';}\n    else\n      {\n    $one=$onelett{$aa};\n   $three=$threelett{$one};\n    return $three;\n      }\n  }\n    \nsub fill_threelett\n  {\n  my %threelett;\n\n  %threelett=(\n'A', 'ALA',\n'C', 'CYS',\n'D', 'ASP',\n'E', 'GLU',\n'F', 'PHE',\n'G', 'GLY',\n'H', 'HIS',\n'I', 'ILE',\n'K', 'LYS',\n'L', 'LEU',\n'N', 'ASN',\n'M', 'MET',\n'P', 'PRO',\n'Q', 'GLN',\n'R', 'ARG',\n'S', 'SER',\n'T', 'THR',\n'V', 'VAL',\n'W', 'TRP',\n'Y', 'TYR',\n);\n\nreturn %threelett;\n\n\n}\n\nsub fill_onelett\n  {\n    my %onelett;\n    \n    %onelett=(\n\n'10A', 'X',\n'11O', 'X',\n'12A', 'X',\n'13P', 'X',\n'13R', 'X',\n'13S', 'X',\n'14W', 'X',\n'15P', 'X',\n'16A', 'X',\n'16G', 'X',\n'1AN', 'X',\n'1AP', 'X',\n'1AR', 'X',\n'1BH', 'X',\n'1BO', 'X',\n'1C5', 'X',\n'1CU', 'X',\n'1DA', 'X',\n'1GL', 'X',\n'1GN', 'X',\n'1IN', 'X',\n'1LU', 'L',\n'1MA', 'X',\n'1MC', 'X',\n'1MG', 'X',\n'1MZ', 'X',\n'1NA', 'X',\n'1NB', 'X',\n'1NI', 'X',\n'1PA', 'A',\n'1PC', 'X',\n'1PE', 'X',\n'1PG', 'X',\n'1PI', 'A',\n'1PM', 'X',\n'1PN', 'X',\n'1PU', 'X',\n'1PY', 'X',\n'1UN', 'X',\n'24T', 'X',\n'25T', 'X',\n'26P', 'X',\n'2AB', 'X',\n'2AM', 'X',\n'2AN', 'X',\n'2AP', 'X',\n'2AR', 'X',\n'2AS', 'D',\n'2BL', 'X',\n'2BM', 'X',\n'2CP', 'X',\n'2DA', 'X',\n'2DG', 'X',\n'2DP', 'X',\n'2DT', 'X',\n'2EP', 'X',\n'2EZ', 'X',\n'2FG', 'X',\n'2FL', 'X',\n'2FP', 'X',\n'2FU', 'X',\n'2GL', 'X',\n'2GP', 'X',\n'2HP', 'X',\n'2IB', 'X',\n'2IP', 'X',\n'2LU', 'L',\n'2MA', 'X',\n'2MD', 'X',\n'2ME', 'X',\n'2MG', 'X',\n'2ML', 'L',\n'2MO', 'X',\n'2MR', 'R',\n'2MU', 'X',\n'2MZ', 'X',\n'2NO', 'X',\n'2NP', 'X',\n'2OG', 'X',\n'2PA', 'X',\n'2PC', 'X',\n'2PE', 'X',\n'2PG', 'X',\n'2PH', 'X',\n'2PI', 'X',\n'2PL', 'X',\n'2PP', 'X',\n'2PU', 'X',\n'2SI', 'X',\n'2TB', 'X',\n'34C', 'X',\n'35G', 'X',\n'3AA', 'X',\n'3AD', 'X',\n'3AH', 'H',\n'3AN', 'X',\n'3AP', 'X',\n'3AT', 'X',\n'3BT', 'X',\n'3CH', 'X',\n'3CN', 'X',\n'3CO', 'X',\n'3CP', 'X',\n'3DR', 'X',\n'3EP', 'X',\n'3FM', 'X',\n'3GA', 'X',\n'3GP', 'X',\n'3HB', 'X',\n'3HC', 'X',\n'3HP', 'X',\n'3IB', 'X',\n'3ID', 'X',\n'3IN', 'X',\n'3MA', 'X',\n'3MB', 'X',\n'3MC', 'X',\n'3MD', 'D',\n'3MF', 'X',\n'3MP', 'X',\n'3MT', 'X',\n'3OL', 'X',\n'3PA', 'X',\n'3PG', 'X',\n'3PO', 'X',\n'3PP', 'X',\n'3PY', 'X',\n'49A', 'X',\n'4AB', 'X',\n'4AM', 'X',\n'4AN', 'X',\n'4AP', 'X',\n'4BA', 'X',\n'4BT', 'X',\n'4CA', 'X',\n'4CO', 'X',\n'4HP', 'X',\n'4IP', 'X',\n'4MO', 'X',\n'4MV', 'X',\n'4MZ', 'X',\n'4NC', 'X',\n'4NP', 'X',\n'4OX', 'X',\n'4PB', 'X',\n'4PN', 'X',\n'4PP', 'X',\n'4SC', 'X',\n'4SU', 'X',\n'4TB', 'X',\n'55C', 'X',\n'5AD', 'X',\n'5AN', 'X',\n'5AT', 'X',\n'5CM', 'X',\n'5GP', 'X',\n'5HP', 'E',\n'5HT', 'X',\n'5IT', 'X',\n'5IU', 'X',\n'5MB', 'X',\n'5MC', 'X',\n'5MD', 'X',\n'5MP', 'X',\n'5MU', 'X',\n'5NC', 'X',\n'5OB', 'X',\n'5PA', 'X',\n'5PV', 'X',\n'6AB', 'X',\n'6CT', 'X',\n'6HA', 'X',\n'6HC', 'X',\n'6HG', 'X',\n'6HT', 'X',\n'6IN', 'X',\n'6MO', 'X',\n'6MP', 'X',\n'6PG', 'X',\n'6WO', 'X',\n'70U', 'X',\n'7DG', 'X',\n'7HP', 'X',\n'7I2', 'X',\n'7MG', 'X',\n'7MQ', 'X',\n'7NI', 'X',\n'87Y', 'X',\n'8AD', 'X',\n'8BR', 'X',\n'8IG', 'X',\n'8IN', 'X',\n'8OG', 'X',\n'95A', 'X',\n'9AD', 'X',\n'9AM', 'X',\n'9AP', 'X',\n'9DG', 'X',\n'9DI', 'X',\n'9HX', 'X',\n'9OH', 'X',\n'9TA', 'X',\n'A12', 'X',\n'A15', 'X',\n'A23', 'X',\n'A24', 'X',\n'A26', 'X',\n'A2G', 'X',\n'A2P', 'X',\n'A32', 'X',\n'A3P', 'X',\n'A4P', 'X',\n'A5P', 'X',\n'A70', 'X',\n'A76', 'X',\n'A77', 'X',\n'A78', 'X',\n'A79', 'X',\n'A80', 'X',\n'A85', 'X',\n'A88', 'X',\n'A9A', 'X',\n'AA3', 'X',\n'AA4', 'X',\n'AA6', 'X',\n'AAA', 'X',\n'AAB', 'X',\n'AAC', 'X',\n'AAE', 'X',\n'AAG', 'R',\n'AAH', 'X',\n'AAM', 'X',\n'AAN', 'X',\n'AAP', 'X',\n'AAR', 'R',\n'AAS', 'X',\n'AAT', 'X',\n'ABA', 'X',\n'ABC', 'X',\n'ABD', 'X',\n'ABE', 'X',\n'ABH', 'X',\n'ABI', 'X',\n'ABK', 'X',\n'ABM', 'X',\n'ABN', 'X',\n'ABP', 'X',\n'ABR', 'X',\n'ABS', 'X',\n'ABU', 'X',\n'AC1', 'X',\n'AC2', 'X',\n'ACA', 'X',\n'ACB', 'D',\n'ACC', 'C',\n'ACD', 'X',\n'ACE', 'X',\n'ACH', 'X',\n'ACI', 'X',\n'ACL', 'R',\n'ACM', 'X',\n'ACN', 'X',\n'ACO', 'X',\n'ACP', 'X',\n'ACQ', 'X',\n'ACR', 'X',\n'ACS', 'X',\n'ACT', 'X',\n'ACV', 'V',\n'ACX', 'X',\n'ACY', 'X',\n'AD2', 'X',\n'AD3', 'X',\n'ADC', 'X',\n'ADD', 'X',\n'ADE', 'X',\n'ADH', 'X',\n'ADI', 'X',\n'ADM', 'X',\n'ADN', 'X',\n'ADP', 'X',\n'ADQ', 'X',\n'ADR', 'X',\n'ADS', 'X',\n'ADT', 'X',\n'ADU', 'X',\n'ADW', 'X',\n'ADX', 'X',\n'AE2', 'X',\n'AEA', 'X',\n'AEB', 'X',\n'AEI', 'D',\n'AEN', 'X',\n'AET', 'T',\n'AF1', 'X',\n'AF3', 'X',\n'AFA', 'D',\n'AFP', 'X',\n'AG7', 'X',\n'AGB', 'X',\n'AGF', 'X',\n'AGL', 'X',\n'AGM', 'R',\n'AGN', 'X',\n'AGP', 'X',\n'AGS', 'X',\n'AGU', 'X',\n'AH0', 'X',\n'AH1', 'X',\n'AHA', 'X',\n'AHB', 'D',\n'AHC', 'X',\n'AHF', 'X',\n'AHG', 'X',\n'AHH', 'X',\n'AHM', 'X',\n'AHO', 'X',\n'AHP', 'X',\n'AHS', 'X',\n'AHT', 'Y',\n'AHU', 'X',\n'AHX', 'X',\n'AI1', 'X',\n'AI2', 'X',\n'AIB', 'X',\n'AIC', 'X',\n'AIM', 'X',\n'AIP', 'X',\n'AIQ', 'X',\n'AIR', 'X',\n'AJ3', 'X',\n'AKB', 'X',\n'AKG', 'X',\n'AKR', 'X',\n'AL1', 'X',\n'AL2', 'X',\n'AL3', 'X',\n'AL4', 'X',\n'AL5', 'X',\n'AL6', 'X',\n'AL7', 'X',\n'AL8', 'X',\n'AL9', 'X',\n'ALA', 'A',\n'ALB', 'X',\n'ALC', 'X',\n'ALD', 'L',\n'ALE', 'X',\n'ALF', 'X',\n'ALG', 'X',\n'ALL', 'X',\n'ALM', 'A',\n'ALN', 'A',\n'ALO', 'T',\n'ALP', 'X',\n'ALQ', 'X',\n'ALR', 'X',\n'ALS', 'X',\n'ALT', 'A',\n'ALY', 'K',\n'ALZ', 'X',\n'AMA', 'X',\n'AMB', 'X',\n'AMC', 'X',\n'AMD', 'X',\n'AMG', 'X',\n'AMH', 'X',\n'AMI', 'X',\n'AML', 'X',\n'AMN', 'X',\n'AMO', 'X',\n'AMP', 'X',\n'AMQ', 'X',\n'AMR', 'X',\n'AMS', 'X',\n'AMT', 'X',\n'AMU', 'X',\n'AMW', 'X',\n'AMX', 'X',\n'AMY', 'X',\n'ANA', 'X',\n'ANB', 'X',\n'ANC', 'X',\n'AND', 'X',\n'ANE', 'X',\n'ANI', 'X',\n'ANL', 'X',\n'ANO', 'X',\n'ANP', 'X',\n'ANS', 'X',\n'ANT', 'X',\n'AOE', 'X',\n'AOP', 'X',\n'AP1', 'X',\n'AP2', 'X',\n'AP3', 'X',\n'AP4', 'X',\n'AP5', 'X',\n'AP6', 'X',\n'APA', 'X',\n'APB', 'X',\n'APC', 'X',\n'APE', 'F',\n'APF', 'X',\n'APG', 'X',\n'APH', 'A',\n'API', 'X',\n'APL', 'X',\n'APM', 'X',\n'APN', 'G',\n'APP', 'X',\n'APQ', 'X',\n'APR', 'X',\n'APS', 'X',\n'APT', 'X',\n'APU', 'X',\n'APX', 'X',\n'APY', 'X',\n'APZ', 'X',\n'AQS', 'X',\n'AR1', 'X',\n'AR2', 'X',\n'ARA', 'X',\n'ARB', 'X',\n'ARC', 'X',\n'ARD', 'X',\n'ARG', 'R',\n'ARH', 'X',\n'ARI', 'X',\n'ARM', 'R',\n'ARN', 'X',\n'ARO', 'R',\n'ARP', 'X',\n'ARQ', 'X',\n'ARS', 'X',\n'AS1', 'R',\n'AS2', 'X',\n'ASA', 'D',\n'ASB', 'D',\n'ASC', 'X',\n'ASD', 'X',\n'ASE', 'X',\n'ASF', 'X',\n'ASI', 'X',\n'ASK', 'D',\n'ASL', 'X',\n'ASM', 'N',\n'ASO', 'X',\n'ASP', 'D',\n'ASQ', 'X',\n'ASU', 'X',\n'ATA', 'X',\n'ATC', 'X',\n'ATD', 'X',\n'ATF', 'X',\n'ATG', 'X',\n'ATH', 'X',\n'ATM', 'X',\n'ATO', 'X',\n'ATP', 'X',\n'ATQ', 'X',\n'ATR', 'X',\n'ATT', 'X',\n'ATY', 'X',\n'ATZ', 'X',\n'AUC', 'X',\n'AUR', 'X',\n'AVG', 'X',\n'AXP', 'X',\n'AYA', 'A',\n'AZ2', 'X',\n'AZA', 'X',\n'AZC', 'X',\n'AZD', 'X',\n'AZE', 'X',\n'AZI', 'X',\n'AZL', 'X',\n'AZM', 'X',\n'AZR', 'X',\n'AZT', 'X',\n'B12', 'X',\n'B1F', 'F',\n'B2A', 'A',\n'B2F', 'F',\n'B2I', 'I',\n'B2V', 'V',\n'B3I', 'X',\n'B3P', 'X',\n'B7G', 'X',\n'B96', 'X',\n'B9A', 'X',\n'BA1', 'X',\n'BAA', 'X',\n'BAB', 'X',\n'BAC', 'X',\n'BAF', 'X',\n'BAH', 'X',\n'BAI', 'X',\n'BAK', 'X',\n'BAL', 'A',\n'BAM', 'X',\n'BAO', 'X',\n'BAP', 'X',\n'BAR', 'X',\n'BAS', 'X',\n'BAT', 'F',\n'BAY', 'X',\n'BAZ', 'X',\n'BB1', 'X',\n'BB2', 'X',\n'BBA', 'X',\n'BBH', 'X',\n'BBS', 'X',\n'BBT', 'X',\n'BBZ', 'X',\n'BCA', 'X',\n'BCB', 'X',\n'BCC', 'X',\n'BCD', 'X',\n'BCL', 'X',\n'BCN', 'X',\n'BCR', 'X',\n'BCS', 'C',\n'BCT', 'X',\n'BCY', 'X',\n'BCZ', 'X',\n'BDA', 'X',\n'BDG', 'X',\n'BDK', 'X',\n'BDM', 'X',\n'BDN', 'X',\n'BDS', 'X',\n'BE1', 'X',\n'BE2', 'X',\n'BEA', 'X',\n'BEF', 'X',\n'BEN', 'X',\n'BEO', 'X',\n'BEP', 'X',\n'BER', 'X',\n'BES', 'X',\n'BET', 'X',\n'BEZ', 'X',\n'BF2', 'X',\n'BFA', 'X',\n'BFD', 'X',\n'BFP', 'X',\n'BFS', 'X',\n'BFU', 'X',\n'BG6', 'X',\n'BGF', 'X',\n'BGG', 'X',\n'BGL', 'X',\n'BGN', 'X',\n'BGP', 'X',\n'BGX', 'X',\n'BH4', 'X',\n'BHA', 'X',\n'BHC', 'X',\n'BHD', 'D',\n'BHO', 'X',\n'BHS', 'X',\n'BIC', 'X',\n'BIN', 'X',\n'BIO', 'X',\n'BIP', 'X',\n'BIS', 'X',\n'BIZ', 'X',\n'BJH', 'X',\n'BJI', 'X',\n'BJP', 'X',\n'BLA', 'X',\n'BLB', 'X',\n'BLE', 'L',\n'BLG', 'P',\n'BLI', 'X',\n'BLM', 'X',\n'BLV', 'X',\n'BLY', 'K',\n'BM1', 'X',\n'BM2', 'X',\n'BM5', 'X',\n'BM9', 'X',\n'BMA', 'X',\n'BMD', 'X',\n'BME', 'X',\n'BMP', 'X',\n'BMQ', 'X',\n'BMS', 'X',\n'BMT', 'T',\n'BMU', 'X',\n'BMY', 'X',\n'BMZ', 'X',\n'BNA', 'X',\n'BNG', 'X',\n'BNI', 'X',\n'BNN', 'F',\n'BNO', 'L',\n'BNS', 'X',\n'BNZ', 'X',\n'BO3', 'X',\n'BO4', 'X',\n'BOC', 'X',\n'BOG', 'X',\n'BOM', 'X',\n'BOT', 'X',\n'BOX', 'X',\n'BOZ', 'X',\n'BPA', 'X',\n'BPB', 'X',\n'BPD', 'X',\n'BPG', 'X',\n'BPH', 'X',\n'BPI', 'X',\n'BPJ', 'X',\n'BPM', 'X',\n'BPN', 'X',\n'BPO', 'X',\n'BPP', 'X',\n'BPT', 'X',\n'BPY', 'X',\n'BRB', 'X',\n'BRC', 'X',\n'BRE', 'X',\n'BRI', 'X',\n'BRL', 'X',\n'BRM', 'X',\n'BRN', 'X',\n'BRO', 'X',\n'BRS', 'X',\n'BRU', 'X',\n'BRZ', 'X',\n'BSB', 'X',\n'BSI', 'X',\n'BSP', 'X',\n'BT1', 'X',\n'BT2', 'X',\n'BT3', 'X',\n'BTA', 'L',\n'BTB', 'X',\n'BTC', 'C',\n'BTD', 'X',\n'BTN', 'X',\n'BTP', 'X',\n'BTR', 'W',\n'BU1', 'X',\n'BUA', 'X',\n'BUB', 'X',\n'BUC', 'X',\n'BUG', 'X',\n'BUL', 'X',\n'BUM', 'X',\n'BUQ', 'X',\n'BUT', 'X',\n'BVD', 'X',\n'BX3', 'X',\n'BYS', 'X',\n'BZ1', 'X',\n'BZA', 'X',\n'BZB', 'X',\n'BZC', 'X',\n'BZD', 'X',\n'BZF', 'X',\n'BZI', 'X',\n'BZM', 'X',\n'BZO', 'X',\n'BZP', 'X',\n'BZQ', 'X',\n'BZS', 'X',\n'BZT', 'X',\n'C02', 'X',\n'C11', 'X',\n'C1O', 'X',\n'C20', 'X',\n'C24', 'X',\n'C2F', 'X',\n'C2O', 'X',\n'C2P', 'X',\n'C3M', 'X',\n'C3P', 'X',\n'C3X', 'X',\n'C48', 'X',\n'C4M', 'X',\n'C4X', 'X',\n'C5C', 'X',\n'C5M', 'X',\n'C5P', 'X',\n'C5X', 'X',\n'C60', 'X',\n'C6C', 'X',\n'C6M', 'X',\n'C78', 'X',\n'C8E', 'X',\n'CA3', 'X',\n'CA5', 'X',\n'CAA', 'X',\n'CAB', 'X',\n'CAC', 'X',\n'CAD', 'X',\n'CAF', 'C',\n'CAG', 'X',\n'CAH', 'X',\n'CAL', 'X',\n'CAM', 'X',\n'CAN', 'X',\n'CAO', 'X',\n'CAP', 'X',\n'CAQ', 'X',\n'CAR', 'X',\n'CAS', 'C',\n'CAT', 'X',\n'CAV', 'X',\n'CAY', 'C',\n'CAZ', 'X',\n'CB3', 'X',\n'CB4', 'X',\n'CBA', 'X',\n'CBD', 'X',\n'CBG', 'X',\n'CBI', 'X',\n'CBL', 'X',\n'CBM', 'X',\n'CBN', 'X',\n'CBO', 'X',\n'CBP', 'X',\n'CBS', 'X',\n'CBX', 'X',\n'CBZ', 'X',\n'CC0', 'X',\n'CC1', 'X',\n'CCC', 'X',\n'CCH', 'X',\n'CCI', 'X',\n'CCM', 'X',\n'CCN', 'X',\n'CCO', 'X',\n'CCP', 'X',\n'CCR', 'X',\n'CCS', 'C',\n'CCV', 'X',\n'CCY', 'X',\n'CD1', 'X',\n'CDC', 'X',\n'CDE', 'X',\n'CDF', 'X',\n'CDI', 'X',\n'CDL', 'X',\n'CDM', 'X',\n'CDP', 'X',\n'CDR', 'X',\n'CDU', 'X',\n'CE1', 'X',\n'CEA', 'C',\n'CEB', 'X',\n'CEC', 'X',\n'CED', 'X',\n'CEF', 'X',\n'CEH', 'X',\n'CEM', 'X',\n'CEO', 'X',\n'CEP', 'X',\n'CEQ', 'X',\n'CER', 'X',\n'CES', 'G',\n'CET', 'X',\n'CFC', 'X',\n'CFF', 'X',\n'CFM', 'X',\n'CFO', 'X',\n'CFP', 'X',\n'CFS', 'X',\n'CFX', 'X',\n'CGN', 'X',\n'CGP', 'X',\n'CGS', 'X',\n'CGU', 'E',\n'CH2', 'X',\n'CH3', 'X',\n'CHA', 'X',\n'CHB', 'X',\n'CHD', 'X',\n'CHF', 'X',\n'CHG', 'G',\n'CHI', 'X',\n'CHN', 'X',\n'CHO', 'X',\n'CHP', 'G',\n'CHR', 'X',\n'CHS', 'F',\n'CHT', 'X',\n'CHX', 'X',\n'CIC', 'X',\n'CIN', 'X',\n'CIP', 'X',\n'CIR', 'X',\n'CIT', 'X',\n'CIU', 'X',\n'CKI', 'X',\n'CL1', 'X',\n'CL2', 'X',\n'CLA', 'X',\n'CLB', 'A',\n'CLC', 'S',\n'CLD', 'A',\n'CLE', 'L',\n'CLF', 'X',\n'CLK', 'S',\n'CLL', 'X',\n'CLM', 'X',\n'CLN', 'X',\n'CLO', 'X',\n'CLP', 'X',\n'CLQ', 'X',\n'CLR', 'X',\n'CLS', 'X',\n'CLT', 'X',\n'CLX', 'X',\n'CLY', 'X',\n'CMA', 'R',\n'CMC', 'X',\n'CMD', 'X',\n'CME', 'C',\n'CMG', 'X',\n'CMK', 'X',\n'CMN', 'X',\n'CMO', 'X',\n'CMP', 'X',\n'CMR', 'X',\n'CMS', 'X',\n'CMT', 'C',\n'CMX', 'X',\n'CNA', 'X',\n'CNC', 'X',\n'CND', 'X',\n'CNH', 'X',\n'CNM', 'X',\n'CNN', 'X',\n'CNO', 'X',\n'CNP', 'X',\n'CO2', 'X',\n'CO3', 'X',\n'CO5', 'X',\n'CO8', 'X',\n'COA', 'X',\n'COB', 'X',\n'COC', 'X',\n'COD', 'X',\n'COE', 'X',\n'COF', 'X',\n'COH', 'X',\n'COI', 'X',\n'COJ', 'X',\n'COL', 'X',\n'COM', 'X',\n'CON', 'X',\n'COP', 'X',\n'COR', 'X',\n'COS', 'X',\n'COT', 'X',\n'COY', 'X',\n'CP1', 'G',\n'CP2', 'X',\n'CP4', 'X',\n'CPA', 'X',\n'CPB', 'X',\n'CPC', 'X',\n'CPD', 'X',\n'CPG', 'X',\n'CPH', 'X',\n'CPI', 'X',\n'CPM', 'X',\n'CPN', 'G',\n'CPO', 'X',\n'CPP', 'X',\n'CPQ', 'X',\n'CPR', 'X',\n'CPS', 'X',\n'CPT', 'X',\n'CPU', 'X',\n'CPV', 'X',\n'CPY', 'X',\n'CR1', 'X',\n'CR6', 'X',\n'CRA', 'X',\n'CRB', 'X',\n'CRC', 'X',\n'CRG', 'X',\n'CRH', 'X',\n'CRO', 'T',\n'CRP', 'X',\n'CRQ', 'X',\n'CRS', 'X',\n'CRT', 'X',\n'CRY', 'X',\n'CSA', 'C',\n'CSB', 'X',\n'CSD', 'C',\n'CSE', 'C',\n'CSH', 'X',\n'CSI', 'X',\n'CSN', 'X',\n'CSO', 'C',\n'CSP', 'C',\n'CSR', 'C',\n'CSS', 'C',\n'CST', 'X',\n'CSW', 'C',\n'CSX', 'C',\n'CSY', 'X',\n'CSZ', 'C',\n'CT3', 'X',\n'CTA', 'X',\n'CTB', 'X',\n'CTC', 'X',\n'CTD', 'X',\n'CTH', 'T',\n'CTO', 'X',\n'CTP', 'X',\n'CTR', 'X',\n'CTS', 'X',\n'CTT', 'X',\n'CTY', 'X',\n'CTZ', 'X',\n'CU1', 'X',\n'CUA', 'X',\n'CUC', 'X',\n'CUL', 'X',\n'CUO', 'X',\n'CUZ', 'X',\n'CVI', 'X',\n'CXF', 'X',\n'CXL', 'X',\n'CXM', 'M',\n'CXN', 'X',\n'CXP', 'X',\n'CXS', 'X',\n'CY1', 'C',\n'CY3', 'X',\n'CYB', 'X',\n'CYC', 'X',\n'CYF', 'C',\n'CYG', 'C',\n'CYH', 'X',\n'CYL', 'X',\n'CYM', 'C',\n'CYN', 'X',\n'CYO', 'X',\n'CYP', 'X',\n'CYQ', 'C',\n'CYS', 'C',\n'CYU', 'X',\n'CYY', 'X',\n'CYZ', 'X',\n'CZH', 'X',\n'CZZ', 'C',\n'D12', 'X',\n'D13', 'X',\n'D16', 'X',\n'D18', 'X',\n'D19', 'X',\n'D1P', 'X',\n'D24', 'X',\n'D34', 'X',\n'D35', 'X',\n'D4D', 'X',\n'D4T', 'X',\n'D6G', 'X',\n'DA2', 'R',\n'DA3', 'X',\n'DA6', 'X',\n'DA7', 'X',\n'DAA', 'X',\n'DAB', 'X',\n'DAC', 'X',\n'DAD', 'X',\n'DAE', 'X',\n'DAF', 'X',\n'DAG', 'X',\n'DAH', 'A',\n'DAJ', 'X',\n'DAK', 'X',\n'DAL', 'A',\n'DAM', 'A',\n'DAN', 'X',\n'DAO', 'X',\n'DAP', 'X',\n'DAQ', 'X',\n'DAR', 'R',\n'DAS', 'D',\n'DAT', 'X',\n'DAU', 'X',\n'DAV', 'X',\n'DBA', 'X',\n'DBD', 'X',\n'DBF', 'X',\n'DBG', 'X',\n'DBI', 'X',\n'DBV', 'X',\n'DBY', 'Y',\n'DCA', 'X',\n'DCB', 'X',\n'DCE', 'X',\n'DCF', 'X',\n'DCG', 'X',\n'DCH', 'X',\n'DCI', 'I',\n'DCL', 'X',\n'DCM', 'X',\n'DCP', 'X',\n'DCS', 'X',\n'DCT', 'X',\n'DCY', 'C',\n'DCZ', 'X',\n'DDA', 'X',\n'DDB', 'X',\n'DDC', 'X',\n'DDF', 'X',\n'DDG', 'X',\n'DDH', 'X',\n'DDL', 'X',\n'DDM', 'X',\n'DDO', 'L',\n'DDP', 'X',\n'DDQ', 'X',\n'DDT', 'Y',\n'DDU', 'X',\n'DEA', 'X',\n'DEB', 'X',\n'DEC', 'X',\n'DEF', 'X',\n'DEL', 'X',\n'DEM', 'X',\n'DEN', 'X',\n'DEP', 'X',\n'DEQ', 'X',\n'DES', 'X',\n'DET', 'X',\n'DFC', 'X',\n'DFG', 'X',\n'DFI', 'X',\n'DFL', 'X',\n'DFO', 'X',\n'DFP', 'X',\n'DFR', 'X',\n'DFT', 'X',\n'DFV', 'X',\n'DFX', 'X',\n'DG2', 'X',\n'DG3', 'X',\n'DG6', 'X',\n'DGA', 'X',\n'DGD', 'X',\n'DGG', 'X',\n'DGL', 'E',\n'DGN', 'Q',\n'DGP', 'X',\n'DGT', 'X',\n'DGX', 'X',\n'DH2', 'X',\n'DHA', 'A',\n'DHB', 'X',\n'DHC', 'X',\n'DHD', 'X',\n'DHE', 'X',\n'DHF', 'X',\n'DHG', 'X',\n'DHI', 'H',\n'DHL', 'X',\n'DHM', 'X',\n'DHN', 'V',\n'DHP', 'X',\n'DHQ', 'X',\n'DHR', 'X',\n'DHS', 'X',\n'DHT', 'X',\n'DHU', 'X',\n'DHY', 'X',\n'DHZ', 'X',\n'DI2', 'X',\n'DI3', 'G',\n'DI4', 'X',\n'DI5', 'X',\n'DIA', 'X',\n'DIC', 'X',\n'DIF', 'X',\n'DIG', 'X',\n'DII', 'X',\n'DIL', 'I',\n'DIM', 'X',\n'DIO', 'X',\n'DIP', 'X',\n'DIQ', 'X',\n'DIS', 'X',\n'DIT', 'X',\n'DIV', 'V',\n'DIX', 'X',\n'DIY', 'X',\n'DKA', 'X',\n'DLA', 'X',\n'DLE', 'L',\n'DLF', 'X',\n'DLS', 'K',\n'DLY', 'K',\n'DM1', 'X',\n'DM2', 'X',\n'DM3', 'X',\n'DM4', 'X',\n'DM5', 'X',\n'DM6', 'X',\n'DM7', 'X',\n'DM8', 'X',\n'DM9', 'X',\n'DMA', 'X',\n'DMB', 'X',\n'DMC', 'X',\n'DMD', 'X',\n'DME', 'X',\n'DMF', 'X',\n'DMG', 'G',\n'DMH', 'N',\n'DMI', 'X',\n'DMJ', 'X',\n'DML', 'X',\n'DMM', 'X',\n'DMN', 'X',\n'DMO', 'X',\n'DMP', 'X',\n'DMQ', 'X',\n'DMR', 'X',\n'DMS', 'X',\n'DMT', 'X',\n'DMV', 'X',\n'DMY', 'X',\n'DNC', 'X',\n'DND', 'X',\n'DNH', 'X',\n'DNJ', 'X',\n'DNN', 'X',\n'DNP', 'X',\n'DNQ', 'X',\n'DNR', 'X',\n'DO2', 'X',\n'DO3', 'X',\n'DOA', 'X',\n'DOB', 'X',\n'DOC', 'X',\n'DOH', 'D',\n'DOM', 'X',\n'DOS', 'X',\n'DOX', 'X',\n'DP5', 'X',\n'DP7', 'X',\n'DPA', 'X',\n'DPC', 'X',\n'DPD', 'X',\n'DPE', 'X',\n'DPG', 'X',\n'DPH', 'F',\n'DPM', 'X',\n'DPN', 'F',\n'DPO', 'X',\n'DPP', 'X',\n'DPR', 'P',\n'DPS', 'X',\n'DPT', 'X',\n'DPX', 'X',\n'DPY', 'X',\n'DPZ', 'X',\n'DQH', 'X',\n'DQN', 'X',\n'DR1', 'X',\n'DRB', 'X',\n'DRC', 'X',\n'DRI', 'X',\n'DRP', 'X',\n'DRT', 'X',\n'DRU', 'X',\n'DSA', 'X',\n'DSB', 'X',\n'DSC', 'X',\n'DSD', 'X',\n'DSE', 'S',\n'DSI', 'X',\n'DSN', 'S',\n'DSP', 'D',\n'DSR', 'X',\n'DSS', 'X',\n'DSX', 'X',\n'DSY', 'X',\n'DTB', 'X',\n'DTD', 'X',\n'DTH', 'T',\n'DTN', 'X',\n'DTO', 'X',\n'DTP', 'X',\n'DTQ', 'X',\n'DTR', 'W',\n'DTT', 'X',\n'DTY', 'Y',\n'DUD', 'X',\n'DUO', 'X',\n'DUR', 'X',\n'DUT', 'X',\n'DVA', 'V',\n'DVR', 'X',\n'DX9', 'X',\n'DXA', 'X',\n'DXB', 'X',\n'DXC', 'X',\n'DXG', 'X',\n'DXX', 'X',\n'DZF', 'X',\n'E09', 'X',\n'E20', 'X',\n'E2P', 'X',\n'E3G', 'X',\n'E4N', 'X',\n'E4P', 'X',\n'E64', 'X',\n'E6C', 'X',\n'E96', 'X',\n'E97', 'X',\n'EA2', 'X',\n'EAA', 'X',\n'EAP', 'X',\n'EBP', 'X',\n'EBW', 'X',\n'ECO', 'X',\n'EDA', 'X',\n'EDC', 'X',\n'EDE', 'X',\n'EDO', 'X',\n'EDR', 'X',\n'EEB', 'X',\n'EEE', 'X',\n'EFC', 'X',\n'EFZ', 'X',\n'EG1', 'X',\n'EG2', 'X',\n'EG3', 'X',\n'EGC', 'X',\n'EGL', 'X',\n'EHP', 'A',\n'EIC', 'X',\n'EJT', 'X',\n'ELA', 'X',\n'EMB', 'X',\n'EMC', 'X',\n'EMD', 'X',\n'EMM', 'X',\n'EMO', 'X',\n'EMP', 'X',\n'EMR', 'X',\n'ENA', 'X',\n'ENC', 'X',\n'ENH', 'X',\n'ENO', 'X',\n'ENP', 'X',\n'EOA', 'X',\n'EOH', 'X',\n'EOT', 'X',\n'EOX', 'X',\n'EPA', 'X',\n'EPE', 'X',\n'EPH', 'X',\n'EPI', 'X',\n'EPN', 'X',\n'EPO', 'X',\n'EPT', 'X',\n'EPU', 'X',\n'EPX', 'X',\n'EPY', 'X',\n'EQI', 'X',\n'EQP', 'X',\n'EQU', 'X',\n'ERG', 'X',\n'ERI', 'X',\n'ERY', 'X',\n'ESC', 'X',\n'ESD', 'X',\n'ESI', 'X',\n'ESO', 'X',\n'ESP', 'X',\n'EST', 'X',\n'ESX', 'X',\n'ETA', 'X',\n'ETC', 'X',\n'ETD', 'X',\n'ETF', 'X',\n'ETH', 'X',\n'ETI', 'X',\n'ETN', 'X',\n'ETO', 'X',\n'ETP', 'X',\n'ETR', 'X',\n'ETS', 'X',\n'ETY', 'X',\n'EU3', 'X',\n'EUG', 'X',\n'EYS', 'C',\n'F09', 'X',\n'F2B', 'X',\n'F3S', 'X',\n'F42', 'X',\n'F43', 'X',\n'F4S', 'X',\n'F6B', 'X',\n'F6P', 'X',\n'F89', 'X',\n'FA1', 'X',\n'FA5', 'F',\n'FAA', 'X',\n'FAB', 'X',\n'FAC', 'X',\n'FAD', 'X',\n'FAF', 'X',\n'FAG', 'X',\n'FAM', 'X',\n'FAR', 'X',\n'FAS', 'X',\n'FAT', 'X',\n'FBA', 'X',\n'FBE', 'X',\n'FBI', 'X',\n'FBP', 'X',\n'FBQ', 'X',\n'FBS', 'X',\n'FBT', 'X',\n'FBU', 'X',\n'FCA', 'X',\n'FCB', 'X',\n'FCI', 'X',\n'FCN', 'X',\n'FCO', 'X',\n'FCR', 'X',\n'FCT', 'X',\n'FCX', 'X',\n'FCY', 'C',\n'FD1', 'F',\n'FD2', 'F',\n'FD3', 'F',\n'FD4', 'F',\n'FDA', 'X',\n'FDC', 'X',\n'FDI', 'X',\n'FDP', 'X',\n'FDS', 'X',\n'FE2', 'X',\n'FEA', 'X',\n'FEL', 'X',\n'FEM', 'X',\n'FEN', 'X',\n'FEO', 'X',\n'FEP', 'X',\n'FER', 'X',\n'FES', 'X',\n'FFB', 'X',\n'FFC', 'X',\n'FFF', 'X',\n'FFO', 'X',\n'FGL', 'G',\n'FHB', 'X',\n'FHC', 'X',\n'FHP', 'X',\n'FHU', 'X',\n'FID', 'X',\n'FII', 'X',\n'FIP', 'X',\n'FK5', 'X',\n'FKA', 'X',\n'FKI', 'X',\n'FKP', 'X',\n'FL2', 'X',\n'FL9', 'X',\n'FLA', 'A',\n'FLC', 'X',\n'FLD', 'X',\n'FLE', 'L',\n'FLF', 'X',\n'FLO', 'X',\n'FLP', 'X',\n'FLT', 'Y',\n'FLU', 'X',\n'FLX', 'X',\n'FM1', 'X',\n'FM2', 'X',\n'FMA', 'X',\n'FMB', 'X',\n'FMC', 'X',\n'FME', 'M',\n'FMN', 'X',\n'FMP', 'X',\n'FMR', 'X',\n'FMS', 'X',\n'FMT', 'X',\n'FNE', 'X',\n'FNP', 'X',\n'FNS', 'X',\n'FOC', 'X',\n'FOE', 'X',\n'FOG', 'F',\n'FOH', 'X',\n'FOK', 'X',\n'FOL', 'X',\n'FON', 'X',\n'FOP', 'X',\n'FOR', 'X',\n'FOS', 'X',\n'FPA', 'X',\n'FPC', 'X',\n'FPI', 'X',\n'FPO', 'X',\n'FPP', 'X',\n'FPT', 'X',\n'FQP', 'X',\n'FRA', 'X',\n'FRD', 'F',\n'FRU', 'X',\n'FS3', 'X',\n'FS4', 'X',\n'FSB', 'X',\n'FSO', 'X',\n'FSX', 'X',\n'FTC', 'X',\n'FTP', 'X',\n'FTR', 'W',\n'FTT', 'X',\n'FTY', 'Y',\n'FUA', 'X',\n'FUC', 'X',\n'FUM', 'X',\n'FUP', 'X',\n'FVF', 'X',\n'FXP', 'X',\n'FXV', 'X',\n'FYA', 'F',\n'G16', 'X',\n'G1P', 'X',\n'G20', 'X',\n'G21', 'X',\n'G23', 'X',\n'G26', 'X',\n'G28', 'X',\n'G2F', 'X',\n'G37', 'X',\n'G39', 'X',\n'G3H', 'X',\n'G3P', 'X',\n'G4D', 'X',\n'G6D', 'X',\n'G6P', 'X',\n'G6Q', 'X',\n'G7M', 'X',\n'GA2', 'X',\n'GAA', 'X',\n'GAB', 'X',\n'GAC', 'X',\n'GAI', 'X',\n'GAL', 'X',\n'GAM', 'X',\n'GAN', 'X',\n'GAO', 'X',\n'GAP', 'X',\n'GAR', 'G',\n'GAS', 'X',\n'GAT', 'X',\n'GBC', 'X',\n'GBI', 'X',\n'GBP', 'X',\n'GBS', 'X',\n'GBX', 'X',\n'GC4', 'X',\n'GCA', 'X',\n'GCD', 'X',\n'GCG', 'G',\n'GCH', 'G',\n'GCK', 'X',\n'GCL', 'X',\n'GCM', 'X',\n'GCN', 'X',\n'GCO', 'X',\n'GCP', 'X',\n'GCR', 'X',\n'GCS', 'X',\n'GCU', 'X',\n'GD3', 'X',\n'GDB', 'X',\n'GDM', 'X',\n'GDN', 'X',\n'GDP', 'X',\n'GDS', 'X',\n'GDU', 'X',\n'GE1', 'X',\n'GE2', 'X',\n'GE3', 'X',\n'GEA', 'X',\n'GEL', 'X',\n'GEM', 'X',\n'GEN', 'X',\n'GEP', 'X',\n'GER', 'X',\n'GFP', 'X',\n'GGB', 'X',\n'GGL', 'E',\n'GGP', 'X',\n'GHP', 'G',\n'GIP', 'X',\n'GIS', 'X',\n'GKR', 'X',\n'GL2', 'X',\n'GL3', 'G',\n'GL4', 'X',\n'GL5', 'X',\n'GL7', 'X',\n'GL9', 'X',\n'GLA', 'X',\n'GLB', 'X',\n'GLC', 'X',\n'GLD', 'X',\n'GLE', 'X',\n'GLF', 'X',\n'GLG', 'X',\n'GLH', 'Q',\n'GLI', 'X',\n'GLL', 'X',\n'GLM', 'G',\n'GLN', 'Q',\n'GLO', 'X',\n'GLP', 'X',\n'GLR', 'X',\n'GLS', 'X',\n'GLT', 'X',\n'GLU', 'E',\n'GLV', 'X',\n'GLW', 'X',\n'GLY', 'G',\n'GLZ', 'X',\n'GM1', 'X',\n'GMA', 'X',\n'GMC', 'X',\n'GMH', 'X',\n'GMP', 'X',\n'GMY', 'X',\n'GN7', 'X',\n'GNA', 'X',\n'GNB', 'X',\n'GNH', 'X',\n'GNP', 'X',\n'GNT', 'X',\n'GOA', 'X',\n'GOL', 'X',\n'GOX', 'X',\n'GP1', 'X',\n'GP3', 'X',\n'GP4', 'X',\n'GP6', 'X',\n'GP8', 'X',\n'GPB', 'E',\n'GPC', 'X',\n'GPE', 'X',\n'GPG', 'X',\n'GPI', 'X',\n'GPJ', 'X',\n'GPL', 'K',\n'GPM', 'X',\n'GPN', 'G',\n'GPP', 'X',\n'GPR', 'X',\n'GPS', 'X',\n'GPX', 'X',\n'GR1', 'X',\n'GR3', 'X',\n'GR4', 'X',\n'GSA', 'X',\n'GSB', 'X',\n'GSC', 'G',\n'GSE', 'S',\n'GSH', 'X',\n'GSP', 'X',\n'GSR', 'X',\n'GSS', 'X',\n'GT9', 'C',\n'GTA', 'X',\n'GTB', 'X',\n'GTD', 'X',\n'GTE', 'X',\n'GTH', 'T',\n'GTN', 'X',\n'GTO', 'X',\n'GTP', 'X',\n'GTR', 'X',\n'GTS', 'X',\n'GTT', 'X',\n'GTX', 'X',\n'GTZ', 'X',\n'GU7', 'X',\n'GUA', 'X',\n'GUD', 'X',\n'GUM', 'X',\n'GUN', 'X',\n'GUP', 'X',\n'GUR', 'X',\n'GW3', 'X',\n'GZZ', 'X',\n'H2B', 'X',\n'H2P', 'H',\n'H2S', 'X',\n'H2U', 'X',\n'H4B', 'X',\n'H5M', 'P',\n'H5P', 'X',\n'HAA', 'X',\n'HAB', 'X',\n'HAC', 'A',\n'HAD', 'X',\n'HAE', 'X',\n'HAG', 'X',\n'HAI', 'X',\n'HAM', 'X',\n'HAP', 'X',\n'HAQ', 'X',\n'HAR', 'R',\n'HAS', 'X',\n'HAV', 'V',\n'HAX', 'X',\n'HAZ', 'X',\n'HBA', 'X',\n'HBC', 'X',\n'HBD', 'X',\n'HBI', 'X',\n'HBO', 'X',\n'HBU', 'X',\n'HBY', 'X',\n'HC0', 'X',\n'HC1', 'X',\n'HC4', 'X',\n'HCA', 'X',\n'HCC', 'X',\n'HCI', 'X',\n'HCS', 'X',\n'HDA', 'X',\n'HDD', 'X',\n'HDF', 'X',\n'HDN', 'X',\n'HDS', 'X',\n'HDZ', 'X',\n'HE1', 'X',\n'HE6', 'X',\n'HEA', 'X',\n'HEB', 'X',\n'HEC', 'X',\n'HED', 'X',\n'HEE', 'X',\n'HEF', 'X',\n'HEG', 'X',\n'HEM', 'X',\n'HEN', 'X',\n'HEO', 'X',\n'HEP', 'X',\n'HEU', 'X',\n'HEV', 'X',\n'HEX', 'X',\n'HEZ', 'X',\n'HF1', 'X',\n'HFA', 'X',\n'HFP', 'X',\n'HGA', 'Q',\n'HGB', 'X',\n'HGC', 'X',\n'HGI', 'X',\n'HGU', 'X',\n'HHO', 'X',\n'HHP', 'X',\n'HIB', 'X',\n'HIC', 'H',\n'HII', 'X',\n'HIN', 'X',\n'HIO', 'X',\n'HIP', 'H',\n'HIS', 'H',\n'HLE', 'X',\n'HLT', 'X',\n'HMA', 'A',\n'HMB', 'X',\n'HMC', 'X',\n'HMD', 'X',\n'HMF', 'A',\n'HMG', 'X',\n'HMH', 'X',\n'HMI', 'L',\n'HMM', 'X',\n'HMN', 'X',\n'HMO', 'X',\n'HMP', 'X',\n'HMR', 'R',\n'HNI', 'X',\n'HNP', 'X',\n'HOA', 'X',\n'HOE', 'X',\n'HOH', 'X',\n'HOM', 'X',\n'HOP', 'X',\n'HOQ', 'X',\n'HP1', 'A',\n'HP2', 'A',\n'HP3', 'X',\n'HPA', 'X',\n'HPB', 'X',\n'HPC', 'X',\n'HPD', 'X',\n'HPE', 'A',\n'HPG', 'X',\n'HPH', 'F',\n'HPP', 'X',\n'HPQ', 'F',\n'HPR', 'X',\n'HPT', 'X',\n'HPY', 'X',\n'HQO', 'X',\n'HQQ', 'X',\n'HQU', 'X',\n'HRG', 'R',\n'HRI', 'X',\n'HSA', 'X',\n'HSE', 'S',\n'HSF', 'X',\n'HSM', 'X',\n'HSO', 'H',\n'HSP', 'X',\n'HT1', 'X',\n'HT2', 'X',\n'HTA', 'X',\n'HTL', 'X',\n'HTO', 'X',\n'HTP', 'X',\n'HTR', 'W',\n'HUP', 'X',\n'HUX', 'X',\n'HV5', 'A',\n'HV7', 'X',\n'HV8', 'X',\n'HXA', 'X',\n'HXC', 'X',\n'HXP', 'X',\n'HY1', 'X',\n'HYA', 'X',\n'HYB', 'X',\n'HYD', 'X',\n'HYG', 'X',\n'HYP', 'P',\n'I06', 'X',\n'I10', 'X',\n'I11', 'X',\n'I17', 'X',\n'I2P', 'X',\n'I3N', 'X',\n'I3P', 'X',\n'I40', 'X',\n'I48', 'X',\n'I4B', 'X',\n'I52', 'X',\n'I5P', 'X',\n'I84', 'G',\n'IAG', 'G',\n'IAS', 'X',\n'IB2', 'X',\n'IBB', 'X',\n'IBP', 'X',\n'IBR', 'X',\n'IBS', 'X',\n'IBZ', 'X',\n'IC1', 'X',\n'ICA', 'X',\n'ICI', 'X',\n'ICL', 'X',\n'ICP', 'X',\n'ICT', 'X',\n'ICU', 'X',\n'ID2', 'X',\n'IDC', 'X',\n'IDG', 'X',\n'IDH', 'X',\n'IDM', 'X',\n'IDO', 'X',\n'IDP', 'X',\n'IDR', 'X',\n'IDS', 'X',\n'IDT', 'X',\n'IDU', 'X',\n'IFG', 'X',\n'IFP', 'X',\n'IGL', 'X',\n'IGN', 'X',\n'IGP', 'X',\n'IGU', 'X',\n'IH1', 'X',\n'IH2', 'X',\n'IH3', 'X',\n'IHB', 'X',\n'IHN', 'X',\n'IHP', 'X',\n'IIC', 'X',\n'IIL', 'I',\n'IIP', 'X',\n'IK2', 'X',\n'IKT', 'X',\n'ILA', 'I',\n'ILE', 'I',\n'ILG', 'X',\n'ILO', 'X',\n'ILX', 'I',\n'IM1', 'X',\n'IM2', 'X',\n'IMC', 'X',\n'IMD', 'X',\n'IME', 'X',\n'IMF', 'X',\n'IMG', 'X',\n'IMH', 'X',\n'IMI', 'X',\n'IML', 'I',\n'IMM', 'X',\n'IMN', 'X',\n'IMO', 'X',\n'IMP', 'X',\n'IMR', 'X',\n'IMU', 'X',\n'IN0', 'D',\n'IN1', 'R',\n'IN2', 'K',\n'IN3', 'L',\n'IN4', 'X',\n'IN5', 'A',\n'IN6', 'L',\n'IN7', 'X',\n'IN8', 'X',\n'IN9', 'X',\n'INA', 'L',\n'INB', 'X',\n'INC', 'X',\n'IND', 'X',\n'INE', 'X',\n'INF', 'F',\n'ING', 'F',\n'INH', 'R',\n'INI', 'X',\n'INJ', 'X',\n'INK', 'X',\n'INL', 'X',\n'INM', 'X',\n'INN', 'A',\n'INO', 'X',\n'INP', 'X',\n'INQ', 'X',\n'INR', 'X',\n'INS', 'X',\n'INT', 'V',\n'INU', 'X',\n'INV', 'X',\n'INW', 'X',\n'INX', 'X',\n'INY', 'X',\n'INZ', 'X',\n'IOA', 'X',\n'IOB', 'X',\n'IOC', 'X',\n'IOD', 'X',\n'IOE', 'X',\n'IOF', 'X',\n'IOH', 'X',\n'IOL', 'X',\n'IOP', 'X',\n'IP1', 'X',\n'IP2', 'X',\n'IP3', 'X',\n'IP4', 'X',\n'IPA', 'X',\n'IPB', 'X',\n'IPD', 'X',\n'IPG', 'G',\n'IPH', 'X',\n'IPL', 'X',\n'IPM', 'X',\n'IPN', 'X',\n'IPO', 'F',\n'IPP', 'X',\n'IPS', 'X',\n'IPT', 'X',\n'IPU', 'X',\n'IPY', 'A',\n'IQB', 'X',\n'IQP', 'X',\n'IQS', 'X',\n'IR3', 'X',\n'IRI', 'X',\n'IRP', 'X',\n'ISA', 'X',\n'ISF', 'X',\n'ISO', 'X',\n'ISP', 'X',\n'ISQ', 'X',\n'ISU', 'X',\n'ITM', 'X',\n'ITP', 'X',\n'ITR', 'W',\n'ITS', 'X',\n'ITU', 'X',\n'IU5', 'X',\n'IUM', 'X',\n'IUR', 'X',\n'IVA', 'X',\n'IYG', 'G',\n'IYR', 'Y',\n'J77', 'X',\n'J78', 'X',\n'J80', 'X',\n'JE2', 'X',\n'JEN', 'X',\n'JST', 'X',\n'K21', 'X',\n'KAH', 'X',\n'KAI', 'X',\n'KAM', 'X',\n'KAN', 'X',\n'KAP', 'X',\n'KCP', 'X',\n'KCX', 'K',\n'KDO', 'X',\n'KEF', 'X',\n'KET', 'X',\n'KGR', 'X',\n'KH1', 'X',\n'KIF', 'X',\n'KIV', 'V',\n'KNI', 'X',\n'KPH', 'K',\n'KTH', 'X',\n'KTN', 'X',\n'KTP', 'X',\n'KWT', 'X',\n'L04', 'X',\n'L1P', 'X',\n'L24', 'E',\n'L2P', 'X',\n'L34', 'E',\n'L37', 'E',\n'L3P', 'X',\n'L4P', 'X',\n'L75', 'X',\n'LAC', 'X',\n'LAD', 'X',\n'LAK', 'X',\n'LAM', 'X',\n'LAR', 'X',\n'LAT', 'X',\n'LAX', 'X',\n'LCO', 'X',\n'LCP', 'X',\n'LCS', 'X',\n'LDA', 'X',\n'LDO', 'L',\n'LDP', 'X',\n'LEA', 'X',\n'LEO', 'X',\n'LEU', 'L',\n'LG2', 'X',\n'LG6', 'X',\n'LGC', 'X',\n'LGP', 'X',\n'LHG', 'X',\n'LHY', 'F',\n'LI1', 'X',\n'LIG', 'X',\n'LIL', 'X',\n'LIM', 'X',\n'LIN', 'X',\n'LIO', 'X',\n'LIP', 'X',\n'LLA', 'X',\n'LLP', 'K',\n'LLY', 'K',\n'LMG', 'X',\n'LML', 'X',\n'LMT', 'X',\n'LMU', 'X',\n'LMZ', 'X',\n'LNK', 'X',\n'LNL', 'X',\n'LNO', 'X',\n'LOF', 'X',\n'LOL', 'L',\n'LOM', 'X',\n'LOR', 'X',\n'LOS', 'X',\n'LOV', 'L',\n'LOX', 'X',\n'LP1', 'X',\n'LP2', 'R',\n'LPA', 'X',\n'LPC', 'X',\n'LPF', 'X',\n'LPL', 'X',\n'LPM', 'X',\n'LPP', 'X',\n'LRB', 'X',\n'LRU', 'X',\n'LS1', 'X',\n'LS2', 'X',\n'LS3', 'X',\n'LS4', 'X',\n'LS5', 'X',\n'LTA', 'X',\n'LTL', 'X',\n'LTR', 'W',\n'LUM', 'X',\n'LVS', 'L',\n'LXC', 'X',\n'LY2', 'X',\n'LY3', 'X',\n'LYA', 'X',\n'LYB', 'X',\n'LYC', 'X',\n'LYD', 'X',\n'LYM', 'K',\n'LYN', 'X',\n'LYS', 'K',\n'LYT', 'X',\n'LYW', 'X',\n'LYZ', 'K',\n'M1A', 'X',\n'M1G', 'X',\n'M2G', 'X',\n'M3L', 'K',\n'M6P', 'X',\n'M6T', 'X',\n'M7G', 'X',\n'MA1', 'X',\n'MA2', 'X',\n'MA3', 'X',\n'MA4', 'X',\n'MA6', 'X',\n'MAA', 'A',\n'MAB', 'X',\n'MAC', 'X',\n'MAE', 'X',\n'MAG', 'X',\n'MAH', 'X',\n'MAI', 'R',\n'MAK', 'X',\n'MAL', 'X',\n'MAM', 'X',\n'MAN', 'X',\n'MAO', 'X',\n'MAP', 'X',\n'MAR', 'X',\n'MAS', 'X',\n'MAT', 'X',\n'MAU', 'X',\n'MAZ', 'X',\n'MBA', 'X',\n'MBD', 'X',\n'MBG', 'X',\n'MBH', 'X',\n'MBN', 'X',\n'MBO', 'X',\n'MBR', 'X',\n'MBS', 'X',\n'MBV', 'X',\n'MBZ', 'X',\n'MCA', 'X',\n'MCD', 'X',\n'MCE', 'X',\n'MCG', 'G',\n'MCI', 'X',\n'MCN', 'X',\n'MCP', 'X',\n'MCT', 'X',\n'MCY', 'X',\n'MD2', 'X',\n'MDA', 'X',\n'MDC', 'X',\n'MDG', 'X',\n'MDH', 'X',\n'MDL', 'X',\n'MDM', 'X',\n'MDN', 'X',\n'MDP', 'X',\n'ME6', 'X',\n'MEB', 'X',\n'MEC', 'X',\n'MEL', 'X',\n'MEN', 'N',\n'MEP', 'X',\n'MER', 'X',\n'MES', 'X',\n'MET', 'M',\n'MEV', 'X',\n'MF2', 'X',\n'MF3', 'M',\n'MFB', 'X',\n'MFD', 'X',\n'MFU', 'X',\n'MG7', 'X',\n'MGA', 'X',\n'MGB', 'X',\n'MGD', 'X',\n'MGG', 'R',\n'MGL', 'X',\n'MGN', 'Q',\n'MGO', 'X',\n'MGP', 'X',\n'MGR', 'X',\n'MGS', 'X',\n'MGT', 'X',\n'MGU', 'X',\n'MGY', 'G',\n'MHB', 'X',\n'MHF', 'X',\n'MHL', 'L',\n'MHM', 'X',\n'MHO', 'M',\n'MHS', 'H',\n'MHZ', 'X',\n'MIA', 'X',\n'MIC', 'X',\n'MID', 'X',\n'MIL', 'X',\n'MIM', 'X',\n'MIN', 'G',\n'MIP', 'X',\n'MIS', 'S',\n'MIT', 'X',\n'MJI', 'X',\n'MK1', 'X',\n'MKC', 'X',\n'MLA', 'X',\n'MLC', 'X',\n'MLE', 'L',\n'MLN', 'X',\n'MLT', 'X',\n'MLY', 'K',\n'MLZ', 'K',\n'MM3', 'X',\n'MM4', 'X',\n'MMA', 'X',\n'MMC', 'X',\n'MME', 'M',\n'MMO', 'R',\n'MMP', 'X',\n'MMQ', 'X',\n'MMT', 'X',\n'MN1', 'X',\n'MN2', 'X',\n'MN3', 'X',\n'MN5', 'X',\n'MN7', 'X',\n'MN8', 'X',\n'MNA', 'X',\n'MNB', 'X',\n'MNC', 'X',\n'MNG', 'X',\n'MNL', 'L',\n'MNO', 'X',\n'MNP', 'X',\n'MNQ', 'X',\n'MNS', 'X',\n'MNT', 'X',\n'MNV', 'V',\n'MO1', 'X',\n'MO2', 'X',\n'MO3', 'X',\n'MO4', 'X',\n'MO5', 'X',\n'MO6', 'X',\n'MOA', 'X',\n'MOB', 'X',\n'MOC', 'X',\n'MOE', 'X',\n'MOG', 'X',\n'MOH', 'X',\n'MOL', 'X',\n'MOO', 'X',\n'MOP', 'X',\n'MOR', 'X',\n'MOS', 'X',\n'MOT', 'X',\n'MOX', 'X',\n'MP1', 'X',\n'MP3', 'X',\n'MPA', 'X',\n'MPB', 'X',\n'MPC', 'X',\n'MPD', 'X',\n'MPG', 'X',\n'MPH', 'M',\n'MPI', 'X',\n'MPJ', 'M',\n'MPL', 'X',\n'MPN', 'X',\n'MPO', 'X',\n'MPP', 'X',\n'MPQ', 'G',\n'MPR', 'X',\n'MPS', 'X',\n'MQ0', 'X',\n'MQ7', 'X',\n'MQ8', 'X',\n'MQ9', 'X',\n'MQI', 'X',\n'MR2', 'X',\n'MRC', 'X',\n'MRM', 'X',\n'MRP', 'X',\n'MS2', 'X',\n'MSA', 'X',\n'MSB', 'X',\n'MSD', 'X',\n'MSE', 'M',\n'MSF', 'X',\n'MSI', 'X',\n'MSO', 'M',\n'MSQ', 'X',\n'MST', 'X',\n'MSU', 'X',\n'MTA', 'X',\n'MTB', 'X',\n'MTC', 'X',\n'MTD', 'X',\n'MTE', 'X',\n'MTF', 'X',\n'MTG', 'X',\n'MTO', 'X',\n'MTS', 'X',\n'MTT', 'X',\n'MTX', 'X',\n'MTY', 'Y',\n'MUG', 'X',\n'MUP', 'X',\n'MUR', 'X',\n'MVA', 'V',\n'MW1', 'X',\n'MW2', 'X',\n'MXA', 'X',\n'MXY', 'X',\n'MYA', 'X',\n'MYC', 'X',\n'MYG', 'X',\n'MYR', 'X',\n'MYS', 'X',\n'MYT', 'X',\n'MZM', 'X',\n'N1T', 'X',\n'N25', 'X',\n'N2B', 'X',\n'N3T', 'X',\n'N4B', 'X',\n'NA2', 'X',\n'NA5', 'X',\n'NA6', 'X',\n'NAA', 'X',\n'NAB', 'X',\n'NAC', 'X',\n'NAD', 'X',\n'NAE', 'X',\n'NAF', 'X',\n'NAG', 'X',\n'NAH', 'X',\n'NAI', 'X',\n'NAL', 'A',\n'NAM', 'A',\n'NAN', 'X',\n'NAO', 'X',\n'NAP', 'X',\n'NAQ', 'X',\n'NAR', 'X',\n'NAS', 'X',\n'NAU', 'X',\n'NAV', 'X',\n'NAW', 'X',\n'NAX', 'X',\n'NAY', 'X',\n'NBA', 'X',\n'NBD', 'X',\n'NBE', 'X',\n'NBG', 'X',\n'NBN', 'X',\n'NBP', 'X',\n'NBS', 'X',\n'NBU', 'X',\n'NCA', 'X',\n'NCB', 'A',\n'NCD', 'X',\n'NCH', 'X',\n'NCM', 'X',\n'NCN', 'X',\n'NCO', 'X',\n'NCR', 'X',\n'NCS', 'X',\n'ND4', 'X',\n'NDA', 'X',\n'NDC', 'X',\n'NDD', 'X',\n'NDO', 'X',\n'NDP', 'X',\n'NDT', 'X',\n'NEA', 'X',\n'NEB', 'X',\n'NED', 'X',\n'NEM', 'H',\n'NEN', 'X',\n'NEO', 'X',\n'NEP', 'H',\n'NEQ', 'X',\n'NES', 'X',\n'NET', 'X',\n'NEV', 'X',\n'NFA', 'F',\n'NFE', 'X',\n'NFG', 'X',\n'NFP', 'X',\n'NFS', 'X',\n'NG6', 'X',\n'NGA', 'X',\n'NGL', 'X',\n'NGM', 'X',\n'NGO', 'X',\n'NGP', 'X',\n'NGT', 'X',\n'NGU', 'X',\n'NH2', 'X',\n'NH3', 'X',\n'NH4', 'X',\n'NHD', 'X',\n'NHE', 'X',\n'NHM', 'X',\n'NHP', 'X',\n'NHR', 'X',\n'NHS', 'X',\n'NI1', 'X',\n'NI2', 'X',\n'NIC', 'X',\n'NID', 'X',\n'NIK', 'X',\n'NIO', 'X',\n'NIP', 'X',\n'NIT', 'X',\n'NIU', 'X',\n'NIY', 'Y',\n'NLA', 'X',\n'NLE', 'L',\n'NLG', 'X',\n'NLN', 'L',\n'NLP', 'L',\n'NM1', 'X',\n'NMA', 'A',\n'NMB', 'X',\n'NMC', 'G',\n'NMD', 'X',\n'NME', 'X',\n'NMN', 'X',\n'NMO', 'X',\n'NMQ', 'X',\n'NMX', 'X',\n'NMY', 'X',\n'NNH', 'R',\n'NNO', 'X',\n'NO2', 'X',\n'NO3', 'X',\n'NOA', 'X',\n'NOD', 'X',\n'NOJ', 'X',\n'NON', 'X',\n'NOP', 'X',\n'NOR', 'X',\n'NOS', 'X',\n'NOV', 'X',\n'NOX', 'X',\n'NP3', 'X',\n'NPA', 'X',\n'NPC', 'X',\n'NPD', 'X',\n'NPE', 'X',\n'NPF', 'X',\n'NPH', 'C',\n'NPI', 'X',\n'NPL', 'X',\n'NPN', 'X',\n'NPO', 'X',\n'NPP', 'X',\n'NPT', 'X',\n'NPY', 'X',\n'NRG', 'R',\n'NRI', 'X',\n'NS1', 'X',\n'NS5', 'X',\n'NSP', 'X',\n'NTA', 'X',\n'NTB', 'X',\n'NTC', 'X',\n'NTH', 'X',\n'NTM', 'X',\n'NTP', 'X',\n'NTS', 'X',\n'NTU', 'X',\n'NTZ', 'X',\n'NU1', 'X',\n'NVA', 'V',\n'NVI', 'X',\n'NVP', 'X',\n'NW1', 'X',\n'NYP', 'X',\n'O4M', 'X',\n'OAA', 'X',\n'OAI', 'X',\n'OAP', 'X',\n'OAR', 'X',\n'OAS', 'S',\n'OBA', 'X',\n'OBN', 'X',\n'OC1', 'X',\n'OC2', 'X',\n'OC3', 'X',\n'OC4', 'X',\n'OC5', 'X',\n'OC6', 'X',\n'OC7', 'X',\n'OCL', 'X',\n'OCM', 'X',\n'OCN', 'X',\n'OCO', 'X',\n'OCP', 'X',\n'OCS', 'C',\n'OCT', 'X',\n'OCV', 'K',\n'OCY', 'C',\n'ODA', 'X',\n'ODS', 'X',\n'OES', 'X',\n'OET', 'X',\n'OF1', 'X',\n'OF2', 'X',\n'OF3', 'X',\n'OFL', 'X',\n'OFO', 'X',\n'OHE', 'X',\n'OHO', 'X',\n'OHT', 'X',\n'OIC', 'X',\n'OIP', 'X',\n'OKA', 'X',\n'OLA', 'X',\n'OLE', 'X',\n'OLI', 'X',\n'OLO', 'X',\n'OMB', 'X',\n'OMC', 'X',\n'OMD', 'X',\n'OME', 'X',\n'OMG', 'X',\n'OMP', 'X',\n'OMT', 'M',\n'OMU', 'X',\n'ONE', 'X',\n'ONL', 'L',\n'ONP', 'X',\n'OPA', 'X',\n'OPD', 'X',\n'OPE', 'X',\n'OPG', 'X',\n'OPH', 'X',\n'OPN', 'X',\n'OPP', 'X',\n'OPR', 'R',\n'ORN', 'X',\n'ORO', 'X',\n'ORP', 'X',\n'OSB', 'X',\n'OSS', 'X',\n'OTA', 'X',\n'OTB', 'X',\n'OTE', 'X',\n'OTG', 'X',\n'OUT', 'X',\n'OVA', 'X',\n'OWQ', 'X',\n'OXA', 'X',\n'OXE', 'X',\n'OXI', 'X',\n'OXL', 'X',\n'OXM', 'X',\n'OXN', 'X',\n'OXO', 'X',\n'OXP', 'X',\n'OXS', 'X',\n'OXY', 'X',\n'P11', 'A',\n'P24', 'X',\n'P28', 'X',\n'P2P', 'X',\n'P2U', 'X',\n'P3M', 'X',\n'P4C', 'X',\n'P4P', 'X',\n'P5P', 'X',\n'P6G', 'X',\n'PA1', 'X',\n'PA2', 'X',\n'PA3', 'X',\n'PA4', 'X',\n'PA5', 'X',\n'PAA', 'X',\n'PAB', 'X',\n'PAC', 'X',\n'PAD', 'X',\n'PAE', 'X',\n'PAG', 'X',\n'PAH', 'X',\n'PAI', 'X',\n'PAL', 'D',\n'PAM', 'X',\n'PAN', 'X',\n'PAO', 'X',\n'PAP', 'A',\n'PAQ', 'F',\n'PAR', 'X',\n'PAS', 'X',\n'PAT', 'W',\n'PBA', 'X',\n'PBB', 'X',\n'PBC', 'X',\n'PBF', 'F',\n'PBG', 'X',\n'PBI', 'X',\n'PBM', 'X',\n'PBN', 'X',\n'PBP', 'X',\n'PBR', 'X',\n'PBZ', 'X',\n'PC2', 'X',\n'PCA', 'E',\n'PCB', 'X',\n'PCD', 'X',\n'PCE', 'X',\n'PCG', 'X',\n'PCH', 'X',\n'PCL', 'X',\n'PCM', 'X',\n'PCP', 'X',\n'PCR', 'X',\n'PCS', 'X',\n'PCU', 'X',\n'PCV', 'X',\n'PCY', 'X',\n'PD1', 'X',\n'PDA', 'X',\n'PDC', 'X',\n'PDD', 'A',\n'PDE', 'A',\n'PDI', 'X',\n'PDL', 'A',\n'PDN', 'X',\n'PDO', 'X',\n'PDP', 'X',\n'PDT', 'X',\n'PDU', 'X',\n'PE2', 'X',\n'PE6', 'X',\n'PEA', 'X',\n'PEB', 'X',\n'PEC', 'X',\n'PED', 'X',\n'PEE', 'X',\n'PEF', 'X',\n'PEG', 'X',\n'PEL', 'X',\n'PEO', 'X',\n'PEP', 'X',\n'PEQ', 'X',\n'PER', 'X',\n'PET', 'X',\n'PFB', 'X',\n'PFC', 'X',\n'PFG', 'X',\n'PFL', 'X',\n'PFM', 'X',\n'PFZ', 'X',\n'PG4', 'X',\n'PG5', 'X',\n'PG6', 'X',\n'PGA', 'X',\n'PGC', 'X',\n'PGD', 'X',\n'PGE', 'X',\n'PGG', 'G',\n'PGH', 'X',\n'PGL', 'X',\n'PGO', 'X',\n'PGP', 'X',\n'PGQ', 'X',\n'PGR', 'X',\n'PGS', 'X',\n'PGU', 'X',\n'PGX', 'X',\n'PGY', 'G',\n'PH1', 'X',\n'PH2', 'X',\n'PH3', 'X',\n'PHA', 'F',\n'PHB', 'X',\n'PHC', 'X',\n'PHD', 'X',\n'PHE', 'F',\n'PHG', 'X',\n'PHH', 'X',\n'PHI', 'F',\n'PHL', 'F',\n'PHM', 'X',\n'PHN', 'X',\n'PHO', 'X',\n'PHP', 'X',\n'PHQ', 'X',\n'PHS', 'H',\n'PHT', 'X',\n'PHW', 'P',\n'PHY', 'X',\n'PI1', 'X',\n'PI2', 'X',\n'PI3', 'X',\n'PI4', 'X',\n'PI5', 'X',\n'PI6', 'X',\n'PI7', 'X',\n'PI8', 'X',\n'PI9', 'X',\n'PIA', 'X',\n'PIB', 'X',\n'PIC', 'X',\n'PID', 'X',\n'PIG', 'X',\n'PIH', 'X',\n'PIM', 'X',\n'PIN', 'X',\n'PIO', 'X',\n'PIP', 'X',\n'PIQ', 'X',\n'PIR', 'X',\n'PIV', 'X',\n'PKF', 'X',\n'PL1', 'X',\n'PL9', 'X',\n'PLA', 'D',\n'PLC', 'X',\n'PLE', 'L',\n'PLG', 'G',\n'PLH', 'X',\n'PLM', 'X',\n'PLP', 'X',\n'PLS', 'S',\n'PLT', 'W',\n'PLU', 'L',\n'PLY', 'X',\n'PMA', 'X',\n'PMB', 'X',\n'PMC', 'X',\n'PME', 'F',\n'PML', 'X',\n'PMM', 'X',\n'PMO', 'X',\n'PMP', 'X',\n'PMS', 'X',\n'PMY', 'X',\n'PN2', 'X',\n'PNA', 'X',\n'PNB', 'X',\n'PNC', 'G',\n'PND', 'X',\n'PNE', 'A',\n'PNF', 'X',\n'PNG', 'X',\n'PNI', 'X',\n'PNL', 'X',\n'PNM', 'X',\n'PNN', 'X',\n'PNO', 'X',\n'PNP', 'X',\n'PNQ', 'X',\n'PNS', 'X',\n'PNT', 'X',\n'PNU', 'X',\n'PO2', 'X',\n'PO4', 'X',\n'POB', 'X',\n'POC', 'X',\n'POL', 'X',\n'POM', 'P',\n'PON', 'X',\n'POP', 'X',\n'POR', 'X',\n'POS', 'X',\n'PP1', 'X',\n'PP2', 'X',\n'PP3', 'A',\n'PP4', 'X',\n'PP5', 'X',\n'PP6', 'X',\n'PP7', 'X',\n'PP8', 'N',\n'PP9', 'X',\n'PPB', 'X',\n'PPC', 'X',\n'PPD', 'X',\n'PPE', 'E',\n'PPG', 'X',\n'PPH', 'F',\n'PPI', 'X',\n'PPJ', 'V',\n'PPL', 'X',\n'PPM', 'X',\n'PPN', 'A',\n'PPO', 'X',\n'PPP', 'X',\n'PPQ', 'X',\n'PPR', 'X',\n'PPS', 'X',\n'PPT', 'X',\n'PPU', 'X',\n'PPX', 'F',\n'PPY', 'X',\n'PPZ', 'X',\n'PQ0', 'X',\n'PQN', 'X',\n'PQQ', 'X',\n'PR1', 'X',\n'PR2', 'X',\n'PR3', 'X',\n'PRA', 'X',\n'PRB', 'X',\n'PRC', 'X',\n'PRD', 'X',\n'PRE', 'X',\n'PRF', 'X',\n'PRH', 'X',\n'PRI', 'P',\n'PRL', 'X',\n'PRN', 'X',\n'PRO', 'P',\n'PRP', 'X',\n'PRR', 'A',\n'PRS', 'P',\n'PRZ', 'X',\n'PS0', 'X',\n'PSA', 'X',\n'PSD', 'X',\n'PSE', 'X',\n'PSF', 'S',\n'PSG', 'X',\n'PSI', 'X',\n'PSO', 'X',\n'PSQ', 'X',\n'PSS', 'X',\n'PST', 'X',\n'PSU', 'X',\n'PT1', 'X',\n'PT3', 'X',\n'PTA', 'X',\n'PTC', 'X',\n'PTD', 'X',\n'PTE', 'X',\n'PTH', 'Y',\n'PTL', 'X',\n'PTM', 'Y',\n'PTN', 'X',\n'PTO', 'X',\n'PTP', 'X',\n'PTR', 'Y',\n'PTS', 'X',\n'PTT', 'X',\n'PTU', 'X',\n'PTY', 'X',\n'PUA', 'X',\n'PUB', 'X',\n'PUR', 'X',\n'PUT', 'X',\n'PVA', 'X',\n'PVB', 'X',\n'PVH', 'H',\n'PVL', 'X',\n'PXA', 'X',\n'PXF', 'X',\n'PXG', 'X',\n'PXP', 'X',\n'PXY', 'X',\n'PXZ', 'X',\n'PY2', 'X',\n'PY4', 'X',\n'PY5', 'X',\n'PY6', 'X',\n'PYA', 'A',\n'PYC', 'X',\n'PYD', 'X',\n'PYE', 'X',\n'PYL', 'X',\n'PYM', 'X',\n'PYO', 'X',\n'PYP', 'X',\n'PYQ', 'X',\n'PYR', 'X',\n'PYS', 'X',\n'PYT', 'X',\n'PYX', 'X',\n'PYY', 'X',\n'PYZ', 'X',\n'PZQ', 'X',\n'Q82', 'X',\n'QNC', 'X',\n'QND', 'X',\n'QSI', 'Q',\n'QTR', 'X',\n'QUA', 'X',\n'QUE', 'X',\n'QUI', 'X',\n'QUO', 'X',\n'R11', 'X',\n'R12', 'X',\n'R13', 'X',\n'R18', 'X',\n'R1P', 'X',\n'R56', 'X',\n'R5P', 'X',\n'RA2', 'X',\n'RAD', 'X',\n'RAI', 'X',\n'RAL', 'X',\n'RAM', 'X',\n'RAN', 'X',\n'RAP', 'X',\n'RBF', 'X',\n'RBU', 'X',\n'RCA', 'X',\n'RCL', 'X',\n'RCO', 'X',\n'RDC', 'X',\n'RDF', 'W',\n'RE9', 'X',\n'REA', 'X',\n'RED', 'K',\n'REO', 'X',\n'REP', 'X',\n'RET', 'X',\n'RFA', 'X',\n'RFB', 'X',\n'RFL', 'X',\n'RFP', 'X',\n'RG1', 'X',\n'RGS', 'X',\n'RH1', 'X',\n'RHA', 'X',\n'RHC', 'X',\n'RHD', 'X',\n'RHM', 'X',\n'RHO', 'X',\n'RHQ', 'X',\n'RHS', 'X',\n'RIA', 'X',\n'RIB', 'X',\n'RIC', 'X',\n'RIF', 'X',\n'RIN', 'X',\n'RIP', 'X',\n'RIT', 'X',\n'RMB', 'X',\n'RMN', 'X',\n'RMP', 'X',\n'RNG', 'X',\n'RNS', 'X',\n'RNT', 'X',\n'RO2', 'X',\n'RO4', 'X',\n'ROC', 'N',\n'ROI', 'X',\n'ROM', 'X',\n'RON', 'V',\n'ROP', 'X',\n'ROS', 'X',\n'ROX', 'X',\n'RPA', 'X',\n'RPD', 'X',\n'RPH', 'X',\n'RPL', 'X',\n'RPP', 'X',\n'RPR', 'X',\n'RPX', 'X',\n'RQ3', 'X',\n'RR1', 'X',\n'RR6', 'X',\n'RRS', 'X',\n'RS1', 'X',\n'RS2', 'X',\n'RS7', 'X',\n'RSS', 'X',\n'RTA', 'X',\n'RTB', 'X',\n'RTC', 'X',\n'RTL', 'X',\n'RUB', 'X',\n'RUN', 'X',\n'RWJ', 'X',\n'RXP', 'X',\n'S02', 'X',\n'S11', 'X',\n'S1H', 'S',\n'S27', 'X',\n'S2C', 'C',\n'S3P', 'X',\n'S4U', 'X',\n'S57', 'X',\n'S58', 'X',\n'S5H', 'X',\n'S6G', 'X',\n'S80', 'X',\n'SAA', 'X',\n'SAB', 'X',\n'SAC', 'S',\n'SAD', 'X',\n'SAE', 'X',\n'SAF', 'X',\n'SAH', 'C',\n'SAI', 'C',\n'SAL', 'X',\n'SAM', 'M',\n'SAN', 'X',\n'SAP', 'X',\n'SAR', 'X',\n'SAS', 'X',\n'SB1', 'X',\n'SB2', 'X',\n'SB3', 'X',\n'SB4', 'X',\n'SB5', 'X',\n'SB6', 'X',\n'SBA', 'L',\n'SBB', 'X',\n'SBD', 'A',\n'SBI', 'X',\n'SBL', 'A',\n'SBN', 'X',\n'SBO', 'X',\n'SBR', 'X',\n'SBS', 'X',\n'SBT', 'X',\n'SBU', 'X',\n'SBX', 'X',\n'SC4', 'X',\n'SCA', 'X',\n'SCC', 'X',\n'SCD', 'X',\n'SCH', 'C',\n'SCI', 'X',\n'SCL', 'X',\n'SCM', 'X',\n'SCN', 'X',\n'SCO', 'X',\n'SCP', 'S',\n'SCR', 'X',\n'SCS', 'X',\n'SCV', 'C',\n'SCY', 'C',\n'SD8', 'X',\n'SDK', 'X',\n'SDZ', 'X',\n'SE4', 'X',\n'SEA', 'X',\n'SEB', 'S',\n'SEC', 'X',\n'SEG', 'A',\n'SEI', 'X',\n'SEL', 'S',\n'SEM', 'X',\n'SEO', 'X',\n'SEP', 'S',\n'SER', 'S',\n'SES', 'X',\n'SET', 'S',\n'SEU', 'X',\n'SF4', 'X',\n'SFG', 'X',\n'SFN', 'X',\n'SFO', 'X',\n'SGA', 'X',\n'SGC', 'X',\n'SGL', 'X',\n'SGM', 'X',\n'SGN', 'X',\n'SGP', 'X',\n'SHA', 'X',\n'SHC', 'X',\n'SHF', 'X',\n'SHH', 'X',\n'SHP', 'G',\n'SHR', 'E',\n'SHT', 'T',\n'SHU', 'X',\n'SI2', 'X',\n'SIA', 'X',\n'SIF', 'X',\n'SIG', 'X',\n'SIH', 'X',\n'SIM', 'X',\n'SIN', 'X',\n'SKD', 'X',\n'SKF', 'X',\n'SLB', 'X',\n'SLE', 'X',\n'SLZ', 'K',\n'SMA', 'X',\n'SMC', 'C',\n'SME', 'M',\n'SML', 'X',\n'SMM', 'M',\n'SMN', 'X',\n'SMP', 'X',\n'SMS', 'X',\n'SN1', 'X',\n'SN6', 'X',\n'SN7', 'X',\n'SNC', 'C',\n'SNN', 'X',\n'SNP', 'X',\n'SO1', 'X',\n'SO2', 'X',\n'SO3', 'X',\n'SO4', 'X',\n'SOA', 'X',\n'SOC', 'C',\n'SOM', 'X',\n'SOR', 'X',\n'SOT', 'X',\n'SOX', 'X',\n'SPA', 'X',\n'SPB', 'X',\n'SPC', 'X',\n'SPD', 'X',\n'SPE', 'X',\n'SPG', 'X',\n'SPH', 'X',\n'SPI', 'X',\n'SPK', 'X',\n'SPM', 'X',\n'SPN', 'X',\n'SPO', 'X',\n'SPP', 'X',\n'SPS', 'X',\n'SPY', 'X',\n'SQU', 'X',\n'SRA', 'X',\n'SRB', 'X',\n'SRD', 'X',\n'SRL', 'X',\n'SRM', 'X',\n'SRS', 'X',\n'SRY', 'X',\n'SSA', 'X',\n'SSB', 'X',\n'SSG', 'X',\n'SSP', 'X',\n'ST1', 'X',\n'ST2', 'X',\n'ST3', 'X',\n'ST4', 'X',\n'ST5', 'X',\n'ST6', 'X',\n'STA', 'X',\n'STB', 'X',\n'STE', 'X',\n'STG', 'X',\n'STI', 'X',\n'STL', 'X',\n'STN', 'X',\n'STO', 'X',\n'STP', 'X',\n'STR', 'X',\n'STU', 'X',\n'STY', 'Y',\n'SU1', 'X',\n'SU2', 'X',\n'SUC', 'X',\n'SUI', 'X',\n'SUL', 'X',\n'SUR', 'X',\n'SVA', 'S',\n'SWA', 'X',\n'T16', 'X',\n'T19', 'X',\n'T23', 'X',\n'T29', 'X',\n'T33', 'X',\n'T3P', 'X',\n'T42', 'A',\n'T44', 'X',\n'T5A', 'X',\n'T6A', 'T',\n'T6P', 'X',\n'T80', 'X',\n'T87', 'X',\n'TA1', 'X',\n'TAA', 'X',\n'TAB', 'X',\n'TAC', 'X',\n'TAD', 'X',\n'TAF', 'X',\n'TAM', 'X',\n'TAP', 'X',\n'TAR', 'X',\n'TAS', 'X',\n'TAU', 'X',\n'TAX', 'X',\n'TAZ', 'X',\n'TB9', 'X',\n'TBA', 'X',\n'TBD', 'X',\n'TBG', 'G',\n'TBH', 'X',\n'TBM', 'T',\n'TBO', 'X',\n'TBP', 'X',\n'TBR', 'X',\n'TBS', 'X',\n'TBT', 'X',\n'TBU', 'X',\n'TBZ', 'X',\n'TC4', 'X',\n'TCA', 'X',\n'TCB', 'X',\n'TCH', 'X',\n'TCK', 'X',\n'TCL', 'X',\n'TCM', 'X',\n'TCN', 'X',\n'TCP', 'X',\n'TCR', 'W',\n'TCS', 'X',\n'TCZ', 'X',\n'TDA', 'X',\n'TDB', 'X',\n'TDG', 'X',\n'TDP', 'X',\n'TDR', 'X',\n'TDX', 'X',\n'TEA', 'X',\n'TEM', 'X',\n'TEN', 'X',\n'TEO', 'X',\n'TEP', 'X',\n'TER', 'X',\n'TES', 'X',\n'TET', 'X',\n'TFA', 'X',\n'TFB', 'X',\n'TFH', 'X',\n'TFI', 'X',\n'TFK', 'X',\n'TFP', 'X',\n'THA', 'X',\n'THB', 'X',\n'THC', 'T',\n'THD', 'X',\n'THE', 'X',\n'THF', 'X',\n'THJ', 'X',\n'THK', 'X',\n'THM', 'X',\n'THN', 'X',\n'THO', 'T',\n'THP', 'X',\n'THQ', 'X',\n'THR', 'T',\n'THS', 'X',\n'THT', 'X',\n'THU', 'X',\n'THX', 'X',\n'THZ', 'X',\n'TI1', 'X',\n'TI2', 'X',\n'TI3', 'P',\n'TIA', 'X',\n'TIH', 'A',\n'TK4', 'X',\n'TLA', 'X',\n'TLC', 'X',\n'TLM', 'X',\n'TLN', 'X',\n'TLX', 'X',\n'TM5', 'X',\n'TM6', 'X',\n'TMA', 'X',\n'TMB', 'T',\n'TMC', 'X',\n'TMD', 'T',\n'TME', 'X',\n'TMF', 'X',\n'TML', 'K',\n'TMM', 'X',\n'TMN', 'X',\n'TMP', 'X',\n'TMQ', 'X',\n'TMR', 'X',\n'TMT', 'X',\n'TMZ', 'X',\n'TNB', 'C',\n'TND', 'X',\n'TNK', 'X',\n'TNP', 'X',\n'TNT', 'X',\n'TOA', 'X',\n'TOB', 'X',\n'TOC', 'X',\n'TOL', 'X',\n'TOP', 'X',\n'TOS', 'X',\n'TOT', 'X',\n'TP1', 'G',\n'TP2', 'P',\n'TP3', 'E',\n'TP4', 'E',\n'TP7', 'T',\n'TPA', 'X',\n'TPE', 'X',\n'TPF', 'X',\n'TPI', 'X',\n'TPL', 'W',\n'TPM', 'X',\n'TPN', 'G',\n'TPO', 'T',\n'TPP', 'X',\n'TPQ', 'A',\n'TPR', 'P',\n'TPS', 'X',\n'TPT', 'X',\n'TPV', 'X',\n'TPX', 'X',\n'TPY', 'X',\n'TQ3', 'X',\n'TQ4', 'X',\n'TQ5', 'X',\n'TQ6', 'X',\n'TR1', 'X',\n'TRA', 'X',\n'TRB', 'X',\n'TRC', 'X',\n'TRD', 'X',\n'TRE', 'X',\n'TRF', 'W',\n'TRG', 'K',\n'TRH', 'X',\n'TRI', 'X',\n'TRJ', 'X',\n'TRM', 'X',\n'TRN', 'W',\n'TRO', 'W',\n'TRP', 'W',\n'TRQ', 'X',\n'TRS', 'X',\n'TRX', 'W',\n'TRZ', 'X',\n'TS2', 'X',\n'TS3', 'X',\n'TS4', 'X',\n'TS5', 'X',\n'TSA', 'X',\n'TSB', 'X',\n'TSI', 'X',\n'TSM', 'X',\n'TSN', 'X',\n'TSP', 'X',\n'TSU', 'X',\n'TTA', 'X',\n'TTE', 'X',\n'TTN', 'X',\n'TTO', 'X',\n'TTP', 'X',\n'TTX', 'X',\n'TXL', 'X',\n'TYA', 'Y',\n'TYB', 'Y',\n'TYD', 'X',\n'TYI', 'Y',\n'TYL', 'X',\n'TYM', 'W',\n'TYN', 'Y',\n'TYQ', 'Y',\n'TYR', 'Y',\n'TYS', 'Y',\n'TYV', 'X',\n'TYY', 'A',\n'TZB', 'X',\n'TZC', 'X',\n'TZE', 'X',\n'TZL', 'X',\n'TZO', 'X',\n'TZP', 'X',\n'U01', 'X',\n'U02', 'X',\n'U03', 'X',\n'U04', 'X',\n'U05', 'X',\n'U0E', 'X',\n'U10', 'X',\n'U18', 'X',\n'U2G', 'X',\n'U3P', 'X',\n'U49', 'X',\n'U55', 'X',\n'U5P', 'X',\n'U66', 'X',\n'U89', 'X',\n'U8U', 'X',\n'UAA', 'X',\n'UAG', 'A',\n'UAP', 'X',\n'UAR', 'X',\n'UC1', 'X',\n'UC2', 'X',\n'UC3', 'X',\n'UC4', 'X',\n'UD1', 'X',\n'UD2', 'X',\n'UDP', 'X',\n'UDX', 'X',\n'UFG', 'X',\n'UFM', 'X',\n'UFP', 'X',\n'UGA', 'X',\n'UIN', 'X',\n'UKP', 'A',\n'UM3', 'X',\n'UMA', 'A',\n'UMG', 'X',\n'UMP', 'X',\n'UNA', 'X',\n'UND', 'X',\n'UNI', 'X',\n'UNK', 'X',\n'UNN', 'X',\n'UNX', 'X',\n'UP5', 'X',\n'UP6', 'X',\n'UPA', 'X',\n'UPF', 'X',\n'UPG', 'X',\n'UPP', 'X',\n'UQ1', 'X',\n'UQ2', 'X',\n'UQ6', 'X',\n'UR2', 'X',\n'URA', 'X',\n'URE', 'X',\n'URF', 'X',\n'URI', 'X',\n'URS', 'X',\n'UTP', 'X',\n'UVC', 'X',\n'UVW', 'X',\n'V35', 'X',\n'V36', 'X',\n'V4O', 'X',\n'V7O', 'X',\n'VAA', 'V',\n'VAC', 'X',\n'VAD', 'V',\n'VAF', 'V',\n'VAG', 'X',\n'VAL', 'V',\n'VAN', 'X',\n'VAS', 'X',\n'VAX', 'X',\n'VDX', 'X',\n'VDY', 'X',\n'VG1', 'X',\n'VIB', 'X',\n'VIR', 'X',\n'VIT', 'X',\n'VK3', 'X',\n'VO3', 'X',\n'VO4', 'X',\n'VS1', 'F',\n'VS2', 'F',\n'VS3', 'F',\n'VS4', 'F',\n'VXA', 'X',\n'W01', 'X',\n'W02', 'X',\n'W03', 'X',\n'W11', 'X',\n'W33', 'X',\n'W35', 'X',\n'W42', 'X',\n'W43', 'X',\n'W54', 'X',\n'W56', 'X',\n'W59', 'X',\n'W71', 'X',\n'W84', 'X',\n'W8R', 'X',\n'W91', 'X',\n'WAY', 'X',\n'WCC', 'X',\n'WO2', 'X',\n'WO4', 'X',\n'WRB', 'X',\n'WRR', 'X',\n'WRS', 'X',\n'WW7', 'X',\n'X2F', 'X',\n'X7O', 'X',\n'XAA', 'X',\n'XAN', 'X',\n'XAO', 'X',\n'XBB', 'X',\n'XBP', 'X',\n'XDN', 'X',\n'XDP', 'X',\n'XIF', 'X',\n'XIM', 'X',\n'XK2', 'X',\n'XL1', 'X',\n'XLS', 'X',\n'XMP', 'X',\n'XN1', 'X',\n'XN2', 'X',\n'XN3', 'X',\n'XUL', 'X',\n'XV6', 'X',\n'XYD', 'X',\n'XYH', 'X',\n'XYL', 'X',\n'XYP', 'X',\n'XYS', 'X',\n'YOF', 'Y',\n'YRR', 'X',\n'YT3', 'X',\n'YZ9', 'X',\n'Z34', 'G',\n'Z5A', 'X',\n'ZAF', 'X',\n'ZAP', 'X',\n'ZEB', 'X',\n'ZEN', 'X',\n'ZES', 'X',\n'ZID', 'X',\n'ZMR', 'X',\n'ZN3', 'X',\n'ZNH', 'X',\n'ZNO', 'X',\n'ZO3', 'X',\n'ZPR', 'P',\n'ZRA', 'A',\n'ZST', 'X',\n'ZYA', 'A',\n\n\n'ASN','N');\n} \n        \n","  \n  $np=0;\n  $n_para=$#ARGV;\n  $model=1;\n\nforeach ($np=0; $np<=$n_para; $np++)\n    {        \n    $v=$ARGV[$np];\n    \n    if ( $v eq \"-pdb\")\n      {\n     $pdb_name= $ARGV[++$np];\n      }\n    elsif (  $v eq \"-pep\")\n      {\n    $pep_file= $ARGV[++$np];\n      }\n  }\n\n\nif ($ENV{\"FUGUE_SERVER\"} ne \"LOCAL\")\n  {\n    $pdb_name=`extract_from_pdb -get_fugue_name $pdb_name`;\n    chop $pdb_name;\n    \n    if ( $pdb_name=~/EXTRACT_FROM_PDB: NO RESULT/)\n      {\n      exit (EXIT_FAILURE)\n      }\n    \n    open (F, $pep_file);\n    while (<F>)\n      {\n  if (/\\>(.*)/)\n    {\n     $seq_name=$1;\n       }\n else\n        {\n     chop $_;\n        $pep=$pep.$_;\n       }\n      }\n    close (F);\n\n    $tmp=$$.tmp_file;\n    \n    $command=\"wget \\'http://www-cryst.bioc.cam.ac.uk/cgi-bin/cgiwrap/kenji/fugue/align.cgi?structure=$pdb_name&SEQUENCE=%3E$seq_name\\%0D\\%0A$pep\\%0D\\%0A&.submit=\\' -O $tmp -o /dev/null\";\n    system $command;\n    \n    open (F, $tmp);\n    while (<F>)\n      {\n    if ( /\\.ali/)\n    {\n     /\\<a href=\\\"(.*\\.ali[^>]*)\\\"\\>/;\n       $aln_url=\"http://www-cryst.bioc.cam.ac.uk$1\";\n   }\n      }\n    close (F);\n    unlink $tmp;\n\n    $command=\"wget $aln_url -O $tmp -o /dev/null\";\n    system $command;\n    \n    \n    open (F, $tmp);\n    while (<F>)\n      {\n s/^>P1;/>/;\n     s/\\*//;\n  next if ( /structureX:/ );\n  next if ( /sequence:/ );\n    next if ( /^ *$/ );\n   print $_;\n      }\n    close (F);\n    unlink $tmp;\n  }\nelsif ( $ENV{\"FUGUE_SERVER\"} eq \"LOCAL\")\n  {\n    \n    $pdb_name = lc($pdb_name);\n    \n    $pdb_name=`export NO_REMOTE_PDB_DIR=1;export PDB_DIR=/Sequences/Pdb/PdbMirror;/usr/local/bin/extract_from_pdb -get_fugue_name $pdb_name`;\n    chop $pdb_name;\n    \n    if ( $pdb_name eq non_valid_pdb_name)\n      {\n  exit (EXIT_FAILURE)\n      }\n    $pdb_file = \"$pdb_name.pdb\";\n    $x = `export NO_REMOTE_PDB_DIR=1;export PDB_DIR=/Sequences/Pdb/PdbMirror;extract_from_pdb -netfile $pdb_name -mode raw > $pdb_file`;\n    if (not -e $pdb_file) {\n      $pdb_file = $pdb_name;\n      $pdb_file =~ s/.$/.pdb/;\n      if (not -e $pdb_file) {\n    exit (EXIT_FAILURE)\n      }\n    }\n    \n    # open (F, $tmp);\n    open (F, \"/home/igs/Tools/T-COFFEE_web/Struct/fugue_align.sh $pep_file $pdb_file|\");\n    while (<F>)\n      {\n  s/^>P1;/>/;\n     s/\\*//;\n  next if ( /structureX:/ );\n  next if ( /sequence:/ );\n    next if ( /^ *$/ );\n   print $_;\n      }\n    close (F);\n    unlink $tmp;\n  }\n    \n   \n    \n","\n\nuse Env qw(HOST);\nuse Env qw(HOME);\nuse Env qw(USER);\n\n\nopen (F,$ARGV[0]);\nwhile ( <>)\n  {\n    @x=/([^:,;\\)\\(\\s]+):[^:,;\\)\\(]*/g;\n    @list=(@list,@x);\n  }\n$n=$#list+1;\nforeach $n(@list){print \">$n\\nsequence\\n\";}\n\n\nclose (F);\n","open (F, $ARGV[0]);\n\nwhile ( <F>)\n  {\n    @l=($_=~/(\\S+)/g);\n    \n    $name=shift @l;\n    \n    print STDOUT \"\\n>$name\\n\";\n    foreach $e (@l){$e=($e eq \"0\")?\"O\":\"I\";print \"$e\";}\n  }\nclose (F);\n\n              \n    \n"};
/*********************************COPYRIGHT NOTICE**********************************/
/* Centre National de la Recherche Scientifique (CNRS) */
/*and */
/*Cedric Notredame */
/*Tue May 10 12:08:44     2005. */
/*All rights reserved.*/
/*This file is part of T-COFFEE.*/
/**/
/*    T-COFFEE is free software; you can redistribute it and/or modify*/
/*    it under the terms of the GNU General Public License as published by*/
/*    the Free Software Foundation; either version 2 of the License, or*/
/*    (at your option) any later version.*/
/**/
/*    T-COFFEE is distributed in the hope that it will be useful,*/
/*    but WITHOUT ANY WARRANTY; without even the implied warranty of*/
/*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the*/
/*    GNU General Public License for more details.*/
/**/
/*    You should have received a copy of the GNU General Public License*/
/*    along with Foobar; if not, write to the Free Software*/
/*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/
/*...............................................                                                                                      |*/
/*  If you need some more information*/
/*  cedric.notredame@europe.com*/
/*...............................................                                                                                                                                     |*/
/**/
/**/
/*    */
/*********************************COPYRIGHT NOTICE**********************************/

Generated by  Doxygen 1.6.0   Back to index