The following packages will be installed: t_coffee Fetching README... 0%100%100%100%100%100%Done Fetching References... 0%100%100%100%100%100%Done Fetching slack-desc... 0%100%100%100%100%100%Done Fetching t_coffee.SlackBuild... 0%100%100%100%100%100%Done Fetching t_coffee.info... 0%100%100%100%100%100%Done T-COFFEE_distribution_Version_13.45.58.c355d11/ T-COFFEE_distribution_Version_13.45.58.c355d11/reference_test/ T-COFFEE_distribution_Version_13.45.58.c355d11/install T-COFFEE_distribution_Version_13.45.58.c355d11/doc/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/misc/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/misc/t_coffee.pdf T-COFFEE_distribution_Version_13.45.58.c355d11/doc/misc/saltt_doc.doc T-COFFEE_distribution_Version_13.45.58.c355d11/doc/misc/thompson_Tcoffee_tutorial.pdf T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/objects.inv T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/index.html T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_doctest.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_quickstart_regressive.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_documentation_validation.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_faq.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_quickstart.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_technical_documentation.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/page-example.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_webserver.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_license.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_installation.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_contacts_adresses.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/doc2test.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_citations_references.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_main_documentation.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_tutorials.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/index.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_sources/tcoffee_release_notes.rst.txt T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/searchindex.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/documentation_options.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/underscore.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/css/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/css/theme.css T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/css/badge_only.css T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/jquery.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/basic.css T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/RobotoSlab/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-bolditalic.woff T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-italic.eot T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-regular.woff T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-regular.ttf T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-italic.woff T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-bold.woff2 T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-regular.woff2 T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-bold.ttf T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-bold.eot T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-bolditalic.woff2 T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-bold.woff T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-bolditalic.eot T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-italic.woff2 T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-italic.ttf T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-regular.eot T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/Lato/lato-bolditalic.ttf T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/fontawesome-webfont.woff T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/fontawesome-webfont.ttf T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/fontawesome-webfont.eot T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/fontawesome-webfont.woff2 T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/fonts/fontawesome-webfont.svg T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/underscore-1.3.1.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/pygments.css T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/language_data.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/js/ T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/js/modernizr.min.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/js/theme.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/doctools.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/jquery-3.2.1.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/searchtools.js T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/file.png T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/plus.png T-COFFEE_distribution_Version_13.45.58.c355d11/doc/html/_static/minus.png T-COFFEE_distribution_Version_13.45.58.c355d11/README T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/ T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/dna_matrix.scr T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/blosum80.mat T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/dna_diag_prob_150_exp_110000 T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/dna_diag_prob_250_exp_110000 T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/dna_diag_prob_100_exp_550000 T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/mix80.mod T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/BLOSUM75.diag_prob_t2 T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/blosum80_trunc.mat T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/dna_diag_prob_100_exp_220000 T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/BLOSUM75.scr T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/hmmtop.arch T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/New_KS.267.seq T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/BLOSUM90.scr T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/dna_diag_prob_100_exp_110000 T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/dna_diag_prob_100_exp_330000 T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/BLOSUM.scr T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/New_KS.267.obs T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/dna_diag_prob_200_exp_110000 T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/BLOSUM.diag_prob_t10 T-COFFEE_distribution_Version_13.45.58.c355d11/mcoffee/hmmtop.psv T-COFFEE_distribution_Version_13.45.58.c355d11/example/ T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small_prf1.template_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/test_lib.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/profile_aln.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/g5.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/profile2_pdb2.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/hmgl_trybr.tmp T-COFFEE_distribution_Version_13.45.58.c355d11/example/hmgb_chite.prf T-COFFEE_distribution_Version_13.45.58.c355d11/example/mocca T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_pdb.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.template T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq2.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq2.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln1.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/4YM9A.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/hmgl_wheat.prf T-COFFEE_distribution_Version_13.45.58.c355d11/example/3IJ24.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases2_small.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/test.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_pdb2.template_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/1PPG.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/b30.aln.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.tm_html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq3.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/luke_skywalker.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/c18orf19.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_tree.nwk T-COFFEE_distribution_Version_13.45.58.c355d11/example/cache.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/process_list.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_pdb_two_seq.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq2.struc_tree.list T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases1_small.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/2ZPRB.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.struc_tree.list T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq2.stk T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_lib3 T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small_pdb2.template_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/1FY3A.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_prot_thread.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/clustal_text T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq2.cons.stk T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq1_rfold1.template_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/4KGAB.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_pdb_two_seq.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/prf1_1.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/g15.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/4Q2KD.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.clustalw T-COFFEE_distribution_Version_13.45.58.c355d11/example/2HEY4.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/1XU12.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/hmgt_mouse.tmp T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln1_1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/struc2.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.tcs_residue_filter3 T-COFFEE_distribution_Version_13.45.58.c355d11/example/3ALQ3.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.score_csv T-COFFEE_distribution_Version_13.45.58.c355d11/example/wublast.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/stdout.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/profile_aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_tmp1.template_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/han_solo T-COFFEE_distribution_Version_13.45.58.c355d11/example/han_solo.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dna_thread.fa T-COFFEE_distribution_Version_13.45.58.c355d11/example/1XU21.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/1AE5A.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/b11.cache T-COFFEE_distribution_Version_13.45.58.c355d11/example/lalign_id_pair_seq1.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases2_small.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_large.code_name T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases2_small.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2U.species T-COFFEE_distribution_Version_13.45.58.c355d11/example/blastpgp.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_cdna.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small_g10.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_pdb.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EXTA.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/1GVZA.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/3IJ22.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_pdb.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_aln2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.fasta~ T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq3.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/c18orf19_chipseq.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/b30.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_pdb1.template_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/1OQE1.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/c18orf19.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/rna3D_msa2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/dna.filter T-COFFEE_distribution_Version_13.45.58.c355d11/example/struc1.template_file T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_prf1.template_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_cdna.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/blast_xml2fasta_aln.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.struc_tree.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/fasta_aln2fasta_aln_unique_name.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/dalilite.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/ncbiblast_lwp.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/nature_protocol.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln1_1.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EXT4.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small_pdb1.template_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.score_ps T-COFFEE_distribution_Version_13.45.58.c355d11/example/1AZZB.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/prf1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/outaln T-COFFEE_distribution_Version_13.45.58.c355d11/example/color_dnaseq3_lib.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.template~ T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2UC.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq1.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/tree.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_cdna.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.expanded_fasta_aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.struc_tree.consensus T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_lib3.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2U.contact_lib.list T-COFFEE_distribution_Version_13.45.58.c355d11/example/rnapdb2protpdb.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/blast_aln2fasta_aln.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq1.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2U.aln.list T-COFFEE_distribution_Version_13.45.58.c355d11/example/2EEKA.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_all.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/3ALQ1.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_color.list T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_pdb_two_seq.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_chain.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/ph_tree_scan.txt T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EIY_C.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.aln.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln1.score_ascii T-COFFEE_distribution_Version_13.45.58.c355d11/example/chewbacca.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/multiplets.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_color.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_large.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/hel_regions.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.msf T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln1_1.score_ascii T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/profile1_pdb1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/slow_pair_seq1.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln1.msf T-COFFEE_distribution_Version_13.45.58.c355d11/example/group_3Dseq1.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_pair.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2U.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_prot_thread.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/dna.replicates T-COFFEE_distribution_Version_13.45.58.c355d11/example/g0.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/extract_from_pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq2.tcoffee.stk T-COFFEE_distribution_Version_13.45.58.c355d11/example/profile1_pdb1.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq2.struc_tree.consensus T-COFFEE_distribution_Version_13.45.58.c355d11/example/1D4V3.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.msf T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases1_small.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/generic_method.tc_method T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_lib2.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_large.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_tree_upgma.nwk T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.fake T-COFFEE_distribution_Version_13.45.58.c355d11/example/fasta_seq2consan_aln.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/hmgb_chite.tmp T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EXT1.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/1OP8F.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq2.cache T-COFFEE_distribution_Version_13.45.58.c355d11/example/block1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/profile2_pdb2.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/c18orf19.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq2.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.b62_aln.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.tcs_weighted T-COFFEE_distribution_Version_13.45.58.c355d11/example/struc1.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_pdb_two_seq_pdb1.template_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2U.template T-COFFEE_distribution_Version_13.45.58.c355d11/example/msa2bootstrap.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases2_small.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln1_2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/prf2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases1_small.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/excel2fasta.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_lib3.tc_lib02 T-COFFEE_distribution_Version_13.45.58.c355d11/example/sv.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.score_pdf T-COFFEE_distribution_Version_13.45.58.c355d11/example/count.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.tcs_replicate_100 T-COFFEE_distribution_Version_13.45.58.c355d11/example/b11.tcmafft T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq2.cw.stk T-COFFEE_distribution_Version_13.45.58.c355d11/example/hmgt_mouse.prf T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_prot_thread.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/b11.score_ascii T-COFFEE_distribution_Version_13.45.58.c355d11/example/rna3D.template T-COFFEE_distribution_Version_13.45.58.c355d11/example/out.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases1_small.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/1NN6.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln5.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_single.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/hmgl_wheat.tmp T-COFFEE_distribution_Version_13.45.58.c355d11/example/b11.fa T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_prot_thread.fa T-COFFEE_distribution_Version_13.45.58.c355d11/example/charge_relay_lib.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2UD.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/b80.aln.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/3IJ21.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/block2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq1.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_prot_thread.score_ascii T-COFFEE_distribution_Version_13.45.58.c355d11/example/out_aln.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/clustalw_method.tc_method T-COFFEE_distribution_Version_13.45.58.c355d11/example/t_coffee_dpa T-COFFEE_distribution_Version_13.45.58.c355d11/example/rna3D.fa T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EUQ_B.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/1FI8.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sv_muscle.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2UB.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/install.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_pdb_two_seq.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/3G01B.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/outaln.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/b80.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.fasta_aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/cache.seq T-COFFEE_distribution_Version_13.45.58.c355d11/example/5ABWA.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.tcs_residue_lower4 T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.clustalw T-COFFEE_distribution_Version_13.45.58.c355d11/example/2HEY1.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/Ssample_aln1.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/1JMA1.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/clustal_text.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/color_cons_box.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/2HEYR.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EXT3.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_pdb.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/allpairs.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/RNAplfold2tclib.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/hmgl_trybr.prf T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.ts_html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.tcs_column_filter3 T-COFFEE_distribution_Version_13.45.58.c355d11/example/sv.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/alirna.ps T-COFFEE_distribution_Version_13.45.58.c355d11/example/2HEY2.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/fasta_seq2hmmtop_fasta.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/3IJ2X.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/test.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/make_license.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_param_file.param T-COFFEE_distribution_Version_13.45.58.c355d11/example/3ALQ2.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/1JMA2.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_profile1_1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.struc_tree.consense_output T-COFFEE_distribution_Version_13.45.58.c355d11/example/1MZDA.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/profile1_pdb1_1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_blosum62.score_ascii T-COFFEE_distribution_Version_13.45.58.c355d11/example/bestpairs.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/wublast_lwp.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/1D4V2.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/prf3.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2U.contact_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq1.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.score_html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_lib1.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq2.struc_tree.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/two_profiles.template_file T-COFFEE_distribution_Version_13.45.58.c355d11/example/sv.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_profile1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.template T-COFFEE_distribution_Version_13.45.58.c355d11/example/color_dnaseq3.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/5FCRD.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/3ALQR.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/struc1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/struc3.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_lib1.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq2.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/CCsed.script T-COFFEE_distribution_Version_13.45.58.c355d11/example/3ALQ4.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_lib1.mocca_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/3IJ23.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq2.alifold T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_tree_nj.nwk T-COFFEE_distribution_Version_13.45.58.c355d11/example/rec_sum.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.mafftnewick T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EUY_B.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/clean_cache.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases1_small.msf T-COFFEE_distribution_Version_13.45.58.c355d11/example/combined_profiles.aln.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/2RDLB.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln3.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/struc1.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln1.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/out.tab T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/prf1.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/out.ascii T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_oneseq.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_oneseq.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_profile2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_large.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EXT2.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq1.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_tree2.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq3.cache T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_profile1_1.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/profile2_pdb2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/three_cdna.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.msf_aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_rnaseq1.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/3V2UA.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_large.muscle T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases1_small.clustalw T-COFFEE_distribution_Version_13.45.58.c355d11/example/p350.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/any_file2unix_file.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.tree T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.list T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_tree_sar.nwk T-COFFEE_distribution_Version_13.45.58.c355d11/example/chewbacca T-COFFEE_distribution_Version_13.45.58.c355d11/example/tc_generic_method.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_large.coded.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/2QXJA.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/t_coffee_dpa2 T-COFFEE_distribution_Version_13.45.58.c355d11/example/color_dnaseq3.pdf T-COFFEE_distribution_Version_13.45.58.c355d11/example/prf1.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sv.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.score_ascii T-COFFEE_distribution_Version_13.45.58.c355d11/example/combined_profiles.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/luke_skywalker.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/g10.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/struc1.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_oneseq.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EUFA.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_large.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_tree1.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_one-res.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.b62_aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq2.struc_tree.consense_output T-COFFEE_distribution_Version_13.45.58.c355d11/example/b11.tcmafft.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/b11.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_aln2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1.expanded_fasta_aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/fasta_seq2RNAplfold_templatefile.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq1.tc_lib T-COFFEE_distribution_Version_13.45.58.c355d11/example/profile1_pdb1_1.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/b11.dnd T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_list1.lib_list T-COFFEE_distribution_Version_13.45.58.c355d11/example/2ZKSA.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/color_cons.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/c18orf19.fa T-COFFEE_distribution_Version_13.45.58.c355d11/example/clustalw_aln2fasta_aln.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/1SGFX.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/msf_aln2fasta_aln.pl T-COFFEE_distribution_Version_13.45.58.c355d11/example/luke_skywalker.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_ssp.template T-COFFEE_distribution_Version_13.45.58.c355d11/example/2RPJ1.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small_g10.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/1EXD_B.pdb T-COFFEE_distribution_Version_13.45.58.c355d11/example/test.aln.html T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases1_small.fasta_aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_dnaseq2.aln T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small_dna.fasta T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_3Dseq2.template T-COFFEE_distribution_Version_13.45.58.c355d11/example/proteases_small.pir_seq T-COFFEE_distribution_Version_13.45.58.c355d11/example/sample_seq1_aln2.msf T-COFFEE_distribution_Version_13.45.58.c355d11/example/newick2name_list.pl T-COFFEE_distribution_Version_13.45.58.c355d11/bin/ T-COFFEE_distribution_Version_13.45.58.c355d11/bin/macosx/ T-COFFEE_distribution_Version_13.45.58.c355d11/bin/linux/ T-COFFEE_distribution_Version_13.45.58.c355d11/bin/linux/t_coffee T-COFFEE_distribution_Version_13.45.58.c355d11/tclinkdb.txt T-COFFEE_distribution_Version_13.45.58.c355d11/license.txt T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/ T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dev1_lib_header.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/ T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/iteration.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/parttree.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/fastal_opt_parsing.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/fastal_opt_parsing.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/scoring.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/iteration.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/diagonal.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/tree.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/fastal.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/fastal.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/parttree.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/diagonal.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/tree.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal/scoring.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/TMalign.f T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/makefile T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/programmes_define.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib_header.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/ T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_domain_dp_drivers.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_drivers.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/phylo3d.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/CUSTOM_evaluate_for_struc.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_domain_dp_drivers.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_ssec_pwaln.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_sim.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_linear_nw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/evaluate_for_struc.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_gotoh_nw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_cdna.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_generic_fasta_nw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_clean_maln.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_generic_fasta_nw.c.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/evaluate_for_struc.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/evaluate_dirichlet.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_mm_nw.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_gotoh_sw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_cdna_fasta_nw.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_est.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/pavie.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/evaluate_for_domain.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_cdna_gotoh_nw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_cdna_fasta_nw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/showpair.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_fasta_nw.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/evaluate.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/evaluate_for_domain.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/evaluate_dirichlet.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/evaluate.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_graph_maln.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_gotoh_sw.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_generic_fasta_nw.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/pavie_dp.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_est.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_clean_maln.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_fasta_sw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_fasta_sw.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_ssec_pwaln.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/fasta_dp.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_gotoh_nw.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_fasta_nw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/fsa_dp.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_domain_dp.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_domain_dp.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/showpair.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/pavie_dp.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_graph_maln.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_suboptimal_nw.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_mm_nw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/phylo3d.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_sim.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_drivers.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/CUSTOM_evaluate_for_struc.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/fsa_dp.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dp_lib/util_dp_suboptimal_nw.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/data_headers/ T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/data_headers/programmes_define.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/data_headers/perl_header_lib.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib_header.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/perl_header_lib.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/ T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/aln_convertion_util.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/aln_convertion_util.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_make_tree.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/reformat_struc.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/reformat.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_constraints_list.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_declare.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/hsearch.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/reformat.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/aln_compare.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_job_handling.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_make_tree.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_aln_analyze.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_dps.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_analyse_constraints_list.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/random.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_job_handling.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_dps.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_constraints_list.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/reformat_struc.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_declare.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_aln_analyze.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_domain_constraints_list.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/hsearch.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_analyse_constraints_list.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/aln_compare.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/random.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/util_lib/util_domain_constraints_list.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib_header.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee_header.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/ T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/km_coffee.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/Vector.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/classes.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/Vector.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/Stack.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/kmeans.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/Stack.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/classes.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/km_util.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/km_coffee.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/km_util.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/km_coffee/kmeans.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/define_header.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/ T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/tree_util.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/io_func.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/tree_util.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/io_structures.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/pb_util_read_seq_util.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/pb_util_read_seq_util.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/pb_util_read_sequence.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/io_func.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/pb_util_read_sequence2.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/io_lib/pb_util_read_sequence.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/t_coffee_lib/ T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/t_coffee_lib/t_coffee.c T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/t_coffee_lib/t_coffee.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/coffee_defines.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/ga_lib_header.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/matrices.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/fastal_lib_header.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dev_lib/ T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dev_lib/dev1.h T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source/dev_lib/dev1.c make: Entering directory '/usr/src/slapt-src/academic/t_coffee/T-COFFEE_distribution_Version_13.45.58.c355d11/t_coffee_source' CC fastal/iteration.c In file included from ./io_lib_header.h:33, from fastal/iteration.c:34: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ fastal/iteration.c: In function ‘void iterate(Fastal_param*, void*, char*, char*, int)’: fastal/iteration.c:392:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 392 | char *edit_file_name = "EDIT";//vtmpnam(NULL); | ^~~~~~ fastal/iteration.c:396:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 396 | char *split_file_name = "AHA";//vtmpnam(NULL); | ^~~~~ CC fastal/fastal_opt_parsing.c fastal/fastal_opt_parsing.c: In function ‘void arg_parse(int, char**, Fastal_arguments*)’: fastal/fastal_opt_parsing.c:60:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 60 | arguments->diag_method = "blast"; | ^~~~~~~ fastal/fastal_opt_parsing.c:61:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 61 | arguments->output_file = "out->aln"; | ^~~~~~~~~~ fastal/fastal_opt_parsing.c:65:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 65 | arguments->method = "fast"; | ^~~~~~ fastal/fastal_opt_parsing.c:66:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 66 | arguments->tree_method = "oligotree"; | ^~~~~~~~~~~ fastal/fastal_opt_parsing.c:67:24: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 67 | arguments->mat="dna_idmat"; | ^~~~~~~~~~~ fastal/fastal_opt_parsing.c:90:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 90 | arguments->mat = "dna_idmat"; | ^~~~~~~~~~~ fastal/fastal_opt_parsing.c:95:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 95 | arguments->mat = "blosum62mt"; | ^~~~~~~~~~~~ CC fastal/scoring.c In file included from ./io_lib_header.h:33, from fastal/scoring.c:37: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC fastal/diagonal.c In file included from ./io_lib_header.h:33, from fastal/diagonal.c:31: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC fastal/tree.c In file included from ./io_lib_header.h:33, from fastal/tree.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC fastal/fastal.c In file included from ./io_lib_header.h:33, from fastal/fastal.c:34: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC fastal/parttree.c In file included from ./io_lib_header.h:33, from fastal/parttree.c:36: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ fastal/parttree.c: In function ‘tnode*** int_dist2upgma_tree_fastal(int**, int, char*, char**)’: fastal/parttree.c:218:52: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 218 | printf_exit ( EXIT_FAILURE,stderr, "\nERROR: non empty heap in upgma [FATAL]"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fastal/parttree.c:237:58: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 237 | vfclose (print_tree (T, "newick", vfopen (fname, "w"))); | ^~~ fastal/parttree.c:237:33: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 237 | vfclose (print_tree (T, "newick", vfopen (fname, "w"))); | ^~~~~~~~ fastal/parttree.c: In function ‘void makepointtable_fast(int*, int, int, int)’: fastal/parttree.c:757:23: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 757 | register int *p; | ^ fastal/parttree.c: In function ‘void make_fast_tree(char*, int, int)’: fastal/parttree.c:827:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 827 | make_partTree(file_name, "TREE_OUT", ktup, n, 1, 0); | ^~~~~~~~~~ fastal/parttree.c: In function ‘int make_pos_len_index_of_file(char*, char*, long int**, int**, int, int)’: fastal/parttree.c:1004:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1004 | gl=make_group_aa ( &ng, "mafft"); | ^~~~~~~ CC dp_lib/util_dp_drivers.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_drivers.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* profile2list(Job_TC*, int)’: dp_lib/util_dp_drivers.c:107:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 107 | job=print_lib_job (job, "param->seq_c=%s", buf); | ^~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* seq2list(Job_TC*)’: dp_lib/util_dp_drivers.c:331:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 331 | RCL=align_pdb_pair ( seq,"gotoh_pair_wise", CL->align_pdb_hasch_mode,CL->align_pdb_param_file,CL, job); | ^~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:335:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 335 | RCL=align_pdb_pair ( seq,"sim_pair_wise_lalign", CL->align_pdb_hasch_mode,CL->align_pdb_param_file,CL, job); | ^~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:343:116: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 343 | fprintf ( CL->local_stderr, "\nERROR: THE FUNCTION %s DOES NOT EXIST [FATAL:%s]\n", mode, PROGRAM);crash(""); | ^~ In file included from ./define_header.h:30, from ./io_lib/io_structures.h:33, from ./io_lib_header.h:30, from dp_lib/util_dp_drivers.c:33: dp_lib/util_dp_drivers.c: In function ‘Constraint_list* method2pw_cl(TC_method*, Constraint_list*)’: ./coffee_defines.h:297:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 297 | #define AA_ALPHABET "acdefghiklmnpqrstvwy-ACDEFGHIKLMNPQRSTVWY" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./coffee_defines.h:297:32: note: in definition of macro ‘AA_ALPHABET’ 297 | #define AA_ALPHABET "acdefghiklmnpqrstvwy-ACDEFGHIKLMNPQRSTVWY" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘char* seq_file2msa_file(char*, char*, char*)’: dp_lib/util_dp_drivers.c:996:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 996 | lcom=csprintf (lcom, "%s -seq seq -outfile aln -output fasta_aln -quiet >/dev/null 2>/dev/null", file+1); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1001:49: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1001 | if (!m)printf_exit ( EXIT_FAILURE,stderr, "\nERROR: %s is an unknown method [FATAL]", file); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1005:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1005 | command=make_aln_command (method,"seq", "aln"); | ^~~~~ dp_lib/util_dp_drivers.c:1005:47: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1005 | command=make_aln_command (method,"seq", "aln"); | ^~~~~ dp_lib/util_dp_drivers.c:1010:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1010 | command=make_aln_command (method,"seq", "aln"); | ^~~~~ dp_lib/util_dp_drivers.c:1010:47: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1010 | command=make_aln_command (method,"seq", "aln"); | ^~~~~ dp_lib/util_dp_drivers.c:1020:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1020 | printf_system ("mv %s seq", seq); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c:1022:37: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1022 | if ( duplicated==1)printf_system ("cp seq aln"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1025:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1025 | printf_system ("%s", lcom);vfree (lcom); | ^~~~ dp_lib/util_dp_drivers.c:1027:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1027 | else if ( command)printf_system ("%s", command); | ^~~~ dp_lib/util_dp_drivers.c:1028:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1028 | else printf_exit ( EXIT_FAILURE,stderr, "\nERROR: %s is an unknown method [FATAL]", file); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1030:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1030 | if (check_file_exists ("aln")) | ^~~~~ dp_lib/util_dp_drivers.c:1032:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1032 | printf_system ("mv aln %s",aln); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c:1033:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1033 | printf_system ("mv seq %s",seq); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c:1039:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1039 | printf_exit (EXIT_FAILURE, stderr, "ERROR: Impossible to run %s [FATAL:%s]\n",file, PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* align_pdb_pair(char*, char*, char*, char*, Constraint_list*, Job_TC*)’: dp_lib/util_dp_drivers.c:1131:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1131 | output_constraints (name1, "100", F); | ^~~~~ dp_lib/util_dp_drivers.c:1132:48: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1132 | CL=aln2constraint_list (F, CL, "100"); | ^~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* hh_pair(TC_method*, char*, Constraint_list*)’: dp_lib/util_dp_drivers.c:1171:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1171 | fp=vfopen (aln1, "w"); | ^~~ dp_lib/util_dp_drivers.c:1191:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1191 | fp=vfopen (aln2, "w"); | ^~~ dp_lib/util_dp_drivers.c:1211:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1211 | printf_system ("hhalign -v 0 -i %s -t %s -atab %s -global -M 100 -cons >/dev/null 2>/dev/null", aln1, aln2, hhfile); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1216:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1216 | fp=vfopen (hhfile, "r"); | ^~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* profile_pair(TC_method*, char*, Constraint_list*)’: dp_lib/util_dp_drivers.c:1305:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1305 | fp=vfopen (prf1_file, "w"); | ^~~ dp_lib/util_dp_drivers.c:1325:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1325 | fp=vfopen (prf2_file, "w"); | ^~~ dp_lib/util_dp_drivers.c:1348:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1348 | param=substitute ( param, " ", ""); | ^~~ dp_lib/util_dp_drivers.c:1348:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1348 | param=substitute ( param, " ", ""); | ^~ dp_lib/util_dp_drivers.c:1349:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1349 | param=substitute ( param, "\n", ""); | ^~~~ dp_lib/util_dp_drivers.c:1349:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1349 | param=substitute ( param, "\n", ""); | ^~ dp_lib/util_dp_drivers.c:1371:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1371 | FILE *fp =vfopen (result, "r"); | ^~~ dp_lib/util_dp_drivers.c:1372:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1372 | FILE *fp2=vfopen (result2, "w"); | ^~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* profile_pair_decomposed(TC_method*, char*, Constraint_list*, char*)’: dp_lib/util_dp_drivers.c:1471:33: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1471 | param=substitute ( param, " ", ""); | ^~~ dp_lib/util_dp_drivers.c:1471:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1471 | param=substitute ( param, " ", ""); | ^~ dp_lib/util_dp_drivers.c:1472:33: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1472 | param=substitute ( param, "\n", ""); | ^~~~ dp_lib/util_dp_drivers.c:1472:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1472 | param=substitute ( param, "\n", ""); | ^~ dp_lib/util_dp_drivers.c:1483:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1483 | int *sub=aln2subset (A[a],"cov",&ns[a]); | ^~~~~ dp_lib/util_dp_drivers.c:1493:81: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1493 | else if (strm (mode, "prf3"))subseq[a][0]= aln2cons_seq_mat(A[a], "blosum62mt"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1517:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1517 | printf_file (input, "w", ""); | ^~~ dp_lib/util_dp_drivers.c:1517:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1517 | printf_file (input, "w", ""); | ^~ dp_lib/util_dp_drivers.c:1522:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1522 | printf_file (input, "a", ">seq_%d\n%s\n", c,subseq[a][b]); | ^~~ dp_lib/util_dp_drivers.c:1522:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1522 | printf_file (input, "a", ">seq_%d\n%s\n", c,subseq[a][b]); | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1526:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1526 | printf_system ("t_coffee -seq %s -out_lib %s -lib_only -method %s -outorder=input >/dev/null 2>/dev/null", input, output, M->method); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* pdbid_pair(TC_method*, char*, Constraint_list*)’: dp_lib/util_dp_drivers.c:1626:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1626 | CL=aln2constraint_list (F, CL, "sim"); | ^~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* pdb_pair(TC_method*, char*, Constraint_list*)’: dp_lib/util_dp_drivers.c:1663:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1663 | printf_system ("extract_from_pdb -infile %s -atom ALL -chain FIRST -nodiagnostic > %s", pdb1, pdb1_file); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1664:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1664 | printf_system ("extract_from_pdb -infile %s -atom ALL -chain FIRST -nodiagnostic > %s", pdb2, pdb2_file); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1670:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1670 | printf_system ("rnapdb2protpdb.pl C3PRIME %s > %s", pdb1_file, rnatmp1); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1671:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1671 | printf_system ("rnapdb2protpdb.pl C3PRIME %s > %s", pdb2_file, rnatmp2); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1672:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1672 | printf_system ("mv %s %s", rnatmp1, pdb1_file); | ^~~~~~~~~~ dp_lib/util_dp_drivers.c:1673:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1673 | printf_system ("mv %s %s", rnatmp2, pdb2_file); | ^~~~~~~~~~ dp_lib/util_dp_drivers.c:1676:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1676 | printf_system ("tc_generic_method.pl -mode=pdb_pair -method=%s %s%s %s%s %s%s -tmpdir=%s", M->executable2,M->in_flag,pdb1_file, M->in_flag2,pdb2_file,M->out_flag, result, get_tmp_4_tcoffee()); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1684:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1684 | CL=aln2constraint_list (F, CL, "sim"); | ^~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* seq_msa(TC_method*, char*, Constraint_list*)’: dp_lib/util_dp_drivers.c:1716:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1716 | fp=vfopen (infile, "w"); | ^~~ dp_lib/util_dp_drivers.c:1749:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1749 | CL=aln2constraint_list (F, CL, "sim"); | ^~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* thread_pair2(TC_method*, int, int, Constraint_list*)’: dp_lib/util_dp_drivers.c:1818:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1818 | fp=vfopen (pep, "w"); | ^~~ dp_lib/util_dp_drivers.c:1833:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1833 | CL=aln2constraint_list (F, CL, "sim"); | ^~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* lsqman_pair(char*, Constraint_list*)’: dp_lib/util_dp_drivers.c:1874:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1874 | fp=vfopen (seq_file, "w"); | ^~~ dp_lib/util_dp_drivers.c:1906:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1906 | CL=aln2constraint_list (F, CL, "100"); | ^~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* sap_pair(char*, char*, Constraint_list*)’: dp_lib/util_dp_drivers.c:1945:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1945 | seq=csprintf (seq, "%s", seq_in); | ^~~~ dp_lib/util_dp_drivers.c:1950:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1950 | if (!(template1=seq2T_value(CL->S,s1, "template_name", "_P_")))return CL; | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1950:59: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1950 | if (!(template1=seq2T_value(CL->S,s1, "template_name", "_P_")))return CL; | ^~~~~ dp_lib/util_dp_drivers.c:1951:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1951 | if (!(template2=seq2T_value(CL->S,s2, "template_name", "_P_")))return CL; | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1951:59: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1951 | if (!(template2=seq2T_value(CL->S,s2, "template_name", "_P_")))return CL; | ^~~~~ dp_lib/util_dp_drivers.c:1959:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1959 | printf_system ("mkdir -p %s",wdir=vtmpnam(NULL)); | ^~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1963:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1963 | myexit(fprintf_error ( stderr, "\nERROR: Could Not Create Directory %s required by sap_pair [FATAL:%s]", wdir, PROGRAM)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1970:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1970 | printf_system ("rnapdb2protpdb.pl C3PRIME %s > in1",tmp_pdb1); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1971:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1971 | printf_system ("rnapdb2protpdb.pl C3PRIME %s > in2",tmp_pdb2); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1975:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1975 | printf_system ("mv %s in1", tmp_pdb1); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c:1976:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1976 | printf_system ("mv %s in2", tmp_pdb2); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c:1982:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1982 | printf_system ("%s in1 in2 >sapout 2>/dev/null::IGNORE_FAILURE::",SAP_4_TCOFFEE); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1983:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1983 | issap=is_sap_file("sapout"); | ^~~~~~~~ dp_lib/util_dp_drivers.c:1988:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1988 | add_warning ( stderr, "SAP failed to align: %s against %s [%s %s]- attempt %d [WARNING:%s]\n", seq2P_template_file(CL->S,s1),seq2P_template_file(CL->S,s2), template1, template2,ntry,PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1990:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1990 | printf_system ("%s in1 in2 >sapout 2>/dev/null::IGNORE_FAILURE::",SAP_4_TCOFFEE); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:1991:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1991 | issap=is_sap_file("sapout"); | ^~~~~~~~ dp_lib/util_dp_drivers.c:1996:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1996 | myexit(fprintf_error ( stderr, "SAP failed to align: %s against %s [%s %s]- attempt %d [FATAL:%s]\n", seq2P_template_file(CL->S,s1),seq2P_template_file(CL->S,s2), template1, template2,ntry,PROGRAM)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2001:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2001 | max=file2nlines("sapout")+1; | ^~~~~~~~ dp_lib/util_dp_drivers.c:2005:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2005 | fp=find_token_in_file ("sapout", NULL, "Percent"); | ^~~~~~~~ dp_lib/util_dp_drivers.c:2005:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2005 | fp=find_token_in_file ("sapout", NULL, "Percent"); | ^~~~~~~~~ dp_lib/util_dp_drivers.c:2006:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2006 | fp=find_token_in_file ("sapout", fp , "Percent"); | ^~~~~~~~ dp_lib/util_dp_drivers.c:2006:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2006 | fp=find_token_in_file ("sapout", fp , "Percent"); | ^~~~~~~~~ dp_lib/util_dp_drivers.c:2012:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2012 | remove_charset (buf, "*"); | ^~~ dp_lib/util_dp_drivers.c:2045:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2045 | fp=vfopen ( "saplib", "w"); | ^~~~~~~~ dp_lib/util_dp_drivers.c:2045:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2045 | fp=vfopen ( "saplib", "w"); | ^~~ dp_lib/util_dp_drivers.c:2063:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2063 | CL=read_constraint_list_file(CL,"saplib"); | ^~~~~~~~ dp_lib/util_dp_drivers.c:2068:12: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2068 | vremove("in1");vremove ("in2");vremove("sapout"); vremove("saplib"); | ^~~~~ dp_lib/util_dp_drivers.c:2068:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2068 | vremove("in1");vremove ("in2");vremove("sapout"); vremove("saplib"); | ^~~~~ dp_lib/util_dp_drivers.c:2068:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2068 | vremove("in1");vremove ("in2");vremove("sapout"); vremove("saplib"); | ^~~~~~~~ dp_lib/util_dp_drivers.c:2068:62: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2068 | vremove("in1");vremove ("in2");vremove("sapout"); vremove("saplib"); | ^~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* sap_pair_old2(char*, char*, Constraint_list*)’: dp_lib/util_dp_drivers.c:2078:26: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 2078 | register int a; | ^ dp_lib/util_dp_drivers.c:2109:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2109 | template1=seq2T_value(CL->S,s1, "template_name", "_P_"); | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2109:62: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2109 | template1=seq2T_value(CL->S,s1, "template_name", "_P_"); | ^~~~~ dp_lib/util_dp_drivers.c:2110:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2110 | template2=seq2T_value(CL->S,s2, "template_name", "_P_"); | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2110:62: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2110 | template2=seq2T_value(CL->S,s2, "template_name", "_P_"); | ^~~~~ dp_lib/util_dp_drivers.c:2124:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2124 | HERE ("\nDo THE COMPUTATIOON: NO CACHE"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2127:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2127 | printf_system ("mkdir -p %s", newdir); | ^~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2141:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2141 | printf_system ("rnapdb2protpdb.pl C3PRIME %s > %s",tmp_pdb1, local1); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2142:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2142 | printf_system ("rnapdb2protpdb.pl C3PRIME %s > %s",tmp_pdb2, local2); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2146:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2146 | printf_system ("cp %s %s", tmp_pdb1, local1); | ^~~~~~~~~~ dp_lib/util_dp_drivers.c:2147:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2147 | printf_system ("cp %s %s", tmp_pdb2, local2); | ^~~~~~~~~~ dp_lib/util_dp_drivers.c:2150:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2150 | printf_system ("%s %s %s >%s 2>/dev/null::IGNORE_FAILURE::",program,local1,local2,tmp_name); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2154:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2154 | add_warning ( stderr, "SAP failed to align: %s against %s [%s:WARNING]\n", seq2P_template_file(CL->S,s1),seq2P_template_file(CL->S,s2), PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2163:53: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2163 | fp=find_token_in_file ( tmp_name, NULL, "Percent"); | ^~~~~~~~~ dp_lib/util_dp_drivers.c:2164:53: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2164 | fp=find_token_in_file ( tmp_name, fp , "Percent"); | ^~~~~~~~~ dp_lib/util_dp_drivers.c:2169:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2169 | remove_charset (buf, "*"); | ^~~ dp_lib/util_dp_drivers.c:2210:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2210 | fp=vfopen ( sap_lib, "w"); | ^~~ dp_lib/util_dp_drivers.c:2227:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2227 | HERE ("SAP LIB-1\n%s %s\n%s %s\n", (CL->S)->name[s1], (CL->S)->seq[s1], (CL->S)->name[s1], sap_seq1); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2228:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2228 | HERE ("SAP LIB-2\n%s %s\n%s %s\n", (CL->S)->name[s2], (CL->S)->seq[s2], (CL->S)->name[s2], sap_seq2); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* rnapdb_pair(TC_method*, char*, Constraint_list*)’: dp_lib/util_dp_drivers.c:2293:48: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2293 | CL=aln2constraint_list (F, CL, "sim"); | ^~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* best_pair4rna(Job_TC*)’: dp_lib/util_dp_drivers.c:2340:52: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2340 | printf_exit (EXIT_FAILURE, stderr, "ERROR: RNA Sequences Only with best4rna_pair [FATAL:%s]\n",PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2361:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2361 | if (!blosum)blosum=read_matrice ("blosum62mt"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2366:68: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2366 | proba_pairM=method_file2TC_method(method_name2method_file ("proba_pair")); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2369:67: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2369 | sara_pairM=method_file2TC_method(method_name2method_file ("sara_pair")); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Constraint_list* best_pair4prot(Job_TC*)’: dp_lib/util_dp_drivers.c:2422:116: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2422 | if ( strm ( retrieve_seq_type(), "DNA") ||strm ( retrieve_seq_type(), "RNA") )printf_exit (EXIT_FAILURE, stderr, "ERROR: Protein Sequences Only with bestprot_pair [FATAL:%s]\n",PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2443:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2443 | if (!blosum)blosum=read_matrice ("blosum62mt"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2445:61: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2445 | id=idscore_pairseq (S->seq[s1], S->seq[s2],-10,-1,blosum, "sim"); | ^~~~~ dp_lib/util_dp_drivers.c:2448:62: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2448 | proba_pairM=method_file2TC_method(method_name2method_file ("proba_pair")); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2451:60: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2451 | sap_pairM=method_file2TC_method(method_name2method_file ("sap_pair")); | ^~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* fast_pair(Job_TC*)’: dp_lib/util_dp_drivers.c:2548:56: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2548 | A->seq_al[a]=csprintf (A->seq_al[a], "%s", S->seq[s]); | ^~~~ dp_lib/util_dp_drivers.c:2549:52: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2549 | A->name[a]=csprintf (A->name[a], "%s", (CL->S)->name[s]); | ^~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* align_two_sequences4dpa(char*, char*, char*, char*, char*, int, int, char*, Alignment*)’: dp_lib/util_dp_drivers.c:2722:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2722 | HERE ("Oups %c %c should be the same ...", r1, r2); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2729:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2729 | R->seq_al[0]=strcatf (R->seq_al[0], "%s%c", (A)?A->seq_al[0]:"", r1); | ^~~~~~ dp_lib/util_dp_drivers.c:2730:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2730 | R->seq_al[1]=strcatf (R->seq_al[1], "%s%c", (A)?A->seq_al[1]:"", r2); | ^~~~~~ dp_lib/util_dp_drivers.c:2735:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2735 | HERE ("oups these two length [%d %d] should be identical",strlen (R->seq_al[0]),strlen (R->seq_al[1]),R->seq_al[0], R->seq_al[1]); exit (0); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2746:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2746 | R->seq_al[0]=strcatf (R->seq_al[0], "%s", (A)?A->seq_al[0]:""); | ^~~~ dp_lib/util_dp_drivers.c:2747:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2747 | R->seq_al[1]=strcatf (R->seq_al[1], "%s", (A)?A->seq_al[1]:""); | ^~~~ dp_lib/util_dp_drivers.c:2755:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2755 | HERE ("%d %d\n\n[%s]\n[%s]", strlen (R->seq_al[0]),strlen (R->seq_al[1]),R->seq_al[0], R->seq_al[1]); | ^~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* align_two_streches4dpa(char*, char*, char*, int, int, char*, Alignment*)’: dp_lib/util_dp_drivers.c:2791:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2791 | A->seq_al[0]=csprintf (A->seq_al[0], "%s", s0); | ^~~~ dp_lib/util_dp_drivers.c:2792:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2792 | A->seq_al[1]=csprintf (A->seq_al[1], "%s%s", s1,gap); | ^~~~~~ dp_lib/util_dp_drivers.c:2799:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2799 | A->seq_al[0]=csprintf (A->seq_al[0], "%s%s", s0,gap); | ^~~~~~ dp_lib/util_dp_drivers.c:2800:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2800 | A->seq_al[1]=csprintf (A->seq_al[1], "%s", s1); | ^~~~ dp_lib/util_dp_drivers.c:2807:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2807 | A->seq_al[0]=csprintf (A->seq_al[0], "%s", s0); | ^~~~ dp_lib/util_dp_drivers.c:2808:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2808 | A->seq_al[1]=csprintf (A->seq_al[1], "%s", s1); | ^~~~ dp_lib/util_dp_drivers.c:2814:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2814 | return align_two_sequences (s0, s1,"blosum62mt",-4,-1, "myers_miller_pair_wise"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2814:62: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2814 | return align_two_sequences (s0, s1,"blosum62mt",-4,-1, "myers_miller_pair_wise"); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2820:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2820 | A->seq_al[0]=csprintf (A->seq_al[0], "%s", s0); | ^~~~ dp_lib/util_dp_drivers.c:2821:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2821 | A->seq_al[1]=csprintf (A->seq_al[1], "%s", gap); | ^~~~ dp_lib/util_dp_drivers.c:2828:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2828 | A->seq_al[0]=csprintf (A->seq_al[0], "%s", gap); | ^~~~ dp_lib/util_dp_drivers.c:2829:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2829 | A->seq_al[1]=csprintf (A->seq_al[1], "%s", s1); | ^~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* align_two_structures(Sequence*, int, int, char*)’: dp_lib/util_dp_drivers.c:2846:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2846 | fp=vfopen (in, "w"); | ^~~ dp_lib/util_dp_drivers.c:2849:65: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2849 | fprintf (fp, ">%s _P_ %s\n%s\n",S->name[s1],seq2T_value(S,s1, "template_file", "_P_"),S->seq[s1]); | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2849:82: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2849 | fprintf (fp, ">%s _P_ %s\n%s\n",S->name[s1],seq2T_value(S,s1, "template_file", "_P_"),S->seq[s1]); | ^~~~~ dp_lib/util_dp_drivers.c:2850:65: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2850 | fprintf (fp, ">%s _P_ %s\n%s\n",S->name[s2],seq2T_value(S,s2, "template_file", "_P_"),S->seq[s2]); | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2850:82: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2850 | fprintf (fp, ">%s _P_ %s\n%s\n",S->name[s2],seq2T_value(S,s2, "template_file", "_P_"),S->seq[s2]); | ^~~~~ dp_lib/util_dp_drivers.c:2855:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2855 | if (verbose()==2)command=csprintf (command,"t_coffee -in %s -template_file %s -method %s -outfile=%s -output fasta_aln",in,in,mode, out); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2856:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2856 | else command=csprintf (command,"t_coffee -in %s -template_file %s -method %s -outfile=%s -output fasta_aln -quiet >/dev/null 2>/dev/null",in,in,mode, out); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2861:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2861 | add_warning ( stderr, "\nCould not align %s and %s with %s\nUse sequence alignment instead",S->name[s1],S->name[s2],mode,PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2862:59: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2862 | return align_two_sequences (S->seq[s1], S->seq[s2], "blosum62mt", -8, -1, "myers_miller_pair_wise"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:2862:81: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2862 | return align_two_sequences (S->seq[s1], S->seq[s2], "blosum62mt", -8, -1, "myers_miller_pair_wise"); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘tnode*** make_tree(Alignment*, Constraint_list*, int, int, Sequence*, char*, int)’: dp_lib/util_dp_drivers.c:3005:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3005 | fp=vfopen (tmp,"w"); | ^~~ dp_lib/util_dp_drivers.c:3063:52: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3063 | printf_exit (EXIT_FAILURE, stderr, "ERROR: %s is an unknown tree computation mode [FATAL:%s]", CL->tree_mode, PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* realign_twoseq(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:3240:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3240 | HERE ("S1=%d S2=%d LEN=%d", A->len_aln); | ^~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* realign_kmeans(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:3247:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3247 | g=seq2kmeans_class(A,2,"msar"); | ^~~~~~ dp_lib/util_dp_drivers.c:3266:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3266 | HERE ("LEN=%d", A->len_aln); | ^~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* realign_aln_best(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:3314:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3314 | HERE ("G+: %d G2:%d", ns[0], ns[1]); | ^~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:3319:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3319 | HERE ("BIPART: LEN=%d", A->len_aln); | ^~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* realign_aln_random_bipart(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:3345:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3345 | HERE ("G+: %d G2:%d", ns[0], ns[1]); | ^~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:3353:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3353 | HERE ("BIPART: LEN=%d", A->len_aln); | ^~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* seq2aln_group(Alignment*, int, Constraint_list*)’: dp_lib/util_dp_drivers.c:3553:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3553 | set_node_score (A, P, "idmat_sim"); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int seq_aln_thr2(Alignment*, int**, int, int, Constraint_list*)’: dp_lib/util_dp_drivers.c:3674:92: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3674 | sim+=generic_get_seq_sim (A->seq_al[ls[0][b]], A->seq_al[ls[1][c]], NULL,"idmat_sim2"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* sorted_aln_old(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:3885:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3885 | HERE ("Group %d: %d seq (tot:%d)", g, added, tot_added); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:3890:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3890 | HERE ("tot_added: %d", tot_added); | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int add_group2sorted_aln(Alignment*, Constraint_list*, int*, int, int, int)’: dp_lib/util_dp_drivers.c:3929:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3929 | HERE ("\tID: %d COV: %d ***",id, cov); | ^~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:3936:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3936 | HERE ("\tID: %d COV: %d",id, cov); | ^~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* sorted_aln_new(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:4008:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4008 | HERE ("Group Aligned: %d seq", added); | ^~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int sa_align_groups(Alignment*, Constraint_list*, int*, int, int)’: dp_lib/util_dp_drivers.c:4029:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4029 | HERE ("***** 1******"); | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:4042:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4042 | HERE ("align Groups %d (%d) and %d (%d)", g0, ns[0], g1, ns[1]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:4047:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4047 | HERE ("ID %d COV: %d", id, cov); | ^~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:4055:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4055 | HERE ("***** Rejected ****" ); | ^~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int sa_get_next_group(Alignment*, Constraint_list*, int*, int*, int*, int**)’: dp_lib/util_dp_drivers.c:4085:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4085 | HERE ("---- %d %d", s0[0], s1[0]); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* ungap_aln4tree(Alignment*)’: dp_lib/util_dp_drivers.c:4147:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4147 | sim=aln2sim (B, "idmat"); | ^~~~~~~ dp_lib/util_dp_drivers.c:4153:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4153 | sim=aln2sim (B, "idmat"); | ^~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* simple_progressive_aln(Sequence*, tnode***, Constraint_list*, char*)’: dp_lib/util_dp_drivers.c:4281:33: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4281 | CL=choose_extension_mode ("matrix", CL); | ^~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘tnode** tree_aln(NT_node, NT_node, Alignment*, int, Constraint_list*)’: dp_lib/util_dp_drivers.c:4334:97: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4334 | if ( CL && CL->dp_mode && strstr (CL->dp_mode, "collapse"))dump_constraint_list (CL, tmp, "w"); | ^~~ dp_lib/util_dp_drivers.c: In function ‘tnode** seqan_tree_aln(NT_node, NT_node, Alignment*, int, Constraint_list*)’: dp_lib/util_dp_drivers.c:4370:76: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4370 | vfclose (save_constraint_list ( CL, 0, CL->ne,lib=vtmpnam(NULL), NULL, "ascii",CL->S)); | ^~~~~~~ dp_lib/util_dp_drivers.c:4373:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4373 | printf_system ( "%s -lib %s -seq %s -usetree %s -outfile %s", (CL->TC)->use_seqan,lib, seq, tree, new_aln); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘tnode* rec_local_tree_aln(NT_node, Alignment*, Constraint_list*, int)’: dp_lib/util_dp_drivers.c:4525:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4525 | HERE ("\n*******************Before Alignmnent *******************"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:4544:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4544 | HERE ("\n*******************AFTER Alignmnent *******************"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:4549:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4549 | HERE ("********************************************************"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘tnode** tree_realn(NT_node, NT_node, Alignment*, int, Constraint_list*)’: dp_lib/util_dp_drivers.c:4743:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4743 | id1=sub_aln2sim (A, n_s, l_s, "idmat_sim"); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c:4749:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4749 | id2=sub_aln2sim (A, n_s, l_s, "idmat_sim"); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* profile_tree_aln(NT_node, Alignment*, Constraint_list*, int)’: dp_lib/util_dp_drivers.c:4826:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4826 | sim=sub_aln2sim(A, ns, ls, "idmat_sim1"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:4853:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4853 | printf_exit (EXIT_FAILURE, stderr, "\nError: Empty group"); | ^~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* delayed_tree_aln1(NT_node, Alignment*, Constraint_list*, int)’: dp_lib/util_dp_drivers.c:4999:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4999 | sim=sub_aln2max_sim(A, ns, ls, "idmat_sim1"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* delayed_tree_aln2(NT_node, Alignment*, Constraint_list*, int)’: dp_lib/util_dp_drivers.c:5050:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5050 | printf_exit (EXIT_FAILURE, stderr, "ERROR: Unresolved Node On Groups %d [FATAL:%s]\n", P->group,PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:5066:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5066 | sim=sub_aln2max_sim(A, ns, ls, "idmat_sim1"); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int delayed_pair_wise(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_drivers.c:5100:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5100 | sim=fast_aln2sim_list (A, "sim3", ns, ls); | ^~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* dpa_align_node(NT_node, Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:5269:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5269 | printf_system ( "t_coffee -profile %s -outfile=%s -dp_mode gotoh_pair_wise_lgp -msa_mode iterative_tree_aln -quiet", list,tmp_aln=vtmpnam (NULL)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘char* node2profile_list(NT_node, Alignment*, Constraint_list*, char*)’: dp_lib/util_dp_drivers.c:5290:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5290 | list=strcatf (list," %s", output_node_aln (P, A, NULL)); | ^~~~~ dp_lib/util_dp_drivers.c: In function ‘char* output_node_aln(NT_node, Alignment*, char*)’: dp_lib/util_dp_drivers.c:5300:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5300 | fp=vfopen (name, "w"); | ^~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* new_dpa_aln(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:5322:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5322 | set_node_score (A, P, "idmat_sim"); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c:5326:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5326 | printf_system ( "t_coffee -profile %s -outfile=%s -dp_mode gotoh_pair_wise_lgp -msa_mode iterative_tree_aln", list,tmp_aln=vtmpnam (NULL)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘char* split_nodes_idmax(Alignment*, NT_node, int, char*)’: dp_lib/util_dp_drivers.c:5348:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5348 | list=strcatf (list," %s", output_node_aln (P, A, NULL)); | ^~~~~ dp_lib/util_dp_drivers.c: In function ‘int* set_profile_master(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_drivers.c:5456:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5456 | if (print)HERE ("SKIPPED: %d:: %s %s %d(%d %d)", a,(CL->S)->name[ls[0][ns[0]]],A->name[ls[1][ns[1]]], bs,ls[0][ns[0]],ls[1][ns[1]] ); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:5462:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5462 | if (print)HERE ("SELECTED: %d:: %s %s %d(%d %d)", a,(CL->S)->name[ls[0][ns[0]]],A->name[ls[1][ns[1]]], bs,ls[0][ns[0]],ls[1][ns[1]] ); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int check_integrity(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:5666:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5666 | HERE ("***** Integrity loss:%s\n%s\n\n%s\n%s *****", A->name[a],buf, S->name[a],S->seq[a]);exit (0); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘void mpw_display_groups(Alignment*, int*, int**)’: dp_lib/util_dp_drivers.c:5712:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5712 | HERE ("************* DISPLAY **************"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:5715:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5715 | HERE ("GROUP %d\n",g+1); | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:5721:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5721 | HERE ("************* DONE **************"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int pair_wise(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_drivers.c:5777:113: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5777 | fprintf ( stderr, "\nERROR pw_parameters_set must be set in pair_wise [FATAL]\n" );crash(""); | ^~ dp_lib/util_dp_drivers.c: In function ‘int (* get_pair_wise_function(Pwfunc, char*, int*))(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_drivers.c:6050:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6050 | crash ( "\n"); | ^~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* sorted_aln_prog(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:6178:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6178 | int **mat=read_matrice ("blosum62mt");; | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:6198:10: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6198 | HERE ("2"); | ^~~ dp_lib/util_dp_drivers.c:6208:86: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6208 | sim[m][2]=idscore_pairseq((CL->S)->seq[a], (CL->S)->seq[b], -12, -1, mat, "sim3"); | ^~~~~~ dp_lib/util_dp_drivers.c:6229:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6229 | HERE ("Profile for %s %s - %d", (CL->S)->name[s1],(CL->S)->name[s2],s); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘Alignment* sorted_aln(Alignment*, Constraint_list*)’: dp_lib/util_dp_drivers.c:6262:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6262 | int **mat=read_matrice ("blosum62mt");; | ^~~~~~~~~~~~ dp_lib/util_dp_drivers.c:6285:10: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6285 | HERE ("2"); | ^~~ dp_lib/util_dp_drivers.c:6295:86: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6295 | sim[m][2]=idscore_pairseq((CL->S)->seq[a], (CL->S)->seq[b], -12, -1, mat, "sim3"); | ^~~~~~ dp_lib/util_dp_drivers.c:6317:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6317 | HERE ("Profile for %s %s - %d", (CL->S)->name[s1],(CL->S)->name[s2],s); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int co_pair_wise(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_drivers.c:6351:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6351 | fp=vfopen (aln[a], "w"); | ^~~ dp_lib/util_dp_drivers.c:6362:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6362 | printf_system ("clustalo --p1 %s --p2 %s -o %s>/dev/null 2>/dev/null", aln[0], aln[1], out); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int hh_pair_wise(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_drivers.c:6394:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6394 | fp=vfopen (aln[a], "w"); | ^~~ dp_lib/util_dp_drivers.c:6405:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6405 | printf_system ("hhmake -v 0 -i %s -o %s -id 100 -M first >/dev/null 2>/dev/null", aln[a], prf[a]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:6413:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6413 | printf_system ("hhalign -v 0 -i %s -t %s -atab %s -global >/dev/null 2>/dev/null", prf[0], prf[1], hhfile); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c:6422:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6422 | fp1=vfopen (hhfile, "r"); | ^~~ dp_lib/util_dp_drivers.c:6423:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6423 | fp2=vfopen (tmpfile,"w"); | ^~~ dp_lib/util_dp_drivers.c:6455:24: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6455 | fp1=vfopen (tmpfile, "r"); | ^~~ dp_lib/util_dp_drivers.c: In function ‘int tree_aln_N(NT_node, Sequence*, int, int, char**)’: dp_lib/util_dp_drivers.c:6488:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6488 | return printf_system_direct_check ("%s -seq %s -usetree=%s -profile %s -newtree=cedri24",list2string (argv, argc),S->file[0], P->file, rec_tree_aln_N (P,S,N,argc,argv)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int align_node(NT_node, Sequence*, int, int, char**)’: dp_lib/util_dp_drivers.c:6524:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6524 | printf_file (seq, "w", ""); | ^~~ dp_lib/util_dp_drivers.c:6524:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6524 | printf_file (seq, "w", ""); | ^~ dp_lib/util_dp_drivers.c:6525:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6525 | printf_file (tree, "w", ""); | ^~~ dp_lib/util_dp_drivers.c:6525:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6525 | printf_file (tree, "w", ""); | ^~ dp_lib/util_dp_drivers.c:6528:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6528 | printf_file (tree, "a", ";\n"); | ^~~ dp_lib/util_dp_drivers.c:6528:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6528 | printf_file (tree, "a", ";\n"); | ^~~~~ dp_lib/util_dp_drivers.c:6536:49: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6536 | if(max)output_completion (stderr,++curr,max,1,"Completed"); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c:6545:74: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6545 | if (!check_file_exists (P->alfile))printf_exit ( EXIT_FAILURE, stderr, "Could not run %s\n", buf); | ^~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_drivers.c: In function ‘int node2file_list(NT_node, Sequence*, char*, char*)’: dp_lib/util_dp_drivers.c:6566:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6566 | printf_file (P->alfile, "w", ">%s\n%s\n", S->name[s], S->seq[s]); | ^~~ dp_lib/util_dp_drivers.c:6566:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6566 | printf_file (P->alfile, "w", ">%s\n%s\n", S->name[s], S->seq[s]); | ^~~~~~~~~~~ dp_lib/util_dp_drivers.c:6568:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6568 | printf_file (flist, "a", "%s\n", P->alfile); | ^~~ dp_lib/util_dp_drivers.c:6568:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6568 | printf_file (flist, "a", "%s\n", P->alfile); | ^~~~~~ dp_lib/util_dp_drivers.c:6569:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6569 | printf_file (tree, "a", "%s" , P->alfile); | ^~~ dp_lib/util_dp_drivers.c:6569:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6569 | printf_file (tree, "a", "%s" , P->alfile); | ^~~~ dp_lib/util_dp_drivers.c:6577:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6577 | printf_file (tree, "a","("); | ^~~ dp_lib/util_dp_drivers.c:6577:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6577 | printf_file (tree, "a","("); | ^~~ dp_lib/util_dp_drivers.c:6579:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6579 | printf_file (tree, "a",","); | ^~~ dp_lib/util_dp_drivers.c:6579:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6579 | printf_file (tree, "a",","); | ^~~ dp_lib/util_dp_drivers.c:6581:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6581 | printf_file (tree, "a",")"); | ^~~ dp_lib/util_dp_drivers.c:6581:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6581 | printf_file (tree, "a",")"); | ^~~ CC dp_lib/util_domain_dp_drivers.c In file included from ./io_lib_header.h:33, from dp_lib/util_domain_dp_drivers.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_domain_dp_drivers.c: In function ‘Alignment* extract_domain(Constraint_list*)’: dp_lib/util_domain_dp_drivers.c:172:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 172 | output_format_aln ("mocca_aln",RESULT,EA=fast_coffee_evaluate_output(RESULT, CL),"stdout"); | ^~~~~~~~~~~ dp_lib/util_domain_dp_drivers.c:172:91: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 172 | output_format_aln ("mocca_aln",RESULT,EA=fast_coffee_evaluate_output(RESULT, CL),"stdout"); | ^~~~~~~~ dp_lib/util_domain_dp_drivers.c: In function ‘Alignment* interactive_domain_extraction(Constraint_list*)’: dp_lib/util_domain_dp_drivers.c:366:106: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 366 | output_format_aln (out_format,RESULT,EA=fast_coffee_evaluate_output(RESULT, CL),"stdout"); | ^~~~~~~~ CC dp_lib/util_dp_sim.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_sim.c:32: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_dp_sim.c: In function ‘int addnode(int, int, int, int, int, int, int)’: dp_lib/util_dp_sim.c:173:16: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 173 | register int d; | ^ dp_lib/util_dp_sim.c: In function ‘int sim_pair_wise_lalign(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_sim.c:248:20: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse] 248 | vertexptr findmax(); /* return the largest score node */ | ^~ dp_lib/util_dp_sim.c:248:20: note: remove parentheses to default-initialize a variable 248 | vertexptr findmax(); /* return the largest score node */ | ^~ | -- dp_lib/util_dp_sim.c:248:20: note: or replace parentheses with braces to value-initialize a variable dp_lib/util_dp_sim.c: In function ‘int big_pass(int*, int*, int, int, int, int)’: dp_lib/util_dp_sim.c:481:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 481 | { register int i, j; /* row and column indices */ | ^ dp_lib/util_dp_sim.c:481:21: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 481 | { register int i, j; /* row and column indices */ | ^ dp_lib/util_dp_sim.c:482:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 482 | register int c; /* best score at current point */ | ^ dp_lib/util_dp_sim.c:483:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 483 | register int f; /* best score ending with insertion */ | ^ dp_lib/util_dp_sim.c:484:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 484 | register int d; /* best score ending with deletion */ | ^ dp_lib/util_dp_sim.c:485:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 485 | register int p; /* best score at (i-1, j-1) */ | ^ dp_lib/util_dp_sim.c:486:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 486 | register int ci, cj; /* end-point associated with c */ | ^~ dp_lib/util_dp_sim.c:486:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 486 | register int ci, cj; /* end-point associated with c */ | ^~ dp_lib/util_dp_sim.c:487:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 487 | register int di, dj; /* end-point associated with d */ | ^~ dp_lib/util_dp_sim.c:487:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 487 | register int di, dj; /* end-point associated with d */ | ^~ dp_lib/util_dp_sim.c:488:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 488 | register int fi, fj; /* end-point associated with f */ | ^~ dp_lib/util_dp_sim.c:488:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 488 | register int fi, fj; /* end-point associated with f */ | ^~ dp_lib/util_dp_sim.c:489:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 489 | register int pi, pj; /* end-point associated with p */ | ^~ dp_lib/util_dp_sim.c:489:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 489 | register int pi, pj; /* end-point associated with p */ | ^~ dp_lib/util_dp_sim.c: In function ‘int locate(int*, int*, int)’: dp_lib/util_dp_sim.c:562:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 562 | { register int i, j; /* row and column indices */ | ^ dp_lib/util_dp_sim.c:562:21: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 562 | { register int i, j; /* row and column indices */ | ^ dp_lib/util_dp_sim.c:563:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 563 | register int c; /* best score at current point */ | ^ dp_lib/util_dp_sim.c:564:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 564 | register int f; /* best score ending with insertion */ | ^ dp_lib/util_dp_sim.c:565:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 565 | register int d; /* best score ending with deletion */ | ^ dp_lib/util_dp_sim.c:566:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 566 | register int p; /* best score at (i-1, j-1) */ | ^ dp_lib/util_dp_sim.c:567:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 567 | register int ci, cj; /* end-point associated with c */ | ^~ dp_lib/util_dp_sim.c:567:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 567 | register int ci, cj; /* end-point associated with c */ | ^~ dp_lib/util_dp_sim.c:568:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 568 | register int di=0, dj=0; /* end-point associated with d */ | ^~ dp_lib/util_dp_sim.c:568:24: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 568 | register int di=0, dj=0; /* end-point associated with d */ | ^~ dp_lib/util_dp_sim.c:569:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 569 | register int fi, fj; /* end-point associated with f */ | ^~ dp_lib/util_dp_sim.c:569:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 569 | register int fi, fj; /* end-point associated with f */ | ^~ dp_lib/util_dp_sim.c:570:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 570 | register int pi, pj; /* end-point associated with p */ | ^~ dp_lib/util_dp_sim.c:570:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 570 | register int pi, pj; /* end-point associated with p */ | ^~ dp_lib/util_dp_sim.c:572:16: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse] 572 | int addnode(); /* function for inserting a node */ | ^~ dp_lib/util_dp_sim.c:572:16: note: remove parentheses to default-initialize a variable 572 | int addnode(); /* function for inserting a node */ | ^~ | -- dp_lib/util_dp_sim.c:572:16: note: or replace parentheses with braces to value-initialize a variable dp_lib/util_dp_sim.c: In function ‘int small_pass(int*, int*, int, int)’: dp_lib/util_dp_sim.c:786:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 786 | { register int i, j; /* row and column indices */ | ^ dp_lib/util_dp_sim.c:786:21: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 786 | { register int i, j; /* row and column indices */ | ^ dp_lib/util_dp_sim.c:787:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 787 | register int c; /* best score at current point */ | ^ dp_lib/util_dp_sim.c:788:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 788 | register int f; /* best score ending with insertion */ | ^ dp_lib/util_dp_sim.c:789:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 789 | register int d; /* best score ending with deletion */ | ^ dp_lib/util_dp_sim.c:790:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 790 | register int p; /* best score at (i-1, j-1) */ | ^ dp_lib/util_dp_sim.c:791:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 791 | register int ci, cj; /* end-point associated with c */ | ^~ dp_lib/util_dp_sim.c:791:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 791 | register int ci, cj; /* end-point associated with c */ | ^~ dp_lib/util_dp_sim.c:792:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 792 | register int di, dj; /* end-point associated with d */ | ^~ dp_lib/util_dp_sim.c:792:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 792 | register int di, dj; /* end-point associated with d */ | ^~ dp_lib/util_dp_sim.c:793:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 793 | register int fi, fj; /* end-point associated with f */ | ^~ dp_lib/util_dp_sim.c:793:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 793 | register int fi, fj; /* end-point associated with f */ | ^~ dp_lib/util_dp_sim.c:794:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 794 | register int pi, pj; /* end-point associated with p */ | ^~ dp_lib/util_dp_sim.c:794:22: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 794 | register int pi, pj; /* end-point associated with p */ | ^~ dp_lib/util_dp_sim.c: In function ‘SIM_NODE* findmax()’: dp_lib/util_dp_sim.c:864:16: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 864 | register int i, j; | ^ dp_lib/util_dp_sim.c:864:19: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 864 | register int i, j; | ^ dp_lib/util_dp_sim.c: In function ‘int no_cross()’: dp_lib/util_dp_sim.c:883:16: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 883 | register int i; | ^ dp_lib/util_dp_sim.c: In function ‘int diff_sim(int*, int*, int, int, int, int)’: dp_lib/util_dp_sim.c:911:20: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 911 | register int i, j; | ^ dp_lib/util_dp_sim.c:911:23: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 911 | register int i, j; | ^ dp_lib/util_dp_sim.c:912:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 912 | register int c, e, d, s; | ^ dp_lib/util_dp_sim.c:912:21: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 912 | register int c, e, d, s; | ^ dp_lib/util_dp_sim.c:912:24: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 912 | register int c, e, d, s; | ^ dp_lib/util_dp_sim.c:912:27: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 912 | register int c, e, d, s; | ^ CC dp_lib/util_dp_clean_maln.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_clean_maln.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_dp_clean_maln.c: In function ‘Alignment* clean_maln(Alignment*, Alignment*, int, int)’: dp_lib/util_dp_clean_maln.c:48:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 48 | add_warning ( stderr, "\nWARNING: -clean_aln is not supported anymore [PROGRAM:%s]\n", PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_clean_maln.c:123:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 123 | HERE ("1"); | ^~~ dp_lib/util_dp_clean_maln.c: In function ‘Alignment* realign_segment(int, int, int, Alignment*, Alignment*)’: dp_lib/util_dp_clean_maln.c:148:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 148 | CL->M=read_matrice ("blosum62mt"); | ^~~~~~~~~~~~ dp_lib/util_dp_clean_maln.c: In function ‘Alignment* realign_segment_old(int, int, int, Alignment*, Alignment*)’: dp_lib/util_dp_clean_maln.c:209:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 209 | CL->M=read_matrice ("blosum62mt"); | ^~~~~~~~~~~~ CC dp_lib/evaluate_for_struc.c In file included from ./io_lib_header.h:33, from dp_lib/evaluate_for_struc.c:34: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/evaluate_for_struc.c: In function ‘char* pdb2contacts2lib(Sequence*, char*, float, char*, char*)’: dp_lib/evaluate_for_struc.c:117:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 117 | fp=vfopen (name, "w"); | ^~~ dp_lib/evaluate_for_struc.c:129:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 129 | char *p=seq2T_value (S, s1, "template_file", "_P_"); | ^~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:129:52: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 129 | char *p=seq2T_value (S, s1, "template_file", "_P_"); | ^~~~~ dp_lib/evaluate_for_struc.c:134:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 134 | T[s1]=read_ca_trace (p, "ATOM"); | ^~~~~~ dp_lib/evaluate_for_struc.c:146:54: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 146 | if (strm (S->type, "RNA"))matrix=read_matrice ("strikeR"); | ^~~~~~~~~ dp_lib/evaluate_for_struc.c:147:33: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 147 | else matrix=read_matrice ("strikeP");; | ^~~~~~~~~ dp_lib/evaluate_for_struc.c:193:53: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 193 | printf_exit (EXIT_FAILURE,stderr, "pdb2contacts2lib: %s is an unknown mode", mode); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:229:61: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 229 | printf_exit (EXIT_FAILURE,stderr, "pdb2contacts2lib: %s is an unknown mode", mode); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c: In function ‘int apdb(int, char**)’: dp_lib/evaluate_for_struc.c:392:53: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 392 | fp_parameters=vfopen (parameters, "r"); | ^~~ dp_lib/evaluate_for_struc.c:397:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 397 | argv=break_list ( argv, &argc, "=:;, \n"); | ^~~~~~~~~ dp_lib/evaluate_for_struc.c:418:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 418 | le=vfopen ( se_name, "w"); | ^~~ dp_lib/evaluate_for_struc.c:913:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 913 | set_int_variable ("prot_min_sim", prot_min_sim); | ^~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:931:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 931 | set_int_variable ("prot_max_sim", prot_max_sim); | ^~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:949:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 949 | set_int_variable ("prot_min_cov", prot_min_cov); | ^~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:968:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 968 | set_int_variable ("pdb_min_sim", pdb_min_sim); | ^~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:985:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 985 | set_int_variable ("pdb_max_sim", pdb_max_sim); | ^~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1002:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1002 | set_int_variable ("pdb_min_cov", pdb_min_cov); | ^~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1061:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1061 | set_string_variable ("blast_server", prot_blast_server); | ^~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1082:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1082 | if (strm (pdm, "yes"))set_string_variable ("dm", pdm); | ^~~~ dp_lib/evaluate_for_struc.c:1101:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1101 | set_string_variable ("pdb_db", pdb_db); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:1159:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1159 | set_string_variable ("prot_db", prot_db); | ^~~~~~~~~ dp_lib/evaluate_for_struc.c:1240:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1240 | printf_system("strike -a %s -c %s",aln, x); | ^~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1254:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1254 | if ( get_string_variable ("dm"))set_string_variable ("dm", F->name); | ^~~~ dp_lib/evaluate_for_struc.c:1254:70: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1254 | if ( get_string_variable ("dm"))set_string_variable ("dm", F->name); | ^~~~ dp_lib/evaluate_for_struc.c:1261:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1261 | p=seq2T_value (S, a, "template_file", "_P_"); | ^~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1261:59: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1261 | p=seq2T_value (S, a, "template_file", "_P_"); | ^~~~~ dp_lib/evaluate_for_struc.c:1273:60: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1273 | CL->T[a]=read_ca_trace (S->file[a], "ATOM"); | ^~~~~~ dp_lib/evaluate_for_struc.c:1298:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1298 | fp=vfopen (apdb_outfile, "w"); | ^~~ dp_lib/evaluate_for_struc.c:1324:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1324 | le=display_output_filename ( le, "APDB_RESULT", "APDB_RESULT_FORMAT_01", apdb_outfile, CHECK); | ^~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1324:65: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1324 | le=display_output_filename ( le, "APDB_RESULT", "APDB_RESULT_FORMAT_01", apdb_outfile, CHECK); | ^~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1338:58: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1338 | le=display_output_filename ( le, "MSA", out_aln_format[a], file_name, CHECK); | ^~~~~ dp_lib/evaluate_for_struc.c: In function ‘Constraint_list* set_constraint_list4align_pdb(Constraint_list*, int, char*, char*, char*)’: dp_lib/evaluate_for_struc.c:1391:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1391 | if ( (x=get_parameter ( "-nca", &n, param_file))!=NULL){pdb_param->N_ca=atoi(x[0]);free_char (x, -1);} | ^~~~~~ dp_lib/evaluate_for_struc.c:1392:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1392 | if ( (x=get_parameter ( "-max_delta", &n, param_file))!=NULL){pdb_param->max_delta=atof(x[0]);free_char (x, -1);} | ^~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1393:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1393 | if ( (x=get_parameter ( "-maximum_distance", &n, param_file))!=NULL){pdb_param->maximum_distance=atoi(x[0]);free_char (x, -1);} | ^~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1394:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1394 | if ( (x=get_parameter ( "-local_mode", &n, param_file))!=NULL){sprintf (pdb_param->local_mode, "%s",x[0]);free_char (x, -1);} | ^~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:1395:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1395 | if ( (x=get_parameter ( "-scale", &n, param_file))!=NULL){pdb_param->scale=atoi(x[0]);free_char (x, -1);} | ^~~~~~~~ dp_lib/evaluate_for_struc.c:1396:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1396 | if ( (x=get_parameter ( "-gapopen", &n, param_file))!=NULL){PWCL->gop=atoi(x[0]);free_char (x, -1);} | ^~~~~~~~~~ dp_lib/evaluate_for_struc.c:1397:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1397 | if ( (x=get_parameter ( "-gapext" , &n, param_file))!=NULL){PWCL->gep=atof(x[0]);free_char (x, -1);} | ^~~~~~~~~ dp_lib/evaluate_for_struc.c:1439:70: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1439 | PWCL->T[seq]=read_ca_trace (is_pdb_struc((CL->S)->name[seq]), "ATOM"); | ^~~~~~ dp_lib/evaluate_for_struc.c: In function ‘float matrix_match(Constraint_list*, int, int, int, int, Struct_nb*, Struct_nb*)’: dp_lib/evaluate_for_struc.c:1590:33: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1590 | CL->M=read_matrice ( "pam250mt"); | ^~~~~~~~~~ dp_lib/evaluate_for_struc.c: In function ‘Alignment* analyse_pdb(Alignment*, Alignment*, char*)’: dp_lib/evaluate_for_struc.c:2118:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2118 | fp =vfopen ( results, "w"); | ^~~ dp_lib/evaluate_for_struc.c:2119:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2119 | pairwise=vfopen ((pairwise_file=vtmpnam (NULL)),"w"); | ^~~ dp_lib/evaluate_for_struc.c:2120:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2120 | average =vfopen ((average_file =vtmpnam (NULL)),"w"); | ^~~ dp_lib/evaluate_for_struc.c:2121:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2121 | total =vfopen ((total_file =vtmpnam (NULL)),"w"); | ^~~ dp_lib/evaluate_for_struc.c:2129:81: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2129 | if (PP->irmsd_graph)irmsd_graph =vfopen ((irmsd_file =vtmpnam (NULL)),"w"); | ^~~ dp_lib/evaluate_for_struc.c: In function ‘float drmsd(Alignment*, float, float)’: dp_lib/evaluate_for_struc.c:2570:14: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2570 | HERE ("MAX=%.0f Tot=%.0f Ratio: %.2f", max, tot, (max==0)?0:tot/max); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c: In function ‘Alignment* msa2struc_dist(Alignment*, Alignment*, char*, char*, int, int)’: dp_lib/evaluate_for_struc.c:2703:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2703 | add_warning (stderr, "Sequence %s removed from the dataset [No Usable Structure]", A->name[a]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:2719:54: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2719 | if (A->nseq<2)myexit (fprintf_error(stderr, "Two sequences at least must have a known structure")); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:2743:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2743 | add_information (stderr, "Remove Sequence [%s] that contains %d un-suitable positions", A->name[lc[0][0]], lc[0][1]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:2750:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2750 | myexit (fprintf_error(stderr,"No suitable pair of column supporting a tree")); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:2755:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2755 | tl=vfopen (tot_pos_list, "w"); | ^~~ dp_lib/evaluate_for_struc.c:2788:62: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2788 | FILE *fp=vfopen (getenv ("TRMSD_COLUMNS2FILE"), "w"); | ^~~ dp_lib/evaluate_for_struc.c:2845:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2845 | print_tree (T1[ntree], "newick", tl); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2858:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2858 | display_output_filename( stderr,"TreeList","newick",tot_pos_list, CHECK); | ^~~~~~~~~~ dp_lib/evaluate_for_struc.c:2858:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2858 | display_output_filename( stderr,"TreeList","newick",tot_pos_list, CHECK); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2862:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2862 | display_output_filename( stderr,"ConsenseTree","phylip",consense_file, CHECK); | ^~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:2862:65: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2862 | display_output_filename( stderr,"ConsenseTree","phylip",consense_file, CHECK); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2873:71: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2873 | vfclose (print_tree (BT100,"newick", vfopen (output, "w"))); | ^~~ dp_lib/evaluate_for_struc.c:2873:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2873 | vfclose (print_tree (BT100,"newick", vfopen (output, "w"))); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2874:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2874 | display_output_filename( stderr,"Tree","newick",output, CHECK); | ^~~~~~ dp_lib/evaluate_for_struc.c:2874:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2874 | display_output_filename( stderr,"Tree","newick",output, CHECK); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2885:76: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2885 | vfclose (print_tree (BT100,"newick", vfopen (struc_tree0, "w"))); | ^~~ dp_lib/evaluate_for_struc.c:2885:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2885 | vfclose (print_tree (BT100,"newick", vfopen (struc_tree0, "w"))); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2886:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2886 | display_output_filename( stderr,"Tree","newick",struc_tree0, CHECK); | ^~~~~~ dp_lib/evaluate_for_struc.c:2886:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2886 | display_output_filename( stderr,"Tree","newick",struc_tree0, CHECK); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2893:74: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2893 | vfclose (print_tree (BT0,"newick", vfopen (struc_tree0, "w"))); | ^~~ dp_lib/evaluate_for_struc.c:2893:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2893 | vfclose (print_tree (BT0,"newick", vfopen (struc_tree0, "w"))); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2894:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2894 | display_output_filename( stderr,"Tree","newick",struc_tree0, CHECK); | ^~~~~~ dp_lib/evaluate_for_struc.c:2894:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2894 | display_output_filename( stderr,"Tree","newick",struc_tree0, CHECK); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2898:76: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2898 | vfclose (print_tree (BT10,"newick", vfopen (struc_tree10, "w"))); | ^~~ dp_lib/evaluate_for_struc.c:2898:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2898 | vfclose (print_tree (BT10,"newick", vfopen (struc_tree10, "w"))); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2899:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2899 | display_output_filename( stderr,"Tree","newick",struc_tree10, CHECK); | ^~~~~~ dp_lib/evaluate_for_struc.c:2899:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2899 | display_output_filename( stderr,"Tree","newick",struc_tree10, CHECK); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2904:76: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2904 | vfclose (print_tree (BT50,"newick", vfopen (struc_tree50, "w"))); | ^~~ dp_lib/evaluate_for_struc.c:2904:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2904 | vfclose (print_tree (BT50,"newick", vfopen (struc_tree50, "w"))); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2905:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2905 | display_output_filename( stderr,"Tree","newick",struc_tree50, CHECK); | ^~~~~~ dp_lib/evaluate_for_struc.c:2905:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2905 | display_output_filename( stderr,"Tree","newick",struc_tree50, CHECK); | ^~~~~~~~ dp_lib/evaluate_for_struc.c:2945:33: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2945 | output_format_aln ("score_html", A,B,color_struc_tree); | ^~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:2946:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2946 | display_output_filename( stderr,"Colored MSA","score_html",color_struc_tree, CHECK); | ^~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c:2946:60: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2946 | display_output_filename( stderr,"Colored MSA","score_html",color_struc_tree, CHECK); | ^~~~~~~~~~~~ dp_lib/evaluate_for_struc.c: In function ‘tnode* trmsdmat2tree(float**, int**, Alignment*, int)’: dp_lib/evaluate_for_struc.c:2985:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2985 | if ( colN && (dataset=get_string_variable ("dm"))!=NULL) | ^~~~ dp_lib/evaluate_for_struc.c:2990:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2990 | dmf=vfopen (dmfn, "w"); | ^~~ dp_lib/evaluate_for_struc.c:3002:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3002 | T=compute_std_tree_2(A, dm_int, "_TMODE_upgma"); | ^~~~~~~~~~~~~~ dp_lib/evaluate_for_struc.c: In function ‘char* rna_struc2rna_lib(char*, char*, char*)’: dp_lib/evaluate_for_struc.c:3310:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3310 | fp=vfopen ( name, "w"); | ^~~ CC dp_lib/util_dp_mm_nw.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_mm_nw.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC dp_lib/util_dp_cdna_fasta_nw.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_cdna_fasta_nw.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_dp_cdna_fasta_nw.c: In function ‘Dp_Result* make_fast_dp_pair_wise(Alignment*, int*, int**, Constraint_list*, Dp_Model*)’: dp_lib/util_dp_cdna_fasta_nw.c:682:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 682 | crash (""); | ^~ dp_lib/util_dp_cdna_fasta_nw.c: In function ‘int** evaluate_diagonals_cdna(Alignment*, int*, int**, Constraint_list*, int, int, char**, int)’: dp_lib/util_dp_cdna_fasta_nw.c:925:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 925 | crash (""); | ^~ CC dp_lib/util_dp_est.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_est.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC dp_lib/evaluate_for_domain.c In file included from ./io_lib_header.h:33, from dp_lib/evaluate_for_domain.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/evaluate_for_domain.c: In function ‘int evaluate_moca_domain(Alignment*, Constraint_list*)’: dp_lib/evaluate_for_domain.c:71:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 71 | score=(int)(output_maln_pval ( "/dev/null", A)*-100); | ^~~~~~~~~~~ dp_lib/evaluate_for_domain.c:93:66: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 93 | fprintf ( stderr, "==>%d",(int)(output_maln_pval ( "/dev/null", B)*-100) ); | ^~~~~~~~~~~ dp_lib/evaluate_for_domain.c:94:68: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 94 | if ( score==UNDEFINED)score=(int)(output_maln_pval ( "/dev/null", B)*-100); | ^~~~~~~~~~~ In file included from ./define_header.h:30, from ./io_lib/io_structures.h:33, from ./io_lib_header.h:30, from dp_lib/evaluate_for_domain.c:33: dp_lib/evaluate_for_domain.c:96:58: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 96 | score=MAX(score,(int)(output_maln_pval ( "/dev/null", B)*-100)); | ^~~~~~~~~~~ ./coffee_defines.h:333:27: note: in definition of macro ‘MAX’ 333 | #define MAX(x, y) (((x) >(y)) ? (x):(y)) | ^ dp_lib/evaluate_for_domain.c:96:58: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 96 | score=MAX(score,(int)(output_maln_pval ( "/dev/null", B)*-100)); | ^~~~~~~~~~~ ./coffee_defines.h:333:38: note: in definition of macro ‘MAX’ 333 | #define MAX(x, y) (((x) >(y)) ? (x):(y)) | ^ dp_lib/evaluate_for_domain.c: In function ‘int evaluate_domain_aln(Alignment*, int, int, Constraint_list*)’: dp_lib/evaluate_for_domain.c:245:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 245 | if ( !mat)mat=read_matrice ( "pam250mt"); | ^~~~~~~~~~ CC dp_lib/showpair.c In file included from ./io_lib_header.h:33, from dp_lib/showpair.c:32: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC dp_lib/util_dp_fasta_nw.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_fasta_nw.c:34: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_dp_fasta_nw.c: In function ‘int* code_seq(char*, char*)’: dp_lib/util_dp_fasta_nw.c:119:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 119 | gl=make_group_aa ( &ng, "mafft"); | ^~~~~~~ dp_lib/util_dp_fasta_nw.c: In function ‘int* makepointtable(int*, int*, int)’: dp_lib/util_dp_fasta_nw.c:157:17: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 157 | register int *p; | ^ dp_lib/util_dp_fasta_nw.c: In function ‘int** evaluate_diagonals_for_two_sequences(char*, char*, int, Constraint_list*, int)’: dp_lib/util_dp_fasta_nw.c:266:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 266 | CL->M=read_matrice ("blosum62mt"); | ^~~~~~~~~~~~ dp_lib/util_dp_fasta_nw.c: In function ‘int make_fasta_gotoh_pair_wise(Alignment*, int*, int**, Constraint_list*, int*)’: dp_lib/util_dp_fasta_nw.c:1144:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1144 | aln[l_s[c][a]]=csprintf (aln[l_s[c][a]],"%s", char_buf); | ^~~~ dp_lib/util_dp_fasta_nw.c: In function ‘int precomputed_pair_wise(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_fasta_nw.c:1299:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1299 | crash (""); | ^~ dp_lib/util_dp_fasta_nw.c: In function ‘int ktup_pair_wise(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_fasta_nw.c:1345:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1345 | gl=make_group_aa (&ng, "vasiliky"); | ^~~~~~~~~~ dp_lib/util_dp_fasta_nw.c:1348:64: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1348 | if ( ns[0]>1)seq1=sub_aln2cons_seq_mat (A, ns[0], l_s[0],"blosum62mt"); | ^~~~~~~~~~~~ dp_lib/util_dp_fasta_nw.c:1354:64: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1354 | if ( ns[1]>1)seq2=sub_aln2cons_seq_mat (A, ns[1], l_s[1],"blosum62mt"); | ^~~~~~~~~~~~ dp_lib/util_dp_fasta_nw.c:1366:47: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1366 | B=align_two_sequences ( seq1, seq2, "blosum62mt",-10, -1, "myers_miller_pair_wise"); | ^~~~~~~~~~~~ dp_lib/util_dp_fasta_nw.c:1366:69: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1366 | B=align_two_sequences ( seq1, seq2, "blosum62mt",-10, -1, "myers_miller_pair_wise"); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_fasta_nw.c:1367:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1367 | A->score=A->score_aln=aln2sim(B, "idmat"); | ^~~~~~~ CC dp_lib/evaluate.c In file included from ./io_lib_header.h:33, from dp_lib/evaluate.c:34: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/evaluate.c: In function ‘Alignment* overlay_alignment_evaluation(Alignment*, Alignment*)’: dp_lib/evaluate.c:194:66: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 194 | if ( I->len_aln!=O->len_aln)printf_exit (EXIT_FAILURE, stderr, "ERROR: Incompatible alignments in overlay_alignment_evaluation"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:200:77: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 200 | if (!strm (I->name[a], O->name[a]))printf_exit (EXIT_FAILURE, stderr, "ERROR: Incompatible alignments in overlay_alignment_evaluation"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘Alignment* main_coffee_evaluate_output2(Alignment*, Constraint_list*, const char*)’: dp_lib/evaluate.c:269:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 269 | OUT=struc_evaluate4tcoffee (IN, CL, "strike",0,3,NULL); | ^~~~~~~~ dp_lib/evaluate.c:291:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 291 | crash (""); | ^~ dp_lib/evaluate.c: In function ‘Alignment* matrix_evaluate_output(Alignment*, Constraint_list*)’: dp_lib/evaluate.c:329:37: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 329 | if ( !CL->M)CL->M=read_matrice ("blosum62mt"); | ^~~~~~~~~~~~ dp_lib/evaluate.c:396:62: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 396 | (OUT)->seq_al[IN->nseq]=csprintf((OUT)->seq_al[IN->nseq],"%s",(OUT)->seq_al[IN->nseq-1]); | ^~~~ dp_lib/evaluate.c: In function ‘Alignment* sar_evaluate_output(Alignment*, Constraint_list*)’: dp_lib/evaluate.c:444:37: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 444 | if ( !CL->M)CL->M=read_matrice ("blosum62mt"); | ^~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘Alignment* fork_triplet_coffee_evaluate_output(Alignment*, Constraint_list*, int)’: dp_lib/evaluate.c:720:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 720 | fp=vfopen (pid_tmpfile[j], "w"); | ^~~ dp_lib/evaluate.c:724:78: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 724 | if (j==0)output_completion (CL->local_stderr,a,sl[0][1],1, "Final Evaluation"); | ^~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:808:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 808 | fp=vfopen (pid_tmpfile[j], "r"); | ^~~ dp_lib/evaluate.c: In function ‘Alignment* nfork_triplet_coffee_evaluate_output(Alignment*, Constraint_list*)’: dp_lib/evaluate.c:874:54: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 874 | output_completion (stderr,a,IN->len_aln,1, "Final Evaluation"); | ^~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘int sp_triplet_coffee_evaluate_output(Alignment*, Constraint_list*, char*)’: dp_lib/evaluate.c:965:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 965 | fp=vfopen (fname, "w"); | ^~~ dp_lib/evaluate.c:972:54: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 972 | output_completion (stderr,a,IN->len_aln,1, "Final SP Evaluation"); | ^~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘int sp_triplet_coffee_evaluate_output2(Alignment*, Constraint_list*, char*)’: dp_lib/evaluate.c:1051:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1051 | fp=vfopen (fname, "w"); | ^~~ dp_lib/evaluate.c:1063:62: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1063 | output_completion (stderr,a,IN->len_aln,1, "Final SP Evaluation"); | ^~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘Alignment* msa_list2struc_evaluate4tcoffee(Sequence*, Sequence*, Sequence*, char*, float, int, char*)’: dp_lib/evaluate.c:1154:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1154 | printf_exit ( EXIT_FAILURE, stderr, "\nFiles %s and %s do not contain the same number of sequences [FATAL:%s]", AF->name[0], AF->name [a],PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1171:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1171 | printf_exit ( EXIT_FAILURE, stderr, "\nNumber of taxon differs in MSA (-in2) and Species (-in1) files"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1178:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1178 | fp=vfopen (tmp, "w"); | ^~~ dp_lib/evaluate.c:1201:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1201 | fp=vfopen (tmp, "w"); | ^~~ dp_lib/evaluate.c: In function ‘float shuff(Sequence*, char*, int)’: dp_lib/evaluate.c:1267:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1267 | HERE (" -- computed %d", a+1); | ^~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1273:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1273 | HERE (" csim=%.3f", cs); | ^~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘int realign_node4hot(Sequence*, NT_node, char*, int, char*, int)’: dp_lib/evaluate.c:1641:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1641 | printf_system ("clustalw -infile=%s -outfile=%s %s", seq0, aln0, TO_NULL_DEVICE ); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1650:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1650 | printf_system ("clustalw -infile=%s -outfile=%s %s", seq1, aln1, TO_NULL_DEVICE); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1663:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1663 | printf_system ("clustalw -profile1=%s -profile2=%s -outfile=%s %s", aln0, aln1, aln2, TO_NULL_DEVICE); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1681:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1681 | vremove3 (seq0, "*"); | ^~~ dp_lib/evaluate.c:1682:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1682 | vremove3 (seq1, "*"); | ^~~ dp_lib/evaluate.c:1683:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1683 | vremove3 (aln0, "*"); | ^~~ dp_lib/evaluate.c:1684:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1684 | vremove3 (aln1, "*"); | ^~~ dp_lib/evaluate.c:1685:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1685 | vremove3 (aln2, "*"); | ^~~ dp_lib/evaluate.c: In function ‘char* shuffle_seq_file(char*)’: dp_lib/evaluate.c:1708:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1708 | fp=vfopen (file, "w"); | ^~~ dp_lib/evaluate.c: In function ‘Alignment* struc_evaluate4tcoffee4gt(Alignment*, Constraint_list*, char*, float, int, char*)’: dp_lib/evaluate.c:1731:12: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1731 | cputenv ("GUIDETREE=1"); | ^~~~~~~~~~~~~ dp_lib/evaluate.c:1736:54: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1736 | B=align_two_sequences (S->seq[a], S->seq[b], "pam250mt", -10, -2, "myers_miller_pair_wise"); | ^~~~~~~~~~ dp_lib/evaluate.c:1736:75: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1736 | B=align_two_sequences (S->seq[a], S->seq[b], "pam250mt", -10, -2, "myers_miller_pair_wise"); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1737:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1737 | B->name[0]=csprintf (B->name[0], "%s", S->name[a]); | ^~~~ dp_lib/evaluate.c:1738:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1738 | B->name[1]=csprintf (B->name[1], "%s", S->name[b]); | ^~~~ dp_lib/evaluate.c:1743:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1743 | output_completion (stderr,n,tot,1, "Guide Tree Computation"); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1753:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1753 | fp=vfopen (TT->dmF_list[0]=vtmpnam (NULL), "w"); | ^~~ dp_lib/evaluate.c: In function ‘float tune_imaxD(Alignment*, Constraint_list*, char*, float, int, char*)’: dp_lib/evaluate.c:1783:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1783 | buffer_env ("REPLICATES_4_TCOFFEE"); | ^~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1784:11: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1784 | cputenv("REPLICATES_4_TCOFFEE=1"); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1799:77: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1799 | vfclose (tree2file (RT, S, "newick",vfopen(getenv ("REFERENCE_TREE"), "w"))); | ^~~ dp_lib/evaluate.c:1799:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1799 | vfclose (tree2file (RT, S, "newick",vfopen(getenv ("REFERENCE_TREE"), "w"))); | ^~~~~~~~ dp_lib/evaluate.c:1857:16: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1857 | restore_env ("REPLICATES_4_TCOFFEE"); | ^~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘Alignment* struc_evaluate4tcoffee(Alignment*, Constraint_list*, char*, float, int, char*)’: dp_lib/evaluate.c:1948:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1948 | else tree_mode="nj"; | ^~~~ dp_lib/evaluate.c:1973:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1973 | else {printf_exit ( EXIT_FAILURE,stderr, "\nERROR: struc_evaluate4tcoffe::mode %s is unknown", (mode)?mode:"unset");} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:1999:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1999 | printf_exit ( EXIT_FAILURE,stderr, "\nERROR: No contact information could be gathered for any sequence [FATAL]"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:2103:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2103 | {printf_exit ( EXIT_FAILURE,stderr, "\nERROR: %s differs in MSA/contact-lib[FATAL]", A->name[s2]);} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:2126:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2126 | {printf_exit ( EXIT_FAILURE,stderr, "\nERROR: No column with less than %.2f %% gaps[FATAL]", max_gap*100);} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:2157:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2157 | if (get_string_variable ("columns4treeF")) | ^~~~~~~~~~~~~~~ dp_lib/evaluate.c:2160:49: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2160 | char ***l=file2list (get_string_variable ("columns4treeF"), " \t"); | ^~~~~~~~~~~~~~~ dp_lib/evaluate.c:2160:67: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2160 | char ***l=file2list (get_string_variable ("columns4treeF"), " \t"); | ^~~~~ dp_lib/evaluate.c:2253:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2253 | HERE ("NO CONTACT"); | ^~~~~~~~~~~~ dp_lib/evaluate.c:2266:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2266 | if (ss2!=ls1){HERE ("Warning: Contact library contains inter-sequence data contacts: %d %d", a, ss2);} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:2292:49: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2292 | if (ss2!=ls2){HERE ("Warning: Contact library contains inter-sequence data contacts: %d %d", a,ss2);} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:2400:58: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2400 | add_warning ( stderr, "distance_mode==0 should not be used"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:2596:91: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2596 | if (A->nseq>2 && ntrees>1)output_completion (stderr,TREEA->nseq,ntrees,1, "Distance Tree Replicates"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:2605:58: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2605 | printf_exit ( EXIT_FAILURE,stderr, "\nERROR: %s is not a known tree_mode[FATAL]",tree_mode); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:2612:73: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2612 | fp=vfopen (TREEA->dmF_list[TREEA->nseq]=vtmpnam (NULL), "w"); | ^~~ dp_lib/evaluate.c: In function ‘Alignment* msa2distances(Alignment*, Constraint_list*, float, float, int)’: dp_lib/evaluate.c:2916:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2916 | printf_exit ( EXIT_FAILURE,stderr, "\nERROR: No contact information could be gathered for any sequence [FATAL]"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:2983:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2983 | {printf_exit ( EXIT_FAILURE,stderr, "\nERROR: %s differs in MSA/contact-lib[FATAL]", A->name[s1]);} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:3016:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3016 | if (ss2!=ls1){HERE ("Warning: Contact library contains inter-sequence data contacts: %d %d",ls1, ss2);} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:3203:72: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3203 | sprintf (outfile, "%s.bfactor2decres.pdb", seq2T_value (S,a, "template_name", "_P_")); | ^~~~~~~~~~~~~~~ dp_lib/evaluate.c:3203:89: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3203 | sprintf (outfile, "%s.bfactor2decres.pdb", seq2T_value (S,a, "template_name", "_P_")); | ^~~~~ dp_lib/evaluate.c:3205:72: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3205 | sprintf (outfile, "%s.bfactor2entropy.pdb", seq2T_value(S,a, "template_name", "_P_")); | ^~~~~~~~~~~~~~~ dp_lib/evaluate.c:3205:89: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3205 | sprintf (outfile, "%s.bfactor2entropy.pdb", seq2T_value(S,a, "template_name", "_P_")); | ^~~~~ dp_lib/evaluate.c:3247:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3247 | fp=vfopen (seq, "w"); | ^~~ dp_lib/evaluate.c:3324:76: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3324 | sprintf (outfile, "%s.bfactor2deccluster.pdb", seq2T_value (S,a, "template_name", "_P_")); | ^~~~~~~~~~~~~~~ dp_lib/evaluate.c:3324:93: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3324 | sprintf (outfile, "%s.bfactor2deccluster.pdb", seq2T_value (S,a, "template_name", "_P_")); | ^~~~~ dp_lib/evaluate.c: In function ‘Alignment* treealn_evaluate4tcoffee(Alignment*, Sequence*)’: dp_lib/evaluate.c:3355:49: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3355 | else if (!G)printf_exit (EXIT_FAILURE,stderr, "ERROR: treealn_evaluate requires a group"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:3356:55: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3356 | else if (!A->Tree)printf_exit (EXIT_FAILURE,stderr, "ERROR: treealn_evaluate requires pre-computed trees"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘double seq_genepred2acc(Sequence*, Sequence*, char*)’: dp_lib/evaluate.c:3750:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3750 | printf_exit (EXIT_FAILURE,stderr, "\nERROR: %s is not a valid sequence", name); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘Alignment* coffee_seq_evaluate_output_old2(Alignment*, Constraint_list*)’: dp_lib/evaluate.c:3871:11: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3871 | HERE (">%s\n%s", S->name[a], S->seq[a]); | ^~~~~~~~~ dp_lib/evaluate.c: In function ‘int (* get_profile_mode_function(char*, Profile_cost_func))(int*, int*, Constraint_list*)’: dp_lib/evaluate.c:4045:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4045 | crash ( "\n"); | ^~~~ dp_lib/evaluate.c: In function ‘int evaluate_blast_profile_score(Constraint_list*, int, int, int, int)’: dp_lib/evaluate.c:4276:49: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4276 | PRF1=(Alignment*)atop(seq2T_value (CL->S, s1, "A", "_RB_")); | ^~~ dp_lib/evaluate.c:4276:54: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4276 | PRF1=(Alignment*)atop(seq2T_value (CL->S, s1, "A", "_RB_")); | ^~~~~~ dp_lib/evaluate.c:4277:49: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4277 | PRF2=(Alignment*)atop(seq2T_value (CL->S, s2, "A", "_RB_")); | ^~~ dp_lib/evaluate.c:4277:54: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4277 | PRF2=(Alignment*)atop(seq2T_value (CL->S, s2, "A", "_RB_")); | ^~~~~~ dp_lib/evaluate.c: In function ‘int evaluate_diaa_matrix_score(Constraint_list*, int, int, int, int)’: dp_lib/evaluate.c:4360:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4360 | fp=vfopen ("diaa_mat.mat", "r"); | ^~~~~~~~~~~~~~ dp_lib/evaluate.c:4360:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4360 | fp=vfopen ("diaa_mat.mat", "r"); | ^~~ dp_lib/evaluate.c: In function ‘int evaluate_monoaa_matrix_score(Constraint_list*, int, int, int, int)’: dp_lib/evaluate.c:4439:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4439 | fp=vfopen ("monoaa_mat.mat", "r"); | ^~~~~~~~~~~~~~~~ dp_lib/evaluate.c:4439:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4439 | fp=vfopen ("monoaa_mat.mat", "r"); | ^~~ dp_lib/evaluate.c: In function ‘int* get_curvature(int, Constraint_list*)’: dp_lib/evaluate.c:4557:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4557 | fp=vfopen ( name, "r"); | ^~~ dp_lib/evaluate.c:4560:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 4560 | if ( c!=(CL->S)->seq[s1][n]){HERE ("ERROR: %c %c", c,(CL->S)->seq[s1][n] );myexit (0);} | ^~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘int get_dp_cost_blosum_matrix(Alignment*, int**, int, int*, int, int**, int, int*, int, Constraint_list*)’: dp_lib/evaluate.c:5710:37: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5710 | if (!matrix) matrix=read_matrice ("blosum62mt"); | ^~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘int get_dp_cost_pam_matrix(Alignment*, int**, int, int*, int, int**, int, int*, int, Constraint_list*)’: dp_lib/evaluate.c:5737:37: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5737 | if (!matrix) matrix=read_matrice ("pam250mt"); | ^~~~~~~~~~ dp_lib/evaluate.c: In function ‘int get_cdna_best_frame_dp_cost(Alignment*, int**, int, int*, int, int**, int, int*, int, Constraint_list*)’: dp_lib/evaluate.c:5806:125: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5806 | if (ns1+ns2>2){fprintf ( stderr, "\nERROR: get_cdna_dp_cost mode is only for pair-wise ALN [FATAL]\n");crash("");} | ^~ dp_lib/evaluate.c: In function ‘int consensus_get_dp_cost(Alignment*, int**, int, int*, int, int**, int, int*, int, Constraint_list*)’: dp_lib/evaluate.c:6095:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6095 | seq1=sub_aln2cons_seq_mat (A, ns1, list1, "blosum62mt"); | ^~~~~~~~~~~~ dp_lib/evaluate.c:6096:57: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6096 | seq2=sub_aln2cons_seq_mat (A, ns2, list2, "blosum62mt"); | ^~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘int get_dp_cost_sankoff_tree(Alignment*, int**, int, int*, int, int**, int, int*, int, Constraint_list*)’: dp_lib/evaluate.c:6900:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6900 | mode=get_string_variable ("et_mode"); | ^~~~~~~~~ dp_lib/evaluate.c:6912:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6912 | matrix=read_matrice ("blosum62mt"); | ^~~~~~~~~~~~ dp_lib/evaluate.c:6961:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6961 | HERE ("incompatible tree"); | ^~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘int column2et_score(Sequence*, int*, NT_node, int, int**, int)’: dp_lib/evaluate.c:7043:53: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7043 | vfclose (tree2file (T,S, "newick", vfopen (treeF, "w"))); | ^~~ dp_lib/evaluate.c:7043:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7043 | vfclose (tree2file (T,S, "newick", vfopen (treeF, "w"))); | ^~~~~~~~ dp_lib/evaluate.c:7044:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7044 | string2file (treeF, "a", "\n"); | ^~~ dp_lib/evaluate.c:7044:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7044 | string2file (treeF, "a", "\n"); | ^~~~ dp_lib/evaluate.c:7058:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7058 | printf_system ("wetc -p %s -readtree %s >/dev/null 2>/dev/null", alnF, treeF); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:7060:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7060 | list=file2list("etc_out.ranks", " "); | ^~~~~~~~~~~~~~~ dp_lib/evaluate.c:7060:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7060 | list=file2list("etc_out.ranks", " "); | ^~~ dp_lib/evaluate.c:7069:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7069 | HERE ("%d", score); | ^~~~ In file included from ./define_header.h:30, from ./io_lib/io_structures.h:33, from ./io_lib_header.h:30, from dp_lib/evaluate.c:34: dp_lib/evaluate.c: In function ‘float get_gop_scaling_factor(int**, float, int, int)’: ./coffee_defines.h:297:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 297 | #define AA_ALPHABET "acdefghiklmnpqrstvwy-ACDEFGHIKLMNPQRSTVWY" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./coffee_defines.h:297:32: note: in definition of macro ‘AA_ALPHABET’ 297 | #define AA_ALPHABET "acdefghiklmnpqrstvwy-ACDEFGHIKLMNPQRSTVWY" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘int** rescale_two_mat(char*, char*, int, int, char*)’: dp_lib/evaluate.c:7594:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7594 | matrix2=rescale_matrix( matrix2, lambda,"abcdefghiklmnpqrstvwxyz"); | ^~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:7598:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7598 | matrix1=rescale_matrix( matrix1,10,"abcdefghiklmnpqrstvwxyz"); | ^~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c:7600:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7600 | output_matrix_header ( "stdout", matrix2, alp); | ^~~~~~~~ dp_lib/evaluate.c: In function ‘void output_matrix_header(char*, int**, char*)’: dp_lib/evaluate.c:7801:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7801 | fp=vfopen ( name, "w"); | ^~~ dp_lib/evaluate.c: In function ‘float** initialise_aa_physico_chemical_property_table(int*)’: dp_lib/evaluate.c:7826:14: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7826 | fp=vfopen ("properties.txt", "r"); | ^~~~~~~~~~~~~~~~ dp_lib/evaluate.c:7826:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7826 | fp=vfopen ("properties.txt", "r"); | ^~~ dp_lib/evaluate.c:7833:14: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7833 | fp=vfopen ("properties.txt", "r"); | ^~~~~~~~~~~~~~~~ dp_lib/evaluate.c:7833:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7833 | fp=vfopen ("properties.txt", "r"); | ^~~ dp_lib/evaluate.c: In function ‘Constraint_list* choose_extension_mode(char*, Constraint_list*)’: dp_lib/evaluate.c:7988:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7988 | printf_exit ( EXIT_FAILURE,stderr, "\nERROR: use -in to set the matrix to be used [FATAL]"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/evaluate.c: In function ‘float sum_pair(Alignment*, char*, int, int)’: dp_lib/evaluate.c:8108:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 8108 | matrix=mat2inverted_mat (matrix, "acdefghiklmnpqrstvwy"); | ^~~~~~~~~~~~~~~~~~~~~~ CC dp_lib/evaluate_dirichlet.c In file included from ./io_lib_header.h:33, from dp_lib/evaluate_dirichlet.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/evaluate_dirichlet.c: In function ‘double* compute_matrix_p(double*)’: dp_lib/evaluate_dirichlet.c:169:37: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 169 | matrix=read_matrice ( "pam250mt"); | ^~~~~~~~~~ dp_lib/evaluate_dirichlet.c: In function ‘Mixture* read_dirichlet(char*)’: dp_lib/evaluate_dirichlet.c:314:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 314 | fp=vfopen ( name, "r"); | ^~~ dp_lib/evaluate_dirichlet.c: In function ‘int dirichlet_code(char)’: dp_lib/evaluate_dirichlet.c:401:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 401 | crash ( "CODE UNDEFINED"); | ^~~~~~~~~~~~~~~~ dp_lib/evaluate_dirichlet.c:416:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 416 | crash ("ERROR in dirichlet_code"); | ^~~~~~~~~~~~~~~~~~~~~~~~~ CC dp_lib/util_dp_gotoh_sw.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_gotoh_sw.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_dp_gotoh_sw.c: In function ‘int gotoh_pair_wise_lalign(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_gotoh_sw.c:57:55: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 57 | output_format_aln (CL->out_aln_format[0],A,EA,"stdout"); | ^~~~~~~~ dp_lib/util_dp_gotoh_sw.c: In function ‘int sw_pair_is_defined(Constraint_list*, int, int, int, int)’: dp_lib/util_dp_gotoh_sw.c:134:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 134 | crash ("ERROR in function: sw_pair_is_defined\n"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CC dp_lib/util_dp_generic_fasta_nw.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_generic_fasta_nw.c:34: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC dp_lib/util_dp_fasta_sw.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_fasta_sw.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC dp_lib/util_dp_ssec_pwaln.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_ssec_pwaln.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ In file included from ./define_header.h:30, from ./io_lib/io_structures.h:33, from ./io_lib_header.h:30, from dp_lib/util_dp_ssec_pwaln.c:33: dp_lib/util_dp_ssec_pwaln.c: In function ‘int ssec_pwaln_maln(Alignment*, int*, int**, Constraint_list*)’: ./coffee_defines.h:297:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 297 | #define AA_ALPHABET "acdefghiklmnpqrstvwy-ACDEFGHIKLMNPQRSTVWY" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./coffee_defines.h:297:32: note: in definition of macro ‘AA_ALPHABET’ 297 | #define AA_ALPHABET "acdefghiklmnpqrstvwy-ACDEFGHIKLMNPQRSTVWY" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CC dp_lib/util_dp_gotoh_nw.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_gotoh_nw.c:34: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_dp_gotoh_nw.c: In function ‘int idscore_pair_wise(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_gotoh_nw.c:384:110: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 384 | A->score_aln=A->score=idscore_pairseq (A->seq_al[l_s[0][0]], A->seq_al[l_s[1][0]], CL->gop, CL->gep,CL->M, "sim3"); | ^~~~~~ dp_lib/util_dp_gotoh_nw.c: In function ‘int gotoh_pair_wise_lgp(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_gotoh_nw.c:880:51: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 880 | aln[l_s[c][a]]=csprintf (aln[l_s[c][a]],"%s", char_buf); | ^~~~ dp_lib/util_dp_gotoh_nw.c: In function ‘int glocal2_pair_wise(Alignment*, int*, int**, Constraint_list*)’: dp_lib/util_dp_gotoh_nw.c:927:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 927 | HERE ("2"); | ^~~ dp_lib/util_dp_gotoh_nw.c: In function ‘int fork_cl2pair_list_ext(Alignment*, int*, int**, Constraint_list*, int***, int*, int)’: dp_lib/util_dp_gotoh_nw.c:2269:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2269 | fp=vfopen (pid_tmpfile[j], "w"); | ^~~ dp_lib/util_dp_gotoh_nw.c:2355:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2355 | fp=vfopen (pid_tmpfile[j], "r"); | ^~~ dp_lib/util_dp_gotoh_nw.c: In function ‘int list2linked_pair_wise(Alignment*, int*, int**, Constraint_list*, int**, int, char***, int*)’: dp_lib/util_dp_gotoh_nw.c:2680:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2680 | else if (l==0) {HERE ("L=0 i=%d j=%d",l, i, j);exit (0);} | ^~~~~~~~~~~~~~~ dp_lib/util_dp_gotoh_nw.c:2723:51: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2723 | aln[l_s[c][a]]=csprintf (aln[l_s[c][a]],"%s", char_buf); | ^~~~ dp_lib/util_dp_gotoh_nw.c: In function ‘Constraint_list* collapse_list(Alignment*, int*, int**, char**, int, Constraint_list*)’: dp_lib/util_dp_gotoh_nw.c:2815:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2815 | fp=vfopen (add, "w"); | ^~~ CC dp_lib/fsa_dp.c In file included from ./io_lib_header.h:33, from dp_lib/fsa_dp.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/fsa_dp.c: In function ‘double analyze_sequence(char*, Hmm*)’: dp_lib/fsa_dp.c:277:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 277 | H=define_full_model(5, NULL,"_first", pavie_emission); | ^~~~~~~~ dp_lib/fsa_dp.c: In function ‘int* traceback(Alignment*, int*, int**, Hmm*, Constraint_list*, MatState*, MatState*, int**)’: dp_lib/fsa_dp.c:544:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 544 | DisplayMatState (S, "\n\tTraceback"); | ^~~~~~~~~~~~~~~ dp_lib/fsa_dp.c: In function ‘MatState* viterbiL_hmm(Alignment*, int*, int**, Hmm*, Constraint_list*, MatState*, MatState*)’: dp_lib/fsa_dp.c:683:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 683 | DisplayMatState (S, "\n\tS"); | ^~~~~~~ dp_lib/fsa_dp.c:684:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 684 | DisplayMatState (E, "\n\tE"); | ^~~~~~~ dp_lib/fsa_dp.c: In function ‘double lu_RviterbiD_hmm(Alignment*, int*, int**, Hmm*, Constraint_list*, MatState*, MatState*, int**)’: dp_lib/fsa_dp.c:913:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 913 | DisplayMatState (S, "\n\tS"); | ^~~~~~~ dp_lib/fsa_dp.c:914:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 914 | DisplayMatState (E, "\n\tE"); | ^~~~~~~ dp_lib/fsa_dp.c: In function ‘MatState* viterbiD_hmm(Alignment*, int*, int**, Hmm*, Constraint_list*, MatState*, MatState*, int**)’: dp_lib/fsa_dp.c:991:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 991 | DisplayMatState (S, "\n\tS"); | ^~~~~~~ dp_lib/fsa_dp.c:992:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 992 | DisplayMatState (E, "\n\tE"); | ^~~~~~~ dp_lib/fsa_dp.c: In function ‘double lu_RviterbiDGL_hmm(Alignment*, int*, int**, Hmm*, Constraint_list*, MatState*, MatState*, int**)’: dp_lib/fsa_dp.c:1263:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1263 | DisplayMatState (S, "\n\tS"); | ^~~~~~~ dp_lib/fsa_dp.c:1264:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1264 | DisplayMatState (E, "\n\tE"); | ^~~~~~~ dp_lib/fsa_dp.c: In function ‘MatState* viterbiDGL_hmm(Alignment*, int*, int**, Hmm*, Constraint_list*, MatState*, MatState*, int**)’: dp_lib/fsa_dp.c:1344:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1344 | DisplayMatState (S, "\n\tS"); | ^~~~~~~ dp_lib/fsa_dp.c:1345:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1345 | DisplayMatState (E, "\n\tE"); | ^~~~~~~ dp_lib/fsa_dp.c: In function ‘MatState* ManageMatState(int, MatState*)’: dp_lib/fsa_dp.c:1767:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1767 | if (C->Hp==NULL && C==Aheap)crash (""); | ^~ dp_lib/fsa_dp.c: In function ‘void testfunc(MatState*, char*)’: dp_lib/fsa_dp.c:2333:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2333 | while ( S){DisplayMatState ( S,"\n\t");S=S->n;} | ^~~~~~ CC dp_lib/util_domain_dp.c In file included from ./io_lib_header.h:33, from dp_lib/util_domain_dp.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ CC dp_lib/pavie_dp.c In file included from ./io_lib_header.h:33, from dp_lib/pavie_dp.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/pavie_dp.c: In function ‘double** pavie_seq2pavie_aln(Sequence*, char*, char*)’: dp_lib/pavie_dp.c:123:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 123 | fp=vfopen (mat,"r"); | ^~~ dp_lib/pavie_dp.c:144:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 144 | if ((st=vstrstr(mode, "_GEP"))) | ^~~~~~ dp_lib/pavie_dp.c:161:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 161 | if ( (buf=vstrstr (mode, "_TGEPF"))) | ^~~~~~~~ dp_lib/pavie_dp.c:174:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | pavie_mat2pavie_id_mat (NULL,"idmat", alp[0],"X","",1,pavie_idmat); | ^~~~~~~ dp_lib/pavie_dp.c:174:48: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | pavie_mat2pavie_id_mat (NULL,"idmat", alp[0],"X","",1,pavie_idmat); | ^~~ dp_lib/pavie_dp.c:174:52: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | pavie_mat2pavie_id_mat (NULL,"idmat", alp[0],"X","",1,pavie_idmat); | ^~ dp_lib/pavie_dp.c:204:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 204 | else if ( vstrstr (mode, "_ID02_"))A->score=score=pavie_aln2id (A, 2); | ^~~~~~~~ dp_lib/pavie_dp.c:205:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 205 | else if ( vstrstr (mode, "_ID04_"))A->score=score=pavie_aln2id (A, 4); | ^~~~~~~~ dp_lib/pavie_dp.c:206:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 206 | else if ( vstrstr (mode, "_ID05_"))A->score=score=pavie_aln2id (A, 5); | ^~~~~~~~ dp_lib/pavie_dp.c:207:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 207 | else if ( vstrstr (mode, "_ID06_"))A->score=score=pavie_aln2id (A, 6); | ^~~~~~~~ dp_lib/pavie_dp.c:216:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 216 | if ( vstrstr (mode, "_MATDIST_")) | ^~~~~~~~~~~ dp_lib/pavie_dp.c:217:67: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 217 | dist_mat[a][b]=dist_mat[b][a]=(double)(vstrstr (mode, "_ID05") || vstrstr (mode, "_ID06"))?-score*100:(100-score); | ^~~~~~~ dp_lib/pavie_dp.c:217:94: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 217 | dist_mat[a][b]=dist_mat[b][a]=(double)(vstrstr (mode, "_ID05") || vstrstr (mode, "_ID06"))?-score*100:(100-score); | ^~~~~~~ dp_lib/pavie_dp.c:218:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 218 | else if ( vstrstr (mode, "_MATSIM_")) | ^~~~~~~~~~ dp_lib/pavie_dp.c:222:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 222 | if ( !vstrstr (mode, "_MAT") ) | ^~~~~~ dp_lib/pavie_dp.c:231:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 231 | if ( vstrstr (mode, "_MAT") && !vstrstr ( mode, "_NOPRINT_")) | ^~~~~~ dp_lib/pavie_dp.c:231:51: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 231 | if ( vstrstr (mode, "_MAT") && !vstrstr ( mode, "_NOPRINT_")) | ^~~~~~~~~~~ dp_lib/pavie_dp.c:233:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 233 | if ( vstrstr (mode, "_MFORMAT2")) | ^~~~~~~~~~~ dp_lib/pavie_dp.c: In function ‘int** pavie_seq2trained_pavie_mat(Sequence*, char*)’: dp_lib/pavie_dp.c:327:24: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 327 | if ((b=vstrstr(param,"_THR")))sscanf ( b, "_THR%d_", &id_threshold); | ^~~~~~ dp_lib/pavie_dp.c:331:24: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 331 | if ((b=vstrstr(param,"_SAMPLE")))sscanf ( b, "_SAMPLE%d_", &sample_size); | ^~~~~~~~~ dp_lib/pavie_dp.c:332:24: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 332 | if ((b=vstrstr(param,"_PARALOGOUS"))) | ^~~~~~~~~~~~~ dp_lib/pavie_dp.c:338:24: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 338 | if ((b=vstrstr(param,"_CHANNEL")))sscanf ( b, "_CHANNEL%d_", &nch); | ^~~~~~~~~~ dp_lib/pavie_dp.c:341:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 341 | if ( (buf=vstrstr (param, "_TGEPF"))) | ^~~~~~~~ dp_lib/pavie_dp.c:350:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 350 | if ( (buf=vstrstr (param, "_PAMLOGODD_"))) | ^~~~~~~~~~~~~ dp_lib/pavie_dp.c:372:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 372 | pavie_mat2pavie_id_mat (NULL,"idmat", alp[0],ignore,force,1,pavie_idmat); | ^~~~~~~ dp_lib/pavie_dp.c:387:62: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 387 | mat_file=output_pavie_mat_list ( current_mat,gep, alp, nch,"", n++, mat_file); | ^~ dp_lib/pavie_dp.c:413:66: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 413 | mat_file=output_pavie_mat_list ( current_mat,gep, alp, nch,"", n, mat_file); | ^~ dp_lib/pavie_dp.c: In function ‘double*** pavie_seq2pavie_fmat(Sequence*, double*, double*, char**, char*, int, int, int, char*)’: dp_lib/pavie_dp.c:476:53: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 476 | output_completion ( stderr,a+1,S->nseq,1, ""); | ^~ dp_lib/pavie_dp.c:529:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 529 | sim=seq2sim_mat (S, "idmat"); | ^~~~~~~ dp_lib/pavie_dp.c:557:47: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 557 | output_completion ( stderr,c,tot,1, ""); | ^~ dp_lib/pavie_dp.c: In function ‘double** pavie_aln2fmat(Alignment*, double**, char*, int, int, int, char*)’: dp_lib/pavie_dp.c:633:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 633 | if ( vstrstr (param, "_TWE00_"))w=100; | ^~~~~~~~~ dp_lib/pavie_dp.c:634:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 634 | else if ( vstrstr (param, "_TWE01_"))w=pavie_aln2id (A, 1); | ^~~~~~~~~ dp_lib/pavie_dp.c:635:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 635 | else if ( vstrstr (param, "_TWE02_"))w=pavie_aln2id (A, 2); | ^~~~~~~~~ dp_lib/pavie_dp.c:636:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 636 | else if ( vstrstr (param, "_TWE03_"))w=pavie_aln2id (A, 3); | ^~~~~~~~~ dp_lib/pavie_dp.c:637:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 637 | else if ( vstrstr (param, "_TWE04_"))w=pavie_aln2id (A, 4); | ^~~~~~~~~ dp_lib/pavie_dp.c:638:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 638 | else if ( vstrstr (param, "_TWE05_"))w=pavie_aln2id (A, 5); | ^~~~~~~~~ dp_lib/pavie_dp.c:639:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 639 | else if ( vstrstr (param, "_TWE06_"))w=pavie_aln2id (A, 6); | ^~~~~~~~~ dp_lib/pavie_dp.c: In function ‘int pavie_score(char*, int, char*, int, char**, double*, double*, int, float, char*)’: dp_lib/pavie_dp.c:913:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 913 | strget_param ( param, "_AGECHANNEL", "-1", "%d", &use_age); | ^~~~~~~~~~~~~ dp_lib/pavie_dp.c:913:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 913 | strget_param ( param, "_AGECHANNEL", "-1", "%d", &use_age); | ^~~~ dp_lib/pavie_dp.c:913:52: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 913 | strget_param ( param, "_AGECHANNEL", "-1", "%d", &use_age); | ^~~~ dp_lib/pavie_dp.c:918:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 918 | strget_param (param, "_MCHSCORE", "0", "%d", &mchscore); | ^~~~~~~~~~~ dp_lib/pavie_dp.c:918:43: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 918 | strget_param (param, "_MCHSCORE", "0", "%d", &mchscore); | ^~~ dp_lib/pavie_dp.c:918:48: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 918 | strget_param (param, "_MCHSCORE", "0", "%d", &mchscore); | ^~~~ dp_lib/pavie_dp.c:943:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 943 | HERE ("Error: mchscore >2 [FATAL]\n"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/pavie_dp.c: In function ‘char** seq2pavie_alp(Sequence*, int)’: dp_lib/pavie_dp.c:1020:47: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1020 | alp[a]=array2alphabet (S->seq+n*a, n, "-."); | ^~~~ dp_lib/pavie_dp.c: In function ‘char** output_pavie_mat_list(int***, double*, char**, int, char*, int, char**)’: dp_lib/pavie_dp.c:1069:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1069 | fp=vfopen ( mat_list_name, "w"); | ^~~ dp_lib/pavie_dp.c: In function ‘Alignment* pavie_seq2pavie_sort(Sequence*, char*, char*)’: dp_lib/pavie_dp.c:1254:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1254 | if ( vstrstr (mode, "_IDSORT_") || vstrstr (mode, "_MASTERSORT")) | ^~~~~~~~~~ dp_lib/pavie_dp.c:1254:53: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1254 | if ( vstrstr (mode, "_IDSORT_") || vstrstr (mode, "_MASTERSORT")) | ^~~~~~~~~~~~~ dp_lib/pavie_dp.c:1257:24: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1257 | buf=vcat ( mode, "_MATDIST_NOPRINT_"); | ^~~~~~~~~~~~~~~~~~~ dp_lib/pavie_dp.c:1260:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1260 | if ( vstrstr (mode,"_IDSORT_")) | ^~~~~~~~~~ dp_lib/pavie_dp.c:1276:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1276 | else if ( vstrstr (mode, "_MASTERSORT")) | ^~~~~~~~~~~~~ dp_lib/pavie_dp.c:1280:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1280 | s=vstrstr(mode, "_MASTERSORT"); | ^~~~~~~~~~~~~ dp_lib/pavie_dp.c:1281:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1281 | mode=substitute ( mode, "_", " "); | ^~~ dp_lib/pavie_dp.c:1281:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1281 | mode=substitute ( mode, "_", " "); | ^~~ dp_lib/pavie_dp.c:1284:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1284 | mode=substitute (mode, " ", "_"); | ^~~ dp_lib/pavie_dp.c:1284:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1284 | mode=substitute (mode, " ", "_"); | ^~~ dp_lib/pavie_dp.c:1318:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1318 | else if ( vstrstr ( mode, "_TREESORT_")) | ^~~~~~~~~~~~ dp_lib/pavie_dp.c: In function ‘tnode* pavie_seq2pavie_tree(Sequence*, char*, char*)’: dp_lib/pavie_dp.c:1335:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1335 | buf=vcat (mode,"_MATDIST_NOPRINT_"); | ^~~~~~~~~~~~~~~~~~~ dp_lib/pavie_dp.c: In function ‘Alignment* pavie_seq2pavie_msa(Sequence*, char*, char*)’: dp_lib/pavie_dp.c:1359:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1359 | CL=choose_extension_mode ("matrix", CL); | ^~~~~~~~ dp_lib/pavie_dp.c:1364:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1364 | fp=vfopen ( mat_in, "r"); | ^~~ dp_lib/pavie_dp.c:1367:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1367 | add_warning( stderr, "\nWarning: Multiple Channel Not Supported. Used First Channel Only for MSA [Matrix: %s][WARNING:%s]", mat, PROGRAM); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/pavie_dp.c:1384:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1384 | if ( vstrstr (mode, "_QUICKTREE_")) | ^~~~~~~~~~~~~ dp_lib/pavie_dp.c:1389:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1389 | else if ( (s=vstrstr (mode, "_USETREE"))) | ^~~~~~~~~~ dp_lib/pavie_dp.c:1392:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1392 | mode=substitute ( mode, "_", " "); | ^~~ dp_lib/pavie_dp.c:1392:36: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1392 | mode=substitute ( mode, "_", " "); | ^~~ dp_lib/pavie_dp.c:1394:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1394 | mode=substitute (mode, " ", "_"); | ^~~ dp_lib/pavie_dp.c:1394:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 1394 | mode=substitute (mode, " ", "_"); | ^~~ CC dp_lib/util_graph_maln.c In file included from ./io_lib_header.h:33, from dp_lib/util_graph_maln.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_graph_maln.c: In function ‘Alignment* graph_aln(Alignment*, Constraint_list*, Sequence*)’: dp_lib/util_graph_maln.c:65:9: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 65 | HERE ("Function graph_aln is deprecated"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/util_graph_maln.c: In function ‘CL_node* vfree_cl_node(CL_node*)’: dp_lib/util_graph_maln.c:502:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 502 | if ( N->free==1)crash("freeing free block"); | ^~~~~~~~~~~~~~~~~~~~ CC dp_lib/util_dp_suboptimal_nw.c In file included from ./io_lib_header.h:33, from dp_lib/util_dp_suboptimal_nw.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/util_dp_suboptimal_nw.c: In function ‘int suboptimal_pair_wise(Alignment*, int*, int**, Constraint_list*, int)’: dp_lib/util_dp_suboptimal_nw.c:209:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 209 | HERE ("ERROR in subop_pair"); | ^~~~~~~~~~~~~~~~~~~~~ dp_lib/util_dp_suboptimal_nw.c:230:48: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 230 | id=idscore_pairseq(seqI,seqJ,-12, -1, CL->M, "idmat"); | ^~~~~~~ CC dp_lib/phylo3d.c In file included from ./io_lib_header.h:33, from dp_lib/phylo3d.c:35: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/phylo3d.c: In function ‘Alignment* phylo3d(Alignment*, Constraint_list*)’: dp_lib/phylo3d.c:47:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 47 | if (!A)printf_exit ( EXIT_FAILURE,stderr, "\nERROR: No contact information could be gathered for any sequence [FATAL]"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/phylo3d.c: In function ‘double scan_maxd(p3D*)’: dp_lib/phylo3d.c:105:77: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 105 | vfclose (tree2file (RT, S, "newick",vfopen(getenv ("REFERENCE_TREE"), "w"))); | ^~~ dp_lib/phylo3d.c:105:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 105 | vfclose (tree2file (RT, S, "newick",vfopen(getenv ("REFERENCE_TREE"), "w"))); | ^~~~~~~~ dp_lib/phylo3d.c:124:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 124 | cputenv ("strict_maxd_4_TCOFFEE=%d", strict); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/phylo3d.c:160:12: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 160 | cputenv ("strict_maxd_4_TCOFFEE=%d", bstrict); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/phylo3d.c: In function ‘Alignment* phylo3d_gt(Alignment*, Constraint_list*)’: dp_lib/phylo3d.c:174:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | if (!A)printf_exit ( EXIT_FAILURE,stderr, "\nERROR: No contact information could be gathered for any sequence [FATAL]"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/phylo3d.c:201:76: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 201 | if (!align_method)B=align_two_sequences (S->seq[s1], S->seq[s2], "blosum62mt", -8, -1, "myers_miller_pair_wise"); | ^~~~~~~~~~~~ dp_lib/phylo3d.c:201:98: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 201 | if (!align_method)B=align_two_sequences (S->seq[s1], S->seq[s2], "blosum62mt", -8, -1, "myers_miller_pair_wise"); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/phylo3d.c:223:60: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 223 | if (verbose())output_completion (stderr,n,tot,1, "Guide Tree Computation"); | ^~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/phylo3d.c: In function ‘p3D* fill_p3D(Alignment*, Constraint_list*)’: dp_lib/phylo3d.c:264:75: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 264 | if (getenv ("TREE_MODE_4_TCOFFEE"))D->tree_mode=csprintf (D->tree_mode, "%s",getenv("TREE_MODE_4_TCOFFEE")); | ^~~~ dp_lib/phylo3d.c:265:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 265 | else D->tree_mode=csprintf (D->tree_mode, "nj"); | ^~~~ dp_lib/phylo3d.c: In function ‘Alignment* addtree(p3D*, Alignment*)’: dp_lib/phylo3d.c:478:44: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 478 | fp=vfopen (TREEA->dmF_list[TREEA->nseq], "w"); | ^~~ dp_lib/phylo3d.c: In function ‘int** file2column_list(char*, int**)’: dp_lib/phylo3d.c:629:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 629 | if (!(l=file2list (file, " \t")))return NULL; | ^~~~~ dp_lib/phylo3d.c: In function ‘int*** aln2dm3d(Alignment*, Constraint_list*, double*)’: dp_lib/phylo3d.c:675:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 675 | if (s!=ns){HERE ("Warning: Contact library contains inter-sequence data contacts: %d %d",i,ns);} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dp_lib/phylo3d.c: In function ‘Alignment* aln2trim3d(Alignment*, Constraint_list*)’: dp_lib/phylo3d.c:696:20: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 696 | fp=vfopen (tmpF, "w"); | ^~~ dp_lib/phylo3d.c: In function ‘double phylo3d2score(double, double, double*, double*)’: dp_lib/phylo3d.c:841:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 841 | add_warning ( stderr, "distance_mode==0 should not be used"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CC dp_lib/CUSTOM_evaluate_for_struc.c In file included from ./io_lib_header.h:33, from dp_lib/CUSTOM_evaluate_for_struc.c:33: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ dp_lib/CUSTOM_evaluate_for_struc.c: In function ‘int custom_pair_score_function1(Constraint_list*, int, int, int, int)’: dp_lib/CUSTOM_evaluate_for_struc.c:383:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 383 | fp=vfopen ( "test_file", "w"); | ^~~~~~~~~~~ dp_lib/CUSTOM_evaluate_for_struc.c:383:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 383 | fp=vfopen ( "test_file", "w"); | ^~~ CC util_lib/util.c In file included from ./io_lib_header.h:33, from util_lib/util.c:52: ./io_lib/tree_util.h:30:1: warning: ‘typedef’ was ignored in this declaration 30 | typedef struct ALNcol | ^~~~~~~ In file included from util_lib/util.c:55: ./perl_header_lib.h:27:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 27 | char *PerlScriptName[]={"rec_sum.pl","count.pl","p\ | ^~~~~~~~~~~~ ./perl_header_lib.h:27:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 27 | char *PerlScriptName[]={"rec_sum.pl","count.pl","p\ | ^~~~~~~~~~ ./perl_header_lib.h:27:49: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 27 | char *PerlScriptName[]={"rec_sum.pl","count.pl","p\ | ^~~ 28 | rocess_list.pl","make_license.pl","CCsed.script","\ | ~~~~~~~~~~~~~~~ ./perl_header_lib.h:28:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 28 | rocess_list.pl","make_license.pl","CCsed.script","\ | ^~~~~~~~~~~~~~~~~ ./perl_header_lib.h:28:35: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 28 | rocess_list.pl","make_license.pl","CCsed.script","\ | ^~~~~~~~~~~~~~ ./perl_header_lib.h:28:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 28 | rocess_list.pl","make_license.pl","CCsed.script","\ | ^~ 29 | msa2bootstrap.pl","tc_generic_method.pl","mmseqs2p\ | ~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:29:19: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 29 | msa2bootstrap.pl","tc_generic_method.pl","mmseqs2p\ | ^~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:29:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 29 | msa2bootstrap.pl","tc_generic_method.pl","mmseqs2p\ | ^~~~~~~~~~ 30 | rf.pl","dynamic.pl","rnapdb2protpdb.pl","generic_m\ | ~~~~~~ ./perl_header_lib.h:30:8: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 30 | rf.pl","dynamic.pl","rnapdb2protpdb.pl","generic_m\ | ^~~~~~~~~~~~ ./perl_header_lib.h:30:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 30 | rf.pl","dynamic.pl","rnapdb2protpdb.pl","generic_m\ | ^~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:30:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 30 | rf.pl","dynamic.pl","rnapdb2protpdb.pl","generic_m\ | ^~~~~~~~~~~ 31 | ethod.tc_method","clustalw_method.tc_method","extr\ | ~~~~~~~~~~~~~~~~ ./perl_header_lib.h:31:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 31 | ethod.tc_method","clustalw_method.tc_method","extr\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:31:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 31 | ethod.tc_method","clustalw_method.tc_method","extr\ | ^~~~~~ 32 | act_from_pdb","install.pl","clean_cache.pl","natur\ | ~~~~~~~~~~~~~ ./perl_header_lib.h:32:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 32 | act_from_pdb","install.pl","clean_cache.pl","natur\ | ^~~~~~~~~~~~ ./perl_header_lib.h:32:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 32 | act_from_pdb","install.pl","clean_cache.pl","natur\ | ^~~~~~~~~~~~~~~~ ./perl_header_lib.h:32:45: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 32 | act_from_pdb","install.pl","clean_cache.pl","natur\ | ^~~~~~~ 33 | e_protocol.pl","mocca","dalilite.pl","wublast.pl",\ | ~~~~~~~~~~~~~~ ./perl_header_lib.h:33:16: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 33 | e_protocol.pl","mocca","dalilite.pl","wublast.pl",\ | ^~~~~~~ ./perl_header_lib.h:33:24: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 33 | e_protocol.pl","mocca","dalilite.pl","wublast.pl",\ | ^~~~~~~~~~~~~ ./perl_header_lib.h:33:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 33 | e_protocol.pl","mocca","dalilite.pl","wublast.pl",\ | ^~~~~~~~~~~~ ./perl_header_lib.h:34:1: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 34 | "blastpgp.pl","ncbiblast_lwp.pl","wublast_lwp.pl",\ | ^~~~~~~~~~~~~ ./perl_header_lib.h:34:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 34 | "blastpgp.pl","ncbiblast_lwp.pl","wublast_lwp.pl",\ | ^~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:34:34: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 34 | "blastpgp.pl","ncbiblast_lwp.pl","wublast_lwp.pl",\ | ^~~~~~~~~~~~~~~~ ./perl_header_lib.h:35:1: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 35 | "RNAplfold2tclib.pl","fasta_seq2RNAplfold_template\ | ^~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:35:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 35 | "RNAplfold2tclib.pl","fasta_seq2RNAplfold_template\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 36 | file.pl","fasta_seq2hmmtop_fasta.pl","fasta_seq2co\ | ~~~~~~~~ ./perl_header_lib.h:36:10: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 36 | file.pl","fasta_seq2hmmtop_fasta.pl","fasta_seq2co\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:36:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 36 | file.pl","fasta_seq2hmmtop_fasta.pl","fasta_seq2co\ | ^~~~~~~~~~~~~~ 37 | nsan_aln.pl","clustalw_aln2fasta_aln.pl","seq2name\ | ~~~~~~~~~~~~ ./perl_header_lib.h:37:14: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 37 | nsan_aln.pl","clustalw_aln2fasta_aln.pl","seq2name\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:37:42: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 37 | nsan_aln.pl","clustalw_aln2fasta_aln.pl","seq2name\ | ^~~~~~~~~~ 38 | _seq.pl","seq2intersection.pl","msf_aln2fasta_aln.\ | ~~~~~~~~ ./perl_header_lib.h:38:10: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 38 | _seq.pl","seq2intersection.pl","msf_aln2fasta_aln.\ | ^~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:38:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 38 | _seq.pl","seq2intersection.pl","msf_aln2fasta_aln.\ | ^~~~~~~~~~~~~~~~~~~~ 39 | pl","msa.pl","upp.pl","clustalo.pl","dca.pl","blas\ | ~~~ ./perl_header_lib.h:39:5: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 39 | pl","msa.pl","upp.pl","clustalo.pl","dca.pl","blas\ | ^~~~~~~~ ./perl_header_lib.h:39:14: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 39 | pl","msa.pl","upp.pl","clustalo.pl","dca.pl","blas\ | ^~~~~~~~ ./perl_header_lib.h:39:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 39 | pl","msa.pl","upp.pl","clustalo.pl","dca.pl","blas\ | ^~~~~~~~~~~~~ ./perl_header_lib.h:39:37: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 39 | pl","msa.pl","upp.pl","clustalo.pl","dca.pl","blas\ | ^~~~~~~~ ./perl_header_lib.h:39:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 39 | pl","msa.pl","upp.pl","clustalo.pl","dca.pl","blas\ | ^~~~~~ 40 | t_aln2fasta_aln.pl","blast_xml2fasta_aln.pl","fast\ | ~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:40:21: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 40 | t_aln2fasta_aln.pl","blast_xml2fasta_aln.pl","fast\ | ^~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:40:46: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 40 | t_aln2fasta_aln.pl","blast_xml2fasta_aln.pl","fast\ | ^~~~~~ 41 | a_aln2fasta_aln_unique_name.pl","newick2name_list.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:41:33: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 41 | a_aln2fasta_aln_unique_name.pl","newick2name_list.\ | ^~~~~~~~~~~~~~~~~~~ 42 | pl","excel2fasta.pl","nameseq2fasta.pl","any_file2\ | ~~~ ./perl_header_lib.h:42:5: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 42 | pl","excel2fasta.pl","nameseq2fasta.pl","any_file2\ | ^~~~~~~~~~~~~~~~ ./perl_header_lib.h:42:22: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 42 | pl","excel2fasta.pl","nameseq2fasta.pl","any_file2\ | ^~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:42:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 42 | pl","excel2fasta.pl","nameseq2fasta.pl","any_file2\ | ^~~~~~~~~~~ 43 | unix_file.pl","EndList"};char *PerlScriptFile[]={"\ | ~~~~~~~~~~~~~ ./perl_header_lib.h:43:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 43 | unix_file.pl","EndList"};char *PerlScriptFile[]={"\ | ^~~~~~~~~ ./perl_header_lib.h:43:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 43 | unix_file.pl","EndList"};char *PerlScriptFile[]={"\ | ^~ 44 | use File::Copy;\nuse Env qw(HOST);\nuse Env qw(HOM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45 | E);\nuse Env qw(USER);\n$x_field=0;\n$y_field=1;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 46 | $y_field_set=1;\n$nyf=1;\n\n$interval=0;\n$file=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 47 | stdin\";\n\n$print_avg=1;\n$print_sd=0;\n$print_su\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 48 | m=0;\n$print_n=0;\nforeach $value ( @ARGV)\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 49 | n if ($value ne $ARGV[$np]) \n {\n ;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 | }\n elsif($value eq \"-s\")\n {\n $st\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 | ep=$ARGV[++$np];\n $np++;\n }\n elsif(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 52 | $value eq \"-print_all\")\n {\n $print_sd=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 | $print_avg=$print_n=$print_sum=1;\n $np++;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 | }\n elsif($value eq \"-print_sum\")\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 55 | $print_sum=1;\n $print_avg=0;\n $np++;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 56 | n }\n elsif($value eq \"-print_n\")\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 | $print_n=1;\n $print_avg=0;\n $np++;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 | }\n elsif($value eq \"-print_avg\")\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 | $print_avg=1;\n $print_avg=0;\n $np++\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 | ;\n }\n elsif($value eq \"-sd\")\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 61 | $print_sd=1;\n $print_avg=0;\n $np++;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62 | }\n elsif($value eq \"-h\")\n {\n $head\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 63 | er=1;\n $np++;\n }\n elsif ($value eq \"-i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 64 | \")\n {\n $interval= $ARGV[++$np];\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 65 | np++;\n }\n elsif ($value eq \"-r2\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 66 | {\n $r2=1;\n \n $np = $ARGV[+\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 67 | +$np];\n $nsim= $ARGV[++$np];\n $np++;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | \n }\n elsif ($value eq \"-r\")\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 69 | $min= $ARGV[++$np];\n $max= $ARGV[++$np];\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 70 | n $np++;\n }\n \n elsif ($value eq \"-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 71 | x\")\n {\n $x_field= $ARGV[++$np]-1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 72 | $np++;\n }\n elsif ($value eq \"-y\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 73 | {\n $nyf=0; \n while ($ARGV[$np+1] && \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 74 | !($ARGV[$np+1]=~/\\-/))\n {\n $y_field[$nyf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 75 | ++]=$ARGV[++$np]-1;\n $y_field_set=1;\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 76 | \n $np++;\n }\n elsif ($value eq \"-fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 77 | le\")\n {\n $file= $ARGV[++$np];\n $fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 78 | le_set=1;\n $np++;\n } \n elsif \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 79 | ( $value eq \"h\" || $value eq \"-h\" || $value e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 | q \"-H\" || $value eq \"-help\" || $value eq \"hel\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 81 | p\")\n {\n print STDOUT \"data_analyse: Anal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 | yse and discretization of data\\n\";\n print S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 83 | TDOUT \" -file: ,.\\n\";\n print STDOUT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 85 | \" -x: ,...........\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 | ....\\n\";\n print STDOUT \" -y: \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 | ,...............\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 88 | \";\n print STDOUT \" -i:,...............\\n\";\n print\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 | STDOUT \" -i:<0:only one interval>\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 91 | print STDOUT \" -r:\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 92 | ;\n print STDOUT \" -s:\\n\";\n print STDOUT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 94 | \" -sd: print standard deviation on the Y\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 | ;\n print STDOUT \" -h : print column h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 | eader \\n\";\n exit (0);\n }\n elsif ($value\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 97 | =~/-/)\n {\n print \"$value is not a valid F\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 | LAG[FATAL]\\n\";\n exit (0);\n } \n elsif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 99 | $list eq \"\") \n {\n $file=$ARGV[$np];\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 | $np++;\n }\n \n \n }\n\n\n\n\n\nif ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 101 | file eq \"stdin\")\n {\n $remove_file=1;\n $file=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 102 | "tmp$$\";\n open (F, \">$file\");\n while (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 103 | )\n {\n print F $_;\n }\n close (F);\n \n ;}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 104 | \n\n\nif ($interval && $step)\n {\n my $nl;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 105 | open(F,$file);\n while ()\n {\n $lin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 106 | e=$_;\n \n if (!/\\S/){next;}\n @list=($line=~/(\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 107 | S+)/g);\n $val{$nl}{x}=$list[$x_field];\n $val{$nl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 | }{y}=$list[$y_field[0]];\n $nl++\n }\n clo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 109 | se (F);\n \n for (my $a=$min; $a<($max+$inte\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 110 | rval); $a+=$step)\n {\n my ($avgx, $avgy, $cn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 | );\n \n my $rmin=$a-$interval;\n my $rmax=$a;\n $c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 112 | n=0;\n for (my $b=0; $b<$nl; $b++)\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113 | $x=$val{$b}{x};\n my $y=$val{$b}{y};\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 114 | ($x<=$rmax && $x>=$rmin)\n {\n $avgx+=$x;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 115 | $avgy+=$y;\n $cn++;\n $tcn++;\n $val{$b}{used\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 116 | }=1;\n }\n }\n if ($cn)\n {\n $avgx/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 117 | =$cn;\n $avgy/=$cn;\n }\n printf \"%.3f %.3f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 | %.3f\\n\", $avgx, $avgy, $avgx-$avgy;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 119 | for (my $a=0; $a<$nl; $a++)\n {\n if ( !$v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 120 | al{$a}{used})\n {\n print \"---$val{$a}{x}; \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 121 | $val{$a}{y}\\n\";\n }\n }\n }\nelse\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 122 | if ($interval && $max)\n {\n $interval_si\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 123 | ze=($max-$min)/$interval;\n }\n elsif ($in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 124 | terval)\n {\n open(F,$file); \n my $set_max=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 125 | 0;\n my $set_min=0;\n while ()\n {\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 | v=$_;\n chomp($v);\n print \"--$v--\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127 | \n if ($v<$min ||!$set_min){$set_min=1;$min\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 128 | =$v;}\n if ($v>$max ||!$set_max){$set_max=1;$m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129 | ax=$v;}\n }\n close (F);\n print \"$min $max uuu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 130 | u\";\n $interval_size=($max-$min)/$interval;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 131 | }\n open(F,$file); \n while ()\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 132 | {\n $line=$_;\n if (!/\\S/){next;}\n @list=($line=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 133 | ~/(\\S+)/g);\n \n if ($interval==0){$bin=0;}\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 134 | e{$bin=int (($list[$x_field]-$min)/($interval_size\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 135 | ));}\n \n \n if ($bin && $bin==$interval){$bin--;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 136 | \n for ( $a=0; $a<$nyf; $a++)\n {\n $sum{$a}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 137 | {$bin}+=$list[$y_field[$a]];\n $sum2{$a}{$bin}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 138 | +=$list[$y_field[$a]]*$list[$y_field[$a]];\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 139 | n{$a}{$bin}++;\n }\n }\n \n if (!$int\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 140 | erval){$interval=1;}\n for ( $a=0; $a<$interval\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 141 | ; $a++)\n {\n printf ( \"%4d %4d \", $interva\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 142 | l_size*$a, $interval_size*($a+1));\n for ( $b=0; $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 143 | b<$nyf; $b++) \n {\n $i=$interval*$a;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 144 | if ( $n{$b}{$a}==0)\n {\n $avg=0;\n $sd=0;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 145 | \n }\n else\n {\n $avg=$sum{$b}{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 146 | a}/$n{$b}{$a};\n $sd=sqrt($sum2{$b}{$a}*$n{$b}{$a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 147 | }-$sum{$b}{$a}*$sum{$b}{$a})/($n{$b}{$a}*$n{$b}{$a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 148 | });\n }\n if ($print_n) {printf \"%15.4f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 149 | \", $n{$b}{$a};}\n if ($print_sum){printf \"%\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 150 | 15.4f \", $sum{$b}{$a};}\n if ($print_avg){pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 151 | ntf \"%15.4f \", $avg}\n if ($print_sd) {print\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 152 | f \"%15.4f \", $sd;}\n }\n printf (\"\\n\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 153 | }\n }\n\nif ( $remove_file){unlink $file;}\n"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 154 | ,"use File::Copy;\nuse Env qw(HOST);\nuse Env qw(H\ | ./perl_header_lib.h:154:2: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 154 | ,"use File::Copy;\nuse Env qw(HOST);\nuse Env qw(H\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 | OME);\nuse Env qw(USER);\n\nforeach $v (@ARGV){$cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 156 | .=$v;}\n\n\nif ( $cl=~/-k(\\d+)/){$k=$1;}\nelse {$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 157 | k=1;}\nif ( $cl=~/-w(\\d+)/){$w=$1;}\nelse {$w=-1;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 158 | }\nif ( $cl=~/-p(\\d+)/){$p=$1;}\nelse {$p=-1;}\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 159 | nwhile ()\n {\n @l=($_=~/(\\S+)/g);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 160 | $v=$l[$k-1];\n if ( !$h{$v}){@ll=($v, @ll);}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 161 | n \n if ( $w==-1)\n {$h{$v}++;}\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 162 | se\n {$h{$v}+=$l[$w-1];}\n\n if ($p!=-1){$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 163 | print{$v}=$l[$p-1];}\n\n }\nforeach $v (@ll)\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 164 | \n print \"$v $print{$v} $h{$v}\\n\";\n }\n","\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:164:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 164 | \n print \"$v $print{$v} $h{$v}\\n\";\n }\n","\ | ^~ 165 | \nuse Env qw(HOST);\nuse Env qw(HOME);\nuse Env qw\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 166 | (USER);\n$random_tag=int (rand 10000)+1;\n$unique_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 167 | prefix=\"$$.$HOST.$random_tag\";\n$queue=\"distill\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 168 | ery.and.mid\";\n$monitor=0;\n$stderr_file=\"/dev/n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 169 | ull\";\n$stdio_file=\"/dev/null\";\n$log_file=\"/d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 170 | ev/null\";\n$pause_time=0;\n$max_sub_jobs=60;\n$mi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 171 | n_sub_jobs=30;\n$output_all=0;\n$var='\\$';\n\nfor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 172 | each $value ( @ARGV)\n {\n if ($value ne $ARGV[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 173 | $np]) \n {\n ;\n }\n elsif ($value eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 174 | \"-max_sub_jobs\")\n {\n $max_sub_jobs= $A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 175 | RGV[++$np];\n $np++;\n } \n elsif ($va\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 176 | lue eq \"-min_sub_jobs\" )\n {\n $min_sub_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 177 | jobs= $ARGV[++$np];\n $np++;\n }\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178 | if ($value eq \"-para\")\n {\n $para=1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 179 | $monitor=1;\n $np++;\n }\n elsif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 180 | $value eq \"-monitor\") \n {\n $monitor=1;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 181 | \n $np++;\n }\n elsif ($value eq \"-no_mon\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 182 | itor\") \n {\n $monitor=0;\n $np++;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 183 | }\n elsif ($value eq \"-queue\")\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 184 | $queue=$ARGV[++$np];\n $np++;\n } \n elsi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 185 | f ($value eq \"-stderr_file\")\n {\n $stde\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 186 | rr_file=$ARGV[++$np];\n $np++;\n }\n elsif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 187 | ($value eq \"-stdio_file\")\n {\n $stdio_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 188 | file=$ARGV[++$np];\n $np++;\n }\n elsif ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 189 | value eq \"-output_all\")\n {\n $output_al\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 190 | l=1;\n $np++;\n }\n elsif ($value eq \"-pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 191 | use\") \n {\n $pause_time=$ARGV[++$np];\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 192 | $np++;\n }\n elsif ($value eq \"-log\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 193 | {\n $log=1;\n \n if ($A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 194 | RGV[$np+1]=~/\\-\\S+/) \n {\n $log_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 195 | le=\"stderr\";\n }\n else \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 196 | {\n $log_file=$ARGV[++$np]; \n ++$np;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 197 | n \n }\n }\n elsif ( $value eq \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 198 | "-com\")\n {\n \n if (!$ARGV[$np+1]=~/^\\'/)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 199 | { $com=$ARGV[++$np];}\n else {$com=$ARGV[++$np];\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 200 | }\n\n $np++;\n }\n elsif ( $value eq \"-c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 201 | heck\")\n {\n \n if (!$ARGV[$np+1]=~/^\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 202 | '/) { $check=$ARGV[++$np];}\n else {$check=$AR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 203 | GV[++$np];}\n $np++;\n }\n elsif ($com eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 204 | \") \n {\n $com_set=1;\n $com=$ARGV[$n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 205 | p];\n \n $np++;\n }\n elsif ($list eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 206 | \"\") \n {\n $list_set=1;\n $list=$ARG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 207 | V[$np];\n $np++;\n }\n elsif ( $var_set eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 208 | \"\")\n {\n $var_set=1;\n $var=$ARGV[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 209 | $np];\n $np++;\n }\n }\n\n\n\n\nif ( $com \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 210 | eq \"\"){print \"You Need to Provide a Command [FA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 211 | TAL]\\n\";\n die;\n }\n\n\n\nif ($list_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 212 | set==0) \n {\n $x= int (rand 100000)+1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 213 | $tmp_file_name=\"tmp_file_$x\";\n open ( TMP, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 214 | \">$tmp_file_name\");\n while ()\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 215 | {\n print TMP $_;\n }\n close (TMP);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 216 | open (F, $tmp_file_name);\n }\nelse \n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 217 | open (F, $list);\n }\n\nif ($para==0) \n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 218 | \n\n @tc_list= ;\n close (F); \n \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 219 | foreach $val(@tc_list) \n {\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 220 | \n \n $loc_com=$com;\n if ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 221 | check){$loc_check=$check;}\n \n @i_val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 222 | =($val=~/([^\\s]+)/g);\n \n if ( $#i_v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 223 | al==0)\n {\n if ($check){$loc_check=~s/$var/$i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 224 | _val[0]/g;}\n $loc_com=~s/$var/$i_val[0]/g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 225 | }\n else\n {\n for ($n=1; $n<=$#i_val+1;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 226 | $n++ )\n {\n \n $sub=\"$var$n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 227 | ;\n \n $loc_com=~s/$sub/$i_val[$n-1]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 228 | /g;\n if ($check){$loc_check=~s/$var/$i_val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 229 | [0]/g;}\n }\n }\n if ( $check && -e $l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 230 | oc_check)\n {\n print STDERR \"skipping $loc_c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 231 | om...\\n\";\n }\n else\n {\n system \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 232 | "$loc_com\";\n }\n }\n exit;\n }\n\nels\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 233 | if ($para==1) \n {\n print STDERR \"do paral\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 234 | lel execution of: \\\"$com $list\\\"\\n\";\n \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 235 | if ($log==1) \n {\n if ($log_file eq \"stdout\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 236 | " || $log_file eq \"stderr\" ) \n {\n $log_file=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 237 | \"\";\n }\n\n else \n {\n system \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 238 | \"echo LOG FILE> $log_file\";\n \n }\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 239 | n else \n {\n open ( OUT, \">/dev/null\");\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 240 | n \n \n $id=0;\n $n_sub=0;\n while ($v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 241 | al=) \n { \n $job_log[$id]=\"$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 242 | HOME/tmp/$unique_prefix.$id.log_file\";\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 243 | $job=$unique_prefix.\"_$id\";\n open (JOB, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 244 | \">$job\");\n \n $loc_com=$com;\n chop\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 245 | $val;\n\n $loc_com=~s/\\$/$val/g;\n \n p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 246 | rint JOB \"#!/bin/csh\\n\";\n print JOB \"#\\$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 247 | -cwd\\n\";\n print JOB \"#\\$ -N $unique_pref\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 248 | ix\\n\";\n if ($queue && !($queue eq \" \")) {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 249 | print JOB \"#\\$ -l $queue\\n\";}\n print JOB \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 250 | \"#\\n\"; \n print JOB \"$loc_com\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 251 | n\";\n print JOB \"echo FINISHED >> $job_log[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 252 | $id]\\n\";\n print JOB \"pwd\\n\";\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 253 | close (JOB);\n if ( $output_all==1)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 254 | system \"qsub $job > $unique_prefix\"; \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 255 | }\n else\n {system \"qsub $job -e $stderr_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 256 | ile -o $stdio_file >$unique_prefix\"; \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 257 | } \n\n\n\n print STDERR \"$id: $output_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 258 | all\\n\";\n $n_sub++;\n if ( $max_sub_jobs\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 259 | && $n_sub==$max_sub_jobs) \n {\n $n_sub=monitor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 260 | _process($min_sub_jobs,@job_log); \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 261 | } \n \n unlink $unique_prefix;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 262 | sleep $pause_time;\n $id++;\n }\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 263 | close (OUT);\n close (F);\n\n print STDERR \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 264 | "Your $id Jobs Have Been Submited (NAME=$unique_pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 265 | efix)\\n\";\n monitor_process (0, @job_log);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 266 | foreach $file(@job_log) {if (-e $file) {unlink(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 267 | $file);}}\n \n }\n\nsub monitor_process ( @j\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 268 | ob_list)\n {\n my (@job_list)=@_;\n my $m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 269 | in_sub_jobs=shift (@job_list);\n my $n_sub_jobs\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 270 | ;\n my $finished;\n my $n=0;\n\n $n_sub_j\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 271 | obs=-1;\n $finished=0;\n print STDERR \"\\nM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 272 | onitor Batch: [$min_sub_jobs]\";\n \n whi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 273 | le (!$finished && (($n_sub_jobs>$min_sub_jobs)|| $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 274 | n_sub_jobs==-1) ) \n {\n $finished=1;\n $n_sub_job\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 275 | s=0;\n $n=0;\n foreach $file (@job_list)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 276 | {\n \n if (-e $file){;}\n else \n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 277 | $finished=0; $n_sub_jobs++;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 278 | }\n system \"sleep 1\";\n }\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 279 | return $n_sub_jobs;\n }\n \n \nif ($tmp_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 280 | file_name){unlink($tmp_file_name);}\n","\n\nforeac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:280:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 280 | file_name){unlink($tmp_file_name);}\n","\n\nforeac\ | ^~~~~~~~~~~~ 281 | h ($np=0; $np<=$#ARGV; $np++)\n {\n $value=$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 282 | ARGV[$np];\n\n if ($value eq \"-file\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 283 | {\n $file= $ARGV[++$np];\n }\n elsif \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 284 | ($value eq \"-type\")\n {\n $type= $AR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 285 | GV[++$np];\n }\n elsif ($value eq \"-insti\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 286 | tute\")\n {\n $institute= $ARGV[++$np]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 287 | ;\n }\n elsif ($value eq \"-author\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 288 | {\n $author= $ARGV[++$np];\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 289 | elsif ($value eq \"-date\")\n {\n $da\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 290 | te= $ARGV[++$np];\n }\n elsif ($value eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 291 | \"-program\")\n {\n $program= $ARGV[++\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 292 | $np];\n }\n elsif ($value eq \"-email\")\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 293 | {\n $email= $ARGV[++$np];\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 294 | else\n {\n print \"$value is an unkown arg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 295 | ument[FATAL]\\n\";\n exit (1);\n }\n }\n\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 296 | \nopen F, $file || die;\nprint $INSTITUTE;\nif ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 297 | type eq \"c\"){print \"/**************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 298 | ****COPYRIGHT NOTICE******************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 299 | */\\n\";}\nif ( $type eq \"perl\"){print \"#######\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 300 | #######################COPYRIGHT NOTICE###########\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 301 | ###################/\\n\";}\nif ( $type eq \"txt\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 302 | ){print \"-------------------------------COPYRIGHT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 303 | NOTICE------------------------------/\\n\";}\n\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 304 | nwhile ()\n {\n s/\\$INSTITUTE/$institute/g;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 305 | n s/\\$AUTHOR/$author/g;\n s/\\$DATE/$date/g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 306 | s/\\$PROGRAM/$program/g; \n s/\\$EMAIL/$email/g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 307 | ; \n if ( $type eq \"txt\"){print $_;}\n elsif \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 308 | ($type eq \"c\"){chop $_; print \"\\/*$_*\\/\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 309 | }\n elsif ($type eq \"perl\"){print \"\\#$_\";}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 310 | }\nclose (F);\nif ( $type eq \"c\"){print \"/*****\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 311 | *************************COPYRIGHT NOTICE*********\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 312 | **********************/\\n\";}\nif ( $type eq \"pe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 313 | rl\"){print \"##############################COPYRI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 314 | GHT NOTICE##############################/\\n\";}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 315 | if ( $type eq \"txt\"){print \"-------------------\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 316 | ------------COPYRIGHT NOTICE----------------------\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 317 | --------/\\n\";}\n\n","\nwhile (<>) \n {\n s/\\=cc\ | ~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:317:23: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 317 | --------/\\n\";}\n\n","\nwhile (<>) \n {\n s/\\=cc\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 318 | /123456789/g;\n s/\\bcc/\\$\\(CC\\)/g;\n s/1234567\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 319 | 89/\\=cc/g;\n print $_;\n }\n\n","$version=\"1.00\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:319:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 319 | 89/\\=cc/g;\n print $_;\n }\n\n","$version=\"1.00\\ | ^~~~~~~~~~~~~~~~~~ 320 | ";\n$rseed= int(rand(100000))+1;\n\n\nif ( $#ARGV=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 321 | =-1)\n {\n print \"msa2bootstrap -i -input -n -o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 323 | -tmode -dmode <\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 324 | kimura> -alignpg -r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 325 | tree -stype -recompute -sys\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 326 | tem \";\n print \"\\n\\t-i: input \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 327 | file, can be sequneces, msa, matrix, trees, type i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 328 | s specified via -input\";\n print \"\\n\\t-inpu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 329 | t: Type of input data\";\n print \"\\n\\t\\tmsa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 330 | : msa in fasta format\";\n print \"\\n\\t\\tseq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 331 | : compute an msa with -alignpg\";\n print \"\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 332 | \\t\\tmatrix: phylipp distance matrix fed directly\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 333 | to method -tmode [caveat: tmode=nj or upgma]\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 334 | print \"\\n\\t\\ttree: list of newick trees di\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 335 | rectly fed to consence in order to generate a boot\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 336 | straped tree\";\n \n print \"\\n\\t-n: numbe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 337 | r of bootstrap replicates\";\n print \"\\n\\t-o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 338 | : name of the output tree. Files are not overwritt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 339 | en. Use -recompute to overwrite existing file\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 340 | print \"\\n\\t-tmode: tree mode: nj|upgma|pars\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 341 | imony|ml\";\n print \"\\n\\t-dmode: distance mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 342 | de\";\n print \"\\n\\t-alignpg: program for ali\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 343 | gning sequences (t_coffee=default)\";\n print \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 344 | "\\n\\t-rtree: replicate tree file (default: no fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 345 | le)\";\n print \"\\n\\t-rmsa: replicate msa fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 346 | e (default: no file)\";\n print \"\\n\\t-rmat: \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 347 | replicate matrix file (default: no file)\";\n p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 348 | rint \"\\n\\t-stype: sequence type: protein, dna o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 349 | r cdna\";\n print \"\\n\\t-recompute: force fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 350 | es to be overwritten\";\n print \"\\n\\t-system\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 351 | : cygwin|unix\";\n \n\n \n &my_exit (EX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 352 | IT_FAILURE);\n }\nforeach $arg (@ARGV){$command.=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 353 | \"$arg \";}\n\nprint \"CLINE: $command\\n\";\n$thr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 354 | eshold=100;\n$trim_msa=0;\n$stype=\"prot\";\nprint\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 355 | \"msa2bootstrap \";\n\n$system=\"cygwin\";\nif(($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 356 | command=~/\\-system (\\S+)/))\n {\n $system=$1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 357 | ;\n if ( $system eq \"cygwin\")\n {\n $exe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 358 | c_extension=\".exe\";\n }\n elsif ( $syste\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 359 | m eq \"unix\")\n {\n $exec_extension=\"\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 360 | print \"system=Unix\";die;\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 361 | {\n print \"msa2boostrap: -system=$system is an\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 362 | unknown mode [FATAL]\\n\"; die;\n }\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 363 | print \"-system $system \";\n }\nif(($command=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 364 | ~/\\-stype (\\S+)/))\n {\n $stype=$1;\n }\npr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 365 | int \"-stype=$stype \";\n\n\n\nif(($command=~/\\-i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 366 | (\\S+)/))\n {\n $msa=$1;\n print \"-i $msa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 367 | \";\n }\n\nif(($command=~/\\-rtree (\\S+)/))\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 368 | {\n $rtree=$1;\n print \"-rtree=$rtree \";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 369 | }\n\nif(($command=~/\\-rmsa (\\S+)/))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 370 | $rmsa=$1;\n }\nif(($command=~/\\-rmat (\\S+)/))\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 371 | {\n $rmat=$1;\n }\n$input=\"seq\";\nif(($com\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 372 | mand=~/\\-input (\\S+)/))\n {\n $input=$1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 373 | }\nprint \"-input=$input \";\n\n$dmode=\"kimura\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 374 | \nif(($command=~/\\-dmode (\\S+)/))\n {\n $dmo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 375 | de=$1;\n }\nprint \"-dmode=$dmode \";\n$alignpg=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 376 | "muscle\";\nif(($command=~/\\-alignpg (\\S+)/))\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 377 | {\n $alignpg=$1;\n }\nprint \"-alignpg=$dmode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 378 | \";\n\n$tmode=\"nj\";\nif(($command=~/\\-tmode (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 379 | \S+)/))\n {\n $tmode=$1;\n }\nprint \"-tmode=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 380 | $tmode \";\n$recompute=0;\nif(($command=~/\\-recom\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 381 | pute/))\n {\n $recompute=1;\n print \"-reco\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 382 | mpute \";\n }\n\n$out=$msa;\n$out=~s/\\..*//;\n$o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 383 | ut.=\".bph\";\nif(($command=~/\\-o (\\S+)/))\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 384 | n $out=$1;\n \n }\nprint \"-out=$out \";\ni\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 385 | f (-e $out && !$recompute)\n {\n print \"\\nNo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | Computation Required $out already exists\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 387 | &my_exit (EXIT_SUCCESS);\n \n }\n\n$n=100;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 388 | nif(($command=~/\\-n (\\d+)/))\n {\n $n=$1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 389 | }\nprint \"-n=$n \";\n$seed=3;\nif(($command=~/\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 390 | -s (\\d+)/))\n {\n $seed=$1;\n }\nprint \"-s=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 391 | $seed \";\n\nif(($command=~/\\-run_name (\\d+)/))\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 392 | n {\n $suffix=$1;\n }\nelse\n {\n $msa=~/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 393 | ([^.]+)/;\n $suffix=$1;\n }\nprint \"-run_name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 394 | =$suffix\\n\";\n\n\nif ( $input eq \"seq\")\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 395 | $seq=$msa;\n $msa=\"$suffix.prot_msa\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 396 | \n if ($stype eq \"cdna\")\n {\n $cdna_s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 397 | eq=$seq;\n $clean_cdna_seq=&vtmpnam();\n $seq=&vtm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 398 | pnam();\n `t_coffee -other_pg seq_reformat -in $cd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 399 | na_seq -action +clean_cdna >$clean_cdna_seq`;\n `t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 400 | _coffee -other_pg seq_reformat -in $clean_cdna_seq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 401 | -action +translate >$seq`;\n \n }\n\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 402 | (!-e $msa || $recompute)\n {\n print \"\\n###\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 403 | ## Compute an MSA With $alignpg\\n\";\n \n if ( \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 404 | $alignpg eq \"t_coffee\")\n {`$alignpg $seq -out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 405 | file=$msa >/dev/null 2>/dev/null`;}\n elsif ( $ali\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 406 | gnpg eq \"muscle\")\n {\n `$alignpg -in $seq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 407 | > $msa 2>/dev/null`;\n }\n elsif ( $alignpg eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 408 | \"clustalw\")\n {\n `$alignpg -infile=$seq -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 409 | outfile=$msa -quicktree >/dev/null 2>/dev/null`;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 410 | }\n elsif ( $align eq \"mafft\")\n {\n `$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 411 | alignpg $seq > $msa >/dev/null 2>/dev/null`;\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 412 | \n else\n {\n `$alignpg -in=$seq -outfile=$m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 413 | sa`;\n }\n }\n if (!-e $msa)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 414 | print \"\\nError: $alignpg Could Not produce the M\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 415 | SA $msa [FATAL]\\n\";\n }\n\n if ($stype e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 416 | q \"cdna\")\n {\n $msa2=\"$suffix.cdna_msa\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 417 | \n `t_coffee -other_pg seq_reformat -in $clean_cdn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 418 | a_seq -in2 $msa -action +thread_dna_on_prot_aln -o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 419 | utput fasta_aln >$msa2`;\n $msa=$msa2;\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 420 | \n $input=\"msa\";\n }\n\n\n\n$seqboot_o=&\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 421 | vtmpnam();\n$seqboot_c=&vtmpnam();\n\n$protdist_o=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 422 | &vtmpnam();\n$protdist_c=&vtmpnam();\nif ( $input \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 423 | eq \"msa\")\n {\n if ($tmode eq \"nj\" || $tmo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 424 | de eq \"upgma\"){$input=\"matrix\";}\n \n $l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 425 | msa= &vtmpnam ();\n `t_coffee -other_pg seq_ref\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 426 | ormat -in $msa -output phylip_aln > $lmsa`;\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 427 | n if ( -e \"outfile\"){unlink (\"outfile\");}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 428 | # run seqboot\n \n if ( $n>1)\n {\n p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 429 | rint \"Run SeqBoot .....\";\n open (F, \">$seqboot\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 430 | _c\");\n print F \"$lmsa\\nR\\n$n\\nY\\n$seed\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 431 | ;\n close (F);\n `seqboot$exec_extension < $seqbo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 432 | ot_c`;\n if ( -e \"outfile\"){ print \"[OK]\\n\";}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 433 | \n else { print \"[FAILED]\\n\";&my_exit (EXIT_FAI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 434 | LURE);}\n `mv outfile $seqboot_o`;\n }\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 435 | lse\n {\n `cp $lmsa $seqboot_o`;\n }\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 436 | if ($rmsa){`cp $seqboot_o $rmsa`;}\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 437 | if ($tmode eq \"nj\" || $tmode eq \"upgma\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 438 | {\n if ( $stype eq \"prot\")\n {\n # run p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 439 | rotdist\n print \"Run Protdist [dmode=$dmode]\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 440 | ";\n if ($dmode eq \"kimura\")\n {\n $d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 441 | mode=\"P\\nP\\nP\";\n }\n else\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 442 | \n print \"\\n$dmode is an unknown mode for Protd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 443 | ist [FATAL:msa2bootstrap.pl]\\n\";\n &my_exit (EX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 444 | IT_FAILURE);\n }\n open (F, \">$protdist\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 445 | _c\");\n if ($n>1){print F \"$seqboot_o\\n$dmo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 446 | de\\nM\\nD\\n$n\\nY\\n\";}\n else {printf F \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 447 | $seqboot_o\\n$dmode\\nY\\n\";}\n close (F);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 448 | `protdist$exec_extension < $protdist_c`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 449 | if ( -e \"outfile\"){ print \"[OK]\\n\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 450 | else { print \"[FAILED]\\n\";&my_exit (EXIT_FAILUR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 451 | E);}\n `mv outfile $protdist_o`;\n \n }\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 452 | lsif ( $stype eq \"cdna\" || $stype eq \"dna\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 453 | {\n print \"Run dnadist [dmode=default\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 454 | open (F, \">$protdist_c\");\n if ($n>1){pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 455 | int F \"$seqboot_o\\nM\\nD\\n$n\\nY\\n\";}\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 456 | lse {printf F \"$seqboot_o\\nY\\n\";}\n close \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 457 | (F);\n `protdist$exec_extension < $protdist_c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 458 | `;\n if ( -e \"outfile\"){ print \"[OK]\\n\";}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 459 | \n else { print \"[FAILED]\\n\";&my_exit (EXIT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 460 | _FAILURE);}\n `mv outfile $protdist_o`;\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 461 | n }\n }\nelsif ( $input eq \"matrix\")\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 462 | n $protdist_o=&vtmpnam();\n print \"MSA: $ms\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 463 | a\\n\";\n `cp $msa $protdist_o`;\n $n=1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 464 | }\n\n\n\n\n\n$nb_o=&vtmpnam();\n$nb_c=&vtmpnam();\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 465 | nif ($input eq \"matrix\" && $tmode ne \"parsimony\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 466 | \" && $tmode ne \"ml\")\n {\n print \"Run neig\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 467 | hbor [tmode=$tmode]\";\n\n if ($tmode eq \"nj\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 468 | )\n {\n $tmode=\"\\nN\\nN\";\n }\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 469 | sif ( $tmode eq \"upgma\")\n {\n $tmode = \"\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 470 | \nN\";\n }\n else\n {\n print \"\\n E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 471 | RROR: $tmode is an unknown tree computation mode\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 472 | n\";\n &my_exit (EXIT_FAILURE);\n }\n\n op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 473 | en (F, \">$nb_c\");\n if ($n>1){print F \"$prot\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 474 | dist_o$tmode\\nM\\n$n\\n$seed\\nY\\n\";}\n else\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 475 | {print F \"$protdist_o$tmode\\nY\\n\";}\n clos\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 476 | e (F);\n\n `neighbor$exec_extension < $nb_c`;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 477 | n if ( -e \"outtree\"){ print \"[Neighbor OK]\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 478 | n\";}\n else { print \"[FAILED]\\n\";&my_exit (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 479 | EXIT_FAILURE);}\n `mv outtree $nb_o`;\n unli\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 480 | nk (\"outfile\");\n }\nelsif ($input eq \"msa\" &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 481 | & $tmode eq \"parsimony\")\n {\n if ( -e \"out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 482 | file\"){unlink (\"outfile\");}\n if ( -e \"outt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 483 | ree\"){unlink (\"outtree\");}\n \n if ($styp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 484 | e eq \"prot\")\n {\n print \"Run protpars [tm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 485 | ode=$tmode]\";\n open (F, \">$nb_c\");\n if ($n>1)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 486 | {print F \"$seqboot_o\\nM\\nD\\n$n\\n$seed\\n10\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 487 | Y\\n\";}\n else {print F \"$seqboot_o\\nY\\n\";}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 488 | close (F);\n `protpars$exec_extension < $nb_c`;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 489 | n }\n elsif ( $stype eq \"dna\" || $stype \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 490 | eq \"cdna\")\n {\n print \"Run dnapars [tmode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 491 | =$tmode]\";\n open (F, \">$nb_c\");\n if ($n>1){pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 492 | int F \"$seqboot_o\\nM\\nD\\n$n\\n$seed\\n10\\nY\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 493 | n\";}\n else {print F \"$seqboot_o\\nY\\n\";}\n cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 494 | ose (F);\n `dnapars$exec_extension < $nb_c`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 495 | }\n if ( -e \"outtree\"){ print \"[OK]\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 496 | }\n else { print \"[FAILED]\\n\";&my_exit (EXIT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 497 | _FAILURE);}\n `mv outtree $nb_o`;\n unlink (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 498 | "outfile\");\n }\nelsif ($input eq \"msa\" && $tm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 499 | ode eq \"ml\")\n {\n if ( -e \"outfile\"){unli\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 500 | nk (\"outfile\");}\n if ( -e \"outtree\"){unlin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 501 | k (\"outtree\");}\n \n if ($stype eq \"prot\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 502 | ")\n {\n print \"Error: ML impossible with Pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 503 | otein Sequences [ERROR]\";\n &my_exit (EXIT_FAILUR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 504 | E);\n }\n elsif ( $stype eq \"dna\" || $st\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 505 | ype eq \"cdna\")\n {\n print \"Run dnaml [tmo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 506 | de=$tmode]\";\n open (F, \">$nb_c\");\n if ($n>1){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 507 | print F \"$seqboot_o\\nM\\nD\\n$n\\n$seed\\n10\\nY\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 508 | \\n\";}\n else {print F \"$seqboot_o\\nY\\n\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 509 | close (F);\n `dnaml$exec_extension < $nb_c`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 510 | }\n if ( -e \"outtree\"){ print \"[OK]\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 511 | }\n else { print \"[FAILED]\\n\";&my_exit (EXIT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 512 | _FAILURE);}\n `mv outtree $nb_o`;\n unlink (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 513 | "outfile\");\n }\n\n\nelse\n {\n `cp $msa $nb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 514 | _o`;\n $n=2;\n }\n\nif ($rmsa && -e $seqboot_o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 515 | ){print \"\\nOutput List of $n Replicate MSA: $rms\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 516 | a\\n\";`cp $seqboot_o $rmsa`;}\nif ($rmat && -e $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 517 | rotdist_o){print \"\\nOutput List of $n Replicate \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 518 | MATRICES: $rmat\\n\";`cp $protdist_o $rmat`;}\nif \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 519 | ($rtree && -e $nb_o){print \"\\nOutput List of $n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 520 | Replicate TREES: $rtree\\n\";`cp $nb_o $rtree`;}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 521 | \n\n\n$con_o=&vtmpnam();\n$con_c=&vtmpnam();\nif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 522 | $n >1)\n {\n print \"Run Consense.....\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 523 | open (F, \">$con_c\");\n print F \"$nb_o\\nY\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 524 | n\";\n close (F);\n `consense$exec_extension\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 525 | < $con_c`;\n if ( -s \"outtree\" > 0) { prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 526 | t \"[OK]\\n\";}\n else { print \"[FAILED]\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 527 | &my_exit (EXIT_FAILURE);}\n `mv outtree $con_o`\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 528 | ;\n unlink (\"outfile\");\n }\nelse\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 529 | `cp $nb_o $con_o`;\n }\n\n\n`cp $con_o $out`;\nif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 530 | ( !-e $out)\n {\n print \"Tree Computation fa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 531 | iled [FAILED]\\n\";\n &my_exit (EXIT_FAILURE);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 532 | n }\nelsif ($n>1)\n {\n print \"\\nOutput Boo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 533 | tstrapped Tree: $out\\n\";\n $avg=`t_coffee -ot\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 534 | her_pg seq_reformat -in $out -action +avg_bootstra\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 535 | p`;\n $avg=~s/\\n//g;\n print \"$avg\\n\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 536 | }\nelse\n {\n print \"\\nOutput Tree: $out\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 537 | n\";\n }\n\nopen (F, \"$out\");\nwhile ()\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 538 | \n \n $tree.=$_;\n }\nclose (F);\n$tree=~s/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 539 | \\n//g;\nprint \"BPH: $tree\\n\";\n\n\n&my_exit (E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 540 | XIT_SUCCESS);\n\nsub my_exit \n {\n my $m=@_[0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 541 | ];\n &clean_vtmpnam();\n exit ($m);\n }\nsu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 542 | b vtmpnam \n {\n my $file;\n\n\n $ntmp++;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 543 | $file=\"tmp4msa2bootstrap.$rseed.$$.$ntmp\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 544 | \n push (@tmpfile, $file);\n return $fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 545 | e;\n }\nsub clean_vtmpnam \n {\n my $t;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 546 | foreach $t (@tmpfile)\n {\n if ( -e $t){unlin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 547 | k ($t)};\n }\n }\n","use Env;\nuse FileHandl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:547:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 547 | k ($t)};\n }\n }\n","use Env;\nuse FileHandl\ | ^~~~~~~~~~~~~~~~~~~~~~~~~ 548 | e;\nuse Cwd;\nuse File::Path;\nuse Sys::Hostname;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 549 | n\n\nour $PIDCHILD;\nour $ERROR_DONE;\nour @TMPFIL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 550 | E_LIST;\nour $EXIT_FAILURE=1;\nour $EXIT_SUCCESS=0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 551 | ;\n\nour $REFDIR=getcwd;\nour $EXIT_SUCCESS=0;\nou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 552 | r $EXIT_FAILURE=1;\n\nour $PROGRAM=\"tc_generic_me\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 553 | thod.pl\";\nour $CL=$PROGRAM;\n\nour $CLEAN_EXIT_S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 554 | TARTED;\nour $debug_lock=$ENV{\"DEBUG_LOCK\"};\nou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 555 | r $debug_generic_method=$ENV{\"DEBUG_GENERIC_METHO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 556 | D\"};\nour $LOCKDIR=$ENV{\"LOCKDIR_4_TCOFFEE\"};\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 557 | if (!$LOCKDIR){$LOCKDIR=getcwd();}\nour $ERRORDIR=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 558 | $ENV{\"ERRORDIR_4_TCOFFEE\"};\nour $ERRORFILE=$ENV\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 559 | {\"ERRORFILE_4_TCOFFEE\"};\n&set_lock ($$);\nif (i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 560 | sshellpid(getppid())){lock4tc(getppid(), \"LLOCK\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 561 | , \"LSET\", \"$$\\n\");}\nour %RECODE;\nour $RECOD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 562 | E_N;\n\n\n\n\nour $BLAST_MAX_NRUNS=2;\nour $COMMAN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 563 | D;\nour $PIDCHILD;\n\n$REF_EMAIL=\"\";\n$tmp_dir=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 564 | "\";\n$init_dir=\"\";\n\n\n$test=0;\nif ($test==1)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 565 | \n {\n $SERVER=\"NCBI\";\n $query=$ARGV[0];\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 566 | \n $hitf=$ARGV[1];\n %s=read_fasta_seq($quer\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 567 | y);\n @sl=keys(%s);\n &blast_xml2profile (\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 568 | xx\", $s{$sl[0]}{seq},$maxid,$minid,$mincov, $hitf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 569 | );\n myexit ($EXIT_FAILURE);\n }\n\nforeach $v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 570 | (@ARGV){$cl.=\"$v \";}\n$COMMAND=$cl;\n($mode)=&my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 571 | _get_opt ( $cl, \"-mode=\",1,0);\n\n($A)=(&my_get_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 572 | opt ( $cl, \"-name1=\",0,0));\n($B)=(&my_get_opt (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 573 | $cl, \"-name2=\",0,0));\n($TMPDIR)=(&my_get_opt (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 574 | $cl, \"-tmpdir=\",0,0));\n($CACHE)=(&my_get_opt (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 575 | $cl, \"-cache=\",0,0));\n($SERVER)=((&my_get_opt \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 576 | ( $cl, \"-server=\",0,0)));\n($EMAIL)=((&my_get_op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 577 | t ( $cl, \"-email=\",0,0)));\n\nif (!$A){$A=\"A\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 578 | }\nif (!$B){$B=\"B\";}\n\n\nif (!$TMPDIR)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 579 | $HOME=$ENV{HOME};\n if ($ENV{TMP_4_TCOFFEE}){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 580 | $TMPDIR=$ENV{TMP_4_TCOFFEE};}\n else{$TMPDIR=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 581 | $HOME/.t_coffee/tmp/\";}\n }\nif ( ! -d $TMPDIR)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 582 | n {\n mkdir $TMPDIR;\n }\nif ( ! -d $TMPDIR)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 583 | n {\n print \"ERROR: Could not create temporar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 584 | y dir: $TMPDIR\\n\";\n myexit ($EXIT_FAILURE);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 585 | n }\n\n$EMAIL=~s/XEMAILX/\\@/g;\nif (!$EMAIL)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 586 | {\n if ($ENV{EMAIL_4_TCOFFEE}){$EMAIL=$ENV{EMAI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 587 | L_4_TCOFFEE};}\n elsif ($ENV{EMAIL}){$EMAIL=$EN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 588 | V{EMAIL};}\n else {$EMAIL=$REF_EMAIL;}\n }\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 589 | ($maxid,$minid,$mincov,$trim)=(&my_get_opt ( $cl, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 590 | \"-maxid=\",0,0, \"-minid=\",0,0,\"-mincov=\",0,0,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 591 | \"-trim=\",0,0));\n\nif (!$cl=~/\\-maxid\\=/){$ma\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 592 | xid=95;}\nif (!$cl=~/\\-minid\\=/){$minid=35;}\nif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 593 | (!$cl=~/\\-mincov\\=/){$mincov=80;}\nif (!$cl=~/\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 594 | \-trim\\=/){$trim;}\n\n\n\n\nif ($mode eq \"seq_ms\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 595 | a\")\n {\n &seq2msa($mode,&my_get_opt ( $cl, \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 596 | "-infile=\",1,1, \"-method=\",1,2, \"-param=\",0,0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 597 | ,\"-outfile=\",1,0, \"-database=\",0,0));\n }\nel\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 598 | sif ($mode eq \"blast2prf\")\n {\n\n blast2prf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 599 | (&my_get_opt ( $cl, \"-infile=\",0,0,\"-seqfile=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 600 | ",0,0,\"-outfile=\",0,0));\n }\nelsif ( $mode eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 601 | \"tblastx_msa\")\n {\n &seq2tblastx_lib ($mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 602 | ,&my_get_opt ( $cl, \"-infile=\",1,1, \"-outfile=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 603 | ",1,0));\n }\nelsif ( $mode eq \"tblastpx_msa\")\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 604 | n {\n &seq2tblastpx_lib ($mode,&my_get_opt ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 605 | cl, \"-infile=\",1,1, \"-outfile=\",1,0));\n }\ne\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 606 | lsif ( $mode eq \"thread_pair\")\n {\n &seq2th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 607 | read_pair($mode,&my_get_opt ( $cl, \"-infile=\",1,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 608 | 1, \"-pdbfile1=\",1,1, \"-method=\",1,2,\"-param=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 609 | ",0,0, \"-outfile=\",1,0, ));\n }\nelsif ( $mode \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 610 | eq \"pdbid_pair\")\n {\n &seq2pdbid_pair($mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 611 | ,&my_get_opt ( $cl, \"-pdbfile1=\",1,0, \"-pdbfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 612 | 2=\",1,0, \"-method=\",1,2,\"-param=\",0,0, \"-out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 613 | file=\",1,0, ));\n }\nelsif ( $mode eq \"pdb_pair\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 614 | \")\n {\n &seq2pdb_pair($mode,&my_get_opt ( $c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 615 | l, \"-pdbfile1=\",1,1, \"-pdbfile2=\",1,1, \"-meth\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 616 | od=\",1,2,\"-param=\",0,0, \"-outfile=\",1,0, ));\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 617 | n }\nelsif ( $mode eq \"rnapdb_pair\")\n{\n &s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 618 | eq2rnapdb_pair($mode,&my_get_opt ( $cl, \"-pdbfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 619 | 1=\",1,1, \"-pdbfile2=\",1,1, \"-method=\",1,2,\"-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 620 | param=\",0,0, \"-outfile=\",1,0, ));\n}\nelsif ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 621 | mode eq \"profile_pair\")\n {\n &seq2profile_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 622 | pair($mode,&my_get_opt ( $cl, \"-profile1=\",1,1, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 623 | \"-profile2=\",1,1, \"-method=\",1,2,\"-param=\",0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 624 | ,0, \"-outfile=\",1,0 ));\n }\nelsif ($mode eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 625 | pdb_template_test\")\n {\n &blast2pdb_template\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 626 | _test ($mode,&my_get_opt ( $cl, \"-infile=\",1,1))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 627 | ;\n\n }\nelsif ($mode eq \"psi_template_test\")\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 628 | {\n &psiblast2profile_template_test ($mode,&m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 629 | y_get_opt ( $cl, \"-seq=\",1,1,\"-blast=\",1,1));\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 630 | n\n }\n\nelsif ( $mode eq \"pdb_template\")\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 631 | n &blast2pdb_template ($mode,&my_get_opt ( $cl,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 632 | \"-infile=\",1,1, \"-database=\",1,0, \"-method=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 633 | ",1,0, \"-outfile=\",1,0,\"-pdb_type=\",1,0));\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 634 | }\n\nelsif ( $mode eq \"profile_template\")\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 635 | \n &seq2profile_template ($mode,&my_get_opt ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 636 | cl, \"-infile=\",1,1, \"-database=\",1,0, \"-metho\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 637 | d=\",1,0, \"-outfile=\",1,0));\n }\nelsif ( $mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 638 | eq \"psiprofile_template\")\n {\n &seq2profil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 639 | e_template ($mode,&my_get_opt ( $cl, \"-infile=\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 640 | 1,1, \"-database=\",1,0, \"-method=\",1,0, \"-outf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 641 | ile=\",1,0));\n }\nelsif ( $mode eq \"RNA_templat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 642 | e\")\n {\n &seq2RNA_template ($mode,&my_get_op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 643 | t ( $cl, \"-infile=\",1,1,\"-pdbfile=\",1,1,\"-out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 644 | file=\",1,0));\n }\nelsif ( $mode eq \"tm_templat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 645 | e\")\n {\n &seq2tm_template ($mode,&my_get_opt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 646 | ( $cl, \"-infile=\",1,1,\"-arch=\",1,1,\"-psv=\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 647 | 1,1, \"-outfile=\",1,0));\n }\nelsif ( $mode eq \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 648 | "psitm_template\")\n {\n &seq2tm_template ($mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 649 | de,&my_get_opt ( $cl, \"-infile=\",1,1, \"-arch=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 650 | ,1,1,\"-psv=\",1,1, \"-outfile=\",1,0,\"-database=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 651 | \",1,0));\n }\nelsif ( $mode eq \"ssp_template\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 652 | \n {\n &seq2ssp_template ($mode,&my_get_opt ( \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 653 | $cl, \"-infile=\",1,1,\"-seq=\",1,1,\"-obs=\",1,1,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 654 | \"-outfile=\",1,0));\n }\nelsif ( $mode eq \"psi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 655 | ssp_template\")\n {\n &seq2ssp_template ($mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 656 | ,&my_get_opt ( $cl, \"-infile=\",1,1,\"-seq=\",1,1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 657 | ,\"-obs=\",1,1, \"-outfile=\",1,0));\n }\n\n\n\ne\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 658 | lse\n {\n myexit(flush_error( \"$mode is an un\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 659 | known mode of tc_generic_method.pl\"));\n }\nmyex\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 660 | it ($EXIT_SUCCESS);\n\n\nsub seq2ssp_template\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 661 | \n my ($mode, $infile,$gor_seq,$gor_obs,$outfile)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 662 | =@_;\n my %s, %h;\n my $result;\n my (@profiles\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 663 | );\n &set_temporary_dir (\"set\",$infile,\"seq.pe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 664 | p\");\n %s=read_fasta_seq (\"seq.pep\");\n\n\n o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 665 | pen (R, \">result.aln\");\n\n #print stdout \"\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 666 | \";\n foreach $seq (keys(%s))\n {\n\n ope\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 667 | n (F, \">seqfile\");\n $s{$seq}{seq}=uc$s{$se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 668 | q}{seq};\n print (F \">$s{$seq}{name}\\n$s{$s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 669 | eq}{seq}\\n\");\n close (F);\n $lib_name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 670 | =\"$s{$seq}{name}.ssp\";\n $lib_name=&clean_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 671 | ile_name ($lib_name);\n\n if ($mode eq \"ssp_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 672 | template\"){&seq2gor_prediction ($s{$seq}{name},$s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 673 | {$seq}{seq}, \"seqfile\", $lib_name,$gor_seq, $gor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 674 | _obs);}\n elsif ($mode eq \"psissp_template\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 675 | )\n {\n &seq2msa_gor_prediction ($s{$seq}{name},\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 676 | $s{$seq}{seq},\"seqfile\", $lib_name,$gor_seq, $go\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 677 | r_obs);\n }\n\n if ( !-e $lib_name)\n {\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 678 | yexit(flush_error(\"GORIV failed to compute the se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 679 | condary structure of $s{$seq}{name}\"));\n myexi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 680 | t ($EXIT_FAILURE);\n }\n else\n {\n print s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 681 | tdout \"!\\tProcess: >$s{$seq}{name} _E_ $lib_name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 682 | \\n\";\n print R \">$s{$seq}{name} _E_ $lib_nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 683 | e\\n\";\n }\n unshift (@profiles, $lib_name);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 684 | \n }\n close (R);\n &set_temporary_dir (\"uns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 685 | et\",$mode, $method,\"result.aln\",$outfile, @prof\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 686 | iles);\n}\n\nsub seq2tm_template\n {\n my ($mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 687 | ,$infile,$arch,$psv,$outfile,$db)=@_;\n my %s, %h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 688 | ;\n my $result;\n my (@profiles);\n &set_tempor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 689 | ary_dir (\"set\",$infile,\"seq.pep\");\n %s=read_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 690 | fasta_seq (\"seq.pep\");\n\n\n open (R, \">result\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 691 | .aln\");\n\n #print stdout \"\\n\";\n foreach $s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 692 | eq (keys(%s))\n {\n open (F, \">seqfile\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 693 | ;\n print (F \">$s{$seq}{name}\\n$s{$seq}{seq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 694 | }\\n\");\n close (F);\n $lib_name=\"$s{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 695 | seq}{name}.tmp\";\n $lib_name=&clean_file_nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 696 | e ($lib_name);\n\n if ($mode eq \"tm_template\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 697 | \")\n {\n &safe_system (\"t_coffee -other_pg fas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 698 | ta_seq2hmmtop_fasta.pl -in=seqfile -out=$lib_name \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 699 | -arch=$arch -psv=$psv\");\n }\n elsif ( $mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 700 | eq \"psitm_template\")\n {\n &seq2msa_tm_predic\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 701 | tion ($s{$seq}{name},$s{$seq}{seq}, $db, \"seqfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 702 | \", $lib_name,$arch, $psv);\n }\n if ( !-e $l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 703 | ib_name)\n {\n myexit(flush_error(\"hmmtop faile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 704 | d to compute the secondary structure of $s{$seq}{n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 705 | ame}\"));\n myexit ($EXIT_FAILURE);\n }\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 706 | lse\n {\n print stdout \"!\\tProcess: >$s{$seq}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 707 | name} _T_ $lib_name\\n\";\n print R \">$s{$seq}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 708 | name} _T_ $lib_name\\n\";\n }\n unshift (@pro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 709 | files, $lib_name);\n }\n close (R);\n &set_te\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 710 | mporary_dir (\"unset\",$mode, $method,\"result.aln\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 711 | \",$outfile, @profiles);\n}\n\n\n\nsub seq2RNA_tem\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 712 | plate\n {\n \n my ($mode, $infile, $pdbfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 713 | , $outfile)=@_;\n my %s, %h ;\n my $result;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 714 | n my (@profiles);\n my ($seq_mode, $pdb_mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 715 | , $pwd);\n \n #use $seq_mode to estimate the\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 716 | template of sequences WITHOUT a PDB\n #use $pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 717 | b_mode to estimate the template of sequences WITH \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 718 | a PDB\n\n $seq_mode=$ENV{\"SEQ2TEMPLATE4_F_\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 719 | "};\n $pdb_mode=$ENV{\"PDB2TEMPLATE4_F_\"};\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 720 | \n if (!$pdb_mode){$pdb_mode=\"find_pair-p\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 721 | }\n if (!$seq_mode){$seq_mode=\"RNAplfold\";}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 722 | \n my $cwd = cwd();\n &set_temporary_dir\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 723 | (\"set\",$infile,\"seq.pep\");\n %s=read_fasta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 724 | _seq (\"seq.pep\");\n %pdb_template_h = &read_t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 725 | emplate_file($pdbfile);\n my $pdb_chain;\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 726 | n \n open (R, \">result.aln\");\n #pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 727 | nt stdout \"\\n\";\n foreach $seq (keys(%s))\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 728 | {\n \n open (F, \">seqfile\");\n print (F \">\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 729 | $s{$seq}{name}\\n$s{$seq}{seq}\\n\");\n close (F);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 730 | \n $pdb_chain = $pdb_template_h{$seq};\n $lib_name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 731 | =\"$s{$seq}{name}.rfold\";\n $lib_name=&clean_file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 732 | _name ($lib_name);\n if ($pdb_template_h{$seq} eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 733 | \"\")\n {\n if ($seq_mode eq \"RNAplfold\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 734 | "){RNAplfold2lib (\"seqfile\", \"$lib_name\");}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 735 | elsif ($seq_mode eq \"no\"){$lib_name=0;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 736 | else\n {\n myexit(add_error (EXIT_FAILURE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 737 | ,$$,$$,getppid(), \"seq2RNA_template failure::meth\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 738 | od $seq_mode not available for sequences without P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 739 | DB structures\"));\n }\n }\n elsif ($pdb_t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 740 | emplate_h{$seq} ne \"\")\n {\n my $pdbf;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 741 | if ( -e \"$cwd/$pdb_chain\" ){$pdbf=\"$cwd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 742 | /$pdb_chain\"; }\n elsif ( -e $pdb_chain \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 743 | ){$pdbf=\"$pdb_chain\"; }\n elsif ( -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 744 | e \"$CACHE$pdb_chain\" ){$pdbf=\"$CACHE$pdb_chain\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 745 | \";}\n elsif ( -e \"$CACHE/$pdb_chain\"){$pdb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 746 | f=\"$CACHE/$pdb_chain\";}\n else\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 747 | myexit(flush_error(\"Could not read $pdb_chain \")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 748 | );\n }\n\n if($pdb_mode eq \"x3dna-ssr\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 749 | )\n {\n x3dnassr2lib (\"seqfile\", \"$pdbf\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 750 | ", \"$lib_name\");\n }\n elsif ($pdb_mod\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 751 | e eq \"find_pair-p\")\n {\n x3dna_find_pair\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 752 | 2lib (\"seqfile\", \"$pdbf\", \"$lib_name\", \"fin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 753 | d_pair -p\");\n }\n elsif ($pdb_mode eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 754 | \"find_pair\")\n {\n x3dna_find_pair2lib (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 755 | "seqfile\", \"$pdbf\", \"$lib_name\", \"find_pair\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 756 | ");\n }\n elsif ($pdb_mode eq \"RNAplfol\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 757 | d\")\n {\n RNAplfold2lib (\"seqfile\", \"$l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 758 | ib_name\");\n }\n elsif ($pdb_mode eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 759 | no\"){$lib_name=0;}\n else\n {\n myexit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 760 | (add_error (EXIT_FAILURE,$$,$$,getppid(), \"seq2RN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 761 | A_template failure::Could not find method $pdb_mod\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 762 | e\"));\n }\n }\n if ($lib_name)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 763 | print stdout \"!\\tProcess: >$s{$seq}{name} _F_ \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 764 | $lib_name\\n\";\n print R \">$s{$seq}{name} _F\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 765 | _ $lib_name\\n\";\n unshift (@profiles, $lib_n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 766 | ame);\n }\n }\n close (R);\n &set_tem\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 767 | porary_dir (\"unset\",$mode, $method,\"result.aln\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 768 | ",$outfile, @profiles);\n }\n\n\n\nsub psiblast2p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 769 | rofile_template_test\n {\n my ($mode, $seq,$blas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 770 | t)=@_;\n my %s, %h, ;\n my ($result,$psiblast_ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 771 | tput,$profile_name,@profiles);\n my $trim=0;\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 772 | y $maxid=100;\n my $minid=0;\n my $mincov=0;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 773 | my $maxcov=100;\n\n %s=read_fasta_seq ($seq);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 774 | open (R, \">result.aln\");\n\n #print stdout \"\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 775 | n\";\n foreach $seq (keys(%s))\n {\n\n op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 776 | en (F, \">seqfile\");\n print (F \">$A\\n$s{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 777 | seq}{seq}\\n\");\n close (F);\n $psiblas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 778 | t_output=$blast;\n if ( -e $psiblast_output)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 779 | n {\n %profile=blast_xml2profile($s{$seq}{name},\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 780 | $s{$seq}{seq},$maxid, $minid,$mincov,$psiblast_ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 781 | tput);\n\n\n\n $profile_name=\"$s{$seq}{name}.pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 782 | f\";\n $profile_name=&clean_file_name ($profile_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 783 | name);\n unshift (@profiles, $profile_name);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 784 | output_profile ($profile_name, \\%profile, $trim)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 785 | ;\n print stdout \"!\\tProcess: >$s{$seq}{name} \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 786 | _R_ $profile_name [$profile{n} Seq.] [$SERVER/blas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 787 | t/$db][$CACHE_STATUS]\\n\";\n print R \">$s{$seq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 788 | }{name} _R_ $profile_name\\n\";\n }\n }\n clos\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 789 | e (R);\n\n die;\n}\nsub seq2profile_template\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 790 | {\n my ($mode, $infile, $db, $method, $outfi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 791 | le)=@_;\n if ($method eq \"psiblast\"){ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 792 | urn psiblast2profile_template ($mode, $infile, $db\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 793 | , $method, $outfile);}\n elsif ($method eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 794 | blastp\") {return psiblast2profile_template ($mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 795 | de, $infile, $db, $method, $outfile);}\n elsi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 796 | f ($method eq \"hh\") {return hh2profile_temp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 797 | late ($mode, $infile, $db, $method, $outfile);}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 798 | }\n\nsub psiblast2profile_template\n {\n my (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 799 | $mode, $infile, $db, $method, $outfile)=@_;\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 800 | %s, %h, ;\n my ($result,$psiblast_output,$profile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 801 | _name,@profiles);\n &set_temporary_dir (\"set\",$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 802 | infile,\"seq.pep\");\n %s=read_fasta_seq (\"seq.p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 803 | ep\");\n open (R, \">result.aln\");\n\n #print s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 804 | tdout \"\\n\";\n foreach $seq (keys(%s))\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 805 | open (F, \">seqfile\");\n print (F \">$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 806 | A\\n$s{$seq}{seq}\\n\");\n close (F);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 807 | $psiblast_output=&run_blast ($s{$seq}{name},$metho\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 808 | d, $db, \"seqfile\",\"outfile\");\n\n if ( -e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 809 | $psiblast_output)\n {\n my %profile=blast_xml2p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 810 | rofile($s{$seq}{name}, $s{$seq}{seq},$maxid, $mini\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 811 | d,$mincov,$psiblast_output);\n unlink ($psiblast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 812 | _output);\n \n $profile_name=\"$s{$seq}{name}.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 813 | prf\";\n $profile_name=&clean_file_name ($profil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 814 | e_name);\n unshift (@profiles, $profile_name);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 815 | output_profile ($profile_name, \\%profile, $tri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 816 | m);\n \n print stdout \"!\\tProcess: >$s{$seq}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 | {name} _R_ $profile_name [$profile{n} Seq.] [$SERV\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 818 | ER/blast/$db][$CACHE_STATUS]\\n\";\n print R \">\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 819 | $s{$seq}{name} _R_ $profile_name\\n\";\n \n \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 820 | }\n \n }\n close (R);\n \n \n\n &set_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 821 | temporary_dir (\"unset\",$mode, $method,\"result.a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 822 | ln\",$outfile, @profiles);\n}\n\nsub hh2profile_te\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 823 | mplate\n {\n\n #for each sequence, build a profi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 824 | le, in FASTA, with ungapped querry on top \n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 825 | ($mode, $infile, $db, $method, $outfile)=@_;\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 826 | %s, %h, ;\n my ($result,$psiblast_output,$profil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 827 | e_name,@profiles);\n &set_temporary_dir (\"set\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 828 | $infile,\"seq.pep\");\n %s=read_fasta_seq (\"seq.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 829 | pep\");\n open (R, \">result.aln\");\n \n my $h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 830 | h=$ENV{\"HHSEARCH_4_TCOFFEE\"};\n if (!$hh)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 831 | {\n print \"ERROR: HHSEARCH_4_TCOFFEE is not \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 832 | set\\n\";\n myexit ($EXIT_FAILURE);\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 833 | \n #print stdout \"\\n\";\n foreach $seq (keys(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 834 | %s))\n {\n my ($profile_name, $nseq);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 835 | open (F, \">seqfile\");\n print (F \">$A\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 836 | n$s{$seq}{seq}\\n\");\n close (F);\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 837 | #This function should input a querry and a da\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 838 | tabase and return as output a fasta MSA with quesr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 839 | y on top\n $profile_name=\"$s{$seq}{name}.prf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 840 | \";\n $profile_name=&clean_file_name ($profil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 841 | e_name);\n unshift (@profiles, $profile_name)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 842 | ;\n \n \n safe_system (\"$hh -name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 843 | =$s{$seq}{name} -method=search -db=$db -seq=seqfil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 844 | e -outfile=$profile_name\");\n if (-e $profil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 845 | e_name){$nseq=fasta2nseq($profile_name);}\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 846 | n print stdout \"!\\tProcess: >$s{$seq}{name}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 847 | _R_ $profile_name [$nseq Seq.] [$method/$db][$CAC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 848 | HE_STATUS]\\n\";\n print R \">$s{$seq}{name} \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 849 | _R_ $profile_name\\n\";\n }\n close (R);\n &s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 850 | et_temporary_dir (\"unset\",$mode, $method,\"resul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 851 | t.aln\",$outfile, @profiles);\n}\n\nsub blast2pdb_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 852 | template_test\n {\n my ($mode,$infile)=@_;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 853 | \n my ($maxid,$minid,$mincov);\n $maxid=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 854 | 100;\n $minid=0;\n $mincov=0;\n\n p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 855 | rint \"$infile\\n\";\n\n %p=blast_xml2profile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 856 | ($s{$seq}{name}, $s{$seq}{seq},$maxid, $minid,$min\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 857 | cov,$infile);\n $c=1;\n print stdout \"!\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 858 | \\tProcess: >$s{$seq}{name} [$SERVER/blast/$db][$C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 859 | ACHE_STATUS]\\n\";\n while (!$found && $c<$p{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 860 | n})\n {\n $pdbid=&id2pdbid($p{$c}{identifyer});\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 861 | n if ( length ($pdbid)>5){$pdbid=id2pdbid($p{$c}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 862 | {definition});}\n\n if ( length ($pdbid)>5)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 863 | {\n myexit(add_error (EXIT_FAILURE,$$,$$,g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 864 | etppid(), \"BLAST_FAILURE::Could Not Parse PDBID (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 865 | $p{$c}{identifyer},$p{$c}{definition})\"));\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 866 | }\n\n\n if (!&pdb_is_released($pdbid))\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 867 | print stdout \"\\t\\t**$pdbid [WARNIG: PDB \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 868 | NOT RELEASED or WITHDRAWN]\\n\";\n $c++;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 869 | }\n elsif (!&pdb_has_right_type ($pdbid,$type\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 870 | ))\n {\n my $ptype=&pdb2type ($pdbid);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 871 | my $etype=&type2etype($type);\n\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 872 | nt stdout \"\\t\\t**$pdbid [$ptype cannot be used \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 873 | (expected: $etype)]\\n\";\n $c++;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 874 | else\n {\n $found=1;\n }\n }\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 875 | if ($found)\n {\n print stdout \"\\t\\t >$s{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 876 | $seq}{name} _P_ $pdbid\\n\";\n }\n else\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 877 | print stdout \"\\t\\t >$s{$seq}{name} No Templa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 878 | te Selected\\n\";\n }\n die;\n }\nsub blas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 879 | t2pdb_template\n {\n my ($mode, $infile, $db, $m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 880 | ethod, $outfile,$type)=@_;\n my %s, %h, ;\n my (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 881 | $result,$blast_output);\n &set_temporary_dir (\"s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 882 | et\",$infile,\"seq.pep\");\n %s=read_fasta_seq (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 883 | "seq.pep\");\n open (R, \">result.aln\");\n\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 884 | #print stdout \"\\n\";\n foreach $seq (keys(%s))\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 885 | n {\n my $c;\n my $found;\n\n op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 886 | en (F, \">seqfile\");\n print (F \">$A\\n$s{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 887 | seq}{seq}\\n\");\n close (F);\n\n $blast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 888 | _output=&run_blast ($s{$seq}{name},$method, $db, \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 889 | "seqfile\",\"outfile\");\n\n %p=blast_xml2pro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 890 | file($s{$seq}{name}, $s{$seq}{seq},$maxid, $minid,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 891 | $mincov,$blast_output);\n unlink ($blast_outp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 892 | ut);\n\n $c=1;\n print stdout \"!\\tProc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 893 | ess: >$s{$seq}{name} [$SERVER/blast/$db][$CACHE_ST\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 894 | ATUS]\\n\";\n while (!$found && $c<$p{n})\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 895 | \n $pdbid=&id2pdbid($p{$c}{identifyer});\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 896 | ( length ($pdbid)>5){$pdbid=id2pdbid($p{$c}{defini\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 897 | tion});}\n\n if ( length ($pdbid)>5)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 898 | myexit(add_error (EXIT_FAILURE,$$,$$,getppid(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 899 | ), \"BLAST_FAILURE::Could Not Parse PDBID ($p{$c}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 900 | identifyer},$p{$c}{definition})\"));\n }\n\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 901 | if (!&pdb_is_released($pdbid))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 902 | print stdout \"\\t\\t**$pdbid [PDB NOT RELEASED or\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 903 | WITHDRAWN]\\n\";\n $c++;\n }\n elsif \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 904 | (!&pdb_has_right_type ($pdbid,$type))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 905 | my $ptype=&pdb2type ($pdbid);\n my $etyp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 906 | e=&type2etype($type);\n\n print stdout \"\\t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 907 | \\t**$pdbid [$ptype cannot be used (expected: $ety\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 908 | pe)]\\n\";\n $c++;\n }\n else\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 909 | n $found=1;\n }\n }\n\n if ($found)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 910 | \n {\n print R \">$s{$seq}{name} _P_ $pdbid\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 911 | ;\n print stdout \"\\t\\t >$s{$seq}{name} _P_ $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 912 | dbid\\n\";\n }\n else\n {\n print R \">$s{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 913 | seq}{name}\\n\";\n print stdout \"\\t\\t >$s{$se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 914 | q}{name} No Template Selected\\n\";\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 915 | close (R);\n &set_temporary_dir (\"unset\",$mode,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 916 | $method,\"result.aln\",$outfile);\n}\nsub type2et\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 917 | ype\n {\n my $type=shift;\n my $etype;\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 918 | if ( $type=~/n/){$etype.=\"NMR \";}\n if ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 919 | type=~/d/){$etype.=\"diffraction \";}\n if ( $type\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 920 | =~/e/){$etype.=\"EM \";}\n if ( $type=~/m/){$et\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 921 | ype.=\"model \";}\n return $etype;\n }\nsub pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 922 | b2type\n {\n my $pdb=shift;\n my $f=vtmpn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 923 | am();\n\n my $value= &safe_system (\"t_coffee \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 924 | -other_pg extract_from_pdb -model_type $pdb > $f\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 925 | );\n my $r=&file2string ($f);\n chomp($r);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 926 | \n return $r;\n }\nsub pdb_has_right_type\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 927 | {\n my $pdb=shift;\n my $type=shift;\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 928 | my $f=vtmpnam();\n\n my $value= &safe_system (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 929 | \"t_coffee -other_pg extract_from_pdb -model_type \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 930 | $pdb > $f\");\n my $r=&file2string ($f);\n c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 931 | homp($r);\n\n\n if ( $r eq \"NMR\" && $type=~/n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 932 | /){return 1;}\n elsif ( $r eq \"diffraction\" &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 933 | & $type=~/d/){return 1;}\n elsif ( $r eq \"EM\" &&\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 934 | $type=~/e/){return 1;}\n elsif ( $r eq \"model\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 935 | \" && $type=~/m/){return 1;}\n else {return 0;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 936 | \n }\nsub pdb_is_released\n {\n my $pdb=shift\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 937 | ;\n my $f=vtmpnam();\n\n $value= &safe_syste\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 938 | m (\"t_coffee -other_pg extract_from_pdb -is_relea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 939 | sed_pdb_name $pdb > $f\");\n my $r=&file2string\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 940 | ($f);\n chomp($r);\n return $r;\n }\nsub b\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 941 | last_msa\n {\n my ($blast,$infile,$db,$outfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 942 | )=@_;\n my ($a, %s1, %s, %qs, %qs1);\n my $s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 943 | eqfile;\n my $SEQ=new FileHandle;\n my $seqf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 944 | ile=\"seqfile\";\n my @txt;\n\n\n %s1=&read_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 945 | fasta_seq ($db);\n %s=&fasta_hash2index_hash(%s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 946 | 1);\n %qs1=&read_fasta_seq ($infile);\n %qs=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 947 | &fasta_hash2index_hash(%qs1);\n\n\n #&safe_syst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 948 | em (\"formatdb -i $db\");\n if ($blast eq \"bla\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 949 | stp\"){&safe_system (\"blastall -i $infile -d $db\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 950 | -m7 -p blastp -o io\");}\n elsif ($blast eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 951 | blastn\"){&safe_system (\"blastn -query $infile -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 952 | db $db -outfmt 5 -word_size 4 -out io\");}\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 953 | &set_blast_type (\"io\");\n\n\n my %FB=&xml2tag\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 954 | _list (\"io\", \"Iteration\");\n open (F, \">$o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 955 | utfile\");\n print F \"! TC_LIB_FORMAT_01\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 956 | \n print F \"$s{n}\\n\";\n for ( my $a=0; $a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 957 | <$s{n}; $a++)\n {\n print F \"$s{$a}{name} $s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 958 | {$a}{len} $s{$a}{seq}\\n\";\n }\n\n\n for \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 959 | ( my $a=0; $a<$FB{n}; $a++)\n {\n my %p=blast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 960 | _xml2profile ($qs{$a}{name}, $qs{$a}{seq},100, 0, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 961 | 0, $FB{$a}{body});\n my $query=$p{0}{name};\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 962 | i= $s1{$query}{order}+1;\n for (my $b=1; $b<$p{n};\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 963 | $b++)\n {\n my $l=length ($p{$b}{Qseq});\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 964 | my $hit=$p{$b}{definition};\n my $Qstart=$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 965 | p{$b}{Qstart};\n my $Hstart=$p{$b}{Hstart};\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 966 | my $identity=$p{$b}{identity};\n my @lrQ=s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 967 | plit (//,$p{$b}{Qseq});\n my @lrH=split (//,$p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 968 | {$b}{Hseq});\n\n my $j= $s1{$hit}{order}+1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 969 | #if ( $j==$i){next;}\n printf F \"# %d %d\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 970 | \n\", $i, $j;\n # print F \"\\n$p{$b}{Qseq} \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 971 | ($Qstart)\\n$p{$b}{Hseq} ($Hstart)\";\n for ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 972 | c=0; $c<$l; $c++)\n {\n my $rQ=$lrQ[$c];\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 973 | my $rH=$lrH[$c];\n my $n=0;\n\n if ($rQ ne \"-\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 974 | "){$n++, $Qstart++;}\n if ($rH ne \"-\"){$n++; $H\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 975 | start++;}\n\n if ( $n==2)\n {\n printf F \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 976 | \"\\t%d %d %d\\n\", $Qstart-1, $Hstart-1,$identity\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 977 | ;\n }\n }\n }\n }\n print F \"!\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 978 | SEQ_1_TO_N\\n\";\n close (F);\n return $out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 979 | put;\n }\n\nsub blast_msa_old\n {\n my ($infi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 980 | le,$outfile)=@_;\n my ($a, %seq);\n %s1=&rea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 981 | d_fasta_seq ($infile);\n foreach $s (keys (%s1)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 982 | )\n {\n $i=$s1{$s}{order};\n $s{$i}{name}=$s;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 983 | \n $s{$i}{seq}=$s1{$s}{seq};\n $s{$i}{len}=length(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 984 | $s{$i}{seq});\n $s{n}++;\n }\n &safe_syst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 985 | em (\"formatdb -i $infile\");\n &safe_system (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 986 | "blastall -i $infile -d $infile -m7 -o io\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 987 | &set_blast_type (\"io\");\n\n %FB=&xml2tag_lis\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 988 | t (\"io\", \"Iteration\");\n\n open (F, \">$out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 989 | file\");\n print F \"! TC_LIB_FORMAT_01\\n\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 990 | print F \"$s{n}\\n\";\n for ( $a=0; $a<$s{n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 991 | }; $a++)\n {\n print F \"$s{$a}{name} $s{$a}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 992 | len} $s{$a}{seq}\\n\";\n }\n for ( $a=0; $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 993 | a<$FB{n}; $a++)\n {\n %p=blast_xml2profile ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 994 | s{$a}{name}, $s{$a}{seq},100, 0, 0, $FB{$a}{body})\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 995 | ;\n for ($b=1; $b<$p{n}; $b++)\n {\n my $l=l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 996 | ength ($p{$b}{Qseq});\n my $hit=$p{$b}{definit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 997 | ion};\n my $Qstart=$p{$b}{Qstart};\n my $H\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 998 | start=$p{$b}{Hstart};\n my $identity=$p{$b}{id\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 999 | entity};\n my @lrQ=split (//,$p{$b}{Qseq});\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1000 | my @lrH=split (//,$p{$b}{Hseq});\n my $i= \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1001 | $s1{$s{$a}{name}}{order}+1;\n my $j= $s1{$hit}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1002 | {order}+1;\n #if ( $j==$i){next;}\n printf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1003 | F \"# %d %d\\n\", $i, $j;\n # print F \"\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1004 | $p{$b}{Qseq} ($Qstart)\\n$p{$b}{Hseq} ($Hstart)\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1005 | \n for ($c=0; $c<$l; $c++)\n {\n my $rQ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1006 | =$lrQ[$c];\n my $rH=$lrH[$c];\n my $n=0;\n\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1007 | ($rQ ne \"-\"){$n++, $Qstart++;}\n if ($rH ne \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1008 | -\"){$n++; $Hstart++;}\n\n if ( $n==2)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1009 | printf F \"\\t%d %d %d\\n\", $Qstart-1, $Hstar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1010 | t-1,$identity;\n }\n }\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1011 | print F \"! SEQ_1_TO_N\\n\";\n close (F);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1012 | return $output;\n\n }\n\nsub seq2msa\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1013 | my ($mode, $infile, $method, $param, $outfile,$dat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1014 | abase)=@_;\n &set_temporary_dir (\"set\",$infil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1015 | e,\"seq.pep\", $database, \"db.pep\");\n $param\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1016 | .=\" >/dev/null 2>&1 \";\n\n\n #make sure test.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1017 | pep is in FASTA\n &safe_system (\"t_coffee -oth\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1018 | er_pg seq_reformat -in seq.pep -output fasta_seq >\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1019 | x\");\n `mv x seq.pep`;\n\n if ( $method eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1020 | \"blastp\")\n {\n &blast_msa (\"blastp\",\"s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1021 | eq.pep\",$database,\"result.aln\");\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1022 | elsif ( $method eq \"blastn\")\n {\n &blast_m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1023 | sa (\"blastn\",\"seq.pep\",$database,\"result.aln\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1024 | ");\n }\n\n elsif ( $method eq \"muscle\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1025 | \n {\n `muscle -in seq.pep -out result.aln $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1026 | aram`;\n }\n elsif ( $method eq \"probcons\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1027 | \")\n {\n `probcons seq.pep >result.aln 2>/de\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1028 | v/null`;\n }\n elsif ( $method eq \"mafft\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1029 | ")\n {\n `mafft --quiet --localpair --maxiter\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1030 | ate 1000 seq.pep> result.aln 2>/dev/null`\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1031 | }\n elsif ( $method=~/prank/)\n {\n `$meth\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1032 | od -d=seq.pep -o=result.aln -quiet 2>/dev/null`;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1033 | `mv result.aln.1.fas result.aln`;\n }\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1034 | lsif ($method eq \"clustalo\")\n {\n `clustal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1035 | o -i seq.pep > result.aln`;\n }\n\n else\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1036 | {\n `$method -infile=seq.pep -outfile=result\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1037 | .aln`;\n }\n\n &set_temporary_dir (\"unset\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1038 | \",$mode, $method,\"result.aln\",$outfile);\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1039 | yexit ($EXIT_SUCCESS);\n }\n\nsub seq2thread_pair\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1040 | \n {\n my ($mode, $infile, $pdbfile1, $method,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1041 | $param, $outfile)=@_;\n &set_temporary_dir (\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1042 | set\",$infile,\"seq.pep\",$pdbfile1,\"struc.pdb\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1043 | ;\n if ($method eq \"fugueali\")\n {\n #En\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1044 | v Variable that need to be defined for Fugue\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1045 | (!$ENV{FUGUE_LIB_LIST}){$ENV{FUGUE_LIB_LIST}=\"DUM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1046 | MY\";}\n if (!$ENV{HOMSTRAD_PATH}) {$ENV{HOMSTRAD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1047 | _PATH}=\"DUMMY\";}\n if (!$ENV{HOMS_PATH}){$ENV{HO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1048 | MS_PATH}=\"DUMMY\";}\n\n `joy struc.pdb >x 2>x`;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1049 | &check_file(\"struc.tem\", \"Joy failed [FATAL:$P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1050 | ROGRAM/$method]\");\n `melody -t struc.tem >x 2>x`\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1051 | ;\n &check_file(\"struc.tem\", \"Melody failed [FA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1052 | TAL:$PROGRAM/$method]\");\n `fugueali -seq seq.pep\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1053 | -prf struc.fug -print > tmp_result.aln`;\n\n &che\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1054 | ck_file(\"tmp_result.aln\", \"Fugue failed [FATAL:\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1055 | $PROGRAM/$method]\");\n &safe_system (\"t_coffee -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1056 | other_pg seq_reformat -in tmp_result.aln -output f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1057 | asta_aln >result.aln\");\n }\n elsif ( $me\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1058 | thod eq \"t_coffee\")\n {\n &safe_system (\"t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1059 | _coffee -in Pstruc.pdb Sseq.pep Mslow_pair -outfil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1060 | e result.aln -quiet\");\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1061 | {\n &safe_system (\"$method -infile=seq.pep -pdbfi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1062 | le1=struc.pdb -outfile=result.aln $param>x 2>x\");\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1063 | \n }\n &set_temporary_dir (\"unset\",$mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1064 | ,$method,\"result.aln\",$outfile);\n myexit ($E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1065 | XIT_SUCCESS);\n }\nsub seq2pdbid_pair\n {\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1066 | y ($mode, $pdbfile1, $pdbfile2, $method, $param, $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1067 | outfile)=@_;\n my ($name);\n\n\n &set_tempor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1068 | ary_dir (\"set\");\n $name=$pdbfile1.\" \".$pdb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1069 | file2;\n\n if ( &cache_file(\"GET\",\"\",\"$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1070 | name\",\"$method\",\"dali\",$outfile,\"EBI\"))\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1071 | {return $outfile;}\n else\n {\n if ($m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1072 | ethod eq \"daliweb\")\n {\n $pdbfile1=~/(...\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1073 | .)(.)/;\n $id1=$1; $c1=$2;\n\n $pdbfile2=~\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1074 | /(....)(.)/;\n $id2=$1; $c2=$2;\n\n $comma\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1075 | nd=\"t_coffee -other_pg dalilite.pl --pdb1 $id1 --\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1076 | chainid1 $c1 --pdb2 $id2 --chainid2 $c2 --email=$E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1077 | MAIL >dali_stderr 2>dali_stderr\";\n $dali=`$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1078 | command`;\n\n open (F, \"dali_stderr\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1079 | while ()\n {\n if ( /JobId: dalilite-(\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1080 | \S+)/)\n {\n $jobid=$1;\n }\n }\n c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1081 | lose (F);\n unlink (\"dali_stderr\");\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1082 | $output1=\"dalilite-$jobid.txt\";\n if ( -e $o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1083 | utput1)\n {\n unlink ($output1);\n &url2fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1084 | le (\"http://www.ebi.ac.uk/Tools/es/cgi-bin/jobres\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1085 | ults.cgi/dalilite/dalilite-$jobid/aln.html\", \"ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1086 | tput2\");\n\n if ( -e \"output2\")\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1087 | my ($seq1, $seq2);\n $seq1=$seq2=\"\";\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1088 | open (F, \"output2\");\n while ()\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1089 | {\n $l=$_;\n if ( $l=~/Query\\s+(\\S+)/)\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1090 | {\n $seq1.=$1;\n }\n elsif ( $l=~\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1091 | /Sbjct\\s+(\\S+)/)\n {\n $seq2.=$1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1092 | }\n }\n close (F);\n unlink (\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1093 | output2\");\n if ($seq1 ne \"\" && $seq2 ne \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1094 | "\")\n {\n $output3=\">$A\\n$seq1\\n>$B\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1095 | n$seq2\\n\";\n $output3=~s/\\./-/g;\n open (F,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1096 | \">result.aln\");\n print F \"$output3\";\n c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1097 | lose (F);\n }\n }\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1098 | }\n &cache_file(\"SET\",\"\",\"$name\",\"$meth\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1099 | od\",\"dali\",\"result.aln\",\"EBI\");\n &set_t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1100 | emporary_dir (\"unset\",$mode, $method, \"result.a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1101 | ln\",$outfile);\n myexit ($EXIT_SUCCESS);\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1102 | nsub seq2pdb_pair\n {\n my ($mode, $pdbfile1, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1103 | $pdbfile2, $method, $param, $outfile)=@_;\n\n &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1104 | set_temporary_dir (\"set\",$pdbfile1,\"pdb1.pdb\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1105 | $pdbfile2,\"pdb2.pdb\");\n if ($method eq \"t_c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1106 | offee\")\n {\n &safe_system (\"t_coffee -in P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1107 | pdb1.pdb Ppdb2.pdb -quiet -outfile=result.aln\");\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1108 | n }\n elsif ( $method eq \"DaliLite\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1109 | {\n if ( &safe_system (\"DaliLite -pairwise pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1110 | b1.pdb pdb2.pdb >tmp1\")==$EXIT_SUCCESS)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1111 | my ($seq1, $seq2);\n $seq1=$seq2=\"\";\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1112 | n open (F, \"tmp1\");\n while ()\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1113 | {\n $l=$_;\n if ( $l=~/Query\\s+(\\S+)/)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1114 | n {\n $seq1.=$1;\n }\n elsif ( $l=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1115 | ~/Sbjct\\s+(\\S+)/)\n {\n $seq2.=$1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1116 | }\n }\n close (F);\n unlink (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1117 | "tmp1\");\n if ($seq1 ne \"\" && $seq2 ne \"\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1118 | ")\n {\n my $output3=\">$A\\n$seq1\\n>$B\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1119 | \n$seq2\\n\";\n $output3=~s/\\./-/g;\n open (F\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1120 | , \">result.aln\");\n print F \"$output3\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1121 | close (F);\n }\n }\n else\n {\n pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1122 | int \"ERROR: DalLite failed to align the considere\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1123 | d structures[tc_generic_method.pl]\\n\";\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1124 | }\n elsif ( $method eq \"TMalign\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1125 | {\n if ( &safe_system (\"TMalign pdb1.pdb pdb2.pdb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1126 | >tmp1\")==$EXIT_SUCCESS)\n {\n `tail -4 tmp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1127 | 1 > tmp2`;\n\n open (F, \"tmp2\");\n while\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1128 | ()\n {\n unshift(@l, $_);\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1129 | close (F);\n open (F, \">result.aln\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1130 | $l[3]=~s/[^a-zA-Z0-9-]/\\-/g;\n $l[1]=~s/[^\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1131 | a-zA-Z0-9-]/\\-/g;\n print F \">$A\\n$l[3]\\n>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1132 | $B\\n$l[1]\\n\";\n close (F);\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1133 | {\n print \"ERROR: TMalign failed to align th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1134 | e considered structures[tc_generic_method.pl]\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1135 | ;\n `rm result.aln >/dev/null 2>/dev/null`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1136 | }\n }\n elsif ( $method eq \"mustang\")\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1137 | n {\n if ( &safe_system (\"mustang -i pdb1.pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1138 | b pdb2.pdb -F fasta >/dev/null 2>/dev/null\")==$EX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1139 | IT_SUCCESS)\n {\n `mv results.afasta result.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1140 | aln`;\n }\n else\n {\n print \"ERROR: must\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1141 | ang failed to align the considered structures[tc_g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1142 | eneric_method.pl]\\n\";\n `rm result.aln >/dev\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1143 | /null 2>/dev/null`;\n }\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1144 | {\n if ( &safe_system (\"$method -pdbfile1=pdb1.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1145 | pep -pdbfile2=pdb2.pdb -outfile=result.aln $param>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1146 | x 2>x\")==$EXIT_SUCCESS)\n {\n `mv results.a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1147 | fasta result.aln`;\n }\n else\n {\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1148 | \"ERROR: $method failed to align the considered st\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1149 | ructures[tc_generic_method.pl]\\n\";\n `rm res\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1150 | ult.aln >/dev/null 2>/dev/null`;\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1151 | &set_temporary_dir (\"unset\",$mode, $method, \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1152 | "result.aln\",$outfile);\n myexit ($EXIT_SUCCES\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1153 | S);\n }\n\nsub seq2rnapdb_pair\n {\n my ($mod\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1154 | e, $pdbfile1, $pdbfile2, $method, $param, $outfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1155 | )=@_;\n \n if ($method eq \"runsara.py\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1156 | {\n my $path=$ENV{PATH};\n \n if ($ENV{X3DNA_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1157 | 4_SARA}){$ENV{PATH}=\"$ENV{X3DNA_4_SARA}:$path\";}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1158 | \n \n open(TMP,\"<$pdbfile1\");\n my $count = 0;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1159 | my $line;\n while ()\n {\n $line = $_;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1160 | \n if ($count ==1)\n {\n last;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1161 | }\n $count += 1;\n }\n \n \n $chain1 = subst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1162 | r($line,length($line)-3,1);\n \n close TMP;\n open\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1163 | (TMP,\"<$pdbfile2\");\n my $count = 0;\n while ()\n {\n $line = $_;\n if ($count ==1)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1165 | \n {\n last;\n }\n $count += 1;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1166 | }\n $chain2 = substr($line,length($line)-3,1);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1167 | n close TMP;\n \n $tmp_file=&vtmpnam();\n \n safe_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1168 | system(\"runsara.py $pdbfile1 $chain1 $pdbfile2 $c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1169 | hain2 -s -o $tmp_file --limitation 5000 > /dev/nul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1170 | l 2> /dev/null\");\n if ($ENV{X3DNA_4_SARA}){$ENV{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1171 | PATH}=$path;}\n \n open(TMP,\"<$tmp_file\") or die\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1172 | \"cannot open the sara tmp file:$!\\n\";\n open(O\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1173 | UT,\">$outfile\") or die \"cannot open the $outfil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1174 | e file:$!\\n\";\n \n my $switch = 0;\n my $seqNum \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1175 | = 0;\n foreach my $line ()\n {\n next u\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1176 | nless ($line=~/SARAALI/);\n if ($line=~/>/)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1177 | {\n $switch =0;\n print OUT \">seq$seqNum\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1178 | \n\";\n $seqNum++;\n }\n if ($switch < \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1179 | 2){\n $switch++;\n next;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1180 | \n if ($line =~/REMARK\\s+SARAALI\\s+([^\\*]+\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1181 | )\\*/)\n {\n my $string = $1;\n print OUT \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1182 | \"$string\\n\";\n }\n }\n close TMP;\n clo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1183 | se OUT;\n unlink($tmp_file);\n }\n }\nsub se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1184 | q2profile_pair\n {\n my ($mode, $profile1, $pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1185 | ofile2, $method, $param, $outfile)=@_;\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1186 | \n if ($method eq \"clustalw\")\n {\n `clu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1187 | stalw -profile1=$profile1 -profile2=$profile2 -out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1188 | file=$outfile`;\n }\n elsif ( $method eq \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1189 | "clustalo\")\n {\n \n `clustalo --p1 $profile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1190 | 1 --p2 $profile2 -o $outfile --force`;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1191 | elsif ( $method eq \"hhalign\")\n {\n hhal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1192 | ign ( $profile1,$profile2,$outfile,$param);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1193 | }\n else\n {\n `$method -profile1=$profil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1194 | e1 -profile2=$profile2 -outfile=$outfile $param> /\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1195 | dev/null 2>/dev/null`;\n }\n myexit ($EXIT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1196 | _SUCCESS);\n }\n\nsub pg_is_installed\n {\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1197 | y @ml=@_;\n my ($r, $p, $m);\n my $supported\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1198 | =0;\n\n my $p=shift (@ml);\n if ($p=~/::/)\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1199 | {\n if (safe_system (\"perl -M$p -e 1\")==$E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1200 | XIT_SUCCESS){return 1;}\n else {return 0;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1201 | }\n else\n {\n my $cwhich=vtmpnam();\n $r=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1202 | `which $p >$cwhich 2>/dev/null`;\n $r=file2string \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1203 | ($cwhich);\n if ($r=~/^\\//){$r=1;}\n else {$r=0;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1204 | \n \n if ($r==0 && is_blast_package ($p)){return p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1205 | g_is_installed (\"legacy_blast.pl\");}\n else {ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1206 | urn $r;}\n }\n }\n\nsub is_blast_package\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1207 | {\n my $p=shift;\n if ( $p=~/blastp/){return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1208 | 1;}\n elsif ($p=~/blastall/){return 1;}\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1209 | lsif ($p=~/blastn/){return 1;}\n elsif ($p=~/bl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1210 | astx/){return 1;}\n elsif ($p=~/formatdb/){retu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1211 | rn 1;}\n else {return 0;}\n }\n\nsub check_int\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1212 | ernet_connection\n {\n my $internet;\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1213 | tmp;\n &check_configuration ( \"wget\");\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1214 | $tmp=&vtmpnam ();\n\n if (&pg_is_installed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1215 | (\"wget\")){`wget www.google.com -O$tmp >/dev/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1216 | null 2>/dev/null`;}\n elsif (&pg_is_installed \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1217 | (\"curl\")){`curl www.google.com -o$tmp >/dev/n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1218 | ull 2>/dev/null`;}\n\n if ( !-e $tmp || -s $tmp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1219 | < 10){$internet=0;}\n else {$internet=1;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1220 | if (-e $tmp){unlink $tmp;}\n\n return $interne\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1221 | t;\n }\nsub check_pg_is_installed\n {\n my @m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1222 | l=@_;\n my $r=&pg_is_installed (@ml);\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1223 | !$r && $p=~/::/)\n {\n print STDERR \"\\nYou \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1224 | Must Install the perl package $p on your system.\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1225 | nRUN:\\n\\tsudo perl -MCPAN -e 'install $pg'\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1226 | \n }\n elsif (!$r)\n {\n myexit(flush\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1227 | _error(\"\\nProgram $p Supported but Not Installed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1228 | on your system\"));\n }\n else\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1229 | return 1;\n }\n }\nsub set_temporary_dir\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1230 | {\n my @list=@_;\n my $dir_mode, $a, $mode,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1231 | $method;\n\n $dir_mode=shift (@list);\n\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1232 | if ( $dir_mode eq \"set\")\n {\n $initial_di\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1233 | r=cwd();\n if ( !$tmp_dir)\n {\n $rand=rand \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1234 | (100000);\n $tmp_dir=\"$TMPDIR/tmp4tcoffee_pro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1235 | file_pair_dir_$$\\_P_$rand\";\n }\n if ( !-d $tm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1236 | p_dir)\n {\n push (@TMPDIR_LIST, $tmp_dir);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1237 | n `mkdir $tmp_dir`;\n }\n\n for ( $a=0; $a<=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1238 | $#list; $a+=2)\n {\n if (-e $list[$a]){ `cp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1239 | $list[$a] $tmp_dir/$list[$a+1]`;}\n }\n chd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1240 | ir $tmp_dir;\n }\n elsif ( $dir_mode eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1241 | unset\")\n {\n $mode=shift (@list);\n $method\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1242 | =shift (@list);\n\n if (!-e $list[0])\n {\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1243 | yexit(flush_error(\"Program $method failed to prod\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1244 | uce $list[1]\" ));\n myexit ($EXIT_FAILURE);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1245 | }\n else\n {\n chdir $initial_dir;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1246 | # `t_coffee -other_pg seq_reformat -in $tmp_dir/$l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1247 | ist[0] -output fasta_aln -out $tmp_dir/result2.aln\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1248 | `;\n `cp $tmp_dir/$list[0] $tmp_dir/result2.al\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1249 | n`;\n if ( $list[1] eq \"stdout\")\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1250 | open (F, \"$tmp_dir/result2.aln\");\n while (){print $_;}close(F);\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1252 | {\n `mv $tmp_dir/result2.aln $list[1]`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1253 | }\n shift (@list); shift (@list);\n forea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1254 | ch $f (@list)\n {\n if (-e (\"$tmp_dir/$f\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1255 | )){`mv $tmp_dir/$f .`;}\n }\n }\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1256 | }\n\n\n\n\nsub my_get_opt\n {\n my @list=@_;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1257 | \n my ($cl, $a, $argv, @argl);\n\n \n @ar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1258 | gl=();\n $cl=shift @list;\n for ( my $a=0; $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1259 | a<=$#list; $a+=3)\n {\n my $option=$list[$a];\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1260 | \n my $optional=$list[$a+1];\n my $status=$list[$a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1261 | +2];\n my $argv=\"\";\n if ($cl=~/$option(\\S+)/){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1262 | $argv=$1;}\n @argl=(@argl,$argv);\n\n\n #$optional\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1263 | :0=>optional\n #$optional:1=>must be set\n #$statu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1264 | s: 0=>no requirement\n #$status: 1=>must be an exi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1265 | sting file\n #$status: 2=>must be an installed pac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1266 | kage\n \n\n if ($optional==0){;}\n elsif ( $option\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1267 | al==1 && $argv eq \"\")\n {\n myexit(flush_e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1268 | rror( \"ERROR: Option $option must be set\"));\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1269 | myexit ($EXIT_FAILURE);\n }\n if ($status==0)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1270 | {;}\n elsif ($status ==1 && $argv ne \"\" && !-e $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1271 | argv)\n {\n myexit(flush_error( \"File [$arg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1272 | v] must exist\"));\n myexit ($EXIT_FAILURE);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1273 | }\n elsif ( $status==2 && $argv ne \"\" && &che\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1274 | ck_pg_is_installed ($argv)==0)\n {\n myexit(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1275 | flush_error( \" $argv is not installed\"));\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1276 | myexit ($EXIT_FAILURE);\n }\n }\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1277 | @argl;\n }\n\nsub check_file\n {\n my ($fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1278 | le, $msg)=@_;\n\n if ( !-e $file)\n {\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1279 | exit(flush_error(\"$msg\"));\n }\n }\nsub \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1280 | hhalign\n {\n my ($aln1, $aln2, $outfile, $par\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1281 | am)=@_;\n my $hh=$ENV{\"HHALIGN_4_TCOFFEE\"};\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1282 | \n \n if ($hh)\n {\n \n #external_h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1283 | halign\n # set via HHALIGN_4_TCOFFEE\n # -prof\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1284 | ile1 -profile2 -outfile < fasta alignmentof \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1286 | seq1 and 2 | tc_lib of seq 1 and 2>\n \n safe_syst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1287 | em (\"$hh -method=align -profile1=$aln1 -profile2=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1288 | $aln2 -outfile=$outfile\");\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1289 | {\n &local_hhalign ($aln1, $aln2, $outfile, $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1290 | aram);\n }\n }\n\n \n \nsub local_hhal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1291 | ign\n {\n my ($aln1, $aln2, $outfile, $param)=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1292 | @_;\n my $h1, $h2;\n\n $h{0}{index}=0;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1293 | $h{1}{index}=1;\n\n $h{0}{aln}=$aln1;\n $h{1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1294 | }{aln}=$aln2;\n\n\n\n %{$h{0}}=aln2psi_profile \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1295 | (%{$h{0}});\n %{$h{1}}=aln2psi_profile (%{$h{1}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1296 | });\n\n $param=~s/#S/ /g;\n $param=~s/#M/\\-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1297 | /g;\n $param=~s/#E/\\=/g;\n\n\n\n $command=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1298 | "hhalign -i $h{0}{a3m} -t $h{1}{a3m} -tc $outfile.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1299 | tmp -rank 1 -mapt 0 $param\";\n `$command`;\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1300 | # `hhalign -i $h{0}{a3m} -t $h{1}{a3m} -tc $out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1301 | file.tmp -rank 1 -mapt 0 -gapf 0.8 -gapg 0.8`;\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1302 | \n # To run global use the following\n\n ope\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1303 | n (I, \"$outfile.tmp\");\n open (O, \">$outfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1304 | \");\n $h{0}{cons}=s/\\./x/g;\n $h{1}{cons}=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1305 | s/\\./x/g;\n\n print O \"! TC_LIB_FORMAT_01\\n2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1306 | \\n$h{0}{name} $h{0}{len} $h{0}{seq}\\n$h{1}{name}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1307 | $h{1}{len} $h{1}{seq}\\n#1 2\\n\";\n\n while (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1308 | )\n {\n if (/(\\d+)\\s+(\\d+)\\s+(\\d+)/)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1309 | n {\n print O \"\\t$h{0}{$1}\\t$h{1}{$2}\\t$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1310 | 3\\n\";\n }\n }\n print O \"! SEQ_1_TO_N\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1311 | \\n\";\n\n close (O);\n close (I);\n }\n\ns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1312 | ub aln2psi_profile\n {\n my (%h)=@_;\n my (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1313 | $aln,$i,$hv, $a, @c, $n);\n\n\n $i=$h{index};\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1314 | $aln=$h{aln};\n\n `cp $aln $$.hhh_aln`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1315 | $command=\"t_coffee -other_pg seq_reformat -in $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1316 | aln -output hasch\";\n $hv=`$command`;chomp ($h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1317 | v);\n\n $h{a2m}=\"$tmp/$hv.tmp4hhpred.a2m\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1318 | $h{a3m}=\"$tmp/$hv.tmp4hhpred.a3m\";\n if ( \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1319 | -e $h{a3m}){;}\n else\n {\n $x=`which hhco\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1320 | nsensus`;\n `hhconsensus -M 50 -i $h{aln} -oa2m $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1321 | h{a2m}`;\n if (!-e $h{a2m})\n {\n print STDE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1322 | RR \"Program tc_generic_method.pl FAILED to run:\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1323 | n\\thhconsensus -M 50 -i $h{aln} -oa2m $h{a2m}\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1324 | \n myexit ($EXIT_FAILURE);\n }\n\n `hhconsen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1325 | sus -M 50 -i $h{aln} -oa3m $h{a3m}`;\n if (!-e $h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1326 | {a3m})\n {\n print STDERR \"Program tc_gener\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1327 | ic_method.pl FAILED to run:\\n\\thhconsensus -M 5\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1328 | 0 -i $h{aln} -oa3m $h{a3m}\";\n myexit ($EXIT_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1329 | FAILURE);\n }\n `buildali.pl $h{a3m} -n 1`\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1330 | ;\n }\n\n\n $h{a2m_seq}=`head -n 2 $h{a2m}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1331 | | grep -v \">\"`;chomp ($h{a2m_seq});\n $h{a3m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1332 | _seq}=`head -n 2 $h{a3m} | grep -v \">\"`;chomp ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1333 | h{a3m_seq});\n $h{cons}=$h{a2m_seq};\n $h{se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1334 | q}=`head -n 2 $h{aln} | grep -v \">\"`;chomp ($h{s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1335 | eq});\n\n\n\n @c=split (//, $h{cons});\n $h{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1336 | len}=$#c+1;\n for ($n=0,$a=0, $b=0; $a<$h{len};\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1337 | $a++)\n {\n if ( $c[$a]=~/[A-Z]/)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1338 | $h{++$n}=++$b;\n\n }\n elsif ( $c[$a]=~/[a-z\\.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1339 | ]/)\n {\n ++$b;\n }\n }\n\n $name=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1340 | `head -n 2 $h{aln} | grep \">\"`;\n $name=~/\\>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1341 | (\\S+)/;\n $h{name}=$1;\n\n `cp $h{a2m} $i.a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1342 | 2m`;\n `cp $h{a3m} $i.a3m`;\n `cp $h{aln} $i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1343 | .hh_aln`;\n\n return %h;\n }\nsub read_fasta_s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1344 | eq_index\n {\n my $f=@_[0];\n my %hseq;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1345 | my (@seq, @com, @name);\n my ($a, $s,$nseq);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1346 | n\n open (F, $f);\n while ()\n {\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1347 | s.=$_;\n }\n close (F);\n\n\n @name=($s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1348 | =~/>(\\S*).*\\n[^>]*/g);\n\n @seq =($s=~/>.*.*\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1349 | \n([^>]*)/g);\n @com =($s=~/>\\S*(.*)\\n([^>]*)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1350 | /g);\n\n\n $nseq=$#name+1;\n\n for ($a=0; $a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1351 | <$nseq; $a++)\n {\n my $s;\n my $n=$name[$a];\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1352 | \n $hseq{$a}{name}=$n;\n $seq[$a]=~s/[^A-Za-z]//g;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1353 | \n $hseq{$a}{order}=$a;\n $hseq{$a}{seq}=$seq[$a];\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1354 | \n $hseq{$a}{com}=$com[$a];\n\n }\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1355 | %hseq;\n }\nsub read_fasta_seq\n {\n my $f=@\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1356 | _[0];\n my %hseq;\n my (@seq, @com, @name);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1357 | n my ($a, $s,$nseq);\n\n open (F, $f);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1358 | while ()\n {\n $s.=$_;\n }\n close\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1359 | (F);\n\n\n @name=($s=~/>(\\S*).*\\n[^>]*/g);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1360 | \n @seq =($s=~/>.*.*\\n([^>]*)/g);\n @com =(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1361 | $s=~/>\\S*(.*)\\n([^>]*)/g);\n\n\n $nseq=$#name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1362 | +1;\n\n for ($a=0; $a<$nseq; $a++)\n {\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1363 | y $s;\n my $n=$name[$a];\n $hseq{$n}{name}=$n;\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1364 | seq[$a]=~s/[^A-Za-z]//g;\n $hseq{$n}{order}=$a;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1365 | $hseq{$n}{seq}=$seq[$a];\n $hseq{$n}{com}=$com[$a]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1366 | ;\n\n }\n return %hseq;\n }\n\n\nsub read\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1367 | _fasta_aln\n {\n my $f=@_[0];\n my %hseq;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1368 | my (@seq, @com, @name);\n my ($a, $s,$nseq)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1369 | ;\n\n open (F, $f);\n while ()\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1370 | $s.=$_;\n }\n close (F);\n\n\n @name=(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1371 | $s=~/>(\\S*).*\\n[^>]*/g);\n\n @seq =($s=~/>.*.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1372 | *\\n([^>]*)/g);\n @com =($s=~/>\\S*(.*)\\n([^>]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1373 | *)/g);\n\n\n $nseq=$#name+1;\n\n for ($a=0; \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1374 | $a<$nseq; $a++)\n {\n my $s;\n my $n=$name[$a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1375 | ];\n $hseq{$n}{name}=$n;\n $seq[$a]=~s/[^A-Za-z-.(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1376 | )[\\]]//g;\n $hseq{$n}{order}=$a;\n $hseq{$n}{seq}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1377 | =$seq[$a];\n $hseq{$n}{com}=$com[$a];\n\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1378 | return %hseq;\n }\n\nsub recode_name2\n{\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1379 | ($in)=shift;\n my $mode=shift;\n\n my %seq;\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1380 | $new_name;\n\n if (! -e $in){return;}\n\n #needed \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1381 | by ClustalOmega to avoid very long names\n open (I\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1382 | NFILE, \"+<$in\");\n\n my $line;\n\n if ($mode eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1383 | \"code\")\n {\n chomp($line = );\n my $l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1384 | ine_length = length($line);\n $new_name=++$RECODE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1385 | _N;\n $new_name=\">$new_name\";\n my $new_length\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1386 | = length($new_name);\n $RECODE {$new_name}=$line\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1387 | ;\n for ($count = $new_length; $count < $line_len\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1388 | gth; $count++)\n {\n $new_name .= \" \";\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1389 | $new_name=\"$new_name\\n\";\n seek INFILE, 0, 0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1390 | \n or die \"could not seek: $!\";\n print INFIL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1391 | E \"$new_name\";\n }\n else\n {\n my $n_found = 0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1392 | ;\n my $file_pos=0;\n $file_pos=tell INFILE;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1393 | while ()\n {\n $line=$_;\n $line =~ s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1394 | /\\s*$//;\n\n $old_name= $RECODE{$line};\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1395 | ($old_name ne \"\")\n {\n seek INFILE, $file_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1396 | pos, 0\n or die \"could not seek: $!\";\n p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1397 | rint INFILE \"$old_name\\n\";\n $file_pos++;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1398 | if ($file_pos == 2)\n {\n print \"stop\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1399 | n\";\n break;\n }\n }\n $file_pos=tell \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1400 | INFILE;\n }\n\n }\n\n\n close INFILE;\n}\n\n\nsub\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1401 | recode_name\n{\n my ($in)=shift;\n my $mode=shift\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1402 | ;\n my $f=new FileHandle;\n my %seq;\n my $new_nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1403 | e;\n\n if (! -e $in){return;}\n\n #needed by Clust\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1404 | alOmega to avoid very long names\n %seq=read_fasta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1405 | _aln ($in);\n\n open ($f, \">$in\");\n foreach my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1406 | $s (keys(%seq))\n {\n if ($mode eq \"code\")\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1407 | \n $new_name=++$RECODE_N;\n $RECODE {$new_name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1408 | }=$seq{$s}{name};\n }\n else\n {\n $new_name=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1409 | $RECODE{$seq{$s}{name}};\n }\n print $f \">$new_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1410 | name\\n$seq{$s}{seq}\\n\";\n }\n close $f;\n}\n\ns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1411 | ub fasta_hash2index_hash\n {\n my %s1=@_;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1412 | my %s;\n foreach my $s (keys (%s1))\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1413 | my $i=$s1{$s}{order};\n $s{$i}{name}=$s;\n $s{$i}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1414 | {seq}=$s1{$s}{seq};\n $s{$i}{len}=length( $s{$i}{s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1415 | eq});\n $s{n}++;\n }\n return %s;\n }\nsu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1416 | b file_contains\n {\n my ($file, $tag, $max)=(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1417 | @_);\n my ($n);\n $n=0;\n\n if ( !-e $fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1418 | e && ($file =~/$tag/)) {return 1;}\n elsif ( !-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1419 | e $file){return 0;}\n else\n {\n open (FC,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1420 | \"$file\");\n while ( )\n {\n if ( ($_=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1421 | ~/$tag/))\n {\n close (FC);\n return 1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1422 | }\n elsif ($max && $n>$max)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1423 | close (FC);\n return 0;\n }\n $n++;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1424 | }\n }\n close (FC);\n return 0;\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1425 | n\n\nsub file2string\n {\n my $f=@_[0];\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1426 | y $string, $l;\n open (F,\"$f\");\n while (<\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1427 | F>)\n {\n\n $l=$_;\n #chomp ($l);\n $string.=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1428 | $l;\n }\n close (F);\n $string=~s/\\r\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1429 | n//g;\n $string=~s/\\n//g;\n return $string;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1430 | \n }\n\n\nsub tag2value\n {\n\n my $tag=(@_[0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1431 | ]);\n my $word=(@_[1]);\n my $return;\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1432 | $tag=~/$word=\"([^\"]+)\"/;\n $return=$1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1433 | return $return;\n }\n\nsub hit_tag2pdbid\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1434 | my $tag=(@_[0]);\n my $pdbid;\n\n $tag=~/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1435 | id=\"(\\S+)\"/;\n $pdbid=$1;\n $pdbid=~s/_//\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1436 | ;\n return $pdbid;\n }\nsub id2pdbid\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1437 | my $in=@_[0];\n my $id;\n\n $in=~/(\\S+)/;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1438 | n $id=$in;\n $id=~s/PDB/pdb/g;\n\n if ($i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1439 | d =~/pdb(.*)/){$id=$1;}\n elsif ( $id=~/(\\S+)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1440 | \s+mol:protein/){$id=$1;}\n $id=~s/[:|��_]/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1441 | /g;\n return $id;\n }\nsub set_blast_type\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1442 | \n my $file =@_[0];\n if (&file_contains ($f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1443 | ile,\"EBIApplicationResult\",100)){$BLAST_TYPE=\"E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1444 | BI\";}\n elsif (&file_contains ($file,\"NCBI_Bl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1445 | astOutput\",100)) {$BLAST_TYPE=\"NCBI\";}\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1446 | e\n {\n $BLAST_TYPE=\"\";\n }\n retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1447 | n $BLAST_TYPE;\n }\nsub is_valid_blast_xml\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1448 | \n my $file=shift;\n my $line;\n\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1449 | if ( !-e $file) {return 0;}\n $line=&file2t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1450 | ail ($file,100);\n\n if ( $line=~/<\\/EBIAppl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1451 | icationResult/ || $line=~/<\\/NCBI_BlastOutput/ ||\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1452 | $line=~/<\\/BlastOutput/ ){return 1;}\n retu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1453 | rn 0;\n }\nsub file2blast_flavor\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1454 | $file=shift; \n if (&file_contains ($file,\"EBIApp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1455 | licationResult\",100)){return \"EBI\";}\n elsif (&\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1456 | file_contains ($file,\"NCBI_BlastOutput\",100)){re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1457 | turn \"NCBI\";}\n else {return \"UNKNOWN\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1458 | }\nsub blast2prf\n {\n my ($blastF, $seqF,$out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1459 | file)=@_;\n my (%s, %profile);\n my ($result,$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1460 | psiblast_output,$profile_name,@profiles);\n %s=r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1461 | ead_fasta_seq_index ($seqF);\n my ($z1,$z1m)=unc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1462 | ompress($blastF);\n %profile=blast_xml2profile($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1463 | s{0}{name}, $s{0}{seq},$maxid, $minid,$mincov,$bla\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1464 | stF);\n output_profile ($outfile, \\%profile, $t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1465 | rim);\n compress($z1,$z1m);\n }\nsub blast_xml2p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1466 | rofile\n {\n my ($name,$seq,$maxid, $minid, $m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1467 | incov, $file)=(@_);\n my (%p, $a, $string, $n);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1468 | \n\n\n\n if ($BLAST_TYPE eq \"EBI\" || &file_co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1469 | ntains ($file,\"EBIApplicationResult\",100)){%p=eb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1470 | i_blast_xml2profile(@_);}\n elsif ($BLAST_TYPE \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1471 | eq \"NCBI\" || &file_contains ($file,\"NCBI_BlastO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1472 | utput\",100)){%p=ncbi_blast_xml2profile(@_);}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1473 | else\n {\n myexit(add_error ( $$,$$,getppid(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1474 | ), \"BLAST_FAILURE::unkown XML\",$CL));\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1475 | for ($a=0; $a<$p{n}; $a++)\n {\n my $name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1476 | =$p{$a}{name};\n $p{$name}{seq}=$p{$a}{seq};\n $p{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1477 | $name}{index}=$a;\n }\n return %p;\n }\ns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1478 | ub ncbi_tblastx_xml2lib_file\n {\n my ($outli\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1479 | b,$string)=(@_);\n my ($L,$l, $a,$b,$c,$d,$i,$n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1480 | hits,@identifyerL);\n my (%ITERATION);\n\n o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1481 | pen (F, \">>$outlib\");\n\n $seq=~s/[^a-zA-Z]//\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1482 | g;\n $L=length ($seq);\n\n %ITERATION=xml2ta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1483 | g_list ($string, \"Iteration\");\n for ($i=0; $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1484 | i<$ITERATION{n};$i++)\n {\n my ($qindex, $qle\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1485 | n, %hit, $string);\n $string=$ITERATION{$i}{body};\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1486 | \n\n $qindex=xmltag2value($string,\"Iteration_iter\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1487 | -num\");\n $qlen =xmltag2value($string,\"Iteratio\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1488 | n_query-len\");\n %hit=&xml2tag_list ($string, \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1489 | Hit\");\n\n for ($a=0; $a<$hit{n}; $a++)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1490 | my ($string);\n $string=$hit{$a}{body};\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1491 | $hindex=xmltag2value($string,\"Hit_accession\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1492 | ")+1;\n if ($hindex<=$qindex){next;}\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1493 | e {print F \"# $qindex $hindex\\n\";}\n\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1494 | $hlen=xmltag2value ($string,\"Hit_len\");\n %\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1495 | HSP=&xml2tag_list ($string, \"Hsp\");\n\n for\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1496 | ($b=0; $b<$HSP{n}; $b++)\n {\n my ($string\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1497 | , $qs,$qe,$qf,$hs,$he,$hf,$s, $d, $e);\n $string=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1498 | $HSP{$b}{body};\n\n $qs=xmltag2value ($string,\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1499 | Hsp_query-from\");\n $qe=xmltag2value ($string,\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1500 | "Hsp_query-to\");\n $qf=xmltag2value ($string,\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1501 | Hsp_query-frame\");\n\n $hs=xmltag2value ($strin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1502 | g,\"Hsp_hit-from\");\n $he=xmltag2value ($string\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1503 | ,\"Hsp_hit-to\");\n $hf=xmltag2value ($string,\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1504 | Hsp_hit-frame\");\n\n $s=xmltag2value ($string,\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1505 | "Hsp_identity\");\n $l=xmltag2value ($string,\"H\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1506 | sp_align-len\");\n $s=int(($s*100)/$l);\n\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1507 | $qf>0)\n {$rqs=$qs; $rqe=$qe;}\n else\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1508 | $rqe=($qlen-$qs)+1;\n $rqs=($qlen-$qe)+\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1509 | 1;\n }\n\n if ($hf>0)\n {$rhs=$hs; $rhe=$he\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1510 | ;}\n else\n {\n $rhe=($hlen-$hs)+1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1511 | $rhs=($hlen-$he)+1;\n }\n for ($d=0,$e=$rqs;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1512 | $e<$rqe; $e++,$d++)\n {\n my ($r1,$r2);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1513 | $r1=$e;\n $r2=$rhs+$d;\n print F \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1514 | " $r1 $r2 $s 0\\n\";\n }\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1515 | }\n print F \"! SEQ_1_TO_N\\n\";\n\n close \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1516 | (F);\n return %lib;\n }\n\nsub ncbi_tblastpx_x\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1517 | ml2lib_file\n {\n my ($outlib,$string,%s)=(@_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1518 | );\n my ($L,$l, $a,$b,$c,$d,$i,$nhits,@identify\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1519 | erL);\n my (%ITERATION,%hdes, %qdes);\n\n op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1520 | en (F, \">>$outlib\");\n\n $seq=~s/[^a-zA-Z]//g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1521 | ;\n $L=length ($seq);\n\n %ITERATION=xml2tag\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1522 | _list ($string, \"Iteration\");\n for ($i=0; $i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1523 | <$ITERATION{n};$i++)\n {\n my ($qindex, $qlen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1524 | , %hit, $string);\n $string=$ITERATION{$i}{body};\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1525 | n\n $qdef=xmltag2value($string,\"Iteration_query-d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1526 | ef\");\n %qdes=&tblastpx_name2description($qdef,%s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1527 | );\n $qlen =xmltag2value($string,\"Iteration_quer\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1528 | y-len\");\n %hit=&xml2tag_list ($string, \"Hit\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1529 | ;\n\n for ($a=0; $a<$hit{n}; $a++)\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1530 | ($string);\n $string=$hit{$a}{body};\n $hd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1531 | ef=xmltag2value($string,\"Hit_def\");\n %hdes=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1532 | &tblastpx_name2description($hdef,%s);\n if ($h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1533 | des{index}<=$qdes{index}){next;}\n else {prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1534 | t F \"# $qdes{index} $hdes{index}\\n\";}\n\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1535 | $hlen=xmltag2value ($string,\"Hit_len\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1536 | %HSP=&xml2tag_list ($string, \"Hsp\");\n\n f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1537 | or ($b=0; $b<$HSP{n}; $b++)\n {\n my ($stri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1538 | ng, $l,$qs,$qe,$qf,$hs,$he,$hf,$s, $d, $e, @s1, @s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1539 | 2);\n $string=$HSP{$b}{body};\n\n $qs=xmltag2val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1540 | ue ($string,\"Hsp_query-from\");\n $qe=xmltag2va\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1541 | lue ($string,\"Hsp_query-to\");\n $qf=$qdes{fram\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1542 | e};\n $qseq=xmltag2value ($string,\"Hsp_qseq\");\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1543 | \n\n $hs=xmltag2value ($string,\"Hsp_hit-from\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1544 | ;\n $he=xmltag2value ($string,\"Hsp_hit-to\");\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1545 | $hf=$hdes{frame};\n $hseq=xmltag2value ($strin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1546 | g,\"Hsp_hseq\");\n\n $s=xmltag2value ($string,\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1547 | Hsp_identity\");\n $l=xmltag2value ($string,\"Hs\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1548 | p_align-len\");\n $s=int(($s*100)/$l);\n @s1=tbl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1549 | astpx_hsp2coordinates($qseq,$qs,$qe,%qdes);\n @s2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1550 | =tblastpx_hsp2coordinates($hseq,$hs,$he,%hdes);\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1551 | n\n for ($f=0; $f<=$#s1; $f++)\n {\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1552 | $s1[$f]==-1 || $s2[$f]==-1){next;}\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1553 | {\n print F \" $s1[$f] $s2[$f] $s 0\\n\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1554 | n }\n }\n }\n }\n }\n pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1555 | int F \"! SEQ_1_TO_N\\n\";\n\n close (F);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1556 | return %lib;\n }\nsub tblastpx_hsp2coordinates\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1557 | {\n my ($seq, $s, $e, %des)=@_;\n my @list;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1558 | \n my @sa;\n my @gap=(-1,-1,-1);\n\n $s=$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1559 | des{start}+3*($s-1);\n\n if ($des{strand} eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1560 | d\"){;}\n else {$s=($des{length}-$s)+1;}\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1561 | foreach $c (split (//,$seq))\n {\n if ( $c e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1562 | q '-'){push (@list,@gap);}\n elsif ($des{strand} e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1563 | q \"d\")\n {\n push(@list,$s++,$s++,$s++);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1564 | }\n else\n {\n push(@list, $s--,$s--,$s--\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1565 | );\n }\n }\n return @list;\n }\n\nsub t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1566 | blastpx_name2description\n {\n my ($name, %s)=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1567 | @_;\n my @at=split(\"__\", $name);\n my %des\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1568 | ;\n\n $des{name}=$at[0];\n $des{strand}=$at[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1569 | 1];\n\n $des{start}=$at[2];\n $des{end}=$at[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1570 | 3];\n $des{length}=$at[4];\n $des{index}=$s{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1571 | $at[0]}{order}+1;\n return %des;\n }\nsub ncbi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1572 | _blast_xml2profile\n {\n my ($name,$seq,$maxid\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1573 | , $minid, $mincov, $string)=(@_);\n my ($L,$l, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1574 | $a,$b,$c,$d,$nhits,@identifyerL);\n\n $seq=~s/[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1575 | ^a-zA-Z]//g;\n $L=length ($seq);\n \n #Th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1576 | is is causing the NCBI parser to fail when Iterati\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1577 | on_query-def is missing\n #%query=&xml2tag_list\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1578 | ($string, \"Iteration_query-def\");\n #$name=$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1579 | query{0}{body};\n\n %hit=&xml2tag_list ($string\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1580 | , \"Hit\");\n\n \n for ($nhits=0,$a=0; $a<$h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1581 | it{n}; $a++)\n {\n my ($ldb,$id, $identity, $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1582 | expectation, $start, $end, $coverage, $r);\n my (%\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1583 | ID,%DE,%HSP);\n\n $ldb=\"\";\n\n %ID=&xml2tag_list\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1584 | ($hit{$a}{body}, \"Hit_id\");\n $identifyer=$ID{0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1585 | }{body};\n\n %DE=&xml2tag_list ($hit{$a}{body}, \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1586 | Hit_def\");\n $definition=$DE{0}{body};\n\n %HSP=&\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1587 | xml2tag_list ($hit{$a}{body}, \"Hsp\");\n for ($b=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1588 | 0; $b<$HSP{n}; $b++)\n {\n my (%START,%END,%\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1589 | E,%I,%Q,%M);\n\n\n %START=&xml2tag_list ($HSP{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1590 | $b}{body}, \"Hsp_query-from\");\n %HSTART=&xml\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1591 | 2tag_list ($HSP{$b}{body}, \"Hsp_hit-from\");\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1592 | %LEN= &xml2tag_list ($HSP{$b}{body}, \"Hsp_al\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1593 | ign-len\");\n %END= &xml2tag_list ($HSP{$b}{b\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1594 | ody}, \"Hsp_query-to\");\n %HEND= &xml2tag_li\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1595 | st ($HSP{$b}{body}, \"Hsp_hit-to\");\n %E=&xml\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1596 | 2tag_list ($HSP{$b}{body}, \"Hsp_evalue\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1597 | %I=&xml2tag_list ($HSP{$b}{body}, \"Hsp_id\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1598 | entity\");\n %Q=&xml2tag_list ($HSP{$b}{bo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1599 | dy}, \"Hsp_qseq\");\n %M=&xml2tag_list ($H\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1600 | SP{$b}{body}, \"Hsp_hseq\");\n\n for ($e=0; $e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1601 | <$Q{n}; $e++)\n\n {\n $qs=$Q{$e}{body};\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1602 | $ms=$M{$e}{body};\n\n $expectation=$E{$e}{body};\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1603 | n $identity=($LEN{$e}{body}==0)?0:$I{$e}{body}/$L\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1604 | EN{$e}{body}*100;\n $start=$START{$e}{body};\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1605 | end=$END{$e}{body};\n $Hstart=$HSTART{$e}{body};\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1606 | n $Hend=$HEND{$e}{body};\n\n $coverage=($L)?(($e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1607 | nd-$start)*100)/$L:0;\n if ($identity>$maxid || $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1608 | identity<$minid || $coverage<$mincov)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1609 | next;\n }\n @lr1=(split (//,$qs));\n @lr2=(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1610 | split (//,$ms));\n $l=$#lr1+1;\n for ($c=0;$c<$L\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1611 | ;$c++){$p[$nhits][$c]=\"-\";}\n for ($d=0,$c=0; $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1612 | c<$l; $c++)\n {\n $r=$lr1[$c];\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1613 | $r=~/[A-Za-z]/)\n {\n\n $p[$nhits][$d + \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1614 | $start-1]=$lr2[$c];\n $d++;\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1615 | $Qseq[$nhits]=$qs;\n $Hseq[$nhits]=$ms;\n $Qsta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1616 | rtL[$nhits]=$start;\n $HstartL[$nhits]=$Hstart;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1617 | $identityL[$nhits]=$identity;\n $endL[$nhits]=$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1618 | end;\n $definitionL[$nhits]=$definition;\n $iden\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1619 | tifyerL[$nhits]=$identifyer;\n $comment[$nhits]=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1620 | "$ldb|$identifyer [Eval=$expectation][id=$identity\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1621 | %][start=$Hstart end=$Hend]\";\n $nhits++;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1622 | }\n }\n }\n\n\n $profile{n}=0;\n $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1623 | rofile{$profile{n}}{name}=$name;\n $profile{$pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1624 | ofile{n}}{seq}=$seq;\n $profile {n}++;\n\n f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1625 | or ($a=0; $a<$nhits; $a++)\n {\n $n=$a+1;\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1626 | $profile{$n}{name}=\"$name\\_$a\";\n $profile{$n}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1627 | {seq}=\"\";\n $profile{$n}{Qseq}=$Qseq[$a];\n $pro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1628 | file{$n}{Hseq}=$Hseq[$a];\n $profile{$n}{Qstart}=$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1629 | QstartL[$a];\n $profile{$n}{Hstart}=$HstartL[$a];\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1630 | n $profile{$n}{identity}=$identityL[$a];\n $profil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1631 | e{$n}{definition}=$definitionL[$a];\n $profile{$n}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1632 | {identifyer}=$identifyerL[$a];\n $profile{$n}{comm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1633 | ent}=$comment[$a];\n\n for ($b=0; $b<$L; $b++)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1634 | {\n if ($p[$a][$b])\n {\n $profile{$n}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1635 | {seq}.=$p[$a][$b];\n }\n else\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1636 | n $profile{$n}{seq}.=\"-\";\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1637 | }\n\n $profile{n}=$nhits+1;\n return %prof\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1638 | ile;\n }\nsub ebi_blast_xml2profile\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1639 | ($name,$seq,$maxid, $minid, $mincov, $string)=(@_)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1640 | ;\n my ($L,$l, $a,$b,$c,$d,$nhits,@identifyerL,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1641 | $identifyer);\n\n\n\n $seq=~s/[^a-zA-Z]//g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1642 | $L=length ($seq);\n %hit=&xml2tag_list ($stri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1643 | ng, \"hit\");\n\n for ($nhits=0,$a=0; $a<$hit{n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1644 | }; $a++)\n {\n my ($ldb,$id, $identity, $expe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1645 | ctation, $start, $end, $coverage, $r);\n my (%Q,%M\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1646 | ,%E,%I);\n\n $ldb=&tag2value ($hit{$a}{open}, \"da\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1647 | tabase\");\n $identifyer=&tag2value ($hit{$a}{open\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1648 | }, \"id\");\n\n $description=&tag2value ($hit{$a}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1649 | open}, \"description\");\n\n %Q=&xml2tag_list ($hi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1650 | t{$a}{body}, \"querySeq\");\n %M=&xml2tag_list ($h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1651 | it{$a}{body}, \"matchSeq\");\n %E=&xml2tag_list ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1652 | hit{$a}{body}, \"expectation\");\n %I=&xml2tag_lis\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1653 | t ($hit{$a}{body}, \"identity\");\n\n\n for ($b=0;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1654 | $b<$Q{n}; $b++)\n {\n\n $qs=$Q{$b}{body};\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1655 | $ms=$M{$b}{body};\n\n $expectation=$E{$b}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1656 | {body};\n $identity=$I{$b}{body};\n\n\n $s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1657 | tart=&tag2value ($Q{$b}{open}, \"start\");\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1658 | end=&tag2value ($Q{$b}{open}, \"end\");\n $sta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1659 | rtM=&tag2value ($M{$b}{open}, \"start\");\n $e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1660 | ndM=&tag2value ($M{$b}{open}, \"end\");\n $cov\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1661 | erage=(($end-$start)*100)/$L;\n\n # print \"$id\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1662 | : ID: $identity COV: $coverage [$start $end]\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1663 | \n\n if ($identity>$maxid || $identity<$minid \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1664 | || $coverage<$mincov){next;}\n # print \"KEEP\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1665 | \n\";\n\n\n @lr1=(split (//,$qs));\n @lr2=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1666 | (split (//,$ms));\n $l=$#lr1+1;\n for ($c=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1667 | 0;$c<$L;$c++){$p[$nhits][$c]=\"-\";}\n for ($d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1668 | =0,$c=0; $c<$l; $c++)\n {\n $r=$lr1[$c];\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1669 | if ( $r=~/[A-Za-z]/)\n {\n\n $p[$nhits][$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1670 | d + $start-1]=$lr2[$c];\n $d++;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1671 | }\n\n $Qseq[$nhits]=$qs;\n $Hseq[$nhits]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1672 | =$ms;\n $QstartL[$nhits]=$start;\n $Hstart\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1673 | L[$nhits]=$Hstart;\n $identityL[$nhits]=$ident\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1674 | ity;\n $endL[$nhits]=$end;\n $definitionL[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1675 | $nhits]=$definition;\n $identifyerL[$nhits]=$i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1676 | dentifyer;\n $comment[$nhits]=\"$ldb|$identify\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1677 | er [Eval=$expectation][id=$identity%][start=$start\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1678 | M end=$endM]\";\n $nhits++;\n }\n }\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1679 | $profile{n}=0;\n $profile{$profile{n}}{name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1680 | }=$name;\n $profile{$profile{n}}{seq}=$seq;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1681 | $profile {n}++;\n\n for ($a=0; $a<$nhits; $a+\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1682 | +)\n {\n $n=$a+1;\n $profile{$n}{name}=\"$nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1683 | e\\_$a\";\n $profile{$n}{seq}=\"\";\n $profile{$n}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1684 | {Qseq}=$Qseq[$a];\n $profile{$n}{Hseq}=$Hseq[$a];\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1685 | n $profile{$n}{Qstart}=$QstartL[$a];\n $profile{$n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1686 | }{Hstart}=$HstartL[$a];\n $profile{$n}{identity}=$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1687 | identityL[$a];\n $profile{$n}{definition}=$definit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1688 | ionL[$a];\n $profile{$n}{identifyer}=$identifyerL[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1689 | $a];\n $profile{$n}{comment}=$comment[$a];\n\n for\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1690 | ($b=0; $b<$L; $b++)\n {\n if ($p[$a][$b])\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1691 | {\n $profile{$n}{seq}.=$p[$a][$b];\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1692 | }\n else\n {\n $profile{$n}{seq}.=\"-\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1693 | ";\n }\n }\n }\n $profile{n}=$nhit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1694 | s+1;\n\n return %profile;\n }\nsub output_prof\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1695 | ile\n {\n my ($outfile,$profileR, $trim)=(@_);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1696 | \n my ($a);\n my %profile=%$profileR;\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1697 | y $P= new FileHandle;\n my $tmp=vtmpnam();\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1698 | open ($P, \">$tmp\");\n for ($a=0; $a<$profi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1699 | le{n}; $a++)\n {\n print $P \">$profile{$a}{n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1700 | ame} $profile{$a}{comment}\\n$profile{$a}{seq}\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1701 | ";\n }\n close ($P);\n\n if ( $trim)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1702 | {\n if ($ENV{psitrim_mode_4_TCOFFEE} eq \"tri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1703 | m\")# old trimming\n {\n if ($trim>0)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1704 | {\n &safe_system (\"t_coffee -other_pg seq_refo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1705 | rmat -in $tmp -action +trim _aln_n$trim\\_K1 -outp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1706 | ut fasta_aln -out $outfile\");\n }\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1707 | e\n {\n &safe_system (\"t_coffee -other_pg \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1708 | seq_reformat -in $tmp -action +trim _aln_%%$trim\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1709 | _K1 -output fasta_aln -out $outfile\");\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1710 | n }\n else # newtrimming\n {\n my $tm;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1711 | if ($ENV{psitrim_tree_4_TCOFFEE}){$tm=\"-treemo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1712 | de=\".$ENV{psitrim_tree_4_TCOFFEE};}\n else {$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1713 | tm=\"-treemode=codnd\";}\n if ($trim>0)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1714 | {\n &safe_system (\"t_coffee -other_pg seq_refo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1715 | rmat -in $tmp $tm -keep 1 -action +regtrim $trim -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1716 | output fasta_aln -out $outfile\");\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1717 | else\n {\n &safe_system (\"t_coffee -other\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1718 | _pg seq_reformat -in $tmp $tm -keep 1 -action +reg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1719 | trim $trim\\% -output fasta_aln -out $outfile\");\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1720 | n }\n \n }\n \n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1721 | {\n &safe_system (\"mv $tmp $outfile\");\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1722 | \n return;\n }\nsub blast_xml2hit_list\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1723 | my $string=(@_[0]);\n return &xml2tag_list (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1724 | $string, \"hit\");\n }\nsub xmltag2value\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1725 | my ($string_in, $tag)=@_;\n my %TAG;\n %TA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1726 | G=xml2tag_list ($string_in, $tag);\n return $TA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1727 | G{0}{body};\n }\n\nsub xml2tag_list\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1728 | ($string_in,$tag)=@_;\n my $tag_in, $tag_out;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1729 | my %tag;\n\n if (-e $string_in)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1730 | $string=&file2string ($string_in);\n }\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1731 | lse\n {\n $string=$string_in;\n }\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1732 | tag_in1=\"<$tag \";\n $tag_in2=\"<$tag>\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1733 | $tag_out=\"/$tag>\";\n $string=~s/>/>##1/g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1734 | $string=~s//g;\n @l=($string=~/(\\<[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1736 | ^>]+\\>)/g);\n $tag{n}=0;\n $in=0;$n=-1;\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1737 | \n\n foreach $t (@l)\n {\n\n $t=~s/<#//;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1738 | $t=~s/#>//;\n\n if ( $t=~/$tag_in1/ || $t=~/$tag_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1739 | in2/)\n {\n\n $in=1;\n $tag{$tag{n}}{ope\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1740 | n}=$t;\n $n++;\n\n }\n elsif ($t=~/$tag_out/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1741 | )\n {\n\n\n $tag{$tag{n}}{close}=$t;\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1742 | tag{n}++;\n $in=0;\n }\n elsif ($in)\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1743 | \n $tag{$tag{n}}{body}.=$t;\n }\n }\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1744 | return %tag;\n }\n\n\nsub seq2gor_prediction\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1745 | n {\n my ($name, $seq,$infile, $outfile, $gor_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1746 | seq, $gor_obs)=(@_);\n my ($l);\n\n `gorIV -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1747 | prd $infile -seq $gor_seq -obs $gor_obs > gor_tmp`\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1748 | ;\n open (GR, \">$outfile\");\n open (OG, \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1749 | gor_tmp\");\n\n while ()\n {\n\n $l=$_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1750 | ;\n if ($l=~/\\>/){print GR \"$l\";}\n elsif ( $l=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1751 | ~/Predicted Sec. Struct./)\n {\n $l=~s/Predi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1752 | cted Sec. Struct\\.//;\n print GR \"$l\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1753 | }\n }\n close (GR);\n close (OG);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1754 | return;\n }\nsub seq2msa_tm_prediction\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1755 | my ($name, $seq, $db, $infile, $outfile, $arch, $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1756 | sv)=(@_);\n my (%p,%gseq,%R, $blast_output, %s,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1757 | $l);\n my $R2=new FileHandle;\n my $method=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1758 | \"psitm\";\n my $SERVER=\"EBI\";\n\n $blast_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1759 | output=&run_blast ($name,\"blastp\", $db, $infile,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1760 | \"outfile\");\n\n if (&cache_file(\"GET\",$inf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1761 | ile,$name,$method,$db,$outfile,$SERVER))\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1762 | n print \"\\tPSITM: USE Cache\\n\";\n return $outf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1763 | ile;\n }\n else\n {\n $CACHE_STATUS=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1764 | "COMPUTE CACHE\";\n %p=blast_xml2profile($name,$se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1765 | q,$maxid, $minid,$mincov,$blast_output);\n\n\n ope\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1766 | n (F, \">tm_input\");\n for (my $a=0; $a<$p{n}; $a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1767 | ++)\n {\n my $s;\n\n $s=$p{$a}{seq};\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1768 | $s=uc($s);\n print F \">$p{$a}{name}\\n$s\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1769 | n\";\n #print stdout \">$p{$a}{name}\\n$s\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1770 | ;\n }\n close (F);\n print \"\\tPSITM: kept $p{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1771 | n} Homologues for Sequence $p{0}{name}\\n\";\n &sa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1772 | fe_system (\"t_coffee -other_pg fasta_seq2hmmtop_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1773 | asta.pl -in=tm_input -out=$outfile -output=cons -c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1774 | ov=70 -trim=95 -arch=$arch -psv=$psv\");\n unlink \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1775 | (\"tm_input\");\n &cache_file(\"SET\",$infile,$nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1776 | e,$method,$db,$outfile,$SERVER);\n return;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1777 | }\n }\n\n\nsub seq2msa_gor_prediction\n {\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1778 | y ($name, $seq,$infile, $outfile, $gor_seq, $gor_o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1779 | bs)=(@_);\n my (%p,%gseq,%R, $blast_output, %s,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1780 | $l);\n my $R2=new FileHandle;\n my $db=\"un\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1781 | iprot\";\n my $method=\"psigor\";\n my $SERV\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1782 | ER=\"EBI\";\n\n $blast_output=&run_blast ($name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1783 | ,\"blastp\", \"uniprot\", $infile, \"outfile\");\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1784 | \n if (&cache_file(\"GET\",$infile,$name,$metho\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1785 | d,$db,$outfile,$SERVER, $psiJ))\n {\n print \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1786 | "\\tPSIGOR: USE Cache\\n\";\n return $outfile;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1787 | }\n else\n {\n $CACHE_STATUS=\"COMPUTE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1788 | CACHE\";\n %p=blast_xml2profile($name,$seq,$maxid\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1789 | , $minid,$mincov,$blast_output);\n\n\n open (F, \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1790 | >gor_input\");\n for (my $a=0; $a<$p{n}; $a++)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1791 | {\n my $s;\n\n $s=$p{$a}{seq};\n $s=u\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1792 | c($s);\n print F \">$p{$a}{name}\\n$s\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1793 | #print stdout \">$p{$a}{name}\\n$s\\n\";\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1794 | \n close (F);\n print \"\\tGORTM: kept $p{n} Homo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1795 | logues for Sequence $p{0}{name}\\n\";\n &safe_syst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1796 | em (\"t_coffee -other_pg fasta_seq2hmmtop_fasta.pl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1797 | -in=gor_input -out=$outfile -output=cons -cov=70 \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1798 | -trim=95 -gor_seq=$gor_seq -gor_obs=$gor_obs -mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1799 | =gor\");\n unlink (\"tm_input\");\n &cache_file(\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1800 | SET\",$infile,$name,$method,$db,$outfile,$SERVER);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1801 | \n return;\n }\n }\n\n\n\nsub run_blast\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1802 | \n my ($name, $method, $db, $infile, $outfile, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1803 | $run)=(@_);\n if (!$run){$run=1;}\n my $erro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1804 | r_log=vtmpnam();\n my $cl_db;\n my $psiJ=($E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1805 | NV{psiJ_4_TCOFFEE})?$ENV{psiJ_4_TCOFFEE}:1;\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1806 | n my $psiJFlag=\"-j$psiJ\";\n \n if (&cach\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1807 | e_file(\"GET\",$infile,$name,$method,$db,$outfile,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1808 | $SERVER, $psiJ) && is_valid_blast_xml ($outfile))\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1809 | n {return $outfile;}\n else\n {\n $CA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1810 | CHE_STATUS=\"COMPUTE CACHE\";\n if ( $SERVER eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1811 | EBI_SOAP\")\n {\n &check_configuration (\"EM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1812 | AIL\",\"SOAP::Light\",\"INTERNET\");\n\n $cl_m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1813 | ethod=$method;\n if ($cl_method =~/wu/)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1814 | {\n if ( $method eq \"psiblast\" || $psiJ>1){my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1815 | exit(add_error (EXIT_FAILURE,$$,$$,getppid(), \"BL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1816 | AST_FAILURE::$SERVER does not Support psiblast mod\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1817 | e ($psiJFlag)\",$CL));}\n $cl_method=~s/wu//;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1818 | if ( $cl_method eq \"psiblast\" || $psiJ>1)\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1819 | \n add_warning($$,$$,\"PSI BLAST cannot be us\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1820 | ed with the wuBLAST Client. Use server=EBI Or serv\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1821 | er=LOCAL. blastp will be used instead\");\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1822 | cl_method=\"blastp\";\n }\n\n $command=\"t_cof\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1823 | fee -other_pg wublast.pl --email $EMAIL $infile -D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1824 | $db -p $cl_method --outfile $outfile -o xml>/dev/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1825 | null 2>$error_log\";\n &safe_system ( $command);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1826 | n if (-e \"$outfile.xml\") {`mv $outfile.xml $out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1827 | file`;}\n }\n else\n {\n if ($cl_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1828 | method eq \"psiblast\"){$cl_method =\"blastp $psiJ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1829 | Flag\";}\n\n $command=\"t_coffee -other_pg blastp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1830 | gp.pl --email $EMAIL $infile -d $db --outfile $out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1831 | file -p $cl_method --mode PSI-Blast>/dev/null 2>$e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1832 | rror_log\";\n &safe_system ( $command);\n\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1833 | -e \"$outfile.xml\") {`mv $outfile.xml $outfile`;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1834 | \n }\n }\n elsif ($SERVER eq \"EBI_REST\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1835 | || $SERVER eq \"EBI\")\n {\n $cl_method=$met\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1836 | hod;\n &check_configuration(\"EMAIL\",\"XML::S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1837 | imple\", \"INTERNET\");\n if ($db eq \"uniprot\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1838 | \"){$db1=\"uniprotkb\";}\n else {$db1=$db;}\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1839 | n \n if ($cl_method =~/wu/)\n {\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1840 | cl_method=~s/wu//;\n\n \n if ( $cl_method eq \"p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1841 | siblast\"){$cl_method=\"blastp\";}\n\n $command=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1842 | "t_coffee -other_pg wublast_lwp.pl --email $EMAIL \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1843 | -D $db1 -p $cl_method --outfile $outfile --align 5\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1844 | --stype protein $infile>/dev/null 2>error_log\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1845 | n }\n else\n {\n #if ( $cl_method\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1846 | =~/psiblast/){$cl_method =\"blastp $psiJFlag\";}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1847 | n if ( $cl_method =~/psiblast/){$cl_method =\"bla\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1848 | stp\";}\n $command=\"t_coffee -other_pg ncbiblast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1849 | _lwp.pl --email $EMAIL --database $db1 --program $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1850 | cl_method --outfile $outfile --alignments 5 --styp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1851 | e protein $infile>/dev/null 2>$error_log\";\n #DE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1852 | BUG\n #$command=\"t_coffee -other_pg ncbiblast_lw\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1853 | p.pl --email $EMAIL -D $db1 -p $cl_method --outfil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1854 | e $outfile --align 5 --stype protein $infile\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1855 | \n my $maxrun=5;#number of crashes accepetd\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1856 | y $nrun;\n my $keep_going=1;\n while ($keep_goin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1857 | g)\n {\n \n #print \"----- $command [\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1858 | $nrun]\\n\";\n $nrun++;\n $keep_going=0;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1859 | \n &safe_system ( $command,5);\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1860 | my $success=0;\n $success =$success || -e \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1861 | $outfile.out.xml\";\n $success =$success || -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1862 | e \"$outfile.xml.xml\";\n $success =$success \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1863 | || -e \"$outfile.out..xml\";\n $success =$suc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1864 | cess || -e \"$outfile.xml..xml\";\n \n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1865 | f (!$success && ($nrun<$maxrun || -e \"$outfile.ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1866 | t.txt\"))\n {\n $keep_going=1;\n add_wa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1867 | rning($$,$$,\"[ncbiblast_lwp.pl] [$command] failed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1868 | to produce xml output -- will ne tried again [$nr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1869 | un]\");\n }\n }\n \n if (-e \"$outfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1870 | .out.xml\") {`mv $outfile.out.xml $outfile`;}\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1871 | lsif (-e \"$outfile.xml.xml\"){`mv $outfile.xml.xm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1872 | l $outfile`;}\n elsif (-e \"$outfile.out..xml\") \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1873 | {`mv $outfile.out..xml $outfile`;}\n elsif (-e \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1874 | $outfile.xml..xml\"){`mv $outfile.xml..xml $outfil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1875 | e`;}\n else\n {\n add_warning($$,$$,\"[nc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1876 | biblast_lwp.pl] [$command] failed to produce xml o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1877 | utput\");\n }\n }\n }\n elsif ($SERVER \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1878 | eq \"NCBI\")\n {\n &check_configuration (\"I\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1879 | NTERNET\");\n if ($db eq \"uniprot\"){$cl_db=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1880 | "swissprot\";}\n else {$cl_db=$db;}\n\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1881 | ( $method eq \"psiblast\" || $psiJ>1){myexit(add_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1882 | error (EXIT_FAILURE,$$,$$,getppid(), \"BLAST_FAILU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1883 | RE::$SERVER does not Support psiblast mode ($psiJF\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1884 | lag)\",$CL));}\n my $cl_method=$method;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1885 | \n &check_configuration ($cl_method); \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1886 | $command=\"$cl_method -db $cl_db -query $infile -o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1887 | ut $outfile -outfmt 5 -remote\";\n &safe_syste\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1888 | m ($command);\n }\n elsif ($SERVER =~/CLIENT_(.*\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1889 | )/)\n {\n my $client=$1;\n if ( $method \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1890 | eq \"psiblast\" || $psiJ>1){myexit(add_error (EXIT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1891 | _FAILURE,$$,$$,getppid(), \"BLAST_FAILURE::$SERVER\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1892 | does not Support psiblast mode ($psiJFlag)\",$CL)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1893 | );}\n $command=\"$client -p $method -d $db -i \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1894 | $infile -o $outfile -m 7\";\n &safe_system ($c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1895 | ommand);\n }\n elsif ( $SERVER eq \"LOCAL_blasta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1896 | ll\")\n {\n &check_configuration (\"blastall\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1897 | \");\n if ( $method eq \"psiblast\" || $psiJ>1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1898 | ){myexit(add_error (EXIT_FAILURE,$$,$$,getppid(), \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1899 | \"BLAST_FAILURE::$SERVER does not Support psiblast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1900 | mode ($psiJFlag)\",$CL));}\n $command=\"blast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1901 | all -d $db -i $infile -o $outfile -m7 -p blastp\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1902 | \n &safe_system ($command);\n }\n elsif ( $S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1903 | ERVER eq \"LOCAL\")\n {\n my $legacy=0;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1904 | if ($ENV{\"BLAST_DB_DIR\"}) \n {\n $x\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1905 | =$ENV{\"BLAST_DB_DIR\"};\n $cl_db=\"$x/$db\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1906 | }\n else\n {\n $cl_db=$db;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1907 | }\n \n ##\n ## BLAST+ provide differe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1908 | nt binaries names and CLI options\n ## Use the\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1909 | 'legacy_blast.pl' to keep compatibility with old \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1910 | blast commands\n ##\n $path=`which legacy_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1911 | blast.pl 2>/dev/null`; \n $path=`dirname $pat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1912 | h`; \n chomp($path);\n \n if (!$leg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1913 | acy && ($method eq \"blastp\" || $method eq \"psib\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1914 | last\"))\n {\n \n &check_configuration(\"p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1915 | siblast\");\n $command=\"psiblast -db $cl_db -que\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1916 | ry $infile -num_iterations $psiJ -out $outfile -ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1917 | tfmt 5\";\n }\n elsif ($legacy && $metho\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1918 | d eq \"blastp\")\n {\n &check_configur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1919 | ation(\"legacy_blast.pl\");\n $command=\"le\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1920 | gacy_blast.pl blastpgp --path $path -d $cl_db -i $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1921 | infile -o $outfile -m7 $psiJFlag\"; \n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1922 | elsif ($legacy && $method eq \"psiblast\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1923 | {\n &check_configuration(\"legacy_blast.pl\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1924 | ;\n $command=\"legacy_blast.pl blastpgp --path $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1925 | ath -d $cl_db -i $infile -o $outfile -m7 $psiJFlag\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1926 | \";\n }\n elsif ($method eq \"blastn\")\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1927 | n {\n &check_configuration(\"legacy_blast.p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1928 | l\");\n $command=\"legacy_blast.pl blastall --pat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1929 | h $path -p blastn -d $cl_db -i $infile -o $outfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1930 | -m7 -W6\";\n }\n &safe_system ($command\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1931 | );\n }\n else\n {\n\n myexit(add_error (EX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1932 | IT_FAILURE,$$,$$,getppid(), \"BLAST_FAILURE::Unkno\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1933 | wnServer\",$CL));\n }\n\n\n #Check that everythi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1934 | ng went well\n\n if ( !-e $outfile || !&is_valid_b\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1935 | last_xml($outfile))\n {\n\n if ( -e $outfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1936 | )\n {\n add_warning ($$,$$,\"Corrupted Blas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1937 | t Output (Run $run)\");\n unlink($outfile);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1938 | }\n if ( -e $error_log)\n {\n\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1939 | error_msg=file2string ($error_log);\n\n if ( $err\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1940 | or_msg =~/enter a valid email/)\n {\n myex\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1941 | it(add_error (EXIT_FAILURE,$$,$$,getppid(), \"BLAS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1942 | T_FAILURE::Invalid_or_rejected_email::$EMAIL\", \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1943 | $command\"));\n }\n }\n if ( $run==$B\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1944 | LAST_MAX_NRUNS)\n {\n\n myexit(add_error (E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1945 | XIT_FAILURE,$$,$$,getppid(), \"BLAST_FAILURE::Unkn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1946 | ownReason\", \"$command\"));\n }\n else\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1947 | n {\n my $out;\n if ($SERVER eq \"NCBI\") \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1948 | {$SERVER=\"EBI\"; }\n elsif ($SERVER eq \"EBI\"){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1949 | $SERVER=\"NCBI\";}\n add_warning ($$,$$,\"Blast f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1950 | or $name failed (Run: $run out of $BLAST_MAX_NRUNS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1951 | . Use $SERVER)\");\n $out=&run_blast ($name, $met\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1952 | hod, $db,$infile, $outfile, $run+1);\n if ($SERVE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1953 | R eq \"NCBI\") {$SERVER=\"EBI\"; }\n elsif ($SERV\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1954 | ER eq \"EBI\"){$SERVER=\"NCBI\";}\n return $out;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1955 | n }\n }\n\n &cache_file(\"SET\",$infile,$n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1956 | ame,$method,$db,$outfile,$SERVER, $psiJ);\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1957 | $outfile;\n }\n }\n\nsub cache_file\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1958 | my ($cache_mode,$infile,$name,$method,$db, $out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1959 | file,$server,$it)=(@_);\n my $cache_file;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1960 | #Protect names so that they can be turned into leg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1961 | al filenames\n $name=&clean_file_name ($name);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1962 | n if (!$it){$it=1;}\n if ($db=~/\\//)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1963 | {\n $db=~/([^\\/]+)$/;\n $db=$1;\n }\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1964 | $cache_file=\"$CACHE/$name.$method.$db.$server.$it\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1965 | .tmp\";\n #print \"Look for $cache_file [$cache\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1966 | _mode][$CACHE] \\n\";\n if ($infile ne \"\"){$c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1967 | ache_file_infile=\"$CACHE/$name.$method.$db.$serve\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1968 | r.$it.infile.tmp\";}\n\n if ($cache_mode eq \"G\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1969 | ET\")\n {\n if ($CACHE eq \"\" || $CACHE eq \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1970 | "no\" || $CACHE eq \"ignore\" || $CACHE eq \"loca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1971 | l\" || $CACHE eq \"update\"){return 0;}\n elsif ( \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1972 | !-d $CACHE)\n {\n print STDERR \"ERROR: Cach\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1973 | e Dir: $CACHE Does not Exist\";\n return 0;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1974 | }\n else\n {\n my ($z1,$z1m)=uncompress($c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1975 | ache_file_infile);\n my ($z2,$z2m)=uncompress(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1976 | $cache_file);\n \n if ( -e $cache_file && \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1977 | &fasta_file1_eq_fasta_file2($infile,$cache_file_in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1978 | file)==1)\n {\n `cp $cache_file $outfile`;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1979 | n $CACHE_STATUS=\"READ CACHE\";\n compress($z1,$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1980 | z1m);\n compress($z2,$z2m);\n \n return 1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1981 | }\n }\n }\n elsif ($cache_mode eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1982 | SET\")\n {\n if ($CACHE eq \"\" || $CACHE eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1983 | \"no\" || $CACHE eq \"ignore\" || $CACHE eq \"loc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1984 | al\" || $CACHE eq \"update\"){return 0;}\n elsif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1985 | !-d $CACHE)\n {\n print STDERR \"ERROR: Cac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1986 | he Dir: $CACHE Does not Exist\";\n return 0;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1987 | }\n elsif (-e $outfile)\n {\n `cp $outfil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1988 | e $cache_file`;\n if ($cache_file_infile ne \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1989 | \"){ `cp $infile $cache_file_infile`;}\n retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1990 | n 1;\n }\n }\n $CACHE_STATUS=\"COMPUTE C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1991 | ACHE\";\n return 0;\n }\nsub file1_eq_file2\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1992 | {\n my ($f1, $f2)=@_;\n if ( $f1 eq \"\"){r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1993 | eturn 1;}\n elsif ( $f2 eq \"\"){return 1;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1994 | elsif ( !-e $f1){return 0;}\n elsif ( !-e $f2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1995 | ){return 0;}\n elsif ($f1 eq \"\" || $f2 eq \"\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1996 | " || `diff $f1 $f2` eq \"\"){return 1;}\n\n ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1997 | urn 0;\n }\nsub clean_file_name\n {\n my $nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1998 | e=@_[0];\n\n $name=~s/[^A-Za-z1-9.-]/_/g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1999 | return $name;\n }\nsub url2file\n {\n my ($ad\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2000 | dress, $out)=(@_);\n\n if (&pg_is_installed (\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2001 | wget\"))\n {\n return &safe_system (\"wget $addr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2002 | ess -O$out >/dev/null 2>/dev/null\");\n }\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2003 | if (&pg_is_installed (\"curl\"))\n {\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2004 | &safe_system (\"curl $address -o$out >/dev/null 2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2005 | >/dev/null\");\n }\n else\n {\n myexi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2006 | t(flus_error(\"neither curl nor wget are installed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2007 | . Imnpossible to fectch remote file\"));\n exit ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2008 | EXIT_FAILURE);\n }\n }\nsub fasta_file1_eq_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2009 | asta_file2\n {\n my ($f1, $f2)=@_;\n my (%s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2010 | 1, %s2);\n my @names;\n %s1=read_fasta_seq (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2011 | $f1);\n %s2=read_fasta_seq ($f2);\n\n @names\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2012 | =(keys (%s1));\n\n foreach $n (keys(%s1))\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2013 | {\n my $ss1=lc($s1{$n}{seq});\n my $ss2=lc($s2{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2014 | n}{seq});\n if ($ss1 ne $ss2){return 0;}\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2015 | n foreach $n (keys(%s2))\n {\n my $ss1=lc(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2016 | $s1{$n}{seq});\n my $ss2=lc($s2{$n}{seq});\n if ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2017 | ss1 ne $ss2){return 0;}\n }\n \n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2018 | 1;\n }\n\n\n\nsub read_template_file\n {\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2019 | y $pdb_templates = @_[0];\n my $tmp=new FileHan\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2020 | dle;\n open ($tmp, \"<$pdb_templates\");\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2021 | y %temp_h;\n my ($skip,$seq, $temp);\n\n #su\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2022 | pports both a simple [seq pdb] format and the regu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2023 | lar fasta like template format\n while (<$tmp>)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2024 | \n {\n \n $line = $_;\n if ($line=~/\\>(\\S+)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025 | \\s_._\\s(\\S+)/){$temp_h{$1}= $2;}\n elsif ($line\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2026 | =~/(\\S+)\\s(\\S+)/){$temp_h{$1}= $2;}\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2027 | close($tmp);\n return %temp_h;\n }\n\n\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2028 | \n\n\nsub seq2tblastx_lib\n {\n my ($mode, $in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2029 | file, $outfile)=@_;\n my (%s, $method,$nseq);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2030 | \n $method=$mode;\n &set_temporary_dir (\"se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2031 | t\",$infile,\"infile\");\n %s=read_fasta_seq(\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2032 | infile\");\n\n\n foreach $seq (keys(%s))\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2033 | {\n $slist[$s{$seq}{order}]=$s{$seq}{seq};\n $sna\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2034 | me[$s{$seq}{order}]=$s{$seq}{name};\n $slen[$s{$se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2035 | q}{order}]=length ($s{$seq}{seq});\n }\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2036 | nseq=$#sname+1;\n open (F, \">outfile\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2037 | print F \"! TC_LIB_FORMAT_01\\n\";\n print F \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2038 | $nseq\\n\";\n for ($a=0; $a<$nseq;$a++)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2039 | {\n print F \"$sname[$a] $slen[$a] $slist[$a]\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2040 | "\n }\n close (F);\n &safe_system (\"fo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2041 | rmatdb -i infile -p F\");\n &safe_system (\"bla\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2042 | stall -p tblastx -i infile -d infile -m 7 -S1>blas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2043 | t.output\");\n\n ncbi_tblastx_xml2lib_file (\"o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2044 | utfile\", file2string (\"blast.output\"));\n &s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2045 | et_temporary_dir (\"unset\",$mode, $method, \"outf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2046 | ile\",$outfile);\n myexit ($EXIT_SUCCESS);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2047 | }\nsub seq2tblastpx_lib\n {\n my ($mode, $inf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2048 | ile, $outfile)=@_;\n my (%s, $method,$nseq);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2049 | $method=$mode;\n &set_temporary_dir (\"set\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2050 | ,$infile,\"infile\");\n %s=read_fasta_seq(\"inf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2051 | ile\");\n\n foreach $seq (keys(%s))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2052 | $slist[$s{$seq}{order}]=$s{$seq}{seq};\n $sname[$s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2053 | {$seq}{order}]=$s{$seq}{name};\n $slen[$s{$seq}{or\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2054 | der}]=length ($s{$seq}{seq});\n }\n $nseq=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2055 | $#sname+1;\n open (F, \">outfile\");\n print\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2056 | F \"! TC_LIB_FORMAT_01\\n\";\n print F \"$nseq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2057 | \\n\";\n for ($a=0; $a<$nseq;$a++)\n {\n p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2058 | rint F \"$sname[$a] $slen[$a] $slist[$a]\\n\"\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2059 | }\n close (F);\n &safe_system(\"t_coffee\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2060 | -other_pg seq_reformat -in infile -output tblastx\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2061 | _db1 > tblastxdb\");\n &safe_system (\"formatdb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2062 | -i tblastxdb -p T\");\n &safe_system (\"blasta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2063 | ll -p blastp -i tblastxdb -d tblastxdb -m7 >blast.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2064 | output\");\n ncbi_tblastpx_xml2lib_file (\"outf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2065 | ile\", file2string (\"blast.output\"), %s);\n &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2066 | set_temporary_dir (\"unset\",$mode, $method, \"out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2067 | file\",$outfile);\n myexit ($EXIT_SUCCESS);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2068 | }\n\nsub x3dna_find_pair2lib\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2069 | ($seq, $pdb, $lib, $pg)=@_;\n my $outfile1=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2070 | dssr-2ndstrs.dbn\";\n my $outfile2=\"simple.o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2071 | utput\";\n my $f= new FileHandle;\n my (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2072 | $rnaSS,$pdbSS);\n my $command;\n my %s_p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2073 | db;\n my %s_seq;\n my $pdbseq=vtmpnam(NU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2074 | LL);\n \n #$pg: \"find_pair\" OR \"find_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2075 | pair -p\"\n \n if (!pg_is_installed (\"f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2076 | ind_pair\"))\n {\n add_warning ($$,$$, \"x3dna/f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2077 | ind_pair could not be used to extract RNA secondar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2078 | y structures. Secondary structures will be extract\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2079 | ed by x3dna-ssr instead -- Install the find-pair m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2080 | odule of x3dna [http://x3dna.org/]\");\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2081 | x3dnassr2lib ($seq, $pdb, $lib);\n }\n \n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2082 | #get PDB sequence\n safe_system (\"t_cof\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2083 | fee -other_pg extract_from_pdb $pdb -seq >$pdbseq\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2084 | ");\n \n #get find_pair contacts\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2085 | $command=\"$pg $pdb simple.output > /dev/null 2>/d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2086 | ev/null\";\n safe_system ($command);\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2087 | if (($command=~/find_pair -p/)){$outfile2=\"allpa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2088 | irs.ana\";}\n else {$outfile2=\"simple.output\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2089 | \";}\n \n if ( !-e $outfile2)\n {\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2090 | exit(flush_error(\"x3dna failed to compute the sec\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2091 | ondary structure file $outfile2 for $pdb\"));\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2092 | myexit ($EXIT_FAILURE);\n }\n \n\n #Hand\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2093 | le situations when the pdb sequence differs from t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2094 | he RNA sequence\n #my @out=file2array($outfil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2095 | e1);\n %s_pdb=read_fasta_seq_index ($pdbseq);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2096 | \n %s_seq=read_fasta_seq_index ($seq);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2097 | my $rnaS=uc($s_seq{0}{seq});\n my $pdbS=uc($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2098 | s_pdb{0}{seq});\n my $vienna;\n my @lu;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2099 | n \n if ($rnaS ne $pdbS)\n {\n \n my (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2100 | $rna,$pdb);\n $rnaSS=$rnaS;\n $pdbSS=$pdbS;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2101 | $rnaSS=~s/T/U/g;\n $pdbSS=~s/T/U/g;\n ($rnaS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2102 | S,$pdbSS)=nw ($rnaS, $pdbS);\n \n my @rnaA =sp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2103 | lit (//,$rnaSS);\n my @pdbA=split (//,$pdbSS);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2104 | my $l=@rnaA;\n \n #print \"\\n--- $s_seq{0}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2105 | {name} $rnaSS\\n--- $s_seq{0}{name} $pdbSS\\n\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2106 | ;\n \n for (my $b=0,my $a=0; $a<$l; $a++)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2107 | {\n if ($rnaA[$a] ne '-' && $pdbA[$a] ne\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2108 | '-'){$lu[++$pdb]=++$rna;}\n elsif($rnaA[$a]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2109 | eq '-'){$lu[++$pdb]=-1;}\n elsif($pdbA[$a] \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2110 | eq '-'){++$rna;}\n }\n }\n else\n {\n f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2111 | or (my $a=0; $a<=length ($rnaS); $a++)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2112 | $lu[$a]=$a;\n }\n }\n my $l=length (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2113 | $rnaS);\n open ($f, \">$lib\");\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2114 | $f \"! TC_LIB_FORMAT_01\\n\";\n print $f \"1\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2115 | \n\";\n print $f \"$s_seq{0}{name} $l $rnaS\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2116 | n\";\n print $f \"!CMT: [SOURCE] >$s_seq{0}{n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2117 | ame} 3D contact library Generated by $pg (x3dna)\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2118 | n\";\n print $f \"#1 1\\n\";\n \n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2119 | y $ne;\n my @array=file2array($outfile2);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2120 | for (my $a=0; $a<5; $a++){shift (@array);}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2121 | while (!($array[0]=~/####/))\n {\n my $line=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2122 | shift (@array);\n my @l=($line=~/(\\d+)/g);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2123 | \n \n my $f1=$lu[$l[0]];\n my $s1=$lu[$l[1]]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2124 | ;\n\n #print \"\\n$line\\n$l[0] --> $f1\\n$l[1] \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2125 | --> $s1\\n\\n\"; \n \n if (!$f1 || !$s1)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2126 | {\n print \"\\n1---- $rnaSS\\n2---- $pdbSS\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2127 | \n$line\\n[$l[0] --- $l[1]]<---->[$f1 --- $s1]\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2128 | ";\n myexit(flush_error(\"Error while parsin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2129 | g s3dna::find_pair output\"));\n }\n elsif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2130 | $f1==-1 || $s1==-1){;}\n elsif ($f1<$s1){print $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2131 | f \"$f1 $s1 100\\n\";}\n else {print $f \"$s1 $f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2132 | 1 100\\n\";$ne++;}\n }\n print $f \"! SEQ_1_T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2133 | O_N\\n\";\n close ($f);\n return;\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2134 | \nsub RNAplfold2lib\n {\n my ($seq, $lib)=@_;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2135 | n my $f= new FileHandle;\n \n &safe_syste\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2136 | m (\"t_coffee -other_pg RNAplfold2tclib.pl -in=$se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2137 | q -out=$lib\");\n \n if ( !-e $lib)\n {\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2138 | yexit(flush_error(\"RNAplfold failed to compute th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2139 | e secondary structure of $s{$seq}{name}\"));\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2140 | exit ($EXIT_FAILURE);\n }\n open ($f, \">\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2141 | >$lib\");\n print $f \"!CMT: [SOURCE] 2D contac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2142 | t library Generated by RNAPlfold (Vienna Package)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2143 | \n\";\n close $f;\n return;\n }\nsub x3dnas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2144 | sr2lib\n {\n my ($seq, $pdb, $lib)=@_;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2145 | my $outfile=\"dssr-2ndstrs.dbn\";\n my $f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2146 | = new FileHandle;\n \n\n if (!pg_is_inst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2147 | alled (\"x3dna-ssr\"))\n {\n add_warning ($$,$$,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2148 | \"x3dna-ssr could not be used to extract RNA seco\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2149 | ndary structures. Secondary structures will be pre\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2150 | dicted ab-initio instead with RNAPlfold -- Install\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2151 | s3dna [http://x3dna.org/] \");\n return RNAplfo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2152 | ld2lib ($seq,$lib);\n }\n \n safe_system\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2153 | (\"x3dna-ssr -i=$pdb >/dev/null 2>/dev/null\");\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2154 | if ( !-e $outfile)\n {\n myexit(flush_erro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2155 | r(\"x3dna-ssr failed to compute the secondary stru\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2156 | cture file \"));\n myexit ($EXIT_FAILURE);\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2157 | \n #Handle situations when the pdb sequence d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2158 | iffers from the RNA sequence\n @out=file2arra\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2159 | y($outfile);\n my %s=read_fasta_seq ($seq);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2160 | my @names=keys (%s);\n my $rnaS=uc($s{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2161 | names[0]}{seq});\n my $pdbS=uc($out[1]);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2162 | my $vienna;\n \n #x3dna returns non l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2163 | egitimate nucleotides\n $pdbS=~s/[^AGCTU]//g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2164 | ;\n \n if ($rnaS ne $pdbS)\n {\n my ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2165 | rna,$pdb);\n my $rnaSS=$rnaS;\n my $pdbSS=$pdb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2166 | S;\n $rnaSS=~s/T/U/g;\n $pdbSS=~s/T/U/g;\n (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2167 | $rnaSS,$pdbSS)=nw ($rnaSS, $pdbSS);\n my @rnaA =\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2168 | split (//,$rnaSS);\n my @pdbA=split (//,$pdbSS);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2169 | \n my @SS=split (//, $out[2]);\n \n my $l=@r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2170 | naA;\n for (my $b=0,my $a=0; $a<$l; $a++)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2171 | {\n if ($rnaA[$a] ne '-' && $pdbA[$a] ne '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2172 | -'){$vienna.=$SS[$b++];}\n elsif($rnaA[$a] e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2173 | q '-'){$b++;}\n elsif($pdbA[$a] eq '-'){$vie\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2174 | nna.='.';}\n }\n }\n else\n {\n $vienna\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2175 | =$out[2];\n }\n \n\n open ($f, \">seq\");\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2176 | n print $f \">$names[0]\\n$rnaS\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2177 | close $f;\n \n open ($f, \">str\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2178 | print $f \">$names[0]\\n$vienna\\n\";\n cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2179 | ose $f;\n \n safe_system (\"t_coffee -ot\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2180 | her_pg seq_reformat -in seq -in2 str -output vienn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2181 | a2tc_lib >$lib\");\n if ( !-e $lib)\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2182 | myexit(flush_error(\"seq_reformat failed to\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2183 | convert your secondary structure\"));\n mye\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2184 | xit ($EXIT_FAILURE);\n }\n \n open (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2185 | $f, \">>$lib\");\n print $f \"!CMT: [SOURCE] \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2186 | >$names[0] 2D Contact library generated by x3dna-s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2187 | sr\\n\";\n #print $f \"! Vienna_Format: >$nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2188 | es[0]\\n\";\n #print $f \"! Vienna_Format: $v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2189 | ienna\\n\";\n \n close $f;\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2190 | ;\n }\n\n\nsub file2head\n {\n my $file = \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2191 | shift;\n my $size = shift;\n my $f= new FileHandle\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2192 | ;\n my $line;\n open ($f,$file);\n read ($f,$line,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2193 | $size);\n close ($f);\n return $line;\n }\ns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2194 | ub file2tail\n {\n my $file = shift;\n my $si\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2195 | ze = shift;\n my $f= new FileHandle;\n my $line;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2196 | \n open ($f,$file);\n seek ($f,$size*-1, 2);\n rea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2197 | d ($f,$line, $size);\n close ($f);\n return $line;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2198 | \n }\n\n\nsub vtmpnam\n {\n my $r=rand(1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2199 | 00000);\n my $f=\"file.$r.$$\";\n while (-e $f)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2200 | {\n $f=vtmpnam();\n }\n push (@TMPFILE_LIS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2201 | T, $f);\n return $f;\n }\n\nsub myexit\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2202 | my $code=@_[0];\n if ($CLEAN_EXIT_STARTED==\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2203 | 1){return;}\n else {$CLEAN_EXIT_STARTED=1;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2204 | ### ONLY BARE EXIT\n exit ($code);\n }\nsub \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2205 | set_error_lock\n {\n my $name = shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2206 | my $pid=$$;\n\n\n &lock4tc ($$,\"LERROR\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2207 | , \"LSET\", \"$$ -- ERROR: $name $PROGRAM\\n\");\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2208 | return;\n }\nsub set_lock\n {\n my $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2209 | id=shift;\n my $msg= shift;\n my $p=getppid(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2210 | );\n &lock4tc ($pid,\"LLOCK\",\"LRESET\",\"$p$m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2211 | sg\\n\");\n }\nsub unset_lock\n {\n\n my $pi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2212 | d=shift;\n &lock4tc ($pid,\"LLOCK\",\"LRELEASE\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2213 | ",\"\");\n }\nsub shift_lock\n {\n my $from=s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2214 | hift;\n my $to=shift;\n my $from_type=shift;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2215 | \n my $to_type=shift;\n my $action=shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2216 | my $msg;\n\n if (!&lock4tc($from, $from_type\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2217 | , \"LCHECK\", \"\")){return 0;}\n $msg=&lock4tc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2218 | ($from, $from_type, \"LREAD\", \"\");\n &lock4\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2219 | tc ($from, $from_type,\"LRELEASE\", $msg);\n &l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2220 | ock4tc ($to, $to_type, $action, $msg);\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2221 | ;\n }\nsub isshellpid\n {\n my $p=shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2222 | if (!lock4tc ($p, \"LLOCK\", \"LCHECK\")){return \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2223 | 0;}\n else\n {\n my $c=lock4tc($p, \"LLOCK\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2224 | \", \"LREAD\");\n if ( $c=~/-SHELL-/){return 1;}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2225 | }\n return 0;\n }\nsub isrootpid\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2226 | if(lock4tc (getppid(), \"LLOCK\", \"LCHECK\")){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2227 | return 0;}\n else {return 1;}\n }\nsub lock4tc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2228 | \n {\n my ($pid,$type,$action,$value)=@_;\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2229 | $fname;\n my $host=hostname;\n\n if ($type eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2230 | \"LLOCK\"){$fname=\"$LOCKDIR/.$pid.$host.lock4tco\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2231 | ffee\";}\n elsif ( $type eq \"LERROR\"){ $fname=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2232 | \"$LOCKDIR/.$pid.$host.error4tcoffee\";}\n elsif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2233 | ( $type eq \"LWARNING\"){ $fname=\"$LOCKDIR/.$pid\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2234 | .$host.warning4tcoffee\";}\n\n if ($debug_lock)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2235 | n {\n print STDERR \"\\n\\t---lock4tc(tc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2236 | g): $action => $fname =>$value (RD: $LOCKDIR)\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2237 | ;\n }\n\n if ($action eq \"LCHECK\") {ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2238 | urn -e $fname;}\n elsif ($action eq \"LREAD\"){r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2239 | eturn file2string($fname);}\n elsif ($action eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2240 | \"LSET\") {return string2file ($value, $fname, \">\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2241 | >\");}\n elsif ($action eq \"LRESET\") {return s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2242 | tring2file ($value, $fname, \">\");}\n elsif ($a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2243 | ction eq \"LRELEASE\")\n {\n if ( $debug\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2244 | _lock)\n {\n my $g=new FileHandle;\n open (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2245 | $g, \">>$fname\");\n print $g \"\\nDestroyed by\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2246 | $$\\n\";\n close ($g);\n safe_system (\"mv \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2247 | $fname $fname.old\");\n }\n else\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2248 | unlink ($fname);\n }\n }\n return \"\";\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2249 | \n\nsub file2string\n {\n my $file=@_[0];\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2250 | $f=new FileHandle;\n my $r;\n open ($f, \"$fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2251 | le\");\n while (<$f>){$r.=$_;}\n close ($f);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2252 | return $r;\n }\nsub file2array\n {\n my $file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2253 | =@_[0];\n my $f=new FileHandle;\n my @r;\n o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2254 | pen ($f, \"$file\");\n while (<$f>){@r=(@r,$_);}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2255 | \n close ($f);\n return @r;\n }\nsub string2fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2256 | le\n {\n my ($s,$file,$mode)=@_;\n my $f=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2257 | new FileHandle;\n\n open ($f, \"$mode$file\");\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2258 | n print $f \"$s\";\n close ($f);\n }\n\nBE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2259 | GIN\n {\n srand;\n\n $SIG{'SIGUP'}='s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2260 | ignal_cleanup';\n $SIG{'SIGINT'}='signal_clea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2261 | nup';\n $SIG{'SIGQUIT'}='signal_cleanup';\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2262 | $SIG{'SIGILL'}='signal_cleanup';\n $SIG{'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2263 | SIGTRAP'}='signal_cleanup';\n $SIG{'SIGABRT'}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2264 | ='signal_cleanup';\n $SIG{'SIGEMT'}='signal_c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2265 | leanup';\n $SIG{'SIGFPE'}='signal_cleanup';\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2266 | \n $SIG{'SIGKILL'}='signal_cleanup';\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2267 | SIG{'SIGPIPE'}='signal_cleanup';\n $SIG{'SIGS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2268 | TOP'}='signal_cleanup';\n $SIG{'SIGTTIN'}='si\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2269 | gnal_cleanup';\n $SIG{'SIGXFSZ'}='signal_clea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2270 | nup';\n $SIG{'SIGINFO'}='signal_cleanup';\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2271 | $SIG{'SIGBUS'}='signal_cleanup';\n $SIG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2272 | {'SIGALRM'}='signal_cleanup';\n $SIG{'SIGTSTP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2273 | '}='signal_cleanup';\n $SIG{'SIGTTOU'}='signa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2274 | l_cleanup';\n $SIG{'SIGVTALRM'}='signal_clean\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2275 | up';\n $SIG{'SIGUSR1'}='signal_cleanup';\n\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2276 | n $SIG{'SIGSEGV'}='signal_cleanup';\n $S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2277 | IG{'SIGTERM'}='signal_cleanup';\n $SIG{'SIGCO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2278 | NT'}='signal_cleanup';\n $SIG{'SIGIO'}='signa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2279 | l_cleanup';\n $SIG{'SIGPROF'}='signal_cleanup\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2280 | ';\n $SIG{'SIGUSR2'}='signal_cleanup';\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2281 | $SIG{'SIGSYS'}='signal_cleanup';\n $SIG{'S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2282 | IGURG'}='signal_cleanup';\n $SIG{'SIGCHLD'}='\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2283 | signal_cleanup';\n $SIG{'SIGXCPU'}='signal_cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2284 | eanup';\n $SIG{'SIGWINCH'}='signal_cleanup';\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2285 | n\n $SIG{'INT'}='signal_cleanup';\n $SIG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2286 | {'TERM'}='signal_cleanup';\n $SIG{'KILL'}='si\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2287 | gnal_cleanup';\n $SIG{'QUIT'}='signal_cleanup\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2288 | ';\n\n our $debug_lock=$ENV{\"DEBUG_LOCK\"};\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2289 | n\n\n\n\n foreach my $a (@ARGV){$CL.=\" $a\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2290 | }\n if ( $debug_lock ){print STDERR \"\\n\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2291 | \n********** START PG: $PROGRAM *************\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2292 | ;}\n if ( $debug_lock ){print STDERR \"\\n\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2293 | \\n**********(tcg) LOCKDIR: $LOCKDIR $$ **********\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2294 | ***\\n\";}\n if ( $debug_lock ){print STDERR \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2295 | \"\\n --- $$ -- $CL\\n\";}\n\n\n\n\n }\nsub flu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2296 | sh_error\n {\n my $msg=shift;\n $msg.=\" [t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2297 | c_generic_method.pl/FATAL]\";\n return add_erro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2298 | r ($EXIT_FAILURE,$$, $$,getppid(), $msg, $CL);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2299 | }\nsub add_error\n {\n my $code=shift;\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2300 | $rpid=shift;\n my $pid=shift;\n my $ppid=sh\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2301 | ift;\n my $type=shift;\n my $com=shift;\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2302 | $ERROR_DONE=1;\n lock4tc ($rpid, \"LERROR\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2303 | \"LSET\",\"$pid -- ERROR: $type\\n\");\n lock4t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2304 | c ($$, \"LERROR\",\"LSET\", \"$pid -- COM: $com\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2305 | \");\n lock4tc ($$, \"LERROR\",\"LSET\", \"$pid\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2306 | -- STACK: $ppid -> $pid\\n\");\n\n return $cod\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2307 | e;\n }\nsub add_warning\n {\n my $rpid=shift;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2308 | \n my $pid =shift;\n my $command=shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2309 | my $msg=\"$$ -- WARNING: $command\\n\";\n prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2310 | t STDERR \"$msg\";\n lock4tc ($$, \"LWARNING\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2311 | \"LSET\", $msg);\n }\n\nsub signal_cleanup\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2312 | n print dtderr \"\\n**** $$ (tcg) was killed\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2313 | \";\n &cleanup;\n exit ($EXIT_FAILURE);\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2314 | \nsub clean_dir\n {\n my $dir=@_[0];\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2315 | !-d $dir){return ;}\n elsif (!($dir=~/tmp/)){r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2316 | eturn ;}#safety check 1\n elsif (($dir=~/\\*/))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2317 | {return ;}#safety check 2\n else\n {\n `rm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2318 | -rf $dir`;\n }\n return;\n }\nsub cleanu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2319 | p\n {\n #print stderr \"\\n----tc: $$ Kills $P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2320 | IDCHILD\\n\";\n #kill (SIGTERM,$PIDCHILD);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2321 | my $p=getppid();\n $CLEAN_EXIT_STARTED=1;\n\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2322 | n\n if (&lock4tc($$,\"LERROR\", \"LCHECK\", \"\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2323 | "))\n {\n my $ppid=getppid();\n if (!$ERROR_D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2324 | ONE)\n {\n &lock4tc($$,\"LERROR\", \"LSET\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2325 | \"$$ -- STACK: $p -> $$\\n\");\n &lock4tc($$,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2326 | \"LERROR\", \"LSET\", \"$$ -- COM: $CL\\n\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2327 | }\n }\n my $warning=&lock4tc($$, \"LWARNIN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2328 | G\", \"LREAD\", \"\");\n my $error=&lock4tc($$,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2329 | \"LERROR\", \"LREAD\", \"\");\n #release erro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2330 | r and warning lock if root\n\n if (isrootpid() \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2331 | && ($warning || $error) )\n {\n\n print STDER\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2332 | R \"**************** Summary *************\\n$erro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2333 | r\\n$warning\\n\";\n\n &lock4tc($$,\"LERROR\",\"RE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2334 | LEASE\",\"\");\n &lock4tc($$,\"LWARNING\",\"RELEAS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2335 | E\",\"\");\n }\n\n\n foreach my $f (@TMPFI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2336 | LE_LIST)\n {\n if (-e $f){unlink ($f);}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2337 | }\n foreach my $d (@TMPDIR_LIST)\n {\n c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2338 | lean_dir ($d);\n }\n #No More Lock Release\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2339 | \n #&lock4tc($$,\"LLOCK\",\"LRELEASE\",\"\"); #\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2340 | release lock\n\n if ( $debug_lock ){print STDER\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2341 | R \"\\n\\n\\n********** END PG: $PROGRAM ($$) ****\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2342 | *********\\n\";}\n if ( $debug_lock ){print STD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2343 | ERR \"\\n\\n\\n**********(tcg) LOCKDIR: $LOCKDIR $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2344 | $ *************\\n\";}\n }\nEND\n {\n\n &clea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2345 | nup();\n }\n\nsub blast_com2new_blast_com\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2346 | n my $com=shift;\n if ($com=~/formatdb/)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2347 | \n {\n $com=~s/formatdb/makeblastdb/;\n $com=~\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2348 | s/\\-i/\\-in/;\n if ($com =~/pF/){$com=~s/\\-pF/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2349 | \\-dbtype nucl/;}\n if ($com =~/p F/){$com=~s/\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2350 | -p F/\\-dbtype nucl/;}\n $com=\"$com -logfile /d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2351 | ev/null\";\n return $com;\n }\n else {retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2352 | n $com;}\n \n }\nsub safe_system\n{\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2353 | $com=shift;\n my $ntry=shift;\n my $ctry=shift;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2354 | n my $pid;\n my $status;\n my $ppid=getppid();\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2355 | n if ($com eq \"\"){return 1;}\n \n if ( ($com=~\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2356 | /^blast/) ||($com=~/^formatdb/)){$com=&blast_com2n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2357 | ew_blast_com($com);}\n \n if (($pid = fork ()) < \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2358 | 0){return (-1);}\n if ($pid == 0)\n {\n s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2359 | et_lock($$, \" -SHELL- $com (tcg)\");\n if( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2360 | debug_generic_method ) { printf \"~ exec: %s\\n\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2361 | $com; }\n exec ($com);\n if( $debug_gen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2362 | eric_method ) { printf \"~ exitcode: %s\\n\", $?; \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2363 | }\n }\n else\n {\n lock4tc ($$, \"LLOC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2364 | K\", \"LSET\", \"$pid\\n\");#update parent\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2365 | $PIDCHILD=$pid;\n }\n if ($debug_lock){printf \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2366 | STDERR \"\\n\\t .... safe_system (fasta_seq2hmm) \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2367 | p: $$ c: $pid COM: $com\\n\";}\n\n waitpid ($pid,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2368 | WTERMSIG);\n\n shift_lock ($pid,$$, \"LWARNING\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2369 | \"LWARNING\", \"LSET\");\n\n if ($? == $EXIT_FAIL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2370 | URE || lock4tc($pid, \"LERROR\", \"LCHECK\", \"\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2371 | )\n {\n if ($ntry && $ctry <$ntry)\n {\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2372 | add_warning ($$,$$,\"$com failed [retry: $ctry \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2373 | out of $ntry]\");\n lock4tc ($pid, \"LRELEASE\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2374 | \"LERROR\", \"\");\n #if ($com=~/EBI/){$com=~s/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2375 | EBI/NCBI/;}\n #elsif ($com=~/NCBI/){$com=~s/NCBI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2376 | /EBI/;}\n\n return safe_system ($com, $ntry, ++$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2377 | ctry);\n }\n elsif ($ntry == -1)\n {\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2378 | !shift_lock ($pid, $$, \"LERROR\", \"LWARNING\", \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2379 | "LSET\"))\n {\n add_warning ($$,$$,\"$co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2380 | m failed\");\n }\n else\n {\n lock\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2381 | 4tc ($pid, \"LRELEASE\", \"LERROR\", \"\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2382 | }\n return $?;}\n else\n {\n if (!shift_l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2383 | ock ($pid,$$, \"LERROR\",\"LERROR\", \"LSET\"))\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2384 | {\n myexit(add_error ($EXIT_FAILURE,$$,$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2385 | pid,getppid(), \"UNSPECIFIED system\", $com));\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2386 | }\n }\n }\n return $?;\n}\n\nsub check_conf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2387 | iguration\n {\n my @l=@_;\n my $v;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2388 | foreach my $p (@l)\n {\n\n if ( $p eq \"E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2389 | MAIL\")\n {\n if ( !($EMAIL=~/@/))\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2390 | n add_warning($$,$$,\"Could Not Use EMAIL\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2391 | myexit(add_error ($EXIT_FAILURE,$$,$$,getppid(),\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2392 | EMAIL\",\"$CL\"));\n }\n }\n elsif( $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2393 | eq \"INTERNET\")\n {\n if ( !&check_int\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2394 | ernet_connection())\n {\n myexit(add_error ($E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2395 | XIT_FAILURE,$$,$$,getppid(),\"INTERNET\",\"$CL\"))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2396 | ;\n }\n }\n elsif( $p eq \"wget\")\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2397 | n if (!&pg_is_installed (\"wget\") && !&pg_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2398 | s_installed (\"curl\"))\n {\n myexit(add_error\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2399 | ($EXIT_FAILURE,$$,$$,getppid(),\"PG_NOT_INSTALLED\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2400 | :wget\",\"$CL\"));\n }\n }\n elsif( !(&pg_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2401 | s_installed ($p)))\n {\n myexit(add_erro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2402 | r ($EXIT_FAILURE,$$,$$,getppid(),\"PG_NOT_INSTALLE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2403 | D:$p\",\"$CL\"));\n }\n }\n return 1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2404 | }\nsub nw\n {\n my($A,$B)=@_;\n my ($i,$j, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2405 | $s);\n my $gep=-2;\n my $match=+2;\n my $mismatch=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2406 | 0;\n my ($sub, $ins, $del);\n\n\n if ($A eq $B){re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2407 | turn ($A,$B);}\n \n $A=~s/[\\s\\d]//g; \n $B=~s/[\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2408 | \s\\d]//g; \n\n\n my @rA=split ('',$A);\n my @rB=s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2409 | plit ('',$B);\n \n #evaluate substitutions\n my $l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2410 | enA=@rA;\n my $lenB=@rB;\n \n for ($i=0; $i<=$lenA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2411 | ; $i++){$smat[$i][0]=$i*$gep;$tb[$i][0 ]= 1;}\n fo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2412 | r ($j=0; $j<=$lenB; $j++){$smat[0][$j]=$j*$gep;$tb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2413 | [0 ][$j]=-1;}\n \n for ($i=1; $i<=$lenA; $i++)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2414 | {\n for ($j=1; $j<=$lenB; $j++)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2415 | if ($rA[$i-1] eq $rB[$j-1]){$s=$match;}\n else {$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2416 | s=$mismatch;}\n \n $sub=$smat[$i-1][$j-1]+$s;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2417 | $del=$smat[$i ][$j-1]+$gep;\n $ins=$smat[$i-1][\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2418 | $j ]+$gep;\n \n if ($sub>=$del && $sub>=$ins)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2419 | {$smat[$i][$j]=$sub;$tb[$i][$j]=0;}\n elsif($del>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2420 | $ins){$smat[$i][$j]=$del;$tb[$i][$j]=-1;}\n else \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2421 | {$smat[$i][$j]=$ins;$tb[$i][$j]=1;}\n }\n }\n #\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2422 | print \"\\n---- SCORE=$smat[$lenA][$lenB]\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2423 | \n $i=$lenA;\n $j=$lenB;\n my $aln_len=0;\n\n whil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2424 | e (!($i==0 && $j==0))\n {\n if ($tb[$i][$j]=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2425 | =0)\n {\n $aA[$aln_len]=$rA[--$i];\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2426 | $aB[$aln_len]=$rB[--$j];\n }\n elsif ($tb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2427 | [$i][$j]==-1)\n {\n $aA[$aln_len]='-';\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2428 | $aB[$aln_len]=$rB[--$j];\n }\n elsif \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2429 | ($tb[$i][$j]==1)\n {\n $aA[$aln_len]=$rA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2430 | [--$i];\n $aB[$aln_len]='-';\n }\n $al\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2431 | n_len++;\n }\n \n \n @aA=reverse (@aA);\n @aB=re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2432 | verse (@aB);\n my $sA=join('',@aA);\n my $sB=join(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2433 | '',@aB);\n return ($sA,$sB);\n }\n \nsub\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2434 | fasta2nseq\n {\n \n my $f=@_[0];\n my $nseq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2435 | ;\n\n open (F, \"$f\") or return 0;\n while (<\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2436 | F>)\n {\n if ($_=~/\\>/){$nseq++;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2437 | }\n close (F);\n return $nseq;\n }\n \nsub co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2438 | mpress\n {\n my ($f, $mode)=@_;\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2439 | ($mode eq \"gz\"){system (\"gzip $f\");}\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2440 | if ($mode eq \"zip\" ){system (\"zip $f\");}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2441 | return;\n }\nsub uncompress \n {\n my $f=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2442 | @_[0];\n if ( -e $f) {return \"\";}\n\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2443 | $gz=$f.\".gz\";\n if ( -e $gz)\n {\n s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2444 | ystem (\"gunzip $gz\");\n return ($f, \"gz\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2445 | }\n my $gz=$f.\".zip\";\n \n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2446 | ( -e $gz)\n {\n system (\"unzip $gz\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2447 | return ($f, \"zip\");\n }\n return \"\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2448 | \n }\nmy $program=\"T-COFFEE (Version_13.45.58.c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2449 | 355d11)\";\n","use Env;\nuse strict;\nuse FileHand\ | ~~~~~~~~~~~~~ ./perl_header_lib.h:2449:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2449 | 355d11)\";\n","use Env;\nuse strict;\nuse FileHand\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2450 | le;\nuse DirHandle;\nuse Cwd;\nuse File::Path;\nus\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2451 | e Sys::Hostname;\nuse File::Temp qw/ tempfile temp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2452 | dir /;\n\nmy $QUIET=\">/dev/null 2>/dev/null\";\nm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2453 | y $VERBOSE=$ENV{VERBOSE_4_DYNAMIC};\nmy $FATAL=\"[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2454 | FATAL:mmseqs2prf]\";\nour $EXIT_FAILURE=1;\nour $E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2455 | XIT_SUCCESS=0;\nour $LAST_COM=\"\";\n\nmy $tmpdir \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2456 | = File::Temp->newdir();\n\nmy $doquiet=0;\nmy ($ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2457 | tdir,$cachedb,$cacheq);\n\nmy $ff=new FileHandle;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2458 | nmy (%db, %q, %P, %H, %T);\nmy ($dbf, $qf, $out);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2459 | nmy $prot_min_cov=50;\nmy $prot_min_sim=0;\nmy $pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2460 | ot_max_sim=100;\nmy $psitrim_mode=\"sorttrim\";\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2461 | nmy $psitrim_tree=\"codnd\";\nmy $psitrim=100;\nmy\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2462 | $psiJ=1;\nmy $TF;\nmy $S;\n\nmy $updatedb=0;\nmy \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2463 | $updateq=0;\nmy $update=0;\nmy $qff;\nmy %CIRCULAR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2464 | ;\nmy $mmseqsR;\nmy %R;\nmy $split=1000000;\n\nfor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2465 | ($a=0; $a<=$#ARGV; $a++)\n {\n if ($ARGV[$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2466 | a] eq \"-protein_db\" || $ARGV[$a] eq \"-db\"){$db\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2467 | f=file2abs($ARGV[++$a]);}\n elsif ($ARGV[$a] eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2468 | \"-q\" || $ARGV[$a] eq \"-i\") {$qff =file2abs($A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2469 | RGV[++$a]);}\n elsif ($ARGV[$a] eq \"-update\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2470 | {$update=1;}\n elsif ($ARGV[$a] eq \"-quiet\") \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2471 | {$doquiet=1;}\n \n elsif ($ARGV[$a] eq \"-od\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2472 | ir\") {$outdir=file2abs($ARGV[++$a]);}\n elsif \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2473 | ($ARGV[$a] eq \"-o\") {$mmseqsR=file2abs($ARGV[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2474 | ++$a]);}\n \n elsif ($ARGV[$a] eq \"-templat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2475 | e_file\" || $ARGV[$a] eq \"-tf\") {$TF=($ARGV[++$a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2476 | ]);}\n elsif ($ARGV[$a] eq \"-cachedb\") {$cach\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2477 | edb=file2abs($ARGV[++$a]);}\n elsif ($ARGV[$a] \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2478 | eq \"-updatedb\") {$updatedb=1;}\n \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2479 | elsif ($ARGV[$a] eq \"-cacheq\") {$cacheq=file2ab\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2480 | s($ARGV[++$a]);}\n elsif ($ARGV[$a] eq \"-updat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2481 | eq\") {$updateq=1;}\n \n elsif ($ARGV[$a] eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2482 | \"-prot_min_sim\") {$prot_min_sim=($ARGV[++$a]);}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2483 | \n elsif ($ARGV[$a] eq \"-prot_max_sim\") {$pro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2484 | t_max_sim=($ARGV[++$a]);}\n elsif ($ARGV[$a] eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2485 | \"-prot_min_cov\") {$prot_min_cov=($ARGV[++$a]);}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2486 | \n \n elsif ($ARGV[$a] eq \"-psitrim_mode\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2487 | {$psitrim_mode=$ARGV[++$a];}\n elsif ($ARGV[$a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2488 | ] eq \"-psiJ\") {$psiJ=$ARGV[++$a];}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2489 | elsif ($ARGV[$a] eq \"-psitrim_tree\") {$psitrim_t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2490 | ree=$ARGV[++$a];}\n elsif ($ARGV[$a] eq \"-psit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2491 | rim\") {$psitrim=$ARGV[++$a];}\n elsif ($A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2492 | RGV[$a] eq \"-s\") {$S=\"-s \".$ARGV[++\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2493 | $a];}\n elsif ($ARGV[$a] eq \"-split\") \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2494 | {$split=$ARGV[++$a];}\n else {die \"$ARGV[$a] i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2495 | s an unknown argument $FATAL\";}\n }\n\nif (!$dbf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2496 | ){print STDERR \"ERROR: mmseqs2prf required a data\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2497 | base via -protein_db $FATAL\\n\";exit ($EXIT_FAILU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2498 | RE);}\nif (!$qff){print STDERR \"ERROR: mmseqs2prf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2499 | required a query -q $FATAL\";exit ($EXIT_FAILU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2500 | RE);}\nif (!is_installed(\"mmseqs\")){print STDERR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2501 | \"ERROR: mmseqs2prf required mmseqs to be install\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2502 | ed $FATAL\\n\";exit ($EXIT_FAILURE);}\n\n\nif ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2503 | cachedb eq \"TMP\"){$cachedb=$tmpdir;}\nelsif(!$ca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2504 | chedb){$cachedb=file2path($dbf);}\n\nif (!$mmseq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2505 | sR){$mmseqsR=\"./out.mmseqs\";}\nif (!$cacheq ||\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2506 | $cacheq eq \"TMP\"){$cacheq=\"$tmpdir/query\";}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2507 | if (!$outdir ){$outdir=\"./R_dir\";}\nif (!$d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2508 | oquiet) {$QUIET=\"\";}\n\nmymkdir ($outdir,$cached\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2509 | b,$cacheq,$tmpdir);\nmy ($qf,%H)=filelist2h($outdi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2510 | r,string2fasta_list($qff));\nmake_output_structure\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2511 | ($outdir,%H);\n\n\nif ( ! -e $mmseqsR || $update){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2512 | split_mmseqs($qf, $cacheq, $updateq, $dbf, $cached\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2513 | b, $updatedb,$S,$mmseqsR,$split);}\n\nmmseqs2prf (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2514 | $mmseqsR,$outdir,$prot_min_sim,$prot_max_sim, $pro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2515 | t_min_cov,%H);\nprf2trimprf($outdir,$psitrim_mode,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2516 | $psitrim_tree, $psitrim, %H);\n\nif ($TF){h2templ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2517 | ate_file ($TF,%H);}\n\n\nsub h2template_file\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2518 | n my ($tf,%h)=@_;\n my $fh =new FileHandle;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2519 | n my %lu=my %lu=h2lu(%h);\n\n open ($fh, \">\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2520 | $tf\");\n foreach my $s (keys{%lu})\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2521 | my $f=$lu{$s}{0};\n print $fh \">$s _R_ $h{$f}{tpr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2522 | f}{$s}{absolute}\\n\";\n }\n close ($fh);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2523 | n return $tf;\n }\n \nsub prf2trimprf\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2524 | n my ($outdir,$psitrim_mode,$psitrim_tree,$psit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2525 | rim, %h)=@_;\n my $template =new FileHandle;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2526 | my $template_file;\n my $qf=abs2file($qf);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2527 | \n my %lu=h2lu(%h);\n foreach my $s (key\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2528 | s(%lu))\n {\n my $f=$lu{$s}{0};\n system (\"t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2529 | _coffee -other_pg seq_reformat -in $h{$f}{prf}{$s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2530 | }{absolute} -treemode=$psitrim_tree -keep 1 -actio\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2531 | n +$psitrim_mode $psitrim -output fasta_aln -out $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2532 | h{$f}{tprf}{$s}{absolute}\");\n foreach my $i (key\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2533 | s%{$lu{$s}})\n {\n \n my $f2=$lu{$s}{$i};\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2534 | \n if ( !-e $h{$f2}{tprf}{$s}{absolute})\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2535 | {\n system (\"cp $h{$f}{tprf}{$s}{absolute} $h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2536 | {$f2}{tprf}{$s}{absolute}\");\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2537 | }\n return %P;\n }\n\n\n\n\nsub h2lu\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2538 | my %h=@_;\n my %lu;\n my %count;\n fo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2539 | reach my $f (keys (%h))\n {\n foreach my $s (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2540 | keys(%{$h{$f}{name}}))\n {\n \n $lu{$s}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2541 | $count{$s}++}=$f;\n }\n }\n return %lu;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2542 | n }\nsub mmseqs2prf\n {\n #\"query[0],target[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2543 | 1],qaln[2],taln[3],qstart[4],qend[5],pident[6],qco\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2544 | v[7],qlen[8]\\\" $QUIET\");\n my ($out,$outdir,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2545 | $min_id, $max_id,$min_cov, %h)=@_;\n my $ff =n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2546 | ew FileHandle;\n my $prf =new FileHandle;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2547 | my $nn;\n my $tot;\n my $psn;\n my %lu=h2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2548 | lu(%h);\n my %luf;\n \n open ($ff,$out);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2549 | n while (<$ff>)\n {\n my $l=$_;\n my @ll=s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2550 | plit (/\\s/, $l);\n my $sn=$ll[0];\n my $f =$lu{$s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2551 | n}{0};\n my $cf=$h {$f}{prf}{$sn}{absolute};\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2552 | if ($sn ne $psn)\n {\n close $prf;\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2553 | ($luf{$cf}){open ($prf, \">>$cf\");}\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2554 | { \n open ($prf, \">$cf\");\n print $prf \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2555 | \">$sn\\n$h{$f}{seq}{$sn}\\n\";\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2556 | $nn=++$luf{$cf};\n $psn=$sn;\n \n my $id=$ll[6]*10\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2557 | 0;\n my $cov=$ll[7]*100;\n my $len=$ll[8];\n print\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2558 | \"$id $max_id $min_id\\n\";\n if ($id<=$max_id &&\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2559 | $id>=$min_id && $cov>$min_cov)\n {\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2560 | \"Keep\";\n print $prf \">$sn\\_$nn\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2561 | for (my $a=1; $a<$ll[4]; $a++){print $prf \"-\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2562 | \n \n my @ql=split (//,$ll[2]);\n my @\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2563 | tl=split (//,$ll[3]);\n my $qlen=length($ll[2]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2564 | );\n for (my $a=0; $a<$qlen; $a++)\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2565 | if ($ql[$a] ne \"-\"){print $prf \"$tl[$a]\";}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2566 | }\n for (my $a=$ll[5]; $a<$len; $a++){p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2567 | rint $prf \"-\"}\n print $prf \"\\n\";\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2568 | }\n close($prf);\n close($ff);\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2569 | # checkout the un-used ones\n foreach my $sn (k\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2570 | eys(%lu))\n {\n my $f=$lu{$sn}{0};\n\n if (!-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2571 | e $h{$f}{prf}{$sn}{absolute})\n {\n open ($p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2572 | rf,\">$h{$f}{prf}{$sn}{absolute}\");\n print $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2573 | prf \">$sn\\n$h{$f}{seq}{$sn}\\n\";\n close (p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2574 | rf);\n }\n }\n #duplicate prf files that\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2575 | are shared by different input datasets\n forea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2576 | ch my $sn (keys (%lu))\n {\n my $f0=$lu{$sn}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2577 | 0};\n \n foreach my $i (keys(%{$lu{$sn}}))\n { \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2578 | n my $f=$lu{$sn}{$i};\n if (! -e $h{$f}{pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2579 | f}{$sn}{absolute}){system (\"cp $h{$f0}{prf}{$sn}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2580 | absolute} $h{$f}{prf}{$sn}{absolute}\");}\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2581 | }\n }\n\n\nsub file2db\n {\n my ($in,$di\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2582 | r, $update)=(@_);\n my %f;\n my $out;\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2583 | n if ( !-e $in)\n {\n print \"$in does not\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2584 | exists $FATAL \\n\";\n }\n if ($dir)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2585 | {\n if (!-d $dir){mkdir ($dir) or die \"Could n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2586 | ot create $dir $FATAL\"; }\n $out=$dir.\"/\".abs2f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2587 | ile($in);}\n else {$out=$in;}\n \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2588 | $f{name}=$in;\n $f{db}=\"$out\\.MMSEQSDB\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2589 | $f{index}=\"$out\\.MMSEQSINDEX\";\n \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2590 | #Trigger automated update when source db younge\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2591 | r than mmseqs file\n if (-e $f{db} && ((-M $f{d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2592 | b})>(-M $f{name}))){$update=1;}\n \n if (!-e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2593 | $f{db} || $update)\n {\n system (\"mmseqs cr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2594 | eatedb $f{name} $f{db} $QUIET\");\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2595 | \n if (!-d $f{index} || $update)\n {\n sys\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2596 | tem (\"mmseqs createindex $f{name} $f{index} $QUIE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2597 | T\");\n }\n\n return %f;\n \n }\n\nsub\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2598 | file2path\n {\n my ($f)=@_;\n $f=fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2599 | e2abs($f);\n $f=~/(.*\\/)[^\\/]*$/;\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2600 | $cdir=$1;\n return $cdir;\n }\nsub file2a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2601 | bs\n {\n my ($f, $mode)=@_;\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2602 | cdir=getcwd();\n if ($f=~/^\\//){return $f;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2603 | \n return \"$cdir/$f\";\n }\nsub abs2file\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2604 | n {\n my $in=shift @_;\n my $out;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2605 | \n if ( $in=~/\\//)\n {\n $in=~/.*\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2606 | \/([^\\/]*)$/;\n $out=$1;\n }\n else\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2607 | $out=$in;\n }\n \n return $out;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2608 | }\n\nsub read_fasta_seq\n {\n my $f=@_[0];\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2609 | my %hseq;\n my (@seq, @com, @name);\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2610 | ($a, $s,$nseq);\n my $fh=new FileHandle;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2611 | \n open ($fh, $f);\n while (<$fh>)\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2612 | n $s.=$_;\n }\n close ($fh);\n\n\n @nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2613 | e=($s=~/>(\\S*).*\\n[^>]*/g);\n\n @seq =($s=~/>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2614 | .*.*\\n([^>]*)/g);\n @com =($s=~/>\\S*(.*)\\n([\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2615 | ^>]*)/g);\n\n\n $nseq=$#name+1;\n\n for ($a=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2616 | 0; $a<$nseq; $a++)\n {\n my $s;\n my $n=$name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2617 | [$a];\n $hseq{$n}{name}=$n;\n $hseq{$n}{cname}=cle\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2618 | an_file_name($n);\n \n $seq[$a]=~s/[^A-Za-z]//g;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2619 | $hseq{$n}{order}=$a;\n $hseq{$n}{seq}=$seq[$a];\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2620 | $hseq{$n}{com}=$com[$a];\n\n }\n return %\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2621 | hseq;\n }\nsub mymkdir\n {\n my @l=@_;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2622 | foreach my $a (@l)\n {\n if ( $a && !-d $a)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2623 | \n {\n system (\"mkdir -p $a\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2624 | if ( !-d $a)\n {\n die \"Could not Create $a \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2625 | $FATAL\\n\";\n }\n }\n }\n\n return 1;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2626 | }\nsub clean_file_name\n {\n my $name=@_[0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2627 | ];\n\n $name=~s/[^A-Za-z1-9.-]/_/g;\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2628 | $name;\n }\n\nsub string2fasta_list\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2629 | my $string=@_[0];\n if (!-f $string && !-d \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2630 | $string && !($string=~/\\*/)){return ();}\n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2631 | f ($CIRCULAR{$string}){print STDERR \"ERROR: CIRCU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2632 | LAR REFERENCE $string $FATAL\\n\";exit ($EXIT_FA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2633 | ILURE);}\n $CIRCULAR{$string}=1;\n \n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2634 | my @l1=string2list($string);\n my @l2;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2635 | \n foreach my $f (@l1)\n {\n\n if (is\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2636 | fasta($f)){push (@l2, $f);}\n else \n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2637 | foreach my $string2 (file2list($f))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2638 | my @l3=string2fasta_list($string2);\n foreach m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2639 | y $string3 (@l3)\n {\n push (@l2, $str\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2640 | ing3);\n }\n }\n }\n }\n return shr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2641 | inklist(@l2);\n }\nsub shrinklist\n {\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2642 | @l=@_;\n my @l2;\n\n foreach my $e (@l)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2643 | if ($e)\n {\n print \"PUSH [$e]\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2644 | push (@l2,$e);\n }\n }\n return @l2;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2645 | }\nsub string2list\n {\n my $string=@_[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2646 | 0];\n my @list;\n\n if (-d $string \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2647 | ){@list= dir2list($string);}\n elsif ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2648 | string=~/\\*/){@list= glob ($string);}\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2649 | lsif (-f $string ){@list= ($string);}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2650 | \n return @list;\n }\nsub dir2list\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2651 | my $dir=shift;\n my @list;\n my $cdir=get\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2652 | cwd;\n my $dh =new DirHandle;\n \n opend\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2653 | ir ($dh, $dir);\n my @dlist=readdir($dh);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2654 | closedir($dh);\n \n foreach my $f (@dlist)\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2655 | {\n if ($f eq \".\" || $f eq \"..\"){;}\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2656 | se {push (@list, string2list(\"$dir/$f\"));}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2657 | }\n return @list;\n }\nsub file2list\n{\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2658 | y $file=shift;\n my @list;\n my $fh=new FileHand\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2659 | le;\n \n open ($fh, \"$file\");\n while (<$fh>)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2660 | \n {\n my $l=$_;\n chomp ($l);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2661 | if ($l){push(@list, $l);}\n }\n close ($fh);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2662 | n return @list;\n}\nsub file2string\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2663 | $f=@_[0];\n my ($string, $l);\n my $fh= new \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2664 | FileHandle;\n open ($fh,\"$f\");\n while (<$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2665 | fh>)\n {\n\n $l=$_;\n $string.=$l;\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2666 | close ($fh);\n $string=~s/\\r\\n/\\n/g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2667 | return $string;\n }\nsub isfasta\n {\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2668 | file=shift;\n my $fh=new FileHandle;\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2669 | open ($fh, \"$file\");\n while (<$fh>)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2670 | {\n my $l=$_;\n close ($fh);\n if ($l=~/^>/){retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2671 | n 1;}\n return 0;\n }\n }\n\n \n\n\n\nsub f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2672 | ilelist2h\n {\n my ($outdir,@list)=@_;\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2673 | $infile=\"$outdir/fullseq.fa\";\n my %h;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2674 | my %lu;\n my $fh=new FileHandle;\n \n ope\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2675 | n ($fh, \">$infile\");\n foreach my $f (@list)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2676 | n {\n if (!$QUIET){print \"! Process $f\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2677 | }\n my %s=read_fasta_seq($f);\n $f=abs2file ($f);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2678 | n\n $h{$f}{template_dir }=\"$outdir/$f.template_di\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2679 | r\";\n $h{$f}{template_file}{relative}=\"$f.R.temp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2680 | late_file\";\n $h{$f}{template_file}{absolute}=\"$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2681 | h{$f}{template_dir}/$h{$f}{template_file}{relative\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2682 | }\";\n \n foreach my $s (keys(%s))\n {\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2683 | $cname=$s{$s}{cname};\n my $name =$s{$s}{ nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2684 | e};\n \n my $seq =$s{$s}{seq};\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2685 | com =$s{$s}{com};\n \n #clean \n $seq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2686 | =~s/\\-//g;\n $seq=~s/\\.//g;\n \n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2687 | ($lu{$s}{seq} && $lu{$s}{seq} ne $seq)\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2688 | #print \"$lu{$s}{seq} ---> \\n$lu{$s}{source}/$s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2689 | \\n\";\n #print \"$seq ---> \\n$f/$s \\n\";\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2690 | n #die;\n print \"ERROR: two different sequences\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2691 | where provided for $name: [$seq/$f] and [$lu{$s}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2692 | seq}/$lu{$s}{source}]$FATAL]\\n\";\n close (F);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2693 | die;\n }\n else \n {\n $lu{$s}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2694 | seq }=$seq;\n $lu{$s}{source}=$f;\n \n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2695 | $fh \">$name\\n$seq\\n\";\n }\n $h{$f}{s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2696 | eq }{$name}=$seq;\n $h{$f}{name }{$name}=$nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2697 | e;\n $h{$f}{cname}{$name}=$cname;\n $h{$f}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2698 | {prf}{$name}{relative}=\"$cname.R.prf\";\n $h{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2699 | $f}{prf}{$name}{absolute}=\"$tmpdir/$h{$f}{prf}{$n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2700 | ame}{relative}\";\n \n $h{$f}{tprf}{$name}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2701 | {relative}=\"$cname.R.prf\";\n $h{$f}{tprf}{$n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2702 | ame}{absolute}=\"$h{$f}{template_dir}/$h{$f}{tprf}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2703 | {$name}{relative}\";\n \n $h{$f}{templates\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2704 | }.=\">$name _R_ $h{$f}{tprf}{$name}{relative}\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2705 | ;\n }\n }\n close ($fh);\n return $in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2706 | file, %h;\n }\nsub make_output_structure\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2707 | my ($outdir,%h)=@_;\n my $fh=new FileHandle;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2708 | n mymkdir ($outdir) || die \"Could not create $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2709 | outdir\\n\";\n \n foreach my $f (keys (%h))\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2710 | n {\n mymkdir ($h{$f}{template_dir}) or die \"1 \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2711 | Could not create $h{$f}{template_dir}\\n\";\n op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2712 | en ($fh, \">$h{$f}{template_file}{absolute}\") or\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2713 | die \"Could not open $h{$f}{template_file}{absolu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2714 | te}\";\n print $fh \"$h{$f}{templates}\";\n cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2715 | ose $fh;\n }\n return 1;\n }\nsub is_installed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2716 | \n {\n my $p=@_[0];\n my $r=0;\n my $cwh\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2717 | ich=\"$tmpdir/which\";\n if (-e $cwhich){unlink\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2718 | (\"$cwhich\");}\n \n system (\"which $p >$c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2719 | which 2>/dev/null\");\n my $w=file2string ($cwh\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2720 | ich);\n if (($w=~/mmseqs/)){$r=1;}\n return \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2721 | $r;\n }\n\n \nsub split_mmseqs\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2722 | ($qf,$cacheq,$updateq, $db,$cachedb, $updatedb, $s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2723 | ,$out,$split)=@_;\n \n my @dbl=splitfast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2724 | a($split,(string2fasta_list($db)));\n \n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2725 | if ( -e $out){unlink ($out)}\n\n\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2726 | foreach my $d (@dbl)\n {\n my $uid=getuid();\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2727 | my $lcacheo=\"$tmpdir/$uid/search/\";\n my $lca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2728 | chedb=(($d =~/$tmpdir/))?\"$tmpdir/$uid/db/\":$cac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2729 | hedb;\n my $lcacheq=$cacheq;\n mymkdir ($lcach\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2730 | eo, $lcachedb);\n \n print \"! Process Databas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2731 | e $d\\n\";\n \n my %db=file2db($d ,$lcachedb,$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2732 | updatedb);\n my %q =file2db($qf,$lcacheq ,$updat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2733 | eq );\n my $ld=abs2file ($d);\n\n if (! -d $lc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2734 | acheo){die \"NO CACHE\";}\n\n $q{search }=\"$lca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2735 | cheo/$ld\\.MMSEQSSEARCH\";\n $q{convert}=\"$lcac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2736 | heo/$ld\\.MMSEQSCONVERT\";\n \n system (\"mmseq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2737 | s search $q{db} $db{db} $q{search} $db{index} $s -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2738 | a $QUIET\");\n system (\"mmseqs convertalis $q{d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2739 | b} $db{db} $q{search} $q{convert} --format-output \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2740 | \\\"query,target,qaln,taln,qstart,qend,pident,qcov\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2741 | ,qlen\\\" $QUIET\");\n system (\"cat $q{convert}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2742 | >> $out\");\n \n }\n return $out;\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2743 | \nsub splitfasta \n {\n my ($split,@list)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2744 | =@_;\n my @fl;\n\n \n if (!$split){return @list;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2745 | \n \n foreach my $e (@list)\n {\n \n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2746 | $n=`grep -c \">\" $e`;\n \n if ($n>$split)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2747 | \n {\n my $uid=getuid();\n my $odir=\"$tmp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2748 | dir/$uid/\";\n mymkdir ($odir);\n system (\"t_co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2749 | ffee -other_pg seq_reformat -action +odir $odir +s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2750 | plit $e $split\");\n push (@fl,string2list (\"$od\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2751 | ir/*.split\"));\n }\n else\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2752 | push (@fl, $e);\n }\n }\n return @fl;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2753 | }\nsub getuid\n {\n my $n;\n my $l=3;\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2754 | y $string=randomstring ($l);\n while ($R{$string\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2755 | })\n {\n $n++;\n \n if ($n==\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2756 | 10){$l++;}\n $string=randomstring($l);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2757 | }\n $R{$string}=1;\n return $string;\n }\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2758 | nsub randomstring\n {\n my $l=shift;\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2759 | y @s;\n my @alp=split (//, 'abcdefghijklmnopqr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2760 | stuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_');\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2761 | \n my $lalp=@alp;\n \n for ( my $i=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2762 | 0; $i<$l; $i++)\n {\n $s[$i]=$alp[rand($lal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2763 | p)];\n }\n return join ('',@s);\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2764 | \n \nmy $program=\"T-COFFEE (Version_13.45.58\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2765 | .c355d11)\";\n","use Env;\nuse strict;\nuse FileHa\ | ~~~~~~~~~~~~~~~ ./perl_header_lib.h:2765:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2765 | .c355d11)\";\n","use Env;\nuse strict;\nuse FileHa\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2766 | ndle;\nuse Cwd;\nuse File::Path;\nuse Sys::Hostnam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2767 | e;\nuse File::Temp qw/ tempfile tempdir /;\nmy $QU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2768 | IET=\"2>/dev/null\";\nmy $VERBOSE=$ENV{VERBOSE_4_D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2769 | YNAMIC};\nour $EXIT_FAILURE=1;\nour $EXIT_SUCCESS=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2770 | 0;\nour $LAST_COM=\"\";\n\nmy %method;\nmy $method\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2771 | 2use;\nmy $treeF;\nmy $tree=$ENV{\"child_tree_4_TC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2772 | OFFEE\"};\nmy $thread=$ENV{\"child_thread_4_TCOFFE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2773 | E\"};\nmy $dynamic=$ENV{dynamic_config_4_TCOFFEE};\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2774 | \nmy $clean;\nmy $treeFlag;\nmy $blastFlag;\nmy $i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2775 | nfile;\nmy $outfile;\nmy $flush;\nmy $do_exit=0;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2776 | my ($h1, $h2);\nmy @tmpL;\nmy $tmpdir = File::Temp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2777 | ->newdir();\nmy $stderrF=\"$tmpdir/stderr\";\n$QUI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2778 | ET=\"2>$stderrF\";\nmy $CDIR=getcwd();\nmy $thread\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2779 | Flag4tc;\nmy $threadFlag4famsa;\nmy $threadFlag;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2780 | my $tcarg;\n\nmy $QUIET_ENV=$ENV{QUIET_ENV};\n\nif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2781 | ($QUIET_ENV==1){$QUIET=\"\";}\n\nfor ($a=0; $a<=$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2782 | #ARGV; $a++)\n {\n if ($ARGV[$a] eq \"-seq\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2783 | "){$infile=file2abs($ARGV[++$a]);}\n elsif ($AR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2784 | GV[$a] eq \"-outfile\"){$outfile=file2abs($ARGV[++\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2785 | $a], \"new\");}\n elsif ($ARGV[$a] eq \"-dynami\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2786 | c_config\"){\n $dynamic=file2abs($ARGV[++$a]);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2787 | \n if ($VERBOSE){print \"\\n![dynamic.pl] --- \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2788 | -dynamic_config flag if/else--- $dynamic\\n\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2789 | }\n \n elsif ($ARGV[$a] eq \"-tree\") {$tree\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2790 | =$ARGV[++$a];}\n elsif ($ARGV[$a] eq \"-method\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2791 | ") {$method2use=$ARGV[++$a];}\n elsif ($ARGV[$a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2792 | ] eq \"-verbose\"){$VERBOSE=1; $QUIET=\"\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2793 | elsif ($ARGV[$a] eq \"-clean\"){$clean=1;}\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2794 | elsif ($ARGV[$a] eq \"-thread\"){$thread=$ARGV[+\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2795 | +$a]}\n elsif ($ARGV[$a] eq \"-tcarg\") {$tcarg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2796 | =file2string($ARGV[++$a]);}\n else \n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2797 | add2tcenv($a++,@ARGV);\n }\n }\n\n\n\nif ($t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2798 | ree eq \"list\")\n {\n my $f=\"$tmpdir/f\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2799 | open (F, \">$f\");\n print F \">a\\nxxx\\n>b\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2800 | \\nyyyyy\\n\";\n close (F);\n print STDOUT (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2801 | \"**** Supported Guide tree modes:\\n\");\n my_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2802 | system (\"t_coffee -other_pg seq_reformat -in $f -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2803 | action +seq2dnd list \");\n $do_exit=1;\n }\ni\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2804 | f ($method2use eq \"list\")\n {\n my %ml;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2805 | my $listfile=\"$tmpdir/list\";\n \n $ml{tco\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2806 | ffee}=1;\n $ml{psicoffee}=1;\n $ml{accurate}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2807 | =1;\n $ml{'3dcoffee'}=1;\n $ml{expresso}=1;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2808 | n $ml{clustalo}=1;\n $ml{mafft}=1;\n $ml{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2809 | famsa}=1;\n print STDOUT (\"**** Supported MS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2810 | A mode:\\n\");\n my_system (\"t_coffee 2>/dev/n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2811 | ull | grep _msa > $listfile\");\n open (F, $lis\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2812 | tfile);\n while ()\n {\n my $l=$_;\n $l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2813 | =~/(.*_msa)\\s+(.*)/;\n my $m=$1;\n my $i=\"$2\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2814 | ";\n if ($m=~/mafftsparsescore/)\n {\n printf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2815 | STDOUT \"%-20s DOES NOT Support [-tree] -- $i\", \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2816 | $m;\n }\n elsif ($m=~/tcoffee/){;}\n elsif ($m=~\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2817 | /mafft/){;}\n elsif (!$ml{$m})\n {\n printf \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2818 | STDOUT \"%-20s DOES Support [-tree] -- $i\", $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2819 | m;\n }\n }\n $do_exit=1;\n }\nif ($do_e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2820 | xit){my_exit ($CDIR,$EXIT_SUCCESS);}\n\nmy $NSEQ=f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2821 | ile2nseq($infile);\n\n\nif ($NSEQ==0)\n {\n pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2822 | int \"ERROR - No sequences provided [FATAL:dynamic\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2823 | .pl]\\n\";\n exit ($EXIT_FAILURE);\n }\nif (!$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2824 | outfile)\n {\n ($h1,$outfile)=tempfile();\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2825 | push (@tmpL,$outfile);\n $flush=1;\n }\n\nif \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2826 | (!($method2use=~/dynamic/)){;}\nelse \n {\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2827 | (-e $dynamic)\n {\n if ($VERBOSE){prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2828 | t \"\\n![dynamic.pl] --- -dynamic_config FILE: \\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2829 | \";}\n my @dynamicFile;\n open (F, $dynamic\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2830 | );\n while ()\n {\n my $f=$_;\n if ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2831 | VERBOSE){print \"\\n![dynamic.pl] --- FILE content\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2832 | : $f\\n\";}\n ## $f=~/(\\W)+ (\\d)+/;\n @d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2833 | ynamicFile = split ' ', $f;\n if ($VERBOSE){pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2834 | int \"\\n![dynamic.pl] --- -dynamic_config --- $dy\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2835 | namicFile[0] :: $dynamicFile[1]\\n\";}\n $meth\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2836 | od{$dynamicFile[0]} = $dynamicFile[1];\n }\n clo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2837 | se(F);\n }\n else\n {\n $method{\"psi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2838 | coffee_msa\"}=50;\n $method{\"famsa_msa\"}=1000000\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2839 | 000;\n }\n \n foreach my $name (sort { \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2840 | $method{$a} <=> $method{$b} } keys %method) \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2841 | {\n if ($NSEQ<=$method{$name})\n {\n $meth\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2842 | od2use=$name;\n last;\n }\n }\n }\n\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2843 | nif ($tree)\n {\n ($h2,$treeF)=tempfile();\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2844 | my ($h2,$tmptree)=tempfile();\n push (@tmpL,$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2845 | treeF);\n if ( $tree eq \"default\"){$treeF=0;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2846 | \n elsif ( -e $tree)\n {\n my_system (\"cp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2847 | $tree $tmptree\");\n }\n elsif ($tree eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2848 | \"master\" || $tree eq \"main\" || $tree eq \"pare\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2849 | nt\")\n {\n if ($ENV{CHILD_TREEF_4_TCOFFEE} &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2850 | & -e $ENV{CHILD_TREEF_4_TCOFFEE})\n {\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2851 | ctree=$ENV{CHILD_TREEF_4_TCOFFEE};\n my_system\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2852 | (\"mv $ctree $tmptree\");\n }\n else\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2853 | my $master_tree=$ENV{CHILD_TREE_4_TCOFFEE};\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2854 | my_system (\"t_coffee -other_pg seq_reformat -in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2855 | $master_tree -in2 $infile -action +prune_tree -ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2856 | tput newick > $tmptree\");\n }\n }\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2857 | e \n {\n my_system (\"t_coffee -other_pg seq_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2858 | reformat -in $infile -action +seq2dnd $tree -outpu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2859 | t newick> $tmptree\");\n }\n \n if ($me\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2860 | thod2use=~/mafft/)\n {\n #print \"cp $tmptree\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2861 | /Users/cnotredame/.Trash/$$.tmptree\\n\";\n #syst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2862 | em (\"cp $tmptree /Users/cnotredame/.Trash/$$.tmpt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2863 | ree\");\n \n my_system (\"t_coffee -other_pg seq_r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2864 | eformat -in $tmptree -output mafftdndmatrix> $tree\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2865 | F\");\n }\n else\n {\n my_system (\"m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2866 | v $tmptree $treeF\");\n }\n }\nchdir ($tmpdi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2867 | r);\n\nmy $CL4tc=get_cl4tc();#will collect from en\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2868 | v every CLTCOFEE env variable\n\nif (!$treeF || $N\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2869 | SEQ<=2){$treeFlag=\"\";}\nelsif ( $method2use=~/co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2870 | ffee/ || $method2use=~/accurate/){$treeFlag=\"-use\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2871 | tree $treeF \";}\nelsif ( $method2use=~/clustalo/)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2872 | {$treeFlag=\"--guidetree-in=$treeF \";}\nelsif ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2873 | method2use=~/mafftsparsecore/){;}\nelsif ( $method\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2874 | 2use=~/mafft/){$treeFlag=\"--treein $treeF \";}\ne\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2875 | lsif ( $method2use=~/famsa/){$treeFlag=\"-gt impor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2876 | t $treeF \";}\n$CL4tc.=\" $treeFlag \";\n\n$thread\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2877 | Flag=($thread)?\"--thread $thread \":\"--thread 1 \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2878 | \";\n$threadFlag4tc=($thread)?\"-thread $thread \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2879 | :\"-thread 1 \";\n$threadFlag4famsa=($thread)?\"-t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2880 | $thread \":\"-t 1 \";\n$CL4tc.=\" $threadFlag4tc \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2881 | \";\n\nif ($VERBOSE){print \"\\n![dynamic.pl] --- \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2882 | CL4tc == $CL4tc\\n\";}\n\nmy $cmethod=$method2use;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2883 | \n$cmethod=~s/_pair/_msa/;\n$cmethod=~s/_msa//;\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2884 | nif ($VERBOSE){print \"\\n![dynamic.pl] --- cmetho\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2885 | d == $cmethod\\n\";}\n\nif ($cmethod eq \"tcoffee\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2886 | "|| $cmethod eq \"t_coffee\" )\n {\n my_system\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2887 | (\"t_coffee -seq $infile -outfile $outfile -outpu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2888 | t fasta_aln $CL4tc>/dev/null $QUIET\"); \n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2889 | nelsif ($cmethod=~/(.*coffee)/ || $cmethod=~/(accu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2890 | rate)/ || $cmethod=~/(expresso)/)\n {\n my $mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2891 | de=$1;\n my_system (\"t_coffee -mode $mode -se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2892 | q $infile -outfile $outfile -output fasta_aln $CL4\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2893 | tc >/dev/null $QUIET\"); \n }\nelsif ($cmetho\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2894 | d eq \"clustalo\")\n {\n my_system (\"clustalo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2895 | -i $infile $treeFlag -o $outfile --force $thread\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2896 | Flag $QUIET\");\n }\nelsif ($cmethod =~/sparsec\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2897 | ore/)\n {\n my_system (\"mafft-sparsecore.rb -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2898 | i $infile > $outfile $QUIET\");\n }\nelsif (($cme\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2899 | thod =~/mafft/))\n {\n my $mm;\n my $retree\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2900 | ;\n \n if ( $cmethod eq \"mafft\" || $cmetho\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2901 | d=~/\\-/ )\n {\n $mm=$cmethod;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2902 | elsif (($cmethod=~/mafft(.*)/))\n {\n $mm=\"m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2903 | afft-\".$1;\n }\n\n if ($mm =~/1/)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2904 | {\n $mm=~s/1/i/;\n $retree=\"--retree 1 \"\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2905 | };\n \n my_system (\"$mm --anysymbol $thread\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2906 | Flag $treeFlag $retree $infile > $outfile $QUIET\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2907 | );\n }\n\nelsif ($method2use=~/famsa/)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2908 | print \"\\n![dynamic.pl] --- FAMSA DEFAULT\\n\"; \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2909 | \n my_system (\"famsa $treeFlag $threadFlag4f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2910 | amsa $infile $outfile >/dev/null $QUIET\");\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2911 | elsif ($method2use=~/famsaUpgma/)\n {\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2912 | \"\\n![dynamic.pl] --- FAMSA Upgma\\n\";\n prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2913 | t \"\\n![dynamic.pl] --- Command: famsa -gt upgma \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2914 | $treeFlag $threadFlag4famsa $infile $outfile >/dev\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2915 | /null $QUIET\\n\";\n my_system (\"famsa -gt upg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2916 | ma $treeFlag $threadFlag4famsa $infile $outfile >/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2917 | dev/null $QUIET\");\n }\nelse\n {\n if ($tree\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2918 | F)\n {\n printf (STDERR \"WARNING: Method $me\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2919 | thod2use CANNOT use pre-sepecified guide tree [dyn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2920 | amic.pl]\\n\");\n }\n my_system (\"t_coffe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2921 | e -in $infile -method $method2use -outfile $outfil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2922 | e -output fasta_aln $tcarg -quiet $QUIET\");\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2923 | n\nif ( ! -e $outfile)\n {\n print \"ERROR - N\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2924 | o MSA computed - $LAST_COM -- [FATAL:dynamic.pl]\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2925 | n\";\n my_exit ($CDIR,$EXIT_FAILURE);\n }\nels\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2926 | if ( $flush)\n {\n open (F, $outfile);\n while\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2927 | (){print $_;}\n close (F);\n }\nforeach my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2928 | f (@tmpL){unlink($f);}\n\n\nif ($VERBOSE!=-1)\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2929 | \n open (F, \"$stderrF\");\n while ()\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2930 | {\n my $l=$_;\n if ( $VERBOSE || $l=~/WARNING/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2931 | || $l=~/ERROR/ || $l=~/INFORNATION/){print stderr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2932 | \"$l\";}\n }\n close (F);\n }\n\nmy_exit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2933 | ($CDIR,$EXIT_SUCCESS);\n\n\nsub file2nseq\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2934 | my ($f)=@_;\n my $n=`grep -c '>' $f`; \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2935 | \n return $n;\n }\nsub file2abs\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2936 | my ($f, $mode)=@_;\n \n if (!$f || $f=~/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2937 | ^\\//){return $f;}\n elsif (!-e $f && $mode e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2938 | q \"new\"){return \"$CDIR/$f\";}\n elsif (!-e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2939 | $f){return $f;}\n \n return \"$CDIR/$f\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2940 | \n }\nsub file2string \n {\n my ($f)=@_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2941 | ;\n my $s;\n\n open (F, $f) || return 0;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2942 | \n while ()\n {\n $s.=$_;\n }\n clo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2943 | se (F);\n chomp($s);\n return $s;\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2944 | \n\nsub get_psicl\n {\n my ($psitrim, $psi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2945 | trim_mode, $pisN);\n my $cl;\n \n if ($ENV{psitrim\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2946 | _tree_4_TCOFFEE}){$cl.=\" -psitrim_tree=\".$ENV{ps\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2947 | itrim_tree_4_TCOFFEE}.\" \";}\n if ($ENV{psitrim_m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2948 | ode_4_TCOFFEE}){$cl.=\" -psitrim_mode=\".$ENV{psit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2949 | rim_mode_4_TCOFFEE}.\" \";}\n if ($ENV{psitrim_4_T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2950 | COFFEE}){$cl.=\" -psitrim=\".$ENV{psitrim_4_TCOFFE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2951 | E}.\" \";}\n if ($ENV{psiJ_4_TCOFFEE}){$cl.=\" -ps\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2952 | iJ=\".$ENV{psiJ_4_TCOFFEE}.\" \";}\n \n\n return $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2953 | cl;\n }\n \nsub get_cl4tc\n {\n my $cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2954 | ;\n \n foreach my $arg (keys(%ENV))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2955 | if ($arg=~/(.*)_4_CLTCOFFEE/)\n {\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2956 | name=$1;\n my $val=$ENV{$arg};\n if (-e $val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2957 | ){$val=file2abs($val);}\n \n\n if ($val eq \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2958 | "FLAGSET\"){$val=\"\";}\n $cl.=\"-$name $val \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2959 | ;\n }\n }\n if ($VERBOSE){print \"\\n![dyna\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2960 | mic.pl] --- get_psicl --- $cl\\n\";}\n return $c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2961 | l;\n }\n\nsub add2tcenv\n {\n my ($p, @a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2962 | rgv)=@_;\n\n my $flag=$argv[$p];\n $fl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2963 | ag =~s/^-//;\n my $val =file2abs($argv[$p+1]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2964 | );\n my $envv=\"$flag\\_4_CLTCOFFEE\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2965 | $ENV{$envv}=$val;\n }\n \nsub my_exit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2966 | \n {\n my ($dir,$ec)=@_;\n my $a;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2967 | if ($VERBOSE)\n {\n print \"\\n![dynamic.pl]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2968 | --- CDIR: $CDIR\\n\";\n print \"\\n![dynamic.pl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2969 | ] --- Processed $NSEQ\\n\";\n print \"\\n![dynam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2970 | ic.pl] --- \";\n foreach my $arg (@ARGV)\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2971 | \n print \"$arg \";\n }\n \n print \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2972 | "\\n![dynamic.pl] --- EXIT: $ec ($EXIT_SUCCESS:suc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2973 | cess, $EXIT_FAILURE:failure)-- Verbose mode -- uns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2974 | et VERBOSE_4_DYNAMIC to turn verbose mode off\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2975 | ;\n }\n chdir ($dir);\n exit ($ec);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2976 | }\n \nsub my_system \n {\n my ($com)=@_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2977 | ;\n $LAST_COM=$com;\n \n if ($VERBOSE){pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2978 | int \"\\n![dynamic.pl] --- SysCall --- $com\\n\";}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2979 | \n \n system ($com);\n }\nmy $program=\"T-C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2980 | OFFEE (Version_13.45.58.c355d11)\";\n","use Env;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:2980:40: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2980 | OFFEE (Version_13.45.58.c355d11)\";\n","use Env;\n\ | ^~~~~~~~~~~~ 2981 | use FileHandle;\nuse Cwd;\nuse File::Path;\nuse Sy\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2982 | s::Hostname;\nmy $f = new FileHandle;\n\nopen ($f,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2983 | $ARGV[1]);\n$atom=$ARGV[0];\n\n$atom=~s/PRIME/\\'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2984 | /;\nwhile (<$f>)\n {\n my $l=$_;\n\n $l=~s/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2985 | $atom/CA /;\n \n \n $l=~s/ G /GLY /g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2986 | $l=~s/ C /CYS /g;\n $l=~s/ T /THR /g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2987 | $l=~s/ A /ALA /g;\n $l=~s/ U /THR /g;\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2988 | n $l=~s/ DG /GLY /g;\n $l=~s/ DC /CYS /g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2989 | $l=~s/ DT /THR /g;\n $l=~s/ DA /ALA /g;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2990 | $l=~s/ DU /THR /g;\n \n print $l;\n }\n\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2991 | n\n","*TC_METHOD_FORMAT_01\n******************gene\ | ~~~~ ./perl_header_lib.h:2991:6: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2991 | n\n","*TC_METHOD_FORMAT_01\n******************gene\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2992 | ric_method.tc_method*************\n*\n* Inco\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2993 | rporating new methods in T-Coffee\n* Cedric \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2994 | Notredame 26/08/08\n*\n***************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2995 | ****************************\n*This file is a meth\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2996 | od file\n*Copy it and adapt it to your need so tha\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2997 | t the method \n*you want to use can be incorporate\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2998 | d within T-Coffee\n*******************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2999 | ************************\n* USAGE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3000 | *\n*****************\ | ~~~~~~~~~~~~~~~~~~~~~ 3001 | **************************************\n*This file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3002 | is passed to t_coffee via -in:\n*\n* t_coffee -in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3003 | Mgeneric_method.method\n*\n* The method is passed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3004 | to the shell using the following\n*call:\n*\n*\n*Conventions:\n* \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3007 | \n*: no_name <=> Replaced \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3008 | with a space\n*:   <=> Replaced with a \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3009 | space\n*\n****************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3010 | ***************\n* ALN_MODE \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3011 | *\n**************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3012 | *****************************\n*pairwise ->all V\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3013 | s all (no self )[(n2-n)/2aln]\n*m_pairwise ->all V\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3014 | s all (no self)[n^2-n]^2\n*s_pairwise ->all Vs all\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3015 | (self): [n^2-n]/2 + n\n*multiple ->All the sequ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3016 | ences in one go\n*\nALN_MODE pairwise\n*\n*******\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3017 | ************************************************\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3018 | * OUT_MODE \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3019 | *\n*******************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3020 | ************\n* mode for the output:\n*External me\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3021 | thods: \n* aln -> alignmnent File (Fasta or Clusta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3022 | lW Format)\n* lib-> Lib file (TC_LIB_FORMAT_01)\n*\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3023 | Internal Methods:\n* fL -> Internal Function retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3024 | ning a List (Librairie)\n* fA -> Internal Function\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3025 | returning an Alignmnent\n*\nOUT_MODE aln\n******\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3026 | *************************************************\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3027 | n* SEQ_TYPE \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3028 | *\n******************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3029 | *************\n*G: Genomic, S: Sequence, P: PDB, R\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3030 | : Profile\n*Examples:\n*SEQTYPE S sequences agains\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3031 | t sequences (default)\n*SEQTYPE S_P sequence again\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3032 | st structure\n*SEQTYPE P_P structure against struc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3033 | ture\n*SEQTYPE PS mix of sequences and structure \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3034 | n*\nSEQ_TYPE S\n*\n\n*****************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3035 | **************************\n* COMMA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3036 | ND LINE *\n*EXECUTABLE PAR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3037 | AM1 IN_FLAG OUT_FLAG PARAM *\n********\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3038 | ***********************************************\n*\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3039 | **************************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3040 | ****\n* EXECUTABLE \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3041 | *\n*************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3042 | ******************\n*name of the executable\n*pass\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3043 | ed to the shell: executable\n* \nEXECUTABLE tc_gen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3044 | eric_method.pl\n*\n*******************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3045 | ************************\n* IN_FL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3046 | AG *\n****************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3047 | ***************************************\n*IN_FLAG\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3048 | n*flag indicating the name of the in coming sequen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3049 | ces\n*IN_FLAG S no_name ->no flag\n*IN_FLAG S &bns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3050 | p-in&bnsp -> \" -in \"\n*\nIN_FLAG -infile=\n*\n*\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3051 | **************************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3052 | ****\n* OUT_FLAG \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3053 | *\n*************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3054 | ******************\n*OUT_FLAG\n*flag indicating th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3055 | e name of the out-coming data\n*same conventions a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3056 | s IN_FLAG\n*OUT_FLAG S no_name ->no flag\n*if you \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3057 | want to redirect, pass the parameters via PARAM1\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3058 | *set OUT_FLAG to >\n*\nOUT_FLAG -outfile=\n*\n***\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3059 | **************************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3060 | **\n* PARAM_1 \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3061 | *\n*************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3062 | ******************\n*\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3063 | \n*Par\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3064 | ameters sent to the EXECUTABLE and specified *befo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3065 | re* IN_FLAG \n*If there is more than 1 PARAM line,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3066 | the lines are\n*concatenated\n*Command_line: @EP@\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3067 | PARAM@-gapopen%e10%s-gapext%e20\n* %s white space\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3068 | n* %e equal sign\n*\n*PARAM1 \n*\n*\n*\n**********\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3069 | *********************************************\n* \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3070 | PARAM_2 \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3071 | *\n********************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3072 | ***********\n*\n*Parameters\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3074 | sent to the EXECUTABLE and specified \n*after* IN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3075 | _FLAG and *before* OUT_FLAG\n*If there is more tha\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3076 | n 1 PARAM line, the lines are\n*concatenated\n*\n*\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3077 | PARAM1 \n*\n*\n***********************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3078 | ********************\n* PARAM \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3079 | *\n*********************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~ 3080 | **********************************\n*<\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3081 | PARAM1>\n*Parameters sent to the EXECUTABLE and\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3083 | specified *after* OUT_FLAG\n*If there is more tha\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3084 | n 1 PARAM line, the lines are\n*concatenated\n*\nP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3085 | ARAM -mode=seq_msa -method=clustalw2\nPARAM -OUT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3086 | ORDER=INPUT -NEWTREE=core -align -gapopen=-15\n*\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3087 | **************************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3088 | *****\n* END \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3089 | *\n************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3090 | *******************\n","*TC_METHOD_FORMAT_01\n****\ | ~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:3090:24: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3090 | *******************\n","*TC_METHOD_FORMAT_01\n****\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3091 | ***********clustalw_method.tc_method*********\nEXE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3092 | CUTABLE clustalw\nALN_MODE pairwise\nIN_FLAG -IN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3093 | FILE=\nOUT_FLAG -OUTFILE=\nOUT_MODE aln\nPARAM \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3094 | -gapopen=-10\nSEQ_TYPE S\n***********************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3095 | **************************\n","$VersionTag = \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:3095:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 3095 | **************************\n","$VersionTag = \ | ^~~~~~~~~~~~~~~~~~~~~ 3096 | \ | ~ 3097 | \ | ~ 3098 | 2.43;\nuse Env;\nuse File\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 3099 | Handle;\nuse Cwd;\nuse File::Path;\nuse Sys::Hostn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3100 | ame;\n\nour $PIDCHILD;\nour $ERROR_DONE;\nour @TMP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3101 | FILE_LIST;\nour $EXIT_FAILURE=1;\nour $EXIT_SUCCES\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3102 | S=0;\n\nour $REFDIR=getcwd;\nour $EXIT_SUCCESS=0;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3103 | nour $EXIT_FAILURE=1;\n\nour $PROGRAM=\"extract_fr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3104 | om_pdb\";\nour $CL=$PROGRAM;\n\nour $CLEAN_EXIT_ST\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3105 | ARTED;\nour $debug_lock=$ENV{\"DEBUG_LOCK\"};\nour\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3106 | $LOCKDIR=$ENV{\"LOCKDIR_4_TCOFFEE\"};\nif (!$LOCK\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3107 | DIR){$LOCKDIR=getcwd();}\nour $ERRORDIR=$ENV{\"ERR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3108 | ORDIR_4_TCOFFEE\"};\nour $ERRORFILE=$ENV{\"ERRORFI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3109 | LE_4_TCOFFEE\"};\n&set_lock ($$);\nif (isshellpid(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3110 | getppid())){lock4tc(getppid(), \"LLOCK\", \"LSET\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3111 | , \"$$\\n\");}\n \nour $SILENT=\" >/dev/null \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3112 | 2>/dev/null\";\nour $INTERNET=-1;\n\n\n\n\n\n\n\no\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3113 | ur $BLAST_MAX_NRUNS=2;\nour $EXIT_SUCCESS=0;\nour \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3114 | $EXIT_FAILURE=1;\nour $CONFIGURATION=-1;\nour $REF\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3115 | _EMAIL=\"\";\nour $PROGRAM=\"extract_from_pdb\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3116 | \n\nmy %onelett_prot=&fill_onelett_prot();\nmy %th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3117 | reelett_prot=&fill_threelett_prot();\nmy %onelett_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3118 | RNA=&fill_onelett_RNA();\nmy %threelett_RNA=&fill_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3119 | threelett_RNA();\nmy %onelett_DNA=&fill_onelett_DN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3120 | A();\nmy %threelett_DNA=&fill_threelett_DNA();\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3121 | \n\n\n\nmy %onelett = (\n'P' => \\%onelett_prot,\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3122 | 'D' => \\%onelett_DNA,\n'R' => \\%onelett_RNA\n);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3123 | n\n\nmy %threelett = (\n'P' => \\%threelett_prot,\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3124 | n'D' => \\%threelett_DNA,\n'R' => \\%threelett_RNA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3125 | \n);\n\n\n\n\n\n\n\nif($ARGV[0]=~/help/ ||$ARGV[0]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3126 | =~/man/ || $ARGV[0]=~/HELP/ || $ARGV[0]=~/Man/ || \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3127 | $ARGV[0] eq \"-h\" || $ARGV[0] eq \"-H\" )\n{die\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3128 | \"SYNTAX: extract_from_pdb Version $VersionTag \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3129 | Minimum: [extract_from_pdb file] \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3130 | OR \n [... | extract_from_pdb]\n Flags\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3131 | (Default setting on the first line)\n -version\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3132 | ...................[Returns the Version Number]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3133 | -force.....................[Forces the f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3134 | ile to be treated like a PDB file]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3135 | [Regenerates the header an\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3136 | d SEQRES fields]\n -force_name..........\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3137 | ......[Forces the file to be named after name]]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3138 | -infile.....file...........[Flag can be \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3139 | omited]\n [File must be pdb or fro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3140 | pgm]\n [File\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3141 | can also be compressed Z or gz]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3142 | [In the case of a compressed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3143 | file, you can omit the gz|Z extension]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3144 | -netfile...................[File will be fetch f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3145 | rom the net using wget]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3146 | [wget or curl must be installed]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3147 | [ftp://ftp.gnu.\ | ~~~~~~~~~~~~~~~~ 3148 | org/pub/gnu/wget/]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3149 | [http://curl.haxx.se/]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3150 | [Must also be used to retrieve\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3151 | the file from a local pdb copy (cf netaddress)]\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3152 | -netaddress................[Address use\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3153 | d for the retrieving the netfile]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3154 | [http://www.rcsb.org/pdb/cg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3155 | i/export.cgi/%%.pdb.gz?format=PDB&pdbId=%%&compres\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3156 | sion=gz]\n [h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3157 | ttp://www.expasy.ch/cgi-bin/get-pdb-entry.pl?%%]\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3158 | [local -> wi\ | ~~~~~~~~~~~~~ 3159 | ll get the file from pdb_dir (see pdb_dir)]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3160 | -netcompression............[Extension if the\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3161 | netfile comes compressed]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3162 | [gz]\n -pdb_dir.........\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3163 | ..........[address of the repertory where the pdb \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3164 | is installed]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3165 | [Supports standard ftp style installation OR ev\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3166 | ery stru in DIR]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3167 | [Give the ..../pdb/structure/ dir]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3168 | [If value omitted, t\ | ~~~~~~~~~~~~~~~~~~~~~ 3169 | he pg gets it from the env variable PDB_DIR]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3170 | -netcompression_pg.........[gunzip]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3171 | -is_pdb_name..........name.[Returns 1 if the \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3172 | name is a PDB ID, 0 otherwise]\n -model_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3173 | type...........name.[Returns the model type if val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3174 | id PDB name]\n -is_released_pdb_name nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3175 | e.[Returns 1 if the name corresponds to a released\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3176 | PDB file]\n -get_pdb_chains.....name...\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3177 | [Returns the list of chains corresponding to the e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3178 | ntry]\n -get_pdb_id.........name...[Retu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3179 | rns the PDB id within the provided pdb file]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3180 | -get_fugue_name.....name...[Turns a name in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3181 | to a name valid for fugue]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3182 | [Uses the netaddress to do so]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3183 | -chain......FIRST..........[Extract the first ch\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3184 | ain only]\n A B C..........[Extract Severa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3185 | l chains if needed]\n ALL............[Extr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3186 | act all the chains] \n -ligand.....ALL..\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3187 | ..........[Extract the ligands in the chain (HETAT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3188 | M)]\n ,[Extrac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3189 | t All the named lignds]\n -ligand_only.........\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3190 | ......[Extract only the ligands]\n -liga\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3191 | nd_list...............[Extract the list of ligands\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3192 | ]\n -coor..........[Coordinates of \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3193 | the fragment to extract]\n [Omit e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3194 | nd to include the Cter]\n -num........ab\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3195 | solute.......[absolute: relative to the seq] \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3196 | file...........[file: relative\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3197 | to file]\n -num_out....new............[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3198 | new: start 1->L]\n old......\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3199 | ......[old: keep the file coordinates]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3200 | -delete........[Delete from residue s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3201 | tart to residue end]\n -atom.......CA..........\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3202 | ...[Atoms to include, ALL for all of them]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3203 | CA O N.........[Indicate several atoms if neede\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3204 | d]\n -code.......3..............[Use the 1 lett\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3205 | er code or the 3 letters code]\n -mode.......ra\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3206 | w............[Output original pdb file]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3207 | pdb............[Output something tha\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3208 | t looks like pdb]\n fasta..........[Output\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3209 | the sequences in fasta format]\n simple..\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3210 | .......[Output a format easy to parse in C ]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3211 | -seq_field..ATOM...........[Field used to \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3212 | extract the sequence]\n SEQRES.........[Us\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3213 | e the complete sequence]\n -seq................\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3214 | .......[Equivalent to -mode fasta]\n -model...\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3215 | ...1..............[Chosen Model in an NMR file]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3216 | -nodiagnostic..............[Switches Err\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3217 | or Messages off]\n -debug...............\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3218 | ......[Sets the DEBUG ON]\n -no_remote_p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3219 | db_dir.........[Do not look for a remote file]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3220 | -cache_pdb.................[Cache Value, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3221 | default is $HOME/.t_coffee/cache, other values: NO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3222 | <=> No cache]\n\n Environement Variables\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3223 | These variables can be set from the enviro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3224 | nement\n Command line values with the co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3225 | rresponding flag superseed evironement value\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3226 | NO_REMOTE_PDB_DIR..........[Prevents the pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3227 | ogram from searching remote file: faster]\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3228 | PDB_DIR....................[Indicates where PD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3229 | B file must be fetched (localy)]\n\n PROBLEMS: pl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3230 | ease contact cedric.notredame\\@europe.com\\n\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3231 | exit ($EXIT_SUCCESS);\n}\n\n$np=0;\n$n_para=$#AR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3232 | GV;\n$model=1;\n$pdb_dir=$ENV{'PDB_DIR'};if ($pdb_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3233 | dir){$pdb_dir.=\"/\";}\n$debug=$ENV{'DEBUG_EXTRACT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3234 | _FROM_PDB'};\n\n$no_remote_pdb_dir=$ENV{NO_REMOTE_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3235 | PDB_DIR};\n$HOME=$ENV{'HOME'};\nif ( $ENV{CACHE_4_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3236 | TCOFFEE})\n{$cache=$ENV{CACHE_4_TCOFFEE};}\nelse\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3237 | {\n $cache=\"$HOME/.t_coffee/cache/\";\n}\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3238 | \n$netaddress=\"https://files.rcsb.org/download/%\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3239 | %.pdb.gz\";\n$netcompression_pg=\"gunzip\";\n$netc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3240 | ompression=\"gz\";\n\nforeach ($np=0; $np<=$n_para\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3241 | ; $np++)\n { \n $value=$ARGV[$np];\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3242 | \n if ($np==0 && !($value=~/^-.*/))\n { \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3243 | n $pdb_file= $ARGV[$np];\n }\n elsif ( !($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3244 | value=~/^-.*/))\n {\n print \"@ARGV\";\n die;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3245 | \n } \n \n elsif ($value eq \"-nodiagno\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3246 | stic\"){$nodiagnostic=1;}\n elsif ($value eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3247 | -force\")\n {\n $force_pdb=1;\n }\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3248 | lsif ($value eq \"-force_name\")\n {\n $force\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3249 | _name=$ARGV[++$np];\n $force_pdb=1;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3250 | \n elsif ($value eq \"-is_pdb_name\")\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3251 | n $pdb_file= $ARGV[++$np]; \n $is_pdb_name=1; \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3252 | } \n elsif ($value eq \"-is_released_pdb_na\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3253 | me\")\n {\n $pdb_file= $ARGV[++$np];\n \n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3254 | (!$pdb_file){print \"0\";exit (EXIT_SUCCESS);}\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3255 | is_released_pdb_name=1;\n }\n elsif ($valu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3256 | e eq \"-model_type\")\n {\n $pdb_file= $ARGV[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3257 | ++$np]; \n $model_type=1;\n }\n elsif ($va\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3258 | lue eq \"-debug\")\n{\n $debug=1;\n}\n elsif ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3259 | value eq \"-get_pdb_chains\")\n{\n $pdb_file= $ARG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3260 | V[++$np];\n $get_pdb_chains=1;\n}\n elsif ($val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3261 | ue eq \"-get_pdb_ligands\")\n{\n $get_pdb_ligands=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3262 | 1;\n}\n \n elsif ($value eq \"-get_pdb_id\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3263 | \n{\n $pdb_file= $ARGV[++$np];\n $get_pdb_id=1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3264 | \n}\n \n elsif ( $value eq \"-get_fugue_name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3265 | \")\n{\n $pdb_file= $ARGV[++$np];\n $get_fugue_nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3266 | e=1;\n}\n elsif ( $value eq \"-infile\")\n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3267 | $pdb_file= $ARGV[++$np];\n} \n elsif ($val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3268 | ue eq \"-netfile\")\n{\n $netfile=1;\n if ( !($ARG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3269 | V[$np+1]=~/^-.*/)){$pdb_file= $ARGV[++$np];}\n}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3270 | elsif ( $value eq \"-num\")\n{\n $number\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3271 | ing= $ARGV[++$np];\n}\n elsif ( $value eq \"-n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3272 | um_out\")\n{\n $numbering_out= $ARGV[++$np];\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3273 | \n}\n elsif ( $value eq \"-netaddress\")\n{\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3274 | netadress=$ARGV[++$np];\n}\n \n elsif ( $va\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3275 | lue eq \"-netcompression\")\n{\n $netcompression=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3276 | $ARGV[++$np];\n}\n elsif ( $value eq \"-pdb_dir\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3277 | \")\n{\n if ( !($ARGV[$np+1]=~/^-.*/)){$pdb_dir= \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3278 | \"$ARGV[++$np]/\";}\n}\n elsif ( $value eq \"-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3279 | no_remote_pdb_dir\")\n{\n $no_remote_pdb_dir=1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3280 | if ( !($ARGV[$np+1]=~/^-.*/)){$pdb_dir= \"$ARGV[++\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3281 | $np]/\";}\n}\n elsif ( $value eq \"-cache\")\n{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3282 | \n $cache=$ARGV[++$np];\n}\n \n elsif ($valu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3283 | e eq \"-netcompression_pg\")\n{\n $netcompressio\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3284 | n_pg=$ARGV[++$np];\n}\n elsif ($value eq \"-mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3285 | de\")\n{\n $MODE=$ARGV[++$np];\n}\n\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3286 | if ( $value eq \"-model\")\n{\n $model= $ARG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3287 | V[++$np];\n}\n elsif ($value eq \"-seq_field\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3288 | )\n{\n $seq_field= $ARGV[++$np];\n} \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3289 | elsif ($value eq \"-coor\" )\n{\n $start= $A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3290 | RGV[++$np];\n \n if (($ARGV[$np+1] eq \"\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3291 | ||($ARGV[$np+1]=~/^-.*/)){$end=\"*\";} \n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3292 | lse {$end= $ARGV[++$np];} \n $coor_set\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3293 | =1;\n}\n elsif ($value eq \"-delete\" )\n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3294 | $delete_start= $ARGV[++$np];\n $delete_e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3295 | nd= $ARGV[++$np];\n $delete_set=1;\n}\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3296 | lsif ($value eq \"-code\")\n{\n $code= $ARG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3297 | V[++$np];\n}\n elsif ($value eq \"-no_hetatm\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3298 | )\n{\n $no_hetatm=1;\n}\n elsif ($value e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3299 | q \"-chain\")\n{\n while (!($ARGV[$np+1] eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3300 | \"\") &&!($ARGV[$np+1]=~/^-.*/))\n{\n ++$np;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3301 | \n @c_chain=(@chain, $ARGV[$np]);\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3302 | hc_chain{$ARGV[$np]}=$#c_chain+1;\n} \n}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3303 | \n elsif ($value eq \"-atom\")\n{\n\n whi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3304 | le (!($ARGV[$np+1] eq \"\") && !($ARGV[$np+1]=~/^-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3305 | .*/))\n{\n ++$np;\n $atom[$n_atom++]= \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3306 | $ARGV[$np];\n $atom_list{$ARGV[$np]}=1; \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3307 | \n} \n \n}\n elsif ( $value eq \"-unfo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3308 | ld\")\n{\n $unfold=1;\n}\n elsif ($value eq \"-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3309 | seq\" ||$value eq \"-fasta\" )\n{\n $MODE=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3310 | fasta\";\n}\n elsif ( $value eq \"-version\")\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3311 | {\n print STDERR \"\\nextract_from_pdb: Version $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3312 | VersionTag\\n\";\n &myexit ($EXIT_SUCCESS);\n}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3313 | elsif ( $value eq \"-ligand\")\n{\n while (!($AR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3314 | GV[$np+1] eq \"\") && !($ARGV[$np+1]=~/^-.*/))\n{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3315 | n ++$np;\n $ligand=1;\n $ligand_list{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3316 | ARGV[$np]}=1; \n} \n $hc_chain{'LIGAND'}=1;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3317 | n}\n elsif ( $value eq \"-ligand_only\")\n{\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3318 | ligand_only=1;\n}\n}\nif ( $debug)\n{\n print S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3319 | TDERR \"\\n[DEBUG:extract_from_pdb] NO_REMOTE_PDB_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3320 | DIR: $no_remote_pdb_dir\\n\";\n print STDERR \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3321 | \\n[DEBUG:extract_from_pdb] PDB_DIR: $pdb_dir\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3322 | ;\n}\n\n\nif ( $is_pdb_name)\n {\n if (&remote\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3323 | _is_pdb_name($pdb_file))\n {\n print \"1\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3324 | }\n else\n {\n print \"0\";\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3325 | \n exit ($EXIT_SUCCESS);\n }\n\nif ( $is_relea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3326 | sed_pdb_name)\n {\n \n if (&is_released($pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3327 | b_file))\n {\n print \"1\";\n }\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3328 | e\n {\n print \"0\";\n }\n exit ($EXI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3329 | T_SUCCESS);\n }\nif ($model_type)\n {\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3330 | printf \"%s\", &pdb2model_type($pdb_file);\n ex\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3331 | it ($EXIT_SUCCESS);\n \n }\n \n\nif (!$forc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3332 | e_name)\n{\n $pdb_file=~/([^\\/]*)$/;\n $for\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3333 | ce_name=$1;\n}\n\n$local_pdb_file=$pdb_file;\n\nif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3334 | ( $debug){print STDERR \"\\n[DEBUG: extract_from_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3335 | pdb] Scan For $local_pdb_file\\n\";}\n\n$mem=$no_r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3336 | emote_pdb_dir;\n$no_remote_pdb_dir=1;\n$tmp_pdb_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3337 | le=get_pdb_file ($local_pdb_file);\n\nif ( !-e $tm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3338 | p_pdb_file || $tmp_pdb_file eq \"\")\n {\n $lo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3339 | cal_pdb_file=$pdb_file;\n ($local_pdb_file, $su\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3340 | ffix_chain)=&pdb_name2name_and_chain($local_pdb_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3341 | le);\n\n if ($local_pdb_file)\n {\n if ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3342 | debug){print STDERR \"\\nSplit $pdb_file into $loc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3343 | al_pdb_file and $suffix_chain \\n\";}\n $tmp_pdb_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3344 | ile=get_pdb_file ($local_pdb_file);\n if ( $tmp_pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3345 | b_file ne \"\")\n {\n @c_chain=();\n @c_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3346 | chain=($suffix_chain);\n %hc_chain=();\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3347 | hc_chain{$suffix_chain}=1;\n }\n }\n }\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3348 | $no_remote_pdb_dir=$mem;\nif ($no_remote_pdb_dir==\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3349 | 0)\n {\n \n if ( !-e $tmp_pdb_file || $tmp_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3350 | pdb_file eq \"\")\n {\n \n $local_pdb_file=$p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3351 | db_file;\n ($local_pdb_file, $suffix_chain)=&pdb_n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3352 | ame2name_and_chain($local_pdb_file);\n if ($local_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3353 | pdb_file)\n {\n \n if ( $debug){print ST\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3354 | DERR \"\\nSplit $pdb_file into $local_pdb_file and\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3355 | $suffix_chain \\n\";}\n \n $tmp_pdb_file=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3356 | get_pdb_file ($local_pdb_file); \n \n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3357 | f ( $tmp_pdb_file ne \"\")\n {\n @c_chain=(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3358 | );\n @c_chain=($suffix_chain);\n %hc_chain=();\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3359 | $hc_chain{$suffix_chain}=1;\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3360 | }\n }\n\nif ( $debug){print STDERR \"\\n$pdb_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3361 | ile copied into ##$tmp_pdb_file##\\n\";}\n\nif ( !\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3362 | -e $tmp_pdb_file || $tmp_pdb_file eq \"\")\n{\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3363 | ($is_pdb_name)\n{\n print \"0\\n\"; exit ($EX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3364 | IT_SUCCESS);\n}\n else\n{\n \n print \"\\nEXT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3365 | RACT_FROM_PDB: NO RESULT for $pdb_file\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3366 | &myexit ($EXIT_SUCCESS); \n}\n}\n\n\n\n\n%molecul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3367 | e_type=&pdbfile2chaintype($tmp_pdb_file);\nif ( $d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3368 | ebug){print STDERR \"\\n\\tSequence Type determine\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3369 | d\\n\";}\n\n$pdb_id=&get_pdb_id ($tmp_pdb_file);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3370 | if ( $debug){print STDERR \"\\n\\tID: $pdb_id (for\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3371 | $tmp_pdb_file)\\n\";}\n\nif ( $pdb_id eq \"\"){$p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3372 | db_id=$force_name;}\n\n@f_chain=&get_chain_list ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3373 | tmp_pdb_file);\nif ( $debug){print STDERR \"\\n\\t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3374 | Chain_list:@f_chain\\n\";}\n\nif ( $get_pdb_chains\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3375 | )\n{\n print \"@f_chain\\n\";\n &myexit ($EX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3376 | IT_SUCCESS);\n}\nif ( $get_pdb_ligands)\n{\n %c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3377 | omplete_ligand_list=&get_ligand_list ($tmp_pdb_fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3378 | e);\n print $complete_ligand_list{\"result\"};\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3379 | n &myexit ($EXIT_SUCCESS);\n}\n\nelsif ( $get_p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3380 | db_id ||$get_fugue_name )\n{\n if (@c_chain \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3381 | && $c_chain[0] eq \"FIRST\"){$pdb_id=$pdb_id.$f_ch\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3382 | ain[0];}\n elsif (@c_chain && $c_chain[0] ne \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3383 | \"){$pdb_id=$pdb_id.$c_chain[0];}\n \n prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3384 | t \"$pdb_id\\n\";\n &myexit ($EXIT_SUCCESS);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3385 | \n}\nelsif ( $is_pdb_name)\n{\n printf \"1\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3386 | n\";\n &myexit ($EXIT_SUCCESS);\n}\n\n\n\n$stru\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3387 | cture_file=vtmpnam();\n\nif ( $debug){print STDERR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3388 | \"\\n\\tCheck_point #1: $tmp_pdb_file $structure\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3389 | _file\\n\";}\n\n$INFILE=vfopen (\"$tmp_pdb_file\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3390 | \"r\"); \nmy $TMP=vfopen (\"$structure_file\", \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3391 | w\");\n\n$print_model=1;\n$in_model=0;\n\nif ( $de\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3392 | bug){print STDERR \"\\n\\tCheck_point #2\\n\";}\nw\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3393 | hile ( <$INFILE>)\n{\n my $first_model=0;\n $lin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3394 | e=$_;\n\n if ( !$first_model && ($line =~/^MODEL\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3395 | \s*(\\d*)/))\n {\n $first_model=$1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3396 | if ($model==1){$model=$first_model;}\n }\n \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3397 | if (($line =~/^MODEL\\s*(\\d*)/))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3398 | if ($1==$model)\n {\n $in_model=1;\n $print_mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3399 | del=1;\n $is_nmr=1;\n }\n elsif ( $in_model\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3400 | ==0)\n {\n $print_model=0;\n }\n elsif ( $i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3401 | n_model==1)\n {\n last;\n }\n }\n if ($print\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3402 | _model){print $TMP $line;} \n}\nclose ($TMP);\ncl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3403 | ose ($INFILE);\n\nif ( $debug){print STDERR \"\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3404 | \tCheck_point #3\\n\";} \n\n if ($numbering eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3405 | \"){$numbering=\"absolute\";}\n if ($numbering_ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3406 | t eq \"\"){$numbering_out=\"new\";}\n\n if ( $del\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3407 | ete_set && $coor_set) {die \"-delete and -coor are\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3408 | mutually exclusive, sorry\\n\";}\n if ( $n_atom=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3409 | =0){$atom_list[$n_atom++]=\"ALL\";$atom_list{$atom\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3410 | _list[0]}=1;}\n if ( $seq_field eq \"\"){$seq_fie\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3411 | ld=\"ATOM\";}\n \n if ( $MODE eq \"\"){$MODE=\"p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3412 | db\";}\n elsif ( $MODE eq \"simple\" && $code==0)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3413 | {$code=1;}\n\n if ( $code==0){$code=3;}\n\n\nif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3414 | $f_chain[0] eq \" \"){$hc_chain{' '}=1;$c_chain[0]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3415 | =\" \";}\nelsif (!@c_chain){$hc_chain{FIRST}=1;$c_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3416 | chain[0]=\"FIRST\";}#make sure the first chain is \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3417 | taken by default\n\nif ($hc_chain{ALL}) \n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3418 | @c_chain=@f_chain;\n foreach $e (@c_chain\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3419 | ){$hc_chain{$e}=1;}\n}\nelsif($hc_chain{FIRST})\n{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3420 | \n @c_chain=($f_chain[0]);\n $hc_chain{$f_chain[0]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3421 | }=1;\n}\n\n\n$MAIN_HOM_CODE=&get_main_hom_code ($s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3422 | tructure_file);\n$INFILE=vfopen ($structure_file, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3423 | \"r\");\n\n\nif ( $MODE eq \"raw_pdb\" || $MODE eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3424 | \"raw\")\n{\n while (<$INFILE>)\n{ print \"$_\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3425 | ";}\n close ( $INFILE);\n &myexit($EXIT_SUCC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3426 | ESS);\n} \nif ( $MODE eq \"raw4fugue\" )\n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3427 | while (<$INFILE>)\n{ \n $l=$_;\n if ($l=~/^SEQRE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3428 | S/)\n{\n \n $c= substr($l,11,1);\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3429 | ($hc_chain {$c}){print \"$l\";}\n}\n elsif ( $l=~/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3430 | ^ATOM/)\n{\n $c=substr($l,21,1);\n if ($hc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3431 | _chain {$c}){print \"$l\";}\n}\n}\n close ( $IN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3432 | FILE);\n &myexit($EXIT_SUCCESS);\n} \n\nif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3433 | $MODE eq \"pdb\")\n{\n\n $read_header=0;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3434 | while (<$INFILE>) \n{\n $line=$_;\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3435 | ($line =~ /^HEADER/){print \"$line\";$read_header=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3436 | 1;}\n}\n close ($INFILE);\n\n if (!$read_hea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3437 | der)\n{\n print \"HEADER UNKNOWN \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3438 | 00-JAN-00 $force_name\\n\";\n}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3439 | \n\n $INFILE=vfopen ($structure_file, \"r\");\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3440 | \n print \"COMPND 1 CHAIN:\";\n $last=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3441 | pop(@c_chain);\n foreach $c ( @c_chain){ print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3442 | \" $c,\";}\n if ( $last eq \" \"){print \" NULL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3443 | ;\\n\";}\n else \n{\n print \" $last;\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3444 | ;\n}\n @c_chain=(@c_chain, $last);\n \n p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3445 | rint \"REMARK Output of the program extract_from_p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3446 | db (Version $VersionTag)\\n\";\n print \"REMARK\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3447 | Legal PDB format not Guaranteed\\n\";\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3448 | \"REMARK This format is not meant to be used in pl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3449 | ace of the PDB format\\n\";\n print \"REMARK Th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3450 | e header refers to the original entry\\n\";\n p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3451 | rint \"REMARK The sequence from the original file \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3452 | has been taken in the field: $seq_field\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3453 | print \"REMARK extract_from_pdb, 2001, 2002, 2003\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3454 | , 2004, 2005 2006 (c) CNRS and Cedric Notredame\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3455 | \"; \n if ( $coor_set)\n{\n print \"REM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3456 | ARK Partial chain: Start $start End $end\\n\";\n}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3457 | n if ( $is_nmr)\n{\n print \"REMARK NMR s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3458 | tructure: MODEL $model\\n\";\n}\n \n if ( $n_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3459 | atom!=0)\n{\n print \"REMARK Contains Coordi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3460 | nates of: \";\n foreach $a (@atom){print \"$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3461 | a \";}\n print \"\\n\";\n} \n}\n\n\n\n\nmy \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3462 | $residue_index = -999;\nmy $old_c = \"TemporaryCha\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3463 | in\";\n\nwhile (<$INFILE>) \n{\n $line=$_;\n\n\n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3464 | f ($line =~ /^SEQRES/)\n{\n\n @field=/(\\S*)\\s*/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3465 | g;\n\n $c= substr($_,11,1);\n\n \n $l=$#field;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3466 | n for ($a=4; $a<$#field ;)\n{\n if (!$onelett{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3467 | molecule_type{$c}}->{$field[$a]})\n{\n splice @\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3468 | field, $a, 1;\n}\n else \n{\n $a++;\n}\n}\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3469 | n if ( $c ne $in_chain)\n{\n $pdb_chain_list[$n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3470 | _pdb_chains]=$c;\n $pdb_chain_len [$n_pdb_chains\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3471 | ]=$len;\n $in_chain=$c;\n $n_pdb_chains++;\n}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3472 | n \n for ( $a=4; $a<$#field;$a++)\n{\n $complet\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3473 | e_seq{$c}[$complete_seq_len{$c}++]=$field[$a];\n}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3474 | n}\n elsif ( $line=~/^ATOM/ || ($line=~/^HETATM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3475 | / && &is_aa(substr($line,17,3),substr($line,21,1))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3476 | && !$no_hetatm))\n{\n\n \n $RAW_AT_ID=$AT_ID=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3477 | substr($line,12,4);\n $RES_ID=&is_aa(substr($line,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3478 | 17,3),substr($line,21,1));\n $CHAIN=substr($line,2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3479 | 1,1);\n\n $RES_NO=substr($line,22,4);\n $HOM_CO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3480 | DE=substr ($line, 26, 1);\n $TEMP=substr($line,60,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3481 | 6);\n \n $TEMP=~s/\\s//g;\n $AT_ID=~s/\\s//\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3482 | g;\n $RES_ID=~s/\\s//g;\n $RES_NO=~s/\\s//g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3483 | ;\n \n if ( $HOM_CODE ne $MAIN_HOM_CODE){next;}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3484 | elsif ( $already_read2{$CHAIN}{$RES_ID}{$AT_ID}{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3485 | RES_NO}){next;}\n else{$already_read2{$CHAIN}{$RES\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3486 | _ID}{$AT_ID}{$RES_NO}=1;}\n \n \n if ($coor_set &&\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3487 | $numbering eq \"file\" && $residue_index ne $RES_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3488 | NO)\n{\n \n if ( $RES_NO<=$start){$real_st\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3489 | art{$CHAIN}++;}\n if ( $RES_NO<=$end){$real_en\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3490 | d{$CHAIN}++;}\n}\n elsif ($numbering eq \"absolute\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3491 | \")\n{\n $real_start{$CHAIN}=$start;\n $re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3492 | al_end{$CHAIN}=$end;\n}\n\n $KEY=\"ALL\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3493 | if ( $CHAIN ne $in_atom_chain)\n{\n \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3494 | $pdb_atom_chain_list[$n_pdb_atom_chains]=$c;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3495 | $pdb_atom_chain_len [$n_pdb_atom_chains]=$len;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3496 | $in_atom_chain=$c;\n $n_pdb_atom_chains++;\n}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3497 | \n \n if ( $residue_index ne $RES_NO)\n{\n $r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3498 | esidue_index = $RES_NO;\n $atom_seq{$CHAIN}[$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3499 | atom_seq_len{$CHAIN}++]=$RES_ID;;\n}\n}\n\n}\nclos\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3500 | e ($INFILE);\n\n\n\n\n\n\n$INFILE=vfopen ($structu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3501 | re_file, \"r\");\nforeach $c (@c_chain)\n{\n\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3502 | ( $seq_field eq \"SEQRES\"){@pdb_seq=@{$complet\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3503 | e_seq{$c}};}\n elsif ( $seq_field eq \"ATOM\") {@\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3504 | pdb_seq=@{$atom_seq{$c}};}\n \n\n $full_length=$l=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3505 | $#pdb_seq+1;\n \n if ( $real_end{$c}==\"*\"){$rea\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3506 | l_end{$c}=$full_length;}\n if ( $coor_set)\n{ \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3507 | n\n if ( $real_end{$c} < $l){splice @pdb_seq, $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3508 | real_end{$c}, $l;}\n if ( $real_start{$c} < $l)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3509 | {splice @pdb_seq, 0, $real_start{$c}-1;} \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3510 | $l=$#pdb_seq;\n}\n\n elsif ( $delete_set)\n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3511 | splice @pdb_seq, $delete_start, $delete_end-$de\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3512 | lete_start+1;\n $l=$#pdb_seq;\n}\n \n $new_fast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3513 | a_name=\"$pdb_id$c\";\n if ( $coor_set)\n{\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3514 | ( $n_pdb_chains==0){$new_fasta_name=\"$new_fasta_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3515 | name$c\";}\n $new_fasta_name= $new_fasta_name.\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3516 | "\\_$start\\_$end\";\n}\n \n if ( $MODE eq \"pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3517 | b\")\n{\n $nl=1;\n $n=0;\n \n foreach \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3518 | $res ( @pdb_seq)\n {\n if ( !$n)\n {\n \n pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3519 | intf \"SEQRES %3d %1s %4d \", $nl,$c, $l;\n $nl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3520 | ++;\n }\n $res=~s/\\s//g;\n \n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3521 | $code==1){ printf \"%3s \",$onelett{$molecule_type\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3522 | {$c}}->{$res};}\n elsif ($code==3){ printf \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3523 | "%3s \",$res};\n \n $n++; \n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3524 | ( $n==13){$n=0;print \"\\n\";}\n}\n if ( $n!=0){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3525 | print \"\\n\"; $n=0;}\n}\n elsif ( $MODE eq \"simp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3526 | le\")\n{\n print \"# SIMPLE_PDB_FORMAT\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3527 | if ( $new_fasta_name eq \" \"){$new_fasta_name=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3528 | dummy_name\";}\n print \">$new_fasta_name\\n\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3529 | n\n foreach $res ( @pdb_seq)\n{\n print \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3530 | $onelett{$molecule_type{$c}}->{$res}\";\n}\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3531 | nt \"\\n\";\n}\n elsif ( $MODE eq \"fasta\")\n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3532 | $n=0;\n print \">$new_fasta_name\\n\";\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3533 | foreach $res ( @pdb_seq)\n{\n\n print \"$o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3534 | nelett{$molecule_type{$c}}->{$res}\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3535 | $n++;\n if ( $n==60){print \"\\n\"; $n=0;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3536 | }\n}\n print \"\\n\"; \n}\n}\n\nif ( $MODE eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3537 | fasta\")\n{\n &myexit($EXIT_SUCCESS);\n \n}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3538 | \n \n $charcount=0;\n $inchain=\"BEGIN\";\n $n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3539 | =0;\n while (<$INFILE>) \n{\n $line=$_;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3540 | \n if ($line =~/^ATOM/ || ($line=~/^HETATM/))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3541 | \n{\n $line_header=\"UNKNWN\";\n $RES_ID=substr($l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3542 | ine,17,3);\n $chain = substr($line,21,1);\n\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3543 | $line =~/^ATOM/)\n{\n $line_header=\"ATOM\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3544 | $RES_ID=(&is_aa($RES_ID,$chain))?&is_aa($RES_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3545 | ID,$chain):$RES_ID;\n}\n elsif ($line=~/^HETATM/ &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3546 | & ($ligand_list {$RES_ID} ||$ligand_list {'ALL'} |\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3547 | | !&is_aa($RES_ID,$chain)))\n{\n $line_header=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3548 | \"HETATM\";\n}\n elsif ($line=~/^HETATM/ && (&is_a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3549 | a($RES_ID,$chain) && !$no_hetatm))\n{\n $line_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3550 | header=\"ATOM\";\n $RES_ID=&is_aa($RES_ID,$cha\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3551 | in);\n}\n else\n{\n next;\n}\n\n \n\n $X=subst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3552 | r($line,30,8); \n $Y=substr($line,38,8);\n $Z=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3553 | substr($line,46,8);\n $TEMP=substr($line,60,6);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3554 | \n $RAW_AT_ID=$AT_ID=substr($line,12,4);\n $CHAIN=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3555 | substr($line,21,1);\n $RES_NO=substr($line,22,4);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3556 | n $HOM_CODE=substr ($line, 26, 1);\n \n $X=~s/\\s/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3557 | /g;\n $Y=~s/\\s//g;\n $Z=~s/\\s//g;\n $TEMP=~s/\\s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3558 | //g;\n \n $AT_ID=~s/\\s//g;\n $RES_ID=~s/\\s//g;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3559 | $RES_NO=~s/\\s//g;\n\n \n if ( $HOM_CODE ne $MAIN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3560 | _HOM_CODE){next;}\n elsif ( $already_read{$CHAIN}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3561 | $RES_ID}{$AT_ID}{$RES_NO}){next;}\n else{$already_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3562 | read{$CHAIN}{$RES_ID}{$AT_ID}{$RES_NO}=1;}\n \n $K\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3563 | EY=\"ALL\";\n\n if ( $RES_NO ==0){$start_at_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3564 | zero=1;}\n\n $RES_NO+=$start_at_zero; \n \n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3565 | ( $current_chain ne $CHAIN)\n{\n $current_chai\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3566 | n=$CHAIN;\n $pos=$current_residue=0;\n $of\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3567 | fset=($coor_set)?($real_start{$CHAIN}-1):0;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3568 | if ( $seq_field eq \"SEQRES\"){@ref_seq=@{$comp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3569 | lete_seq{$CHAIN}};}\n elsif ( $seq_field eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3570 | ATOM\") {@ref_seq=@{$atom_seq{$CHAIN}};}\n}\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3571 | if ($current_residue != $RES_NO)\n{\n $current\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3572 | _residue=$RES_NO;\n if ( $seq_field eq \"SE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3573 | QRES\"){$pos=$current_residue;}\n elsif ( $seq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3574 | _field eq \"ATOM\"){$pos++;}\n}\n \n \n if ($n_ato\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3575 | m==0 || $atom_list{$AT_ID}==1 || $atom_list{$KEY}=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3576 | =1)\n{ \n \n $do_it=(!@c_chain || $hc_cha\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3577 | in{$CHAIN} ||$hc_chain{'LIGAND'} );\n \n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3578 | do_it= ($do_it==1) && ($coor_set==0 ||($pos>=$real\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3579 | _start{$CHAIN} && $pos<=$real_end{$CHAIN}));\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3580 | $do_it= ($do_it==1) && ($delete_set==0 || $pos<$d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3581 | elete_start ||$pos>$delete_end );\n if ($ligan\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3582 | d==0 && $line_header eq \"HETATM\" ){$do_it=0;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3583 | if ($ligand_only==1 && $line_header eq \"ATOM\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3584 | " ){$do_it=0;}\n if ($ligand==1 && $line_heade\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3585 | r eq \"HETATM\" && $ligand_list{$RES_ID}==0 && $li\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3586 | gand_list{\"ALL\"}==0){$do_it=0;} \n \n \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3587 | if ( $do_it)\n{\n $n++;\n $out_pos=$pos;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3588 | \n if ( $delete_set)\n{\n if ( $out_pos\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3589 | < $delete_start){;}\n else {$offset=$delete_end\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3590 | -$delete_start;}\n} \n \n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3591 | $numbering_out eq \"new\"){$out_pos-=$offset;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3592 | elsif ( $numbering_out eq \"old\"){$out_pos\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3593 | =$RES_NO;}\n \n \n \n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3594 | f ( $code==1){$RES_ID=$onelett{$molecule_type{$c}}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3595 | ->{$RES_ID};}\n \n if ($unfold)\n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3596 | $unfolded_x+=5;\n $X=$unfolded_x;\n $Y=0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3597 | ;\n $Z=0;\n $float=1;\n}\n else\n{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3598 | n $float=3;\n}\n\n if ( $MODE eq \"pdb\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3599 | ")\n{\n printf \"%-6s%5d %-4s %3s %s%4d %8.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3600 | 3f%8.3f%8.3f 1.00 %5.2f\\n\",$line_header, $n, $R\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3601 | AW_AT_ID,$RES_ID,$CHAIN,$out_pos, $X, $Y, $Z,$TEMP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3602 | ; \n}\n elsif ( $MODE eq \"simple\")\n{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3603 | n if ( $RES_ID eq \"\"){$RES_ID=\"X\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3604 | printf \"%-6s %5s %s %2s %4d %8.3f %8.3f %8.3f\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3605 | \n\",$line_header, $AT_ID, $RES_ID,($CHAIN eq\"\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3606 | || $CHAIN eq \" \")?\"A\":$CHAIN,$out_pos, $X, $Y,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3607 | $Z,$TEMP;\n}\n\n}\n}\n}\n}\nprint \"\\n\";\nclose\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3608 | ($INFILE);\n\n\nif ( $error ne \"\") \n{$error=$er\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3609 | ror.\"\\nDiagnostic: SEQRES and the residues in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3610 | ATOM are probably Incompatible\\n\";\n $error=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3611 | $error. \"Recomendation: Rerun with '-fix 1' in o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3612 | rder to ignore the SEQRES sequences\\n\";\n}\nif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3613 | !$nodiagnostic){print STDERR $error;}\n&myexit ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3614 | EXIT_SUCCESS);\n\nsub get_pdb_entry_type_file\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3615 | \n my $cache_file=\"$cache/pdb_entry_type.txt\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3616 | ;\n my $env_file = $ENV{\"PDB_ENTRY_TYPE_FILE\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3617 | "};\n my $pdb_file =\"$ENV{'PDB_DIR'}/derived_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3618 | data/pdb_entry_type.txt\";\n \n \n if (-z\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3619 | $cache_file){unlink ($cache_file);}#will get upda\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3620 | ted\n if (-z $env_file){$env_file=\"\";} #ca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3621 | nnot update\n if (-z $pdb_file){$pdb_file=\"\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3622 | } #cannot update\n \n if (-e $env_file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3623 | ){return $env_file;} #env wins: user decides\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3624 | elsif (-e $pdb_file){return $pdb_file;} #local dat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3625 | abase wins: network file may be out of sync\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3626 | lsif ($no_remote_pdb_dir==1)\n {\n if (-e $ca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3627 | che_file){return $cache_file;}\n else\n {add_war\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3628 | ning($$,$$,\"PDB_ENTRY_TYPE_FILE must be set to th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3629 | e location of /derived_data/pdb_entry_type.tx\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3630 | t when using NO_REMOTE_PDB_DIR=1\");\n return \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3631 | "\";\n }\n }\n else #update can only take\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3632 | place if the file lives in cache\n {\n my $n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3633 | ew_file;\n if (!-e $cache_file || (-M $cache_file)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3634 | >1)\n {\n $new_file=vtmpnam();\n &url2fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3635 | le(\"ftp://ftp.wwpdb.org/pub/pdb/derived_data/pdb_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3636 | entry_type.txt\", $new_file);\n if ( !-z $new_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3637 | file){system (\"mv $new_file $cache_file\"); unlin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3638 | k ($new_file); $new_file=$cache_file;}\n else \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3639 | {unlink($new_file);}\n }\n else\n {\n $new\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3640 | _file=$cache_file;\n }\n \n if (!-e $cache_file \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3641 | && !-e $new_file)\n {\n add_warning($$,$$,\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3642 | Could not download ftp://ftp.wwpdb.org/pub/pdb/der\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3643 | ived_data/pdb_entry_type.txt\");\n return \"\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3644 | ;\n }\n elsif (-e $cache_file && !-e $new_file)\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3645 | n {\n my $m=(-M $cache_file);\n add_warn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3646 | ing($$,$$,\"Could not update file ftp://ftp.wwpdb.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3647 | org/pub/pdb/derived_data/pdb_entry_type.txt. Older\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3648 | Version [$cache_file]($m Month(s) old) will be us\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3649 | ed instead\");\n return $cache_file;\n }\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3650 | lse\n {\n return $new_file;\n }\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3651 | }\n\n\n\nsub get_unrealeased_file\n {\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3652 | cache_file=\"$cache/unreleased_entries.json.gz\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3653 | n my $env_file = $ENV{\"PDB_UNREALEASED_FILE\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3654 | };\n my $pdb_file =\"$ENV{'PDB_DIR'}/derived_d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3655 | ata/unreleased_entries.json.gz\";\n \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3656 | if ($env_file eq \"NO\" || $env_file eq \"No\" ||\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3657 | $env_file eq \"no\" || $env_file eq \"0\"){return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3658 | \"NO\";}\n\n if (-z $cache_file){unlink ($cach\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3659 | e_file);}#will get updated\n if (-z $env_file){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3660 | unlink($env_file);} #will update\n if (-z $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3661 | pdb_file){$pdb_file=\"\";} #cannot update\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3662 | \n \n if (-e $env_file){return $env_file;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3663 | } #env wins: user decides\n elsif (-e $pdb_file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3664 | ){return $pdb_file;} #local database wins: network\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3665 | file may be out of sync\n elsif ($no_remote_pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3666 | b_dir==1) \n {\n if (-e $cache_file){r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3667 | eturn $cache_file;}\n elsif ( $env_file && ! -e $e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3668 | nv_file)\n {\n &url2file(\"https://ftp.rcsb.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3669 | org/pub/pdb/holdings/unreleased_entries.json.gz\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3670 | $env_file);\n if ( -e $env_file && !-z $env_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3671 | le){return $env_file;}\n }\n else\n {\n ad\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3672 | d_warning($$,$$,\"UNREALEASED_FILE must be set to \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3673 | the location of your unrealeased.xml file as downl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3674 | oaded from https://ftp.rcsb.org/pub/pdb/holdings/u\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3675 | nreleased_entries.json.gz when using NO_REMOTE_PDB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3676 | _DIR=1\");\n return \"\";\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3677 | else #update can only take place if the file lives\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3678 | in cache\n {\n my $new_file=vtmpnam ();\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3679 | (!-e $cache_file || (-M $cache_file)>1)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3680 | &url2file(\"https://ftp.rcsb.org/pub/pdb/holdin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3681 | gs/unreleased_entries.json.gz\",$new_file);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3682 | if ( !-z $new_file){system (\"mv $new_file $cache_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3683 | file\"); unlink ($new_file); $new_file=$cache_file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3684 | ;}\n else {unlink($new_file);}\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3685 | {\n $new_file=$cache_file;\n }\n \n if (!-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3686 | e $cache_file && !-e $new_file)\n {\n add_wa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3687 | rning($$,$$,\"Could not download https://ftp.rcsb.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3688 | org/pub/pdb/holdings/unreleased_entries.json.gz\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3689 | ;\n return \"\";\n }\n elsif (-e $cache_file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3690 | && !-e $new_file)\n {\n my $m=(-M $cache_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3691 | le);\n add_warning($$,$$,\"Could not update fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3692 | le https://ftp.rcsb.org/pub/pdb/holdings/unrelease\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3693 | d_entries.json.gz. Older Version [$cache_file]($m \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3694 | Month(s) ) will be used\");\n return $cache_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3695 | le;\n }\n else\n {\n return $new_file;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3696 | }\n }\n }\n\nsub is_released \n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3697 | ($r);\n my $in=@_[0];\n my $name=&remote_is_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3698 | pdb_name ($in);\n my $hold=&remote_is_on_hold($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3699 | in);\n \n $r=($name && !$hold)?1:0;\n ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3700 | urn $r;\n }\n\nsub remote_is_pdb_name \n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3701 | my $in=@_[0];\n my ($pdb);\n my ($value,$val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3702 | ue1,$value2);\n my $max=2;\n \n \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3703 | my $ref_file=&get_pdb_entry_type_file();\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3704 | n if ( $in=~/[^\\w\\d\\:\\_]/){return 0;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3705 | elsif (!-e $ref_file)\n {\n add_warning ($$,$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3706 | $,\"Cannot find pdb_entry_type.txt; $in is assume\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3707 | d to be valid; add ftp://ftp.wwpdb.org/pub/pdb/der\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3708 | ived_data/pdb_entry_type.txt in $cache to automati\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3709 | cally check name status\");\n return 1;\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3710 | else\n {\n $pdb=substr ($in,0, 4);\n chom\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3711 | p(($value1=`grep -c $pdb $ref_file`));\n $pdb=lc($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3712 | pdb);\n chomp(($value2=`grep -c $pdb $ref_file`));\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3713 | \n $value=($value1 || $value2)?1:0;\n $value=($val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3714 | ue>0)?1:0;\n \n return $value;\n }\n }\n\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3715 | \nsub pdb2model_type\n{\n my $in=@_[0];\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3716 | ($ref_file, $pdb);\n my ($value, $ret);\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3717 | if ( $in=~/[^\\w\\d\\:\\_]/){return 0;}\n $ref\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3718 | _file=&get_pdb_entry_type_file();\n if (!-e $re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3719 | f_file)\n {\n add_warning ($$,$$,\"Cannot fin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3720 | d pdb_entry_type.txt; $in is assumed to be diffra\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3721 | ction; add ftp://ftp.wwpdb.org/pub/pdb/derived_dat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3722 | a/pdb_entry_type.txt in $cache to check name statu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3723 | s\");\n return \"diffraction\";\n }\n else\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3724 | \n {\n $pdb=substr ($in,0, 4);\n $pdb=lc($pdb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3725 | );\n \n chomp(($value=`grep $pdb $ref_file`));\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3726 | n $value=~/^\\S+\\s+\\S+\\s+(\\S+)/;\n $ret=$1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3727 | if ( $ret eq\"\"){return \"UNKNOWN\";}\n \n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3728 | $ret;\n }\n }\nsub remote_is_on_hold\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3729 | my $in=@_[0];\n my ($ref_file, $pdb);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3730 | my ($value1, $value2,$value);\n \n\n\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3731 | $ref_file=&get_unrealeased_file();\n if ($ref_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3732 | file eq \"NO\"){return 0;}\n\n\n if ($no_remote\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3733 | _pdb==1){return 0;}\n if ( $in=~/[^\\w\\d\\:\\_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3734 | ]/){return 0;}\n \n $ref_file=&get_unrealeas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3735 | ed_file();\n if (!-e $ref_file)\n {\n add_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3736 | warning ($$,$$,\"Cannot find https://ftp.rcsb.org/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3737 | pub/pdb/holdings/unreleased_entries.json.gz; $in \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3738 | is assumed to be released;\");\n return 1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3739 | }\n \n $pdb=substr ($in,0, 4);\n chomp(($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3740 | value1=`grep -c $pdb $ref_file`));\n $pdb=lc($p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3741 | db);\n chomp(($value2=`grep -c $pdb $ref_file`)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3742 | );\n $value=($value1 || $value2)?1:0;\n $val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3743 | ue=($value>0)?1:0;\n return $value;\n }\n\nsub\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3744 | is_pdb_file\n {\n my @arg=@_;\n \n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3745 | !-e $arg[0]){return 0;}\n \n $F=vfopen ($ar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3746 | g[0], \"r\");\n while ( <$F>)\n {\n if (/^\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3747 | HEADER/)\n {\n close $F;\n return 1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3748 | }\n elsif ( /^SEQRES/)\n {\n close $F;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3749 | return 1;\n }\n elsif ( /^ATOM/)\n {\n c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3750 | lose $F;\n return 1;\n }\n }\n retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3751 | n 0;\n }\nsub get_pdb_id\n{\n my $header_file=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3752 | @_[0];\n my $id;\n my $F= new FileHandle;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3753 | \n \n $F=vfopen (\"$header_file\", \"r\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3754 | ;\n\n while ( <$F>)\n {\n if ( /HEADER/)\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3755 | {\n if ($debug){print \"$_\";}\n $id=su\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3756 | bstr($_,62,4 );\n return $id;\n }\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3757 | close ($F);\n \n return \"\";\n}\n\nsub \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3758 | get_ligand_list\n{\n my $pdb_file=@_[0];\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3759 | y $chain;\n my $ligand;\n my %complete_ligan\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3760 | d_list;\n \n\n $F=vfopen ($pdb_file, \"r\");\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3761 | \n while ( <$F>)\n{\n if ( /^HETATM/)\n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3762 | $line=$_;\n $chain=substr($line,21,1);\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3763 | ligand=substr($line,17,3);\n \n if (!$comp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3764 | lete_ligand_list{$chain}{$ligand})\n{\n \n $comp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3765 | lete_ligand_list{\"result\"}.=\"CHAIN $chain LIGAN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3766 | D $ligand\\n\";\n $complete_ligand_list{$chain}{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3767 | ligand}=1;\n}\n}\n}\n close ($F);\n return %\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3768 | complete_ligand_list;\n}\n\nsub get_chain_list \n{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3769 | \n my $header_file;\n my @chain_list;\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3770 | y @list;\n my $n_chains;\n my %chain_hasch;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3771 | n my $pdb_file=@_[0];\n my $c;\n my %hasc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3772 | h;\n my $chain;\n \n \n $F=vfopen ($pdb_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3773 | file, \"r\");\n while ( <$F>)\n{\n\n\n if (/SEQ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3774 | RES\\s+\\d+\\s+(\\S+)/)\n {\n $chain = subst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3775 | r($_,11,1);$chain=~s/\\s//g;if ( $chain eq \"\"){$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3776 | chain=\" \";}\n if (!$hasch{$chain}){$hasch{$c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3777 | hain}=1;push @chain_list, $chain;}\n }\n if (/^A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3778 | TOM/ || /^HETATM/)\n {\n $chain = substr($_,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3779 | 21,1); $chain=~s/\\s//g;if ( $chain eq \"\"){$chai\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3780 | n=\" \";}\n if (!$hasch{$chain}){$hasch{$chain\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3781 | }=1;push @chain_list, $chain;}\n }\n }\n\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3782 | nclose ($F);\nif (!@chain_list)\n {\n @chain_l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3783 | ist=(\"A\");\n }\n\n\nreturn @chain_list;\n}\n\ns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3784 | ub token_is_in_list\n{\n\n my @list=@_;\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3785 | $a;\n \n for ($a=1; $a<=$#list; $a++)\n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3786 | if ( $list[$a] eq $list[0]){return $a;}\n}\n}\n\ns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3787 | ub pdb_name2name_and_chain \n{\n my $pdb_file=@\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3788 | _[0];\n my $pdb_file_in;\n my @array;\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3789 | y $chain;\n my $c;\n\n $pdb_file_in=$pdb_fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3790 | e;\n\n $pdb_file=~/^(.{4})/;$pdb_id=$1;\n @a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3791 | rray=($pdb_file=~/([\\w])/g);\n \n \n $chain=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3792 | uc ($array[4]);\n $chain=($chain eq \"\")?\"FIR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3793 | ST\":$chain;\n \n return ( $pdb_id, $chain);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3794 | \n\n if ( $#array==3){return ($pdb_id, \"FIRST\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3795 | ");}\n elsif ( $#array<4){ return ($pdb_id, \"\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3796 | ");}\n else {return ( $pdb_id, $chain);}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3797 | \n \n \n}\nsub get_main_hom_code \n{\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3798 | y $pdb_file=@_[0];\n my %hom, $n, $best, $best_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3799 | h;\n open (F, $pdb_file);\n while ()\n{\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3800 | if ( $_=~/^ATOM/)\n{\n $h=substr ($_,26, 1);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3801 | n $n=++$hom{$h};\n if ($n>$best)\n{\n $be\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3802 | st=$n;\n $best_h=$h;\n}\n}\n}\n close (F);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3803 | return $best_h;\n}\n\n\nsub get_pdb_file \n{\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3804 | my ($pdb_file_in)=(@_);\n my $result;\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3805 | @letter;\n my @chain;\n my $v;\n my $pdb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3806 | _file=$pdb_file_in;\n\n $pdb_file=($pdb_file_in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3807 | =~/\\S+_S_(\\S+)/)?$1:$pdb_file_in;\n \n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3808 | ($no_remote_pdb_dir==0)\n {\n $no_remote_pdb_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3809 | dir=1;\n $result=get_pdb_file3 ($pdb_file);\n $no_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3810 | remote_pdb_dir=0;\n if ( $result){return $result;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3811 | \n else\n {\n \n lc ($pdb_file);\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3812 | result=get_pdb_file3($pdb_file);\n return $re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3813 | sult;\n }\n }\n else\n {\n return g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3814 | et_pdb_file3 ($pdb_file);\n }\n \n }\n\ns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3815 | ub get_pdb_file3 \n{\n my $pdb_file_in=@_[0];\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3816 | my $result;\n my @letter;\n my @chain;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3817 | my $lcfile;\n my $ucfile;\n my $pdb_file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3818 | =$pdb_file_in;\n \n $lcfile=lc $pdb_file;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3819 | $ucfile=uc $pdb_file;\n\n if ( ($result=get_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3820 | pdb_file2 ($pdb_file))){return $result;}\n \n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3821 | if ($lcfile ne $pdb_file && ($result=get_pdb_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3822 | ile2 ($lcfile))){return $result;}\n if ($ucfile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3823 | ne $pdb_file && ($result=get_pdb_file2 ($ucfile))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3824 | ){return $result;}\n \n \n \n return \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3825 | \";\n}\nsub get_pdb_file2\n{\n my $pdb_file=@_[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3826 | 0];\n my $return_value;\n \n $return_valu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3827 | e=\"\";\n \n if ( ($result=get_pdb_file1 ($p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3828 | db_file))){$return_value=$result;}\n elsif ( !(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3829 | $pdb_file=~/\\.pdb/) && !($pdb_file=~/\\.PDB/))\n{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3830 | \n if ( ($result=get_pdb_file1 (\"$pdb_file.pdb\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3831 | )){$return_value=$result;}\n elsif ( ($result=get_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3832 | pdb_file1 (\"$pdb_file.PDB\"))){$return_value=$res\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3833 | ult;}\n\n elsif ( ($result=get_pdb_file1 (\"pdb$pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3834 | b_file.pdb\"))){$return_value=$result;} \n elsif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3835 | ($result=get_pdb_file1 (\"pdb$pdb_file.PDB\"))){$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3836 | return_value=$result;}\n elsif ( ($result=get_pdb_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3837 | file1 (\"PDB$pdb_file.PDB\"))){$return_value=$resu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3838 | lt;}\n elsif ( ($result=get_pdb_file1 (\"PDB$pdb_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3839 | ile.pdb\"))){$return_value=$result;}\n \n \n elsif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3840 | ( ($result=get_pdb_file1 (\"$pdb_file.ent\"))){$r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3841 | eturn_value=$result;}\n elsif ( ($result=get_pdb_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3842 | ile1 (\"pdb$pdb_file.ent\"))){$return_value=$resul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3843 | t;}\n elsif ( ($result=get_pdb_file1 (\"PDB$pdb_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3844 | le.ent\"))){$return_value=$result;}\n\n elsif ( ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3845 | result=get_pdb_file1 (\"$pdb_file.ENT\"))){$return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3846 | _value=$result;}\n elsif ( ($result=get_pdb_file1 \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3847 | (\"pdb$pdb_file.ENT\"))){$return_value=$result;}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3848 | elsif ( ($result=get_pdb_file1 (\"PDB$pdb_file.EN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3849 | T\"))){$return_value=$result;}\n \n \n \n}\n re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3850 | turn $return_value;\n}\n \nsub get_pdb_file1\n{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3851 | \n my ($pdb_file)=(@_);\n my $return_value;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3852 | n \n\n $return_value=\"\";\n if ( ($resul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3853 | t=get_pdb_file0 ($pdb_file))){$return_value=$resul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3854 | t;}\n elsif ( ($result=get_pdb_file0 (\"$pdb_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3855 | le.Z\"))){$return_value=$result;}\n elsif ( ($r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3856 | esult=get_pdb_file0 (\"$pdb_file.gz\"))){$return_v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3857 | alue=$result;}\n elsif ( ($result=get_pdb_file0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3858 | (\"$pdb_file.GZ\"))){$return_value=$result;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3859 | return $return_value;\n}\nsub get_pdb_file0 \n{ \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3860 | n my ($pdb_file, $attempt)=(@_);\n my $pdb_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3861 | ile=@_[0];\n my $tmp_pdb_file; \n my $ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3862 | urn_value;\n\n if ( !$attempt){$attempt=1;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3863 | \n $local_pdb_file=\"$pdb_file\";\n if ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3864 | local_pdb_file eq \"\")\n{\n $tmp_pdb_file=vtmpnam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3865 | ();\n open F, \">$tmp_pdb_file\";\n \n while (){print F \"$_\";}\n close (F);\n \n if (-e $tm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3867 | p_pdb_file && &is_pdb_file ( $local_pdb_file))\n{r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3868 | eturn $tmp_pdb_file;}\n}\n\n $local_pdb_file=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3869 | $pdb_file\";\n &debug_print (\"\\nTry access lo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3870 | cal file: $local_pdb_file\");\n \n $local_pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3871 | b_file=&check_pdb_file4compression ($local_pdb_fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3872 | e);\n if ( -e $local_pdb_file && (&is_pdb_file \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3873 | ($local_pdb_file) || $force_pdb))\n{\n &debug_prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3874 | t ( \"\\n\\tIs in Current Dir\");\n $tmp_pdb_file=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3875 | vtmpnam();\n `cp $local_pdb_file $tmp_pdb_file`;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3876 | return $tmp_pdb_file;\n}\n else\n{\n &debug_pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3877 | int (\"\\n\\tFile Not in Current Dir\");\n}\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3878 | if ($pdb_file=~/^pdb/||$pdb_file=~/^PDB/){$pdb_di\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3879 | v=substr ($pdb_file, 4, 2);}\n else\n{\n $pdb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3880 | _div=substr ($pdb_file, 1, 2);\n}\n $local_pdb_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3881 | file=\"$pdb_dir/$pdb_div/$pdb_file\";\n $local_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3882 | pdb_file=&check_pdb_file4compression ( $local_pdb_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3883 | file);\n &debug_print (\"\\nTry access file Fro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3884 | m PDB_DIR: $local_pdb_file\");\n if ($pdb_dir &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3885 | & -e $local_pdb_file && &is_pdb_file ($local_pdb_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3886 | ile))\n{\n &debug_print ( \"\\n\\tIs in Local PDB \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3887 | DIR\");\n $tmp_pdb_file=vtmpnam();\n `cp $local_pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3888 | b_file $tmp_pdb_file`;\n return $tmp_pdb_file;\n}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3889 | n\n $local_pdb_file=\"$pdb_dir/$pdb_file\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3890 | $local_pdb_file=&check_pdb_file4compression ( $l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3891 | ocal_pdb_file);\n &debug_print (\"\\nTry access\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3892 | file From PDB_DIR: local_pdb_file\");\n if ($p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3893 | db_dir && -e $local_pdb_file && &is_pdb_file ($loc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3894 | al_pdb_file))\n{\n &debug_print ( \"\\n\\tIs in Lo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3895 | cal PDB DIR\");\n $tmp_pdb_file=vtmpnam();\n `cp $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3896 | local_pdb_file $tmp_pdb_file`;\n return $tmp_pdb_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3897 | ile;\n}\n\n $local_pdb_file=\"$pdb_dir$pdb_file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3898 | \";\n $local_pdb_file=&check_pdb_file4compressi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3899 | on ( $local_pdb_file);\n &debug_print (\"\\nTry\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3900 | access file From PDB_DIR: $local_pdb_file\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3901 | if ($pdb_dir && -e $local_pdb_file && &is_pdb_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3902 | le ($local_pdb_file))\n{\n &debug_print ( \"\\n\\t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3903 | Is in Local PDB DIR\");\n $tmp_pdb_file=vtmpnam();\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3904 | \n `cp $local_pdb_file $tmp_pdb_file`;\n return $t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3905 | mp_pdb_file;\n}\n else\n{&debug_print ( \"\\n\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3906 | tNot In Local Pdb Dir\");}\n\n if ($cache ne \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3907 | NO\" && $cache ne \"no\")\n{\n\n $local_pdb_file=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3908 | "$cache/$pdb_file\";\n $local_pdb_file=&check_pdb_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3909 | file4compression ( $local_pdb_file);\n &debug_prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3910 | t(\"\\nTry access file From Cache: $local_pdb_file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3911 | \");\n if (-e $local_pdb_file && &is_pdb_file ($lo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3912 | cal_pdb_file))\n{\n &debug_print ( \"\\n\\tIs \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3913 | in T-Coffee Cache\");\n $tmp_pdb_file=vtmpnam(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3914 | );\n `cp $local_pdb_file $tmp_pdb_file`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3915 | return $tmp_pdb_file;\n}\n else{&debug_print ( \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3916 | \\n\\tNot in Cache Dir\");}\n}\n\nif (!$no_remote_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3917 | pdb_dir) \n {\n my $value=&is_released ($pdb_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3918 | ile);\n my $return_value=\"\";\n if ($value=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3919 | =1)\n {\n \n &debug_print (\"\\n*************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3920 | ****************************************\\nTry Rem\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3921 | ote Access for $pdb_file\");\n $tmp_pdb_file=vtmpn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3922 | am();\n $netcommand=$netaddress;\n $netcommand=~s/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3923 | %%/$pdb_file/g;\n &url2file(\"$netcommand\", \"$tm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3924 | p_pdb_file.$netcompression\");\n &debug_print(\"\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3925 | nREMOTE: $netcommand\\n\");\n \n $compressed_tmp_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3926 | ile_name=\"$tmp_pdb_file.$netcompression\";\n \n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3927 | f ($netcompression && -B $compressed_tmp_file_name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3928 | && $attempt<5)\n {\n my $r;\n &debug_pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3929 | int (\"\\n\\tFile Found Remotely\");\n if (($r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3930 | =safe_system ( \"$netcompression_pg $compressed_tm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3931 | p_file_name\")!=$EXIT_SUCCESS) && $attempts<5)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3932 | {\n &debug_print (\"\\n\\tProper Download Fa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3933 | iled Try again\");\n unlink $compressed_tmp_file_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3934 | name;\n print \"\\nFailed to Download $compressed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3935 | _tmp_file_name. New Attempt $attempt/5\\n\";\n re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3936 | turn &get_pdb_file0($pdb_file, $attempt+1);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3937 | }\n elsif ($r== $EXIT_SUCCESS)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3938 | &debug_print (\"\\n\\tProper Download Succeeded \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3939 | );\n $return_value=$tmp_pdb_file;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3940 | else\n {\n &debug_print (\"\\n\\tProper Do\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3941 | wnload Failed \");\n &debug_print (\"\\nFile Not \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3942 | Found Remotely\");\n unlink $compressed_tmp_file_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3943 | name;\n }\n }\n else\n {\n\n &debug_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3944 | print (\"\\nFile Not Found Remotely\");\n unli\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3945 | nk $compressed_tmp_file_name;\n }\n #Update cach\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3946 | e if required\n if ($cache ne \"no\" && $cache ne \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3947 | \"update\" && -e $return_value)\n {\n `cp $r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3948 | eturn_value $cache/$pdb_file.pdb`;\n #`t_coffe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3949 | e -other_pg clean_cache.pl -file $pdb_file.pdb -di\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3950 | r $cache`;\n }\n }\n &debug_print (\"\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3951 | Remote Download Finished\");\n return $return_v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3952 | alue;\n }\nreturn \"\";\n}\n\nsub check_pdb_file4\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3953 | compression \n{\n my $file=@_[0];\n my $tmp;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3954 | \n my $r;\n \n $tmp=&vtmpnam();\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3955 | -e $tmp){unlink $tmp;}\n \n $file=~s/\\/\\//\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3956 | \\//g;\n if (-B $file && ($file=~/\\.Z/)) {`\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3957 | cp $file $tmp.Z`;`rm $tmp`;`gunzip $tmp.Z $SILENT`\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3958 | ;$r=$tmp;}\n elsif (-B $file && ($file=~/\\.gz/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3959 | )){`cp $file $tmp.gz`;`gunzip $tmp.gz $SILENT`;ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3960 | urn $r=$tmp;}\n elsif (-B $file ){`cp $file $tm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3961 | p.gz`;`gunzip $tmp.gz $SILENT`;$r=$tmp;}\n elsi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3962 | f ( -e $file ) {$r= $file;}\n elsif ( -e \"$fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3963 | e.gz\" ){ `cp $file.gz $tmp.gz`;`gunzip $tmp.g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3964 | z $SILENT`;$r=$tmp;} \n elsif ( -e \"$file.Z\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3965 | \") {`cp $file.Z $tmp.Z`; `gunzip $tmp.Z $SILENT`\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3966 | ;$r=$tmp;}\n else {$r= $file;}\n\n if ( -e \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3967 | \"$tmp.Z\"){unlink \"$tmp.Z\";}\n if ( -e \"$tm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3968 | p.gz\"){unlink \"$tmp.gz\";}\n \n return $r;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3969 | \n \n}\n\n\n\n\n\n \n\n\n\n\n\n\n\nsub vfope\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3970 | n \n{\n my $file=@_[0];\n my $mode=@_[1];\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3971 | my $tmp;\n my $F = new FileHandle;\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3972 | \n $tmp=$file;\n \n \n if ( $mode eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3973 | r\" && !-e $file){ myexit(flush_error (\"Cannot op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3974 | en file $file\"));}\n elsif ($mode eq \"w\"){$t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3975 | mp=\">$file\";}\n elsif ($mode eq \"a\"){$tmp=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3976 | ">>$file\";}\n \n \n open ($F,$tmp);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3977 | return $F;\n}\nsub debug_print\n{\n my $messag\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3978 | e =@_[0];\n if ($debug){print STDERR \"NO_REMOT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3979 | E_PDB_DIR: $no_remote_pdb_dir - $message [DEBUG:ex\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3980 | tract_from_pdb]\";}\n return;\n}\nsub is_aa \n{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3981 | \n my ($aa, $chain) =@_;\n\n my $one;\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3982 | y $trhee;\n \n if ( $onelett{$molecule_type{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3983 | $chain}}->{$aa} eq 'X' || !$onelett{$molecule_type\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3984 | {$chain}}->{$aa} ){return '';}\n else\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3985 | n $one=$onelett{$molecule_type{$chain}}->{$aa};\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3986 | n $three=$threelett{$molecule_type{$chain}}->{$one\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3987 | };\n \n\n return $three;\n }\n }\n\n\n\n\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3988 | sub url2file\n{\n my ($address, $out, $wget_arg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3989 | , $curl_arg)=(@_);\n my ($pg, $flag, $r, $arg, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3990 | $count);\n \n if (!$CONFIGURATION){&check_co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3991 | nfiguration (\"wget\", \"INTERNET\", \"gzip\");$CO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3992 | NFIGURATION=1;}\n \n\n if (&pg_is_installed \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3993 | (\"curl\")){$pg=\"curl\"; $flag=\"-o\";$arg=$curl_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3994 | arg;}\n elsif (&pg_is_installed (\"wget\")) {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3995 | $pg=\"wget\"; $flag=\"-O\";$arg=$wget_arg;}\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3996 | n return safe_system (\"$pg $flag$out $address \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3997 | >/dev/null 2>/dev/null\");\n\n}\n\n\n\n\nsub pdbfi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3998 | le2chaintype\n {\n my $file=@_[0];\n my %ct\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3999 | ;\n my $F;\n \n $F=vfopen ($file, \"r\");\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4000 | \n while (<$F>)\n {\n my $line=$_;\n if ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4001 | line =~/^ATOM/)\n {\n my $C=substr($line,21,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4002 | 1);\n if (!$ct{$C})\n { \n my $r=substr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4003 | ($line,17,3);\n $r=~s/\\s+//;\n if (length ($r)=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4004 | =1){$ct{$C}=\"R\";}\n elsif (length ($r)==2){$ct{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4005 | $C}=\"D\";}\n elsif (length ($r)==3){$ct{$C}=\"P\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4006 | ";}\n else \n {\n myexit(flush_error(\"ER\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4007 | ROR: Could not read RES_ID field in file $file\"))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4008 | ;\n }\n }\n }\n }\n close ($F);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4009 | \n return %ct;\n }\n \n \n\n\n\nsub fill_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4010 | threelett_RNA\n{\n\n my %threelett=(\n 'A', ' A',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4011 | \n 'T', ' T',\n 'U', ' U',\n 'C', ' C',\n 'G', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4012 | ' G',\n 'I', ' I', #Inosine\n );\n \n return %th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4013 | reelett;\n\n}\n\n\nsub fill_onelett_RNA\n{\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4014 | %onelett=(\n ' A' => 'A',\n ' T' => 'T',\n ' U'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4015 | => 'U',\n ' C' => 'C',\n ' G' => 'G',\n 'CSL' =\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4016 | > 'X',\n 'UMS' => 'X',\n ' I' => 'I',\n 'A' => 'A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4017 | ',\n 'T' => 'T',\n 'U' => 'U',\n 'C' => 'C',\n 'G'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4018 | => 'G',\n 'I' => 'I',\n );\n\n return %onelett;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4019 | \n}\n\n\nsub fill_onelett_DNA\n{\n my %onelett=(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4020 | \n ' DA', 'A',\n ' DT', 'T',\n ' DC', 'C',\n ' DG'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4021 | , 'G',\n 'DA', 'A',\n 'DT', 'T',\n 'DC', 'C',\n 'D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4022 | G', 'G',\n );\n\n return %onelett;\n\n}\n\nsub fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4023 | l_threelett_DNA\n{\n\n my %threelett=(\n 'A', ' DA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4024 | ',\n 'T', ' DT',\n 'C', ' DC',\n 'G', ' DG',\n );\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4025 | n\n return %threelett;\n\n}\n\n\n\n\nsub fill_thre\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4026 | elett_prot\n{ \n my %threelett;\n\n %threelett=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4027 | (\n'A', 'ALA',\n'C', 'CYS',\n'D', 'ASP',\n'E', 'GL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4028 | U',\n'F', 'PHE',\n'G', 'GLY',\n'H', 'HIS',\n'I', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4029 | ILE',\n'K', 'LYS',\n'L', 'LEU',\n'N', 'ASN',\n'M',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4030 | 'MET',\n'P', 'PRO',\n'Q', 'GLN',\n'R', 'ARG',\n'S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4031 | ', 'SER',\n'T', 'THR',\n'V', 'VAL',\n'W', 'TRP',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4032 | 'Y', 'TYR',\n);\n\nreturn %threelett;\n\n\n}\n\nsu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4033 | b fill_onelett_prot\n{\n my %onelett;\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4034 | %onelett=(\n\n'10A', 'X',\n'11O', 'X',\n'12A', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4035 | X',\n'13P', 'X',\n'13R', 'X',\n'13S', 'X',\n'14W',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4036 | 'X',\n'15P', 'X',\n'16A', 'X',\n'16G', 'X',\n'1AN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4037 | ', 'X',\n'1AP', 'X',\n'1AR', 'X',\n'1BH', 'X',\n'1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4038 | BO', 'X',\n'1C5', 'X',\n'1CU', 'X',\n'1DA', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4039 | '1GL', 'X',\n'1GN', 'X',\n'1IN', 'X',\n'1LU', 'L',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4040 | \n'1MA', 'X',\n'1MC', 'X',\n'1MG', 'X',\n'1MZ', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4041 | ',\n'1NA', 'X',\n'1NB', 'X',\n'1NI', 'X',\n'1PA', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4042 | 'A',\n'1PC', 'X',\n'1PE', 'X',\n'1PG', 'X',\n'1PI'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4043 | , 'A',\n'1PM', 'X',\n'1PN', 'X',\n'1PU', 'X',\n'1P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4044 | Y', 'X',\n'1UN', 'X',\n'24T', 'X',\n'25T', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4045 | 26P', 'X',\n'2AB', 'X',\n'2AM', 'X',\n'2AN', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4046 | n'2AP', 'X',\n'2AR', 'X',\n'2AS', 'D',\n'2BL', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4047 | ,\n'2BM', 'X',\n'2CP', 'X',\n'2DA', 'X',\n'2DG', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4048 | X',\n'2DP', 'X',\n'2DT', 'X',\n'2EP', 'X',\n'2EZ',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4049 | 'X',\n'2FG', 'X',\n'2FL', 'X',\n'2FP', 'X',\n'2FU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4050 | ', 'X',\n'2GL', 'X',\n'2GP', 'X',\n'2HP', 'X',\n'2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4051 | IB', 'X',\n'2IP', 'X',\n'2LU', 'L',\n'2MA', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4052 | '2MD', 'X',\n'2ME', 'X',\n'2MG', 'X',\n'2ML', 'L',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4053 | \n'2MO', 'X',\n'2MR', 'R',\n'2MU', 'X',\n'2MZ', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4054 | ',\n'2NO', 'X',\n'2NP', 'X',\n'2OG', 'X',\n'2PA', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4055 | 'X',\n'2PC', 'X',\n'2PE', 'X',\n'2PG', 'X',\n'2PH'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4056 | , 'X',\n'2PI', 'X',\n'2PL', 'X',\n'2PP', 'X',\n'2P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4057 | U', 'X',\n'2SI', 'X',\n'2TB', 'X',\n'34C', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4058 | 35G', 'X',\n'3AA', 'X',\n'3AD', 'X',\n'3AH', 'H',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4059 | n'3AN', 'X',\n'3AP', 'X',\n'3AT', 'X',\n'3BT', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4060 | ,\n'3CH', 'X',\n'3CN', 'X',\n'3CO', 'X',\n'3CP', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4061 | X',\n'3DR', 'X',\n'3EP', 'X',\n'3FM', 'X',\n'3GA',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4062 | 'X',\n'3GP', 'X',\n'3HB', 'X',\n'3HC', 'X',\n'3HP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4063 | ', 'X',\n'3IB', 'X',\n'3ID', 'X',\n'3IN', 'X',\n'3\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4064 | MA', 'X',\n'3MB', 'X',\n'3MC', 'X',\n'3MD', 'D',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4065 | '3MF', 'X',\n'3MP', 'X',\n'3MT', 'X',\n'3OL', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4066 | \n'3PA', 'X',\n'3PG', 'X',\n'3PO', 'X',\n'3PP', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4067 | ',\n'3PY', 'X',\n'49A', 'X',\n'4AB', 'X',\n'4AM', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4068 | 'X',\n'4AN', 'X',\n'4AP', 'X',\n'4BA', 'X',\n'4BT'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4069 | , 'X',\n'4CA', 'X',\n'4CO', 'X',\n'4HP', 'X',\n'4I\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4070 | P', 'X',\n'4MO', 'X',\n'4MV', 'X',\n'4MZ', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4071 | 4NC', 'X',\n'4NP', 'X',\n'4OX', 'X',\n'4PB', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4072 | n'4PN', 'X',\n'4PP', 'X',\n'4SC', 'X',\n'4SU', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4073 | ,\n'4TB', 'X',\n'55C', 'X',\n'5AD', 'X',\n'5AN', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4074 | X',\n'5AT', 'X',\n'5CM', 'X',\n'5GP', 'X',\n'5HP',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4075 | 'E',\n'5HT', 'X',\n'5IT', 'X',\n'5IU', 'X',\n'5MB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4076 | ', 'X',\n'5MC', 'X',\n'5MD', 'X',\n'5MP', 'X',\n'5\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4077 | MU', 'X',\n'5NC', 'X',\n'5OB', 'X',\n'5PA', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4078 | '5PV', 'X',\n'6AB', 'X',\n'6CT', 'X',\n'6HA', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4079 | \n'6HC', 'X',\n'6HG', 'X',\n'6HT', 'X',\n'6IN', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4080 | ',\n'6MO', 'X',\n'6MP', 'X',\n'6PG', 'X',\n'6WO', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4081 | 'X',\n'70U', 'X',\n'7DG', 'X',\n'7HP', 'X',\n'7I2'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4082 | , 'X',\n'7MG', 'X',\n'7MQ', 'X',\n'7NI', 'X',\n'87\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4083 | Y', 'X',\n'8AD', 'X',\n'8BR', 'X',\n'8IG', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4084 | 8IN', 'X',\n'8OG', 'X',\n'95A', 'X',\n'9AD', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4085 | n'9AM', 'X',\n'9AP', 'X',\n'9DG', 'X',\n'9DI', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4086 | ,\n'9HX', 'X',\n'9OH', 'X',\n'9TA', 'X',\n'A12', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4087 | X',\n'A15', 'X',\n'A23', 'X',\n'A24', 'X',\n'A26',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4088 | 'X',\n'A2G', 'X',\n'A2P', 'X',\n'A32', 'X',\n'A3P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4089 | ', 'X',\n'A4P', 'X',\n'A5P', 'X',\n'A70', 'X',\n'A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4090 | 76', 'X',\n'A77', 'X',\n'A78', 'X',\n'A79', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4091 | 'A80', 'X',\n'A85', 'X',\n'A88', 'X',\n'A9A', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4092 | \n'AA3', 'X',\n'AA4', 'X',\n'AA6', 'X',\n'AAA', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4093 | ',\n'AAB', 'X',\n'AAC', 'X',\n'AAE', 'X',\n'AAG', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4094 | 'R',\n'AAH', 'X',\n'AAM', 'X',\n'AAN', 'X',\n'AAP'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4095 | , 'X',\n'AAR', 'R',\n'AAS', 'X',\n'AAT', 'X',\n'AB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4096 | A', 'X',\n'ABC', 'X',\n'ABD', 'X',\n'ABE', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4097 | ABH', 'X',\n'ABI', 'X',\n'ABK', 'X',\n'ABM', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4098 | n'ABN', 'X',\n'ABP', 'X',\n'ABR', 'X',\n'ABS', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4099 | ,\n'ABU', 'X',\n'AC1', 'X',\n'AC2', 'X',\n'ACA', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4100 | X',\n'ACB', 'D',\n'ACC', 'C',\n'ACD', 'X',\n'ACE',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4101 | 'X',\n'ACH', 'X',\n'ACI', 'X',\n'ACL', 'R',\n'ACM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4102 | ', 'X',\n'ACN', 'X',\n'ACO', 'X',\n'ACP', 'X',\n'A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4103 | CQ', 'X',\n'ACR', 'X',\n'ACS', 'X',\n'ACT', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4104 | 'ACV', 'V',\n'ACX', 'X',\n'ACY', 'X',\n'AD2', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4105 | \n'AD3', 'X',\n'ADC', 'X',\n'ADD', 'X',\n'ADE', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4106 | ',\n'ADH', 'X',\n'ADI', 'X',\n'ADM', 'X',\n'ADN', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4107 | 'X',\n'ADP', 'X',\n'ADQ', 'X',\n'ADR', 'X',\n'ADS'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4108 | , 'X',\n'ADT', 'X',\n'ADU', 'X',\n'ADW', 'X',\n'AD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4109 | X', 'X',\n'AE2', 'X',\n'AEA', 'X',\n'AEB', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4110 | AEI', 'D',\n'AEN', 'X',\n'AET', 'T',\n'AF1', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4111 | n'AF3', 'X',\n'AFA', 'D',\n'AFP', 'X',\n'AG7', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4112 | ,\n'AGB', 'X',\n'AGF', 'X',\n'AGL', 'X',\n'AGM', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4113 | R',\n'AGN', 'X',\n'AGP', 'X',\n'AGS', 'X',\n'AGU',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4114 | 'X',\n'AH0', 'X',\n'AH1', 'X',\n'AHA', 'X',\n'AHB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4115 | ', 'D',\n'AHC', 'X',\n'AHF', 'X',\n'AHG', 'X',\n'A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4116 | HH', 'X',\n'AHM', 'X',\n'AHO', 'X',\n'AHP', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4117 | 'AHS', 'X',\n'AHT', 'Y',\n'AHU', 'X',\n'AHX', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4118 | \n'AI1', 'X',\n'AI2', 'X',\n'AIB', 'X',\n'AIC', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4119 | ',\n'AIM', 'X',\n'AIP', 'X',\n'AIQ', 'X',\n'AIR', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4120 | 'X',\n'AJ3', 'X',\n'AKB', 'X',\n'AKG', 'X',\n'AKR'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4121 | , 'X',\n'AL1', 'X',\n'AL2', 'X',\n'AL3', 'X',\n'AL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4122 | 4', 'X',\n'AL5', 'X',\n'AL6', 'X',\n'AL7', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4123 | AL8', 'X',\n'AL9', 'X',\n'ALA', 'A',\n'ALB', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4124 | n'ALC', 'X',\n'ALD', 'L',\n'ALE', 'X',\n'ALF', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4125 | ,\n'ALG', 'X',\n'ALL', 'X',\n'ALM', 'A',\n'ALN', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4126 | A',\n'ALO', 'T',\n'ALP', 'X',\n'ALQ', 'X',\n'ALR',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4127 | 'X',\n'ALS', 'X',\n'ALT', 'A',\n'ALY', 'K',\n'ALZ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4128 | ', 'X',\n'AMA', 'X',\n'AMB', 'X',\n'AMC', 'X',\n'A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4129 | MD', 'X',\n'AMG', 'X',\n'AMH', 'X',\n'AMI', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4130 | 'AML', 'X',\n'AMN', 'X',\n'AMO', 'X',\n'AMP', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4131 | \n'AMQ', 'X',\n'AMR', 'X',\n'AMS', 'X',\n'AMT', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4132 | ',\n'AMU', 'X',\n'AMW', 'X',\n'AMX', 'X',\n'AMY', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4133 | 'X',\n'ANA', 'X',\n'ANB', 'X',\n'ANC', 'X',\n'AND'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4134 | , 'X',\n'ANE', 'X',\n'ANI', 'X',\n'ANL', 'X',\n'AN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4135 | O', 'X',\n'ANP', 'X',\n'ANS', 'X',\n'ANT', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4136 | AOE', 'X',\n'AOP', 'X',\n'AP1', 'X',\n'AP2', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4137 | n'AP3', 'X',\n'AP4', 'X',\n'AP5', 'X',\n'AP6', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4138 | ,\n'APA', 'X',\n'APB', 'X',\n'APC', 'X',\n'APE', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4139 | F',\n'APF', 'X',\n'APG', 'X',\n'APH', 'A',\n'API',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4140 | 'X',\n'APL', 'X',\n'APM', 'X',\n'APN', 'G',\n'APP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4141 | ', 'X',\n'APQ', 'X',\n'APR', 'X',\n'APS', 'X',\n'A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4142 | PT', 'X',\n'APU', 'X',\n'APX', 'X',\n'APY', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4143 | 'APZ', 'X',\n'AQS', 'X',\n'AR1', 'X',\n'AR2', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4144 | \n'ARA', 'X',\n'ARB', 'X',\n'ARC', 'X',\n'ARD', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4145 | ',\n'ARG', 'R',\n'ARH', 'X',\n'ARI', 'X',\n'ARM', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4146 | 'R',\n'ARN', 'X',\n'ARO', 'R',\n'ARP', 'X',\n'ARQ'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4147 | , 'X',\n'ARS', 'X',\n'AS1', 'R',\n'AS2', 'X',\n'AS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4148 | A', 'D',\n'ASB', 'D',\n'ASC', 'X',\n'ASD', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4149 | ASE', 'X',\n'ASF', 'X',\n'ASI', 'X',\n'ASK', 'D',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4150 | n'ASL', 'X',\n'ASM', 'N',\n'ASO', 'X',\n'ASP', 'D'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4151 | ,\n'ASQ', 'X',\n'ASU', 'X',\n'ATA', 'X',\n'ATC', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4152 | X',\n'ATD', 'X',\n'ATF', 'X',\n'ATG', 'X',\n'ATH',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4153 | 'X',\n'ATM', 'X',\n'ATO', 'X',\n'ATP', 'X',\n'ATQ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4154 | ', 'X',\n'ATR', 'X',\n'ATT', 'X',\n'ATY', 'X',\n'A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4155 | TZ', 'X',\n'AUC', 'X',\n'AUR', 'X',\n'AVG', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4156 | 'AXP', 'X',\n'AYA', 'A',\n'AZ2', 'X',\n'AZA', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4157 | \n'AZC', 'X',\n'AZD', 'X',\n'AZE', 'X',\n'AZI', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4158 | ',\n'AZL', 'X',\n'AZM', 'X',\n'AZR', 'X',\n'AZT', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4159 | 'X',\n'B12', 'X',\n'B1F', 'F',\n'B2A', 'A',\n'B2F'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4160 | , 'F',\n'B2I', 'I',\n'B2V', 'V',\n'B3I', 'X',\n'B3\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4161 | P', 'X',\n'B7G', 'X',\n'B96', 'X',\n'B9A', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4162 | BA1', 'X',\n'BAA', 'X',\n'BAB', 'X',\n'BAC', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4163 | n'BAF', 'X',\n'BAH', 'X',\n'BAI', 'X',\n'BAK', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4164 | ,\n'BAL', 'A',\n'BAM', 'X',\n'BAO', 'X',\n'BAP', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4165 | X',\n'BAR', 'X',\n'BAS', 'X',\n'BAT', 'F',\n'BAY',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4166 | 'X',\n'BAZ', 'X',\n'BB1', 'X',\n'BB2', 'X',\n'BBA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4167 | ', 'X',\n'BBH', 'X',\n'BBS', 'X',\n'BBT', 'X',\n'B\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4168 | BZ', 'X',\n'BCA', 'X',\n'BCB', 'X',\n'BCC', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4169 | 'BCD', 'X',\n'BCL', 'X',\n'BCN', 'X',\n'BCR', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4170 | \n'BCS', 'C',\n'BCT', 'X',\n'BCY', 'X',\n'BCZ', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4171 | ',\n'BDA', 'X',\n'BDG', 'X',\n'BDK', 'X',\n'BDM', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4172 | 'X',\n'BDN', 'X',\n'BDS', 'X',\n'BE1', 'X',\n'BE2'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4173 | , 'X',\n'BEA', 'X',\n'BEF', 'X',\n'BEN', 'X',\n'BE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4174 | O', 'X',\n'BEP', 'X',\n'BER', 'X',\n'BES', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4175 | BET', 'X',\n'BEZ', 'X',\n'BF2', 'X',\n'BFA', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4176 | n'BFD', 'X',\n'BFP', 'X',\n'BFS', 'X',\n'BFU', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4177 | ,\n'BG6', 'X',\n'BGF', 'X',\n'BGG', 'X',\n'BGL', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4178 | X',\n'BGN', 'X',\n'BGP', 'X',\n'BGX', 'X',\n'BH4',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4179 | 'X',\n'BHA', 'X',\n'BHC', 'X',\n'BHD', 'D',\n'BHO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4180 | ', 'X',\n'BHS', 'X',\n'BIC', 'X',\n'BIN', 'X',\n'B\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4181 | IO', 'X',\n'BIP', 'X',\n'BIS', 'X',\n'BIZ', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4182 | 'BJH', 'X',\n'BJI', 'X',\n'BJP', 'X',\n'BLA', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4183 | \n'BLB', 'X',\n'BLE', 'L',\n'BLG', 'P',\n'BLI', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4184 | ',\n'BLM', 'X',\n'BLV', 'X',\n'BLY', 'K',\n'BM1', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4185 | 'X',\n'BM2', 'X',\n'BM5', 'X',\n'BM9', 'X',\n'BMA'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4186 | , 'X',\n'BMD', 'X',\n'BME', 'X',\n'BMP', 'X',\n'BM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4187 | Q', 'X',\n'BMS', 'X',\n'BMT', 'T',\n'BMU', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4188 | BMY', 'X',\n'BMZ', 'X',\n'BNA', 'X',\n'BNG', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4189 | n'BNI', 'X',\n'BNN', 'F',\n'BNO', 'L',\n'BNS', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4190 | ,\n'BNZ', 'X',\n'BO3', 'X',\n'BO4', 'X',\n'BOC', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4191 | X',\n'BOG', 'X',\n'BOM', 'X',\n'BOT', 'X',\n'BOX',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4192 | 'X',\n'BOZ', 'X',\n'BPA', 'X',\n'BPB', 'X',\n'BPD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4193 | ', 'X',\n'BPG', 'X',\n'BPH', 'X',\n'BPI', 'X',\n'B\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4194 | PJ', 'X',\n'BPM', 'X',\n'BPN', 'X',\n'BPO', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4195 | 'BPP', 'X',\n'BPT', 'X',\n'BPY', 'X',\n'BRB', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4196 | \n'BRC', 'X',\n'BRE', 'X',\n'BRI', 'X',\n'BRL', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4197 | ',\n'BRM', 'X',\n'BRN', 'X',\n'BRO', 'X',\n'BRS', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4198 | 'X',\n'BRU', 'X',\n'BRZ', 'X',\n'BSB', 'X',\n'BSI'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4199 | , 'X',\n'BSP', 'X',\n'BT1', 'X',\n'BT2', 'X',\n'BT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4200 | 3', 'X',\n'BTA', 'L',\n'BTB', 'X',\n'BTC', 'C',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4201 | BTD', 'X',\n'BTN', 'X',\n'BTP', 'X',\n'BTR', 'W',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4202 | n'BU1', 'X',\n'BUA', 'X',\n'BUB', 'X',\n'BUC', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4203 | ,\n'BUG', 'X',\n'BUL', 'X',\n'BUM', 'X',\n'BUQ', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4204 | X',\n'BUT', 'X',\n'BVD', 'X',\n'BX3', 'X',\n'BYS',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4205 | 'X',\n'BZ1', 'X',\n'BZA', 'X',\n'BZB', 'X',\n'BZC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4206 | ', 'X',\n'BZD', 'X',\n'BZF', 'X',\n'BZI', 'X',\n'B\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4207 | ZM', 'X',\n'BZO', 'X',\n'BZP', 'X',\n'BZQ', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4208 | 'BZS', 'X',\n'BZT', 'X',\n'C02', 'X',\n'C11', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4209 | \n'C1O', 'X',\n'C20', 'X',\n'C24', 'X',\n'C2F', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4210 | ',\n'C2O', 'X',\n'C2P', 'X',\n'C3M', 'X',\n'C3P', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4211 | 'X',\n'C3X', 'X',\n'C48', 'X',\n'C4M', 'X',\n'C4X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4212 | , 'X',\n'C5C', 'X',\n'C5M', 'X',\n'C5P', 'X',\n'C5\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4213 | X', 'X',\n'C60', 'X',\n'C6C', 'X',\n'C6M', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4214 | C78', 'X',\n'C8E', 'X',\n'CA3', 'X',\n'CA5', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4215 | n'CAA', 'X',\n'CAB', 'X',\n'CAC', 'X',\n'CAD', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4216 | ,\n'CAF', 'C',\n'CAG', 'X',\n'CAH', 'X',\n'CAL', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4217 | X',\n'CAM', 'X',\n'CAN', 'X',\n'CAO', 'X',\n'CAP',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4218 | 'X',\n'CAQ', 'X',\n'CAR', 'X',\n'CAS', 'C',\n'CAT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4219 | ', 'X',\n'CAV', 'X',\n'CAY', 'C',\n'CAZ', 'X',\n'C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4220 | B3', 'X',\n'CB4', 'X',\n'CBA', 'X',\n'CBD', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4221 | 'CBG', 'X',\n'CBI', 'X',\n'CBL', 'X',\n'CBM', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4222 | \n'CBN', 'X',\n'CBO', 'X',\n'CBP', 'X',\n'CBS', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4223 | ',\n'CBX', 'X',\n'CBZ', 'X',\n'CC0', 'X',\n'CC1', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4224 | 'X',\n'CCC', 'X',\n'CCH', 'X',\n'CCI', 'X',\n'CCM'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4225 | , 'X',\n'CCN', 'X',\n'CCO', 'X',\n'CCP', 'X',\n'CC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4226 | R', 'X',\n'CCS', 'C',\n'CCV', 'X',\n'CCY', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4227 | CD1', 'X',\n'CDC', 'X',\n'CDE', 'X',\n'CDF', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4228 | n'CDI', 'X',\n'CDL', 'X',\n'CDM', 'X',\n'CDP', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4229 | ,\n'CDR', 'X',\n'CDU', 'X',\n'CE1', 'X',\n'CEA', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4230 | C',\n'CEB', 'X',\n'CEC', 'X',\n'CED', 'X',\n'CEF',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4231 | 'X',\n'CEH', 'X',\n'CEM', 'X',\n'CEO', 'X',\n'CEP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4232 | ', 'X',\n'CEQ', 'X',\n'CER', 'X',\n'CES', 'G',\n'C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4233 | ET', 'X',\n'CFC', 'X',\n'CFF', 'X',\n'CFM', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4234 | 'CFO', 'X',\n'CFP', 'X',\n'CFS', 'X',\n'CFX', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4235 | \n'CGN', 'X',\n'CGP', 'X',\n'CGS', 'X',\n'CGU', 'E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4236 | ',\n'CH2', 'X',\n'CH3', 'X',\n'CHA', 'X',\n'CHB', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4237 | 'X',\n'CHD', 'X',\n'CHF', 'X',\n'CHG', 'G',\n'CHI'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4238 | , 'X',\n'CHN', 'X',\n'CHO', 'X',\n'CHP', 'G',\n'CH\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4239 | R', 'X',\n'CHS', 'F',\n'CHT', 'X',\n'CHX', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4240 | CIC', 'X',\n'CIN', 'X',\n'CIP', 'X',\n'CIR', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4241 | n'CIT', 'X',\n'CIU', 'X',\n'CKI', 'X',\n'CL1', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4242 | ,\n'CL2', 'X',\n'CLA', 'X',\n'CLB', 'A',\n'CLC', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4243 | S',\n'CLD', 'A',\n'CLE', 'L',\n'CLF', 'X',\n'CLK',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4244 | 'S',\n'CLL', 'X',\n'CLM', 'X',\n'CLN', 'X',\n'CLO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4245 | ', 'X',\n'CLP', 'X',\n'CLQ', 'X',\n'CLR', 'X',\n'C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4246 | LS', 'X',\n'CLT', 'X',\n'CLX', 'X',\n'CLY', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4247 | 'CMA', 'R',\n'CMC', 'X',\n'CMD', 'X',\n'CME', 'C',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4248 | \n'CMG', 'X',\n'CMK', 'X',\n'CMN', 'X',\n'CMO', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4249 | ',\n'CMP', 'X',\n'CMR', 'X',\n'CMS', 'X',\n'CMT', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4250 | 'C',\n'CMX', 'X',\n'CNA', 'X',\n'CNC', 'X',\n'CND'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4251 | , 'X',\n'CNH', 'X',\n'CNM', 'X',\n'CNN', 'X',\n'CN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4252 | O', 'X',\n'CNP', 'X',\n'CO2', 'X',\n'CO3', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4253 | CO5', 'X',\n'CO8', 'X',\n'COA', 'X',\n'COB', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4254 | n'COC', 'X',\n'COD', 'X',\n'COE', 'X',\n'COF', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4255 | ,\n'COH', 'X',\n'COI', 'X',\n'COJ', 'X',\n'COL', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4256 | X',\n'COM', 'X',\n'CON', 'X',\n'COP', 'X',\n'COR',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4257 | 'X',\n'COS', 'X',\n'COT', 'X',\n'COY', 'X',\n'CP1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4258 | ', 'G',\n'CP2', 'X',\n'CP4', 'X',\n'CPA', 'X',\n'C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4259 | PB', 'X',\n'CPC', 'X',\n'CPD', 'X',\n'CPG', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4260 | 'CPH', 'X',\n'CPI', 'X',\n'CPM', 'X',\n'CPN', 'G',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4261 | \n'CPO', 'X',\n'CPP', 'X',\n'CPQ', 'X',\n'CPR', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4262 | ',\n'CPS', 'X',\n'CPT', 'X',\n'CPU', 'X',\n'CPV', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4263 | 'X',\n'CPY', 'X',\n'CR1', 'X',\n'CR6', 'X',\n'CRA'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4264 | , 'X',\n'CRB', 'X',\n'CRC', 'X',\n'CRG', 'X',\n'CR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4265 | H', 'X',\n'CRO', 'T',\n'CRP', 'X',\n'CRQ', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4266 | CRS', 'X',\n'CRT', 'X',\n'CRY', 'X',\n'CSA', 'C',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4267 | n'CSB', 'X',\n'CSD', 'C',\n'CSE', 'C',\n'CSH', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4268 | ,\n'CSI', 'X',\n'CSN', 'X',\n'CSO', 'C',\n'CSP', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4269 | C',\n'CSR', 'C',\n'CSS', 'C',\n'CST', 'X',\n'CSW',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4270 | 'C',\n'CSX', 'C',\n'CSY', 'X',\n'CSZ', 'C',\n'CT3\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4271 | ', 'X',\n'CTA', 'X',\n'CTB', 'X',\n'CTC', 'X',\n'C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4272 | TD', 'X',\n'CTH', 'T',\n'CTO', 'X',\n'CTP', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4273 | 'CTR', 'X',\n'CTS', 'X',\n'CTT', 'X',\n'CTY', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4274 | \n'CTZ', 'X',\n'CU1', 'X',\n'CUA', 'X',\n'CUC', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4275 | ',\n'CUL', 'X',\n'CUO', 'X',\n'CUZ', 'X',\n'CVI', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4276 | 'X',\n'CXF', 'X',\n'CXL', 'X',\n'CXM', 'M',\n'CXN'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4277 | , 'X',\n'CXP', 'X',\n'CXS', 'X',\n'CY1', 'C',\n'CY\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4278 | 3', 'X',\n'CYB', 'X',\n'CYC', 'X',\n'CYF', 'C',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4279 | CYG', 'C',\n'CYH', 'X',\n'CYL', 'X',\n'CYM', 'C',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4280 | n'CYN', 'X',\n'CYO', 'X',\n'CYP', 'X',\n'CYQ', 'C'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4281 | ,\n'CYS', 'C',\n'CYU', 'X',\n'CYY', 'X',\n'CYZ', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4282 | X',\n'CZH', 'X',\n'CZZ', 'C',\n'D12', 'X',\n'D13',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4283 | 'X',\n'D16', 'X',\n'D18', 'X',\n'D19', 'X',\n'D1P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4284 | ', 'X',\n'D24', 'X',\n'D34', 'X',\n'D35', 'X',\n'D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4285 | 4D', 'X',\n'D4T', 'X',\n'D6G', 'X',\n'DA2', 'R',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4286 | 'DA3', 'X',\n'DA6', 'X',\n'DA7', 'X',\n'DAA', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4287 | \n'DAB', 'X',\n'DAC', 'X',\n'DAD', 'X',\n'DAE', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4288 | ',\n'DAF', 'X',\n'DAG', 'X',\n'DAH', 'A',\n'DAJ', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4289 | 'X',\n'DAK', 'X',\n'DAL', 'A',\n'DAM', 'A',\n'DAN'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4290 | , 'X',\n'DAO', 'X',\n'DAP', 'X',\n'DAQ', 'X',\n'DA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4291 | R', 'R',\n'DAS', 'D',\n'DAT', 'X',\n'DAU', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4292 | DAV', 'X',\n'DBA', 'X',\n'DBD', 'X',\n'DBF', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4293 | n'DBG', 'X',\n'DBI', 'X',\n'DBV', 'X',\n'DBY', 'Y'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4294 | ,\n'DCA', 'X',\n'DCB', 'X',\n'DCE', 'X',\n'DCF', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4295 | X',\n'DCG', 'X',\n'DCH', 'X',\n'DCI', 'I',\n'DCL',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4296 | 'X',\n'DCM', 'X',\n'DCP', 'X',\n'DCS', 'X',\n'DCT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4297 | ', 'X',\n'DCY', 'C',\n'DCZ', 'X',\n'DDA', 'X',\n'D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4298 | DB', 'X',\n'DDC', 'X',\n'DDF', 'X',\n'DDG', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4299 | 'DDH', 'X',\n'DDL', 'X',\n'DDM', 'X',\n'DDO', 'L',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4300 | \n'DDP', 'X',\n'DDQ', 'X',\n'DDT', 'Y',\n'DDU', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4301 | ',\n'DEA', 'X',\n'DEB', 'X',\n'DEC', 'X',\n'DEF', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4302 | 'X',\n'DEL', 'X',\n'DEM', 'X',\n'DEN', 'X',\n'DEP'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4303 | , 'X',\n'DEQ', 'X',\n'DES', 'X',\n'DET', 'X',\n'DF\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4304 | C', 'X',\n'DFG', 'X',\n'DFI', 'X',\n'DFL', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4305 | DFO', 'X',\n'DFP', 'X',\n'DFR', 'X',\n'DFT', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4306 | n'DFV', 'X',\n'DFX', 'X',\n'DG2', 'X',\n'DG3', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4307 | ,\n'DG6', 'X',\n'DGA', 'X',\n'DGD', 'X',\n'DGG', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4308 | X',\n'DGL', 'E',\n'DGN', 'Q',\n'DGP', 'X',\n'DGT',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4309 | 'X',\n'DGX', 'X',\n'DH2', 'X',\n'DHA', 'A',\n'DHB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4310 | ', 'X',\n'DHC', 'X',\n'DHD', 'X',\n'DHE', 'X',\n'D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4311 | HF', 'X',\n'DHG', 'X',\n'DHI', 'H',\n'DHL', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4312 | 'DHM', 'X',\n'DHN', 'V',\n'DHP', 'X',\n'DHQ', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4313 | \n'DHR', 'X',\n'DHS', 'X',\n'DHT', 'X',\n'DHU', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4314 | ',\n'DHY', 'X',\n'DHZ', 'X',\n'DI2', 'X',\n'DI3', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4315 | 'G',\n'DI4', 'X',\n'DI5', 'X',\n'DIA', 'X',\n'DIC'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4316 | , 'X',\n'DIF', 'X',\n'DIG', 'X',\n'DII', 'X',\n'DI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4317 | L', 'I',\n'DIM', 'X',\n'DIO', 'X',\n'DIP', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4318 | DIQ', 'X',\n'DIS', 'X',\n'DIT', 'X',\n'DIV', 'V',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4319 | n'DIX', 'X',\n'DIY', 'X',\n'DKA', 'X',\n'DLA', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4320 | ,\n'DLE', 'L',\n'DLF', 'X',\n'DLS', 'K',\n'DLY', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4321 | K',\n'DM1', 'X',\n'DM2', 'X',\n'DM3', 'X',\n'DM4',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4322 | 'X',\n'DM5', 'X',\n'DM6', 'X',\n'DM7', 'X',\n'DM8\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4323 | ', 'X',\n'DM9', 'X',\n'DMA', 'X',\n'DMB', 'X',\n'D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4324 | MC', 'X',\n'DMD', 'X',\n'DME', 'X',\n'DMF', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4325 | 'DMG', 'G',\n'DMH', 'N',\n'DMI', 'X',\n'DMJ', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4326 | \n'DML', 'X',\n'DMM', 'X',\n'DMN', 'X',\n'DMO', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4327 | ',\n'DMP', 'X',\n'DMQ', 'X',\n'DMR', 'X',\n'DMS', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4328 | 'X',\n'DMT', 'X',\n'DMV', 'X',\n'DMY', 'X',\n'DNC'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4329 | , 'X',\n'DND', 'X',\n'DNH', 'X',\n'DNJ', 'X',\n'DN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4330 | N', 'X',\n'DNP', 'X',\n'DNQ', 'X',\n'DNR', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4331 | DO2', 'X',\n'DO3', 'X',\n'DOA', 'X',\n'DOB', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4332 | n'DOC', 'X',\n'DOH', 'D',\n'DOM', 'X',\n'DOS', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4333 | ,\n'DOX', 'X',\n'DP5', 'X',\n'DP7', 'X',\n'DPA', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4334 | X',\n'DPC', 'X',\n'DPD', 'X',\n'DPE', 'X',\n'DPG',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4335 | 'X',\n'DPH', 'F',\n'DPM', 'X',\n'DPN', 'F',\n'DPO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4336 | ', 'X',\n'DPP', 'X',\n'DPR', 'P',\n'DPS', 'X',\n'D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4337 | PT', 'X',\n'DPX', 'X',\n'DPY', 'X',\n'DPZ', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4338 | 'DQH', 'X',\n'DQN', 'X',\n'DR1', 'X',\n'DRB', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4339 | \n'DRC', 'X',\n'DRI', 'X',\n'DRP', 'X',\n'DRT', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4340 | ',\n'DRU', 'X',\n'DSA', 'X',\n'DSB', 'X',\n'DSC', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4341 | 'X',\n'DSD', 'X',\n'DSE', 'S',\n'DSI', 'X',\n'DSN'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4342 | , 'S',\n'DSP', 'D',\n'DSR', 'X',\n'DSS', 'X',\n'DS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4343 | X', 'X',\n'DSY', 'X',\n'DTB', 'X',\n'DTD', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4344 | DTH', 'T',\n'DTN', 'X',\n'DTO', 'X',\n'DTP', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4345 | n'DTQ', 'X',\n'DTR', 'W',\n'DTT', 'X',\n'DTY', 'Y'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4346 | ,\n'DUD', 'X',\n'DUO', 'X',\n'DUR', 'X',\n'DUT', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4347 | X',\n'DVA', 'V',\n'DVR', 'X',\n'DX9', 'X',\n'DXA',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4348 | 'X',\n'DXB', 'X',\n'DXC', 'X',\n'DXG', 'X',\n'DXX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4349 | ', 'X',\n'DZF', 'X',\n'E09', 'X',\n'E20', 'X',\n'E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4350 | 2P', 'X',\n'E3G', 'X',\n'E4N', 'X',\n'E4P', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4351 | 'E64', 'X',\n'E6C', 'X',\n'E96', 'X',\n'E97', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4352 | \n'EA2', 'X',\n'EAA', 'X',\n'EAP', 'X',\n'EBP', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4353 | ',\n'EBW', 'X',\n'ECO', 'X',\n'EDA', 'X',\n'EDC', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4354 | 'X',\n'EDE', 'X',\n'EDO', 'X',\n'EDR', 'X',\n'EEB'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4355 | , 'X',\n'EEE', 'X',\n'EFC', 'X',\n'EFZ', 'X',\n'EG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4356 | 1', 'X',\n'EG2', 'X',\n'EG3', 'X',\n'EGC', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4357 | EGL', 'X',\n'EHP', 'A',\n'EIC', 'X',\n'EJT', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4358 | n'ELA', 'X',\n'EMB', 'X',\n'EMC', 'X',\n'EMD', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4359 | ,\n'EMM', 'X',\n'EMO', 'X',\n'EMP', 'X',\n'EMR', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4360 | X',\n'ENA', 'X',\n'ENC', 'X',\n'ENH', 'X',\n'ENO',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4361 | 'X',\n'ENP', 'X',\n'EOA', 'X',\n'EOH', 'X',\n'EOT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4362 | ', 'X',\n'EOX', 'X',\n'EPA', 'X',\n'EPE', 'X',\n'E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4363 | PH', 'X',\n'EPI', 'X',\n'EPN', 'X',\n'EPO', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4364 | 'EPT', 'X',\n'EPU', 'X',\n'EPX', 'X',\n'EPY', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4365 | \n'EQI', 'X',\n'EQP', 'X',\n'EQU', 'X',\n'ERG', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4366 | ',\n'ERI', 'X',\n'ERY', 'X',\n'ESC', 'X',\n'ESD', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4367 | 'X',\n'ESI', 'X',\n'ESO', 'X',\n'ESP', 'X',\n'EST'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4368 | , 'X',\n'ESX', 'X',\n'ETA', 'X',\n'ETC', 'X',\n'ET\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4369 | D', 'X',\n'ETF', 'X',\n'ETH', 'X',\n'ETI', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4370 | ETN', 'X',\n'ETO', 'X',\n'ETP', 'X',\n'ETR', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4371 | n'ETS', 'X',\n'ETY', 'X',\n'EU3', 'X',\n'EUG', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4372 | ,\n'EYS', 'C',\n'F09', 'X',\n'F2B', 'X',\n'F3S', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4373 | X',\n'F42', 'X',\n'F43', 'X',\n'F4S', 'X',\n'F6B',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4374 | 'X',\n'F6P', 'X',\n'F89', 'X',\n'FA1', 'X',\n'FA5\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4375 | ', 'F',\n'FAA', 'X',\n'FAB', 'X',\n'FAC', 'X',\n'F\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4376 | AD', 'X',\n'FAF', 'X',\n'FAG', 'X',\n'FAM', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4377 | 'FAR', 'X',\n'FAS', 'X',\n'FAT', 'X',\n'FBA', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4378 | \n'FBE', 'X',\n'FBI', 'X',\n'FBP', 'X',\n'FBQ', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4379 | ',\n'FBS', 'X',\n'FBT', 'X',\n'FBU', 'X',\n'FCA', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4380 | 'X',\n'FCB', 'X',\n'FCI', 'X',\n'FCN', 'X',\n'FCO'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4381 | , 'X',\n'FCR', 'X',\n'FCT', 'X',\n'FCX', 'X',\n'FC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4382 | Y', 'C',\n'FD1', 'F',\n'FD2', 'F',\n'FD3', 'F',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4383 | FD4', 'F',\n'FDA', 'X',\n'FDC', 'X',\n'FDI', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4384 | n'FDP', 'X',\n'FDS', 'X',\n'FE2', 'X',\n'FEA', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4385 | ,\n'FEL', 'X',\n'FEM', 'X',\n'FEN', 'X',\n'FEO', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4386 | X',\n'FEP', 'X',\n'FER', 'X',\n'FES', 'X',\n'FFB',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4387 | 'X',\n'FFC', 'X',\n'FFF', 'X',\n'FFO', 'X',\n'FGL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4388 | ', 'G',\n'FHB', 'X',\n'FHC', 'X',\n'FHP', 'X',\n'F\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4389 | HU', 'X',\n'FID', 'X',\n'FII', 'X',\n'FIP', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4390 | 'FK5', 'X',\n'FKA', 'X',\n'FKI', 'X',\n'FKP', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4391 | \n'FL2', 'X',\n'FL9', 'X',\n'FLA', 'A',\n'FLC', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4392 | ',\n'FLD', 'X',\n'FLE', 'L',\n'FLF', 'X',\n'FLO', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4393 | 'X',\n'FLP', 'X',\n'FLT', 'Y',\n'FLU', 'X',\n'FLX'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4394 | , 'X',\n'FM1', 'X',\n'FM2', 'X',\n'FMA', 'X',\n'FM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4395 | B', 'X',\n'FMC', 'X',\n'FME', 'M',\n'FMN', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4396 | FMP', 'X',\n'FMR', 'X',\n'FMS', 'X',\n'FMT', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4397 | n'FNE', 'X',\n'FNP', 'X',\n'FNS', 'X',\n'FOC', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4398 | ,\n'FOE', 'X',\n'FOG', 'F',\n'FOH', 'X',\n'FOK', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4399 | X',\n'FOL', 'X',\n'FON', 'X',\n'FOP', 'X',\n'FOR',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4400 | 'X',\n'FOS', 'X',\n'FPA', 'X',\n'FPC', 'X',\n'FPI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4401 | ', 'X',\n'FPO', 'X',\n'FPP', 'X',\n'FPT', 'X',\n'F\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4402 | QP', 'X',\n'FRA', 'X',\n'FRD', 'F',\n'FRU', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4403 | 'FS3', 'X',\n'FS4', 'X',\n'FSB', 'X',\n'FSO', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4404 | \n'FSX', 'X',\n'FTC', 'X',\n'FTP', 'X',\n'FTR', 'W\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4405 | ',\n'FTT', 'X',\n'FTY', 'Y',\n'FUA', 'X',\n'FUC', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4406 | 'X',\n'FUM', 'X',\n'FUP', 'X',\n'FVF', 'X',\n'FXP'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4407 | , 'X',\n'FXV', 'X',\n'FYA', 'F',\n'G16', 'X',\n'G1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4408 | P', 'X',\n'G20', 'X',\n'G21', 'X',\n'G23', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4409 | G26', 'X',\n'G28', 'X',\n'G2F', 'X',\n'G37', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4410 | n'G39', 'X',\n'G3H', 'X',\n'G3P', 'X',\n'G4D', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4411 | ,\n'G6D', 'X',\n'G6P', 'X',\n'G6Q', 'X',\n'G7M', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4412 | X',\n'GA2', 'X',\n'GAA', 'X',\n'GAB', 'X',\n'GAC',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4413 | 'X',\n'GAI', 'X',\n'GAL', 'X',\n'GAM', 'X',\n'GAN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4414 | ', 'X',\n'GAO', 'X',\n'GAP', 'X',\n'GAR', 'G',\n'G\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4415 | AS', 'X',\n'GAT', 'X',\n'GBC', 'X',\n'GBI', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4416 | 'GBP', 'X',\n'GBS', 'X',\n'GBX', 'X',\n'GC4', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4417 | \n'GCA', 'X',\n'GCD', 'X',\n'GCG', 'G',\n'GCH', 'G\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4418 | ',\n'GCK', 'X',\n'GCL', 'X',\n'GCM', 'X',\n'GCN', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4419 | 'X',\n'GCO', 'X',\n'GCP', 'X',\n'GCR', 'X',\n'GCS'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4420 | , 'X',\n'GCU', 'X',\n'GD3', 'X',\n'GDB', 'X',\n'GD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4421 | M', 'X',\n'GDN', 'X',\n'GDP', 'X',\n'GDS', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4422 | GDU', 'X',\n'GE1', 'X',\n'GE2', 'X',\n'GE3', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4423 | n'GEA', 'X',\n'GEL', 'X',\n'GEM', 'X',\n'GEN', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4424 | ,\n'GEP', 'X',\n'GER', 'X',\n'GFP', 'X',\n'GGB', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4425 | X',\n'GGL', 'E',\n'GGP', 'X',\n'GHP', 'G',\n'GIP',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4426 | 'X',\n'GIS', 'X',\n'GKR', 'X',\n'GL2', 'X',\n'GL3\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4427 | ', 'G',\n'GL4', 'X',\n'GL5', 'X',\n'GL7', 'X',\n'G\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4428 | L9', 'X',\n'GLA', 'X',\n'GLB', 'X',\n'GLC', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4429 | 'GLD', 'X',\n'GLE', 'X',\n'GLF', 'X',\n'GLG', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4430 | \n'GLH', 'Q',\n'GLI', 'X',\n'GLL', 'X',\n'GLM', 'G\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4431 | ',\n'GLN', 'Q',\n'GLO', 'X',\n'GLP', 'X',\n'GLR', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4432 | 'X',\n'GLS', 'X',\n'GLT', 'X',\n'GLU', 'E',\n'GLV'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4433 | , 'X',\n'GLW', 'X',\n'GLY', 'G',\n'GLZ', 'X',\n'GM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4434 | 1', 'X',\n'GMA', 'X',\n'GMC', 'X',\n'GMH', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4435 | GMP', 'X',\n'GMY', 'X',\n'GN7', 'X',\n'GNA', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4436 | n'GNB', 'X',\n'GNH', 'X',\n'GNP', 'X',\n'GNT', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4437 | ,\n'GOA', 'X',\n'GOL', 'X',\n'GOX', 'X',\n'GP1', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4438 | X',\n'GP3', 'X',\n'GP4', 'X',\n'GP6', 'X',\n'GP8',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4439 | 'X',\n'GPB', 'E',\n'GPC', 'X',\n'GPE', 'X',\n'GPG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4440 | ', 'X',\n'GPI', 'X',\n'GPJ', 'X',\n'GPL', 'K',\n'G\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4441 | PM', 'X',\n'GPN', 'G',\n'GPP', 'X',\n'GPR', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4442 | 'GPS', 'X',\n'GPX', 'X',\n'GR1', 'X',\n'GR3', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4443 | \n'GR4', 'X',\n'GSA', 'X',\n'GSB', 'X',\n'GSC', 'G\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4444 | ',\n'GSE', 'S',\n'GSH', 'X',\n'GSP', 'X',\n'GSR', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4445 | 'X',\n'GSS', 'X',\n'GT9', 'C',\n'GTA', 'X',\n'GTB'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4446 | , 'X',\n'GTD', 'X',\n'GTE', 'X',\n'GTH', 'T',\n'GT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4447 | N', 'X',\n'GTO', 'X',\n'GTP', 'X',\n'GTR', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4448 | GTS', 'X',\n'GTT', 'X',\n'GTX', 'X',\n'GTZ', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4449 | n'GU7', 'X',\n'GUA', 'X',\n'GUD', 'X',\n'GUM', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4450 | ,\n'GUN', 'X',\n'GUP', 'X',\n'GUR', 'X',\n'GW3', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4451 | X',\n'GZZ', 'X',\n'H2B', 'X',\n'H2P', 'H',\n'H2S',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4452 | 'X',\n'H2U', 'X',\n'H4B', 'X',\n'H5M', 'P',\n'H5P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4453 | ', 'X',\n'HAA', 'X',\n'HAB', 'X',\n'HAC', 'A',\n'H\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4454 | AD', 'X',\n'HAE', 'X',\n'HAG', 'X',\n'HAI', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4455 | 'HAM', 'X',\n'HAP', 'X',\n'HAQ', 'X',\n'HAR', 'R',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4456 | \n'HAS', 'X',\n'HAV', 'V',\n'HAX', 'X',\n'HAZ', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4457 | ',\n'HBA', 'X',\n'HBC', 'X',\n'HBD', 'X',\n'HBI', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4458 | 'X',\n'HBO', 'X',\n'HBU', 'X',\n'HBY', 'X',\n'HC0'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4459 | , 'X',\n'HC1', 'X',\n'HC4', 'X',\n'HCA', 'X',\n'HC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4460 | C', 'X',\n'HCI', 'X',\n'HCS', 'X',\n'HDA', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4461 | HDD', 'X',\n'HDF', 'X',\n'HDN', 'X',\n'HDS', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4462 | n'HDZ', 'X',\n'HE1', 'X',\n'HE6', 'X',\n'HEA', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4463 | ,\n'HEB', 'X',\n'HEC', 'X',\n'HED', 'X',\n'HEE', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4464 | X',\n'HEF', 'X',\n'HEG', 'X',\n'HEM', 'X',\n'HEN',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4465 | 'X',\n'HEO', 'X',\n'HEP', 'X',\n'HEU', 'X',\n'HEV\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4466 | ', 'X',\n'HEX', 'X',\n'HEZ', 'X',\n'HF1', 'X',\n'H\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4467 | FA', 'X',\n'HFP', 'X',\n'HGA', 'Q',\n'HGB', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4468 | 'HGC', 'X',\n'HGI', 'X',\n'HGU', 'X',\n'HHO', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4469 | \n'HHP', 'X',\n'HIB', 'X',\n'HIC', 'H',\n'HII', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4470 | ',\n'HIN', 'X',\n'HIO', 'X',\n'HIP', 'H',\n'HIS', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4471 | 'H',\n'HLE', 'X',\n'HLT', 'X',\n'HMA', 'A',\n'HMB'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4472 | , 'X',\n'HMC', 'X',\n'HMD', 'X',\n'HMF', 'A',\n'HM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4473 | G', 'X',\n'HMH', 'X',\n'HMI', 'L',\n'HMM', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4474 | HMN', 'X',\n'HMO', 'X',\n'HMP', 'X',\n'HMR', 'R',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4475 | n'HNI', 'X',\n'HNP', 'X',\n'HOA', 'X',\n'HOE', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4476 | ,\n'HOH', 'X',\n'HOM', 'X',\n'HOP', 'X',\n'HOQ', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4477 | X',\n'HP1', 'A',\n'HP2', 'A',\n'HP3', 'X',\n'HPA',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4478 | 'X',\n'HPB', 'X',\n'HPC', 'X',\n'HPD', 'X',\n'HPE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4479 | ', 'A',\n'HPG', 'X',\n'HPH', 'F',\n'HPP', 'X',\n'H\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4480 | PQ', 'F',\n'HPR', 'X',\n'HPT', 'X',\n'HPY', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4481 | 'HQO', 'X',\n'HQQ', 'X',\n'HQU', 'X',\n'HRG', 'R',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4482 | \n'HRI', 'X',\n'HSA', 'X',\n'HSE', 'S',\n'HSF', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4483 | ',\n'HSM', 'X',\n'HSO', 'H',\n'HSP', 'X',\n'HT1', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4484 | 'X',\n'HT2', 'X',\n'HTA', 'X',\n'HTL', 'X',\n'HTO'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4485 | , 'X',\n'HTP', 'X',\n'HTR', 'W',\n'HUP', 'X',\n'HU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4486 | X', 'X',\n'HV5', 'A',\n'HV7', 'X',\n'HV8', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4487 | HXA', 'X',\n'HXC', 'X',\n'HXP', 'X',\n'HY1', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4488 | n'HYA', 'X',\n'HYB', 'X',\n'HYD', 'X',\n'HYG', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4489 | ,\n'HYP', 'P',\n'I06', 'X',\n'I10', 'X',\n'I11', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4490 | X',\n'I17', 'X',\n'I2P', 'X',\n'I3N', 'X',\n'I3P',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4491 | 'X',\n'I40', 'X',\n'I48', 'X',\n'I4B', 'X',\n'I52\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4492 | ', 'X',\n'I5P', 'X',\n'I84', 'G',\n'IAG', 'G',\n'I\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4493 | AS', 'X',\n'IB2', 'X',\n'IBB', 'X',\n'IBP', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4494 | 'IBR', 'X',\n'IBS', 'X',\n'IBZ', 'X',\n'IC1', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4495 | \n'ICA', 'X',\n'ICI', 'X',\n'ICL', 'X',\n'ICP', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4496 | ',\n'ICT', 'X',\n'ICU', 'X',\n'ID2', 'X',\n'IDC', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4497 | 'X',\n'IDG', 'X',\n'IDH', 'X',\n'IDM', 'X',\n'IDO'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4498 | , 'X',\n'IDP', 'X',\n'IDR', 'X',\n'IDS', 'X',\n'ID\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4499 | T', 'X',\n'IDU', 'X',\n'IFG', 'X',\n'IFP', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4500 | IGL', 'X',\n'IGN', 'X',\n'IGP', 'X',\n'IGU', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4501 | n'IH1', 'X',\n'IH2', 'X',\n'IH3', 'X',\n'IHB', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4502 | ,\n'IHN', 'X',\n'IHP', 'X',\n'IIC', 'X',\n'IIL', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4503 | I',\n'IIP', 'X',\n'IK2', 'X',\n'IKT', 'X',\n'ILA',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4504 | 'I',\n'ILE', 'I',\n'ILG', 'X',\n'ILO', 'X',\n'ILX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4505 | ', 'I',\n'IM1', 'X',\n'IM2', 'X',\n'IMC', 'X',\n'I\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4506 | MD', 'X',\n'IME', 'X',\n'IMF', 'X',\n'IMG', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4507 | 'IMH', 'X',\n'IMI', 'X',\n'IML', 'I',\n'IMM', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4508 | \n'IMN', 'X',\n'IMO', 'X',\n'IMP', 'X',\n'IMR', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4509 | ',\n'IMU', 'X',\n'IN0', 'D',\n'IN1', 'R',\n'IN2', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4510 | 'K',\n'IN3', 'L',\n'IN4', 'X',\n'IN5', 'A',\n'IN6'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4511 | , 'L',\n'IN7', 'X',\n'IN8', 'X',\n'IN9', 'X',\n'IN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4512 | A', 'L',\n'INB', 'X',\n'INC', 'X',\n'IND', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4513 | INE', 'X',\n'INF', 'F',\n'ING', 'F',\n'INH', 'R',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4514 | n'INI', 'X',\n'INJ', 'X',\n'INK', 'X',\n'INL', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4515 | ,\n'INM', 'X',\n'INN', 'A',\n'INO', 'X',\n'INP', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4516 | X',\n'INQ', 'X',\n'INR', 'X',\n'INS', 'X',\n'INT',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4517 | 'V',\n'INU', 'X',\n'INV', 'X',\n'INW', 'X',\n'INX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4518 | ', 'X',\n'INY', 'X',\n'INZ', 'X',\n'IOA', 'X',\n'I\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4519 | OB', 'X',\n'IOC', 'X',\n'IOD', 'X',\n'IOE', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4520 | 'IOF', 'X',\n'IOH', 'X',\n'IOL', 'X',\n'IOP', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4521 | \n'IP1', 'X',\n'IP2', 'X',\n'IP3', 'X',\n'IP4', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4522 | ',\n'IPA', 'X',\n'IPB', 'X',\n'IPD', 'X',\n'IPG', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4523 | 'G',\n'IPH', 'X',\n'IPL', 'X',\n'IPM', 'X',\n'IPN'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4524 | , 'X',\n'IPO', 'F',\n'IPP', 'X',\n'IPS', 'X',\n'IP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4525 | T', 'X',\n'IPU', 'X',\n'IPY', 'A',\n'IQB', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4526 | IQP', 'X',\n'IQS', 'X',\n'IR3', 'X',\n'IRI', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4527 | n'IRP', 'X',\n'ISA', 'X',\n'ISF', 'X',\n'ISO', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4528 | ,\n'ISP', 'X',\n'ISQ', 'X',\n'ISU', 'X',\n'ITM', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4529 | X',\n'ITP', 'X',\n'ITR', 'W',\n'ITS', 'X',\n'ITU',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4530 | 'X',\n'IU5', 'X',\n'IUM', 'X',\n'IUR', 'X',\n'IVA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4531 | ', 'X',\n'IYG', 'G',\n'IYR', 'Y',\n'J77', 'X',\n'J\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4532 | 78', 'X',\n'J80', 'X',\n'JE2', 'X',\n'JEN', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4533 | 'JST', 'X',\n'K21', 'X',\n'KAH', 'X',\n'KAI', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4534 | \n'KAM', 'X',\n'KAN', 'X',\n'KAP', 'X',\n'KCP', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4535 | ',\n'KCX', 'K',\n'KDO', 'X',\n'KEF', 'X',\n'KET', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4536 | 'X',\n'KGR', 'X',\n'KH1', 'X',\n'KIF', 'X',\n'KIV'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4537 | , 'V',\n'KNI', 'X',\n'KPH', 'K',\n'KTH', 'X',\n'KT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4538 | N', 'X',\n'KTP', 'X',\n'KWT', 'X',\n'L04', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4539 | L1P', 'X',\n'L24', 'E',\n'L2P', 'X',\n'L34', 'E',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4540 | n'L37', 'E',\n'L3P', 'X',\n'L4P', 'X',\n'L75', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4541 | ,\n'LAC', 'X',\n'LAD', 'X',\n'LAK', 'X',\n'LAM', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4542 | X',\n'LAR', 'X',\n'LAT', 'X',\n'LAX', 'X',\n'LCO',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4543 | 'X',\n'LCP', 'X',\n'LCS', 'X',\n'LDA', 'X',\n'LDO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4544 | ', 'L',\n'LDP', 'X',\n'LEA', 'X',\n'LEO', 'X',\n'L\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4545 | EU', 'L',\n'LG2', 'X',\n'LG6', 'X',\n'LGC', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4546 | 'LGP', 'X',\n'LHG', 'X',\n'LHY', 'F',\n'LI1', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4547 | \n'LIG', 'X',\n'LIL', 'X',\n'LIM', 'X',\n'LIN', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4548 | ',\n'LIO', 'X',\n'LIP', 'X',\n'LLA', 'X',\n'LLP', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4549 | 'K',\n'LLY', 'K',\n'LMG', 'X',\n'LML', 'X',\n'LMT'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4550 | , 'X',\n'LMU', 'X',\n'LMZ', 'X',\n'LNK', 'X',\n'LN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4551 | L', 'X',\n'LNO', 'X',\n'LOF', 'X',\n'LOL', 'L',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4552 | LOM', 'X',\n'LOR', 'X',\n'LOS', 'X',\n'LOV', 'L',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4553 | n'LOX', 'X',\n'LP1', 'X',\n'LP2', 'R',\n'LPA', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4554 | ,\n'LPC', 'X',\n'LPF', 'X',\n'LPL', 'X',\n'LPM', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4555 | X',\n'LPP', 'X',\n'LRB', 'X',\n'LRU', 'X',\n'LS1',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4556 | 'X',\n'LS2', 'X',\n'LS3', 'X',\n'LS4', 'X',\n'LS5\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4557 | ', 'X',\n'LTA', 'X',\n'LTL', 'X',\n'LTR', 'W',\n'L\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4558 | UM', 'X',\n'LVS', 'L',\n'LXC', 'X',\n'LY2', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4559 | 'LY3', 'X',\n'LYA', 'X',\n'LYB', 'X',\n'LYC', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4560 | \n'LYD', 'X',\n'LYM', 'K',\n'LYN', 'X',\n'LYS', 'K\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4561 | ',\n'LYT', 'X',\n'LYW', 'X',\n'LYZ', 'K',\n'M1A', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4562 | 'X',\n'M1G', 'X',\n'M2G', 'X',\n'M3L', 'K',\n'M6P'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4563 | , 'X',\n'M6T', 'X',\n'M7G', 'X',\n'MA1', 'X',\n'MA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4564 | 2', 'X',\n'MA3', 'X',\n'MA4', 'X',\n'MA6', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4565 | MAA', 'A',\n'MAB', 'X',\n'MAC', 'X',\n'MAE', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4566 | n'MAG', 'X',\n'MAH', 'X',\n'MAI', 'R',\n'MAK', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4567 | ,\n'MAL', 'X',\n'MAM', 'X',\n'MAN', 'X',\n'MAO', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4568 | X',\n'MAP', 'X',\n'MAR', 'X',\n'MAS', 'X',\n'MAT',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4569 | 'X',\n'MAU', 'X',\n'MAZ', 'X',\n'MBA', 'X',\n'MBD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4570 | ', 'X',\n'MBG', 'X',\n'MBH', 'X',\n'MBN', 'X',\n'M\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4571 | BO', 'X',\n'MBR', 'X',\n'MBS', 'X',\n'MBV', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4572 | 'MBZ', 'X',\n'MCA', 'X',\n'MCD', 'X',\n'MCE', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4573 | \n'MCG', 'G',\n'MCI', 'X',\n'MCN', 'X',\n'MCP', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4574 | ',\n'MCT', 'X',\n'MCY', 'X',\n'MD2', 'X',\n'MDA', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4575 | 'X',\n'MDC', 'X',\n'MDG', 'X',\n'MDH', 'X',\n'MDL'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4576 | , 'X',\n'MDM', 'X',\n'MDN', 'X',\n'MDP', 'X',\n'ME\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4577 | 6', 'X',\n'MEB', 'X',\n'MEC', 'X',\n'MEL', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4578 | MEN', 'N',\n'MEP', 'X',\n'MER', 'X',\n'MES', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4579 | n'MET', 'M',\n'MEV', 'X',\n'MF2', 'X',\n'MF3', 'M'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4580 | ,\n'MFB', 'X',\n'MFD', 'X',\n'MFU', 'X',\n'MG7', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4581 | X',\n'MGA', 'X',\n'MGB', 'X',\n'MGD', 'X',\n'MGG',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4582 | 'R',\n'MGL', 'X',\n'MGN', 'Q',\n'MGO', 'X',\n'MGP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4583 | ', 'X',\n'MGR', 'X',\n'MGS', 'X',\n'MGT', 'X',\n'M\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4584 | GU', 'X',\n'MGY', 'G',\n'MHB', 'X',\n'MHF', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4585 | 'MHL', 'L',\n'MHM', 'X',\n'MHO', 'M',\n'MHS', 'H',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4586 | \n'MHZ', 'X',\n'MIA', 'X',\n'MIC', 'X',\n'MID', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4587 | ',\n'MIL', 'X',\n'MIM', 'X',\n'MIN', 'G',\n'MIP', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4588 | 'X',\n'MIS', 'S',\n'MIT', 'X',\n'MJI', 'X',\n'MK1'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4589 | , 'X',\n'MKC', 'X',\n'MLA', 'X',\n'MLC', 'X',\n'ML\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4590 | E', 'L',\n'MLN', 'X',\n'MLT', 'X',\n'MLY', 'K',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4591 | MLZ', 'K',\n'MM3', 'X',\n'MM4', 'X',\n'MMA', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4592 | n'MMC', 'X',\n'MME', 'M',\n'MMO', 'R',\n'MMP', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4593 | ,\n'MMQ', 'X',\n'MMT', 'X',\n'MN1', 'X',\n'MN2', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4594 | X',\n'MN3', 'X',\n'MN5', 'X',\n'MN7', 'X',\n'MN8',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4595 | 'X',\n'MNA', 'X',\n'MNB', 'X',\n'MNC', 'X',\n'MNG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4596 | ', 'X',\n'MNL', 'L',\n'MNO', 'X',\n'MNP', 'X',\n'M\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4597 | NQ', 'X',\n'MNS', 'X',\n'MNT', 'X',\n'MNV', 'V',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4598 | 'MO1', 'X',\n'MO2', 'X',\n'MO3', 'X',\n'MO4', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4599 | \n'MO5', 'X',\n'MO6', 'X',\n'MOA', 'X',\n'MOB', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4600 | ',\n'MOC', 'X',\n'MOE', 'X',\n'MOG', 'X',\n'MOH', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4601 | 'X',\n'MOL', 'X',\n'MOO', 'X',\n'MOP', 'X',\n'MOR'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4602 | , 'X',\n'MOS', 'X',\n'MOT', 'X',\n'MOX', 'X',\n'MP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4603 | 1', 'X',\n'MP3', 'X',\n'MPA', 'X',\n'MPB', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4604 | MPC', 'X',\n'MPD', 'X',\n'MPG', 'X',\n'MPH', 'M',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4605 | n'MPI', 'X',\n'MPJ', 'M',\n'MPL', 'X',\n'MPN', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4606 | ,\n'MPO', 'X',\n'MPP', 'X',\n'MPQ', 'G',\n'MPR', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4607 | X',\n'MPS', 'X',\n'MQ0', 'X',\n'MQ7', 'X',\n'MQ8',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4608 | 'X',\n'MQ9', 'X',\n'MQI', 'X',\n'MR2', 'X',\n'MRC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4609 | ', 'X',\n'MRM', 'X',\n'MRP', 'X',\n'MS2', 'X',\n'M\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4610 | SA', 'X',\n'MSB', 'X',\n'MSD', 'X',\n'MSE', 'M',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4611 | 'MSF', 'X',\n'MSI', 'X',\n'MSO', 'M',\n'MSQ', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4612 | \n'MST', 'X',\n'MSU', 'X',\n'MTA', 'X',\n'MTB', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4613 | ',\n'MTC', 'X',\n'MTD', 'X',\n'MTE', 'X',\n'MTF', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4614 | 'X',\n'MTG', 'X',\n'MTO', 'X',\n'MTS', 'X',\n'MTT'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4615 | , 'X',\n'MTX', 'X',\n'MTY', 'Y',\n'MUG', 'X',\n'MU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4616 | P', 'X',\n'MUR', 'X',\n'MVA', 'V',\n'MW1', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4617 | MW2', 'X',\n'MXA', 'X',\n'MXY', 'X',\n'MYA', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4618 | n'MYC', 'X',\n'MYG', 'X',\n'MYR', 'X',\n'MYS', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4619 | ,\n'MYT', 'X',\n'MZM', 'X',\n'N1T', 'X',\n'N25', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4620 | X',\n'N2B', 'X',\n'N3T', 'X',\n'N4B', 'X',\n'NA2',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4621 | 'X',\n'NA5', 'X',\n'NA6', 'X',\n'NAA', 'X',\n'NAB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4622 | ', 'X',\n'NAC', 'X',\n'NAD', 'X',\n'NAE', 'X',\n'N\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4623 | AF', 'X',\n'NAG', 'X',\n'NAH', 'X',\n'NAI', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4624 | 'NAL', 'A',\n'NAM', 'A',\n'NAN', 'X',\n'NAO', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4625 | \n'NAP', 'X',\n'NAQ', 'X',\n'NAR', 'X',\n'NAS', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4626 | ',\n'NAU', 'X',\n'NAV', 'X',\n'NAW', 'X',\n'NAX', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4627 | 'X',\n'NAY', 'X',\n'NBA', 'X',\n'NBD', 'X',\n'NBE'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4628 | , 'X',\n'NBG', 'X',\n'NBN', 'X',\n'NBP', 'X',\n'NB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4629 | S', 'X',\n'NBU', 'X',\n'NCA', 'X',\n'NCB', 'A',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4630 | NCD', 'X',\n'NCH', 'X',\n'NCM', 'X',\n'NCN', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4631 | n'NCO', 'X',\n'NCR', 'X',\n'NCS', 'X',\n'ND4', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4632 | ,\n'NDA', 'X',\n'NDC', 'X',\n'NDD', 'X',\n'NDO', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4633 | X',\n'NDP', 'X',\n'NDT', 'X',\n'NEA', 'X',\n'NEB',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4634 | 'X',\n'NED', 'X',\n'NEM', 'H',\n'NEN', 'X',\n'NEO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4635 | ', 'X',\n'NEP', 'H',\n'NEQ', 'X',\n'NES', 'X',\n'N\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4636 | ET', 'X',\n'NEV', 'X',\n'NFA', 'F',\n'NFE', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4637 | 'NFG', 'X',\n'NFP', 'X',\n'NFS', 'X',\n'NG6', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4638 | \n'NGA', 'X',\n'NGL', 'X',\n'NGM', 'X',\n'NGO', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4639 | ',\n'NGP', 'X',\n'NGT', 'X',\n'NGU', 'X',\n'NH2', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4640 | 'X',\n'NH3', 'X',\n'NH4', 'X',\n'NHD', 'X',\n'NHE'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4641 | , 'X',\n'NHM', 'X',\n'NHP', 'X',\n'NHR', 'X',\n'NH\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4642 | S', 'X',\n'NI1', 'X',\n'NI2', 'X',\n'NIC', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4643 | NID', 'X',\n'NIK', 'X',\n'NIO', 'X',\n'NIP', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4644 | n'NIT', 'X',\n'NIU', 'X',\n'NIY', 'Y',\n'NLA', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4645 | ,\n'NLE', 'L',\n'NLG', 'X',\n'NLN', 'L',\n'NLP', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4646 | L',\n'NM1', 'X',\n'NMA', 'A',\n'NMB', 'X',\n'NMC',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4647 | 'G',\n'NMD', 'X',\n'NME', 'X',\n'NMN', 'X',\n'NMO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4648 | ', 'X',\n'NMQ', 'X',\n'NMX', 'X',\n'NMY', 'X',\n'N\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4649 | NH', 'R',\n'NNO', 'X',\n'NO2', 'X',\n'NO3', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4650 | 'NOA', 'X',\n'NOD', 'X',\n'NOJ', 'X',\n'NON', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4651 | \n'NOP', 'X',\n'NOR', 'X',\n'NOS', 'X',\n'NOV', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4652 | ',\n'NOX', 'X',\n'NP3', 'X',\n'NPA', 'X',\n'NPC', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4653 | 'X',\n'NPD', 'X',\n'NPE', 'X',\n'NPF', 'X',\n'NPH'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4654 | , 'C',\n'NPI', 'X',\n'NPL', 'X',\n'NPN', 'X',\n'NP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4655 | O', 'X',\n'NPP', 'X',\n'NPT', 'X',\n'NPY', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4656 | NRG', 'R',\n'NRI', 'X',\n'NS1', 'X',\n'NS5', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4657 | n'NSP', 'X',\n'NTA', 'X',\n'NTB', 'X',\n'NTC', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4658 | ,\n'NTH', 'X',\n'NTM', 'X',\n'NTP', 'X',\n'NTS', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4659 | X',\n'NTU', 'X',\n'NTZ', 'X',\n'NU1', 'X',\n'NVA',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4660 | 'V',\n'NVI', 'X',\n'NVP', 'X',\n'NW1', 'X',\n'NYP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4661 | ', 'X',\n'O4M', 'X',\n'OAA', 'X',\n'OAI', 'X',\n'O\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4662 | AP', 'X',\n'OAR', 'X',\n'OAS', 'S',\n'OBA', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4663 | 'OBN', 'X',\n'OC1', 'X',\n'OC2', 'X',\n'OC3', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4664 | \n'OC4', 'X',\n'OC5', 'X',\n'OC6', 'X',\n'OC7', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4665 | ',\n'OCL', 'X',\n'OCM', 'X',\n'OCN', 'X',\n'OCO', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4666 | 'X',\n'OCP', 'X',\n'OCS', 'C',\n'OCT', 'X',\n'OCV'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4667 | , 'K',\n'OCY', 'C',\n'ODA', 'X',\n'ODS', 'X',\n'OE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4668 | S', 'X',\n'OET', 'X',\n'OF1', 'X',\n'OF2', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4669 | OF3', 'X',\n'OFL', 'X',\n'OFO', 'X',\n'OHE', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4670 | n'OHO', 'X',\n'OHT', 'X',\n'OIC', 'X',\n'OIP', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4671 | ,\n'OKA', 'X',\n'OLA', 'X',\n'OLE', 'X',\n'OLI', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4672 | X',\n'OLO', 'X',\n'OMB', 'X',\n'OMC', 'X',\n'OMD',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4673 | 'X',\n'OME', 'X',\n'OMG', 'X',\n'OMP', 'X',\n'OMT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4674 | ', 'M',\n'OMU', 'X',\n'ONE', 'X',\n'ONL', 'L',\n'O\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4675 | NP', 'X',\n'OPA', 'X',\n'OPD', 'X',\n'OPE', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4676 | 'OPG', 'X',\n'OPH', 'X',\n'OPN', 'X',\n'OPP', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4677 | \n'OPR', 'R',\n'ORN', 'X',\n'ORO', 'X',\n'ORP', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4678 | ',\n'OSB', 'X',\n'OSS', 'X',\n'OTA', 'X',\n'OTB', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4679 | 'X',\n'OTE', 'X',\n'OTG', 'X',\n'OUT', 'X',\n'OVA'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4680 | , 'X',\n'OWQ', 'X',\n'OXA', 'X',\n'OXE', 'X',\n'OX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4681 | I', 'X',\n'OXL', 'X',\n'OXM', 'X',\n'OXN', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4682 | OXO', 'X',\n'OXP', 'X',\n'OXS', 'X',\n'OXY', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4683 | n'P11', 'A',\n'P24', 'X',\n'P28', 'X',\n'P2P', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4684 | ,\n'P2U', 'X',\n'P3M', 'X',\n'P4C', 'X',\n'P4P', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4685 | X',\n'P5P', 'X',\n'P6G', 'X',\n'PA1', 'X',\n'PA2',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4686 | 'X',\n'PA3', 'X',\n'PA4', 'X',\n'PA5', 'X',\n'PAA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4687 | ', 'X',\n'PAB', 'X',\n'PAC', 'X',\n'PAD', 'X',\n'P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4688 | AE', 'X',\n'PAG', 'X',\n'PAH', 'X',\n'PAI', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4689 | 'PAL', 'D',\n'PAM', 'X',\n'PAN', 'X',\n'PAO', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4690 | \n'PAP', 'A',\n'PAQ', 'F',\n'PAR', 'X',\n'PAS', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4691 | ',\n'PAT', 'W',\n'PBA', 'X',\n'PBB', 'X',\n'PBC', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4692 | 'X',\n'PBF', 'F',\n'PBG', 'X',\n'PBI', 'X',\n'PBM'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4693 | , 'X',\n'PBN', 'X',\n'PBP', 'X',\n'PBR', 'X',\n'PB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4694 | Z', 'X',\n'PC2', 'X',\n'PCA', 'E',\n'PCB', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4695 | PCD', 'X',\n'PCE', 'X',\n'PCG', 'X',\n'PCH', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4696 | n'PCL', 'X',\n'PCM', 'X',\n'PCP', 'X',\n'PCR', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4697 | ,\n'PCS', 'X',\n'PCU', 'X',\n'PCV', 'X',\n'PCY', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4698 | X',\n'PD1', 'X',\n'PDA', 'X',\n'PDC', 'X',\n'PDD',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4699 | 'A',\n'PDE', 'A',\n'PDI', 'X',\n'PDL', 'A',\n'PDN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4700 | ', 'X',\n'PDO', 'X',\n'PDP', 'X',\n'PDT', 'X',\n'P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4701 | DU', 'X',\n'PE2', 'X',\n'PE6', 'X',\n'PEA', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4702 | 'PEB', 'X',\n'PEC', 'X',\n'PED', 'X',\n'PEE', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4703 | \n'PEF', 'X',\n'PEG', 'X',\n'PEL', 'X',\n'PEO', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4704 | ',\n'PEP', 'X',\n'PEQ', 'X',\n'PER', 'X',\n'PET', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4705 | 'X',\n'PFB', 'X',\n'PFC', 'X',\n'PFG', 'X',\n'PFL'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4706 | , 'X',\n'PFM', 'X',\n'PFZ', 'X',\n'PG4', 'X',\n'PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4707 | 5', 'X',\n'PG6', 'X',\n'PGA', 'X',\n'PGC', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4708 | PGD', 'X',\n'PGE', 'X',\n'PGG', 'G',\n'PGH', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4709 | n'PGL', 'X',\n'PGO', 'X',\n'PGP', 'X',\n'PGQ', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4710 | ,\n'PGR', 'X',\n'PGS', 'X',\n'PGU', 'X',\n'PGX', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4711 | X',\n'PGY', 'G',\n'PH1', 'X',\n'PH2', 'X',\n'PH3',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4712 | 'X',\n'PHA', 'F',\n'PHB', 'X',\n'PHC', 'X',\n'PHD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4713 | ', 'X',\n'PHE', 'F',\n'PHG', 'X',\n'PHH', 'X',\n'P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4714 | HI', 'F',\n'PHL', 'F',\n'PHM', 'X',\n'PHN', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4715 | 'PHO', 'X',\n'PHP', 'X',\n'PHQ', 'X',\n'PHS', 'H',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4716 | \n'PHT', 'X',\n'PHW', 'P',\n'PHY', 'X',\n'PI1', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4717 | ',\n'PI2', 'X',\n'PI3', 'X',\n'PI4', 'X',\n'PI5', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4718 | 'X',\n'PI6', 'X',\n'PI7', 'X',\n'PI8', 'X',\n'PI9'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4719 | , 'X',\n'PIA', 'X',\n'PIB', 'X',\n'PIC', 'X',\n'PI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4720 | D', 'X',\n'PIG', 'X',\n'PIH', 'X',\n'PIM', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4721 | PIN', 'X',\n'PIO', 'X',\n'PIP', 'X',\n'PIQ', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4722 | n'PIR', 'X',\n'PIV', 'X',\n'PKF', 'X',\n'PL1', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4723 | ,\n'PL9', 'X',\n'PLA', 'D',\n'PLC', 'X',\n'PLE', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4724 | L',\n'PLG', 'G',\n'PLH', 'X',\n'PLM', 'X',\n'PLP',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4725 | 'X',\n'PLS', 'S',\n'PLT', 'W',\n'PLU', 'L',\n'PLY\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4726 | ', 'X',\n'PMA', 'X',\n'PMB', 'X',\n'PMC', 'X',\n'P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4727 | ME', 'F',\n'PML', 'X',\n'PMM', 'X',\n'PMO', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4728 | 'PMP', 'X',\n'PMS', 'X',\n'PMY', 'X',\n'PN2', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4729 | \n'PNA', 'X',\n'PNB', 'X',\n'PNC', 'G',\n'PND', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4730 | ',\n'PNE', 'A',\n'PNF', 'X',\n'PNG', 'X',\n'PNI', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4731 | 'X',\n'PNL', 'X',\n'PNM', 'X',\n'PNN', 'X',\n'PNO'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4732 | , 'X',\n'PNP', 'X',\n'PNQ', 'X',\n'PNS', 'X',\n'PN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4733 | T', 'X',\n'PNU', 'X',\n'PO2', 'X',\n'PO4', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4734 | POB', 'X',\n'POC', 'X',\n'POL', 'X',\n'POM', 'P',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4735 | n'PON', 'X',\n'POP', 'X',\n'POR', 'X',\n'POS', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4736 | ,\n'PP1', 'X',\n'PP2', 'X',\n'PP3', 'A',\n'PP4', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4737 | X',\n'PP5', 'X',\n'PP6', 'X',\n'PP7', 'X',\n'PP8',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4738 | 'N',\n'PP9', 'X',\n'PPB', 'X',\n'PPC', 'X',\n'PPD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4739 | ', 'X',\n'PPE', 'E',\n'PPG', 'X',\n'PPH', 'F',\n'P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4740 | PI', 'X',\n'PPJ', 'V',\n'PPL', 'X',\n'PPM', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4741 | 'PPN', 'A',\n'PPO', 'X',\n'PPP', 'X',\n'PPQ', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4742 | \n'PPR', 'X',\n'PPS', 'X',\n'PPT', 'X',\n'PPU', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4743 | ',\n'PPX', 'F',\n'PPY', 'X',\n'PPZ', 'X',\n'PQ0', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4744 | 'X',\n'PQN', 'X',\n'PQQ', 'X',\n'PR1', 'X',\n'PR2'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4745 | , 'X',\n'PR3', 'X',\n'PRA', 'X',\n'PRB', 'X',\n'PR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4746 | C', 'X',\n'PRD', 'X',\n'PRE', 'X',\n'PRF', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4747 | PRH', 'X',\n'PRI', 'P',\n'PRL', 'X',\n'PRN', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4748 | n'PRO', 'P',\n'PRP', 'X',\n'PRR', 'A',\n'PRS', 'P'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4749 | ,\n'PRZ', 'X',\n'PS0', 'X',\n'PSA', 'X',\n'PSD', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4750 | X',\n'PSE', 'X',\n'PSF', 'S',\n'PSG', 'X',\n'PSI',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4751 | 'X',\n'PSO', 'X',\n'PSQ', 'X',\n'PSS', 'X',\n'PST\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4752 | ', 'X',\n'PSU', 'X',\n'PT1', 'X',\n'PT3', 'X',\n'P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4753 | TA', 'X',\n'PTC', 'X',\n'PTD', 'X',\n'PTE', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4754 | 'PTH', 'Y',\n'PTL', 'X',\n'PTM', 'Y',\n'PTN', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4755 | \n'PTO', 'X',\n'PTP', 'X',\n'PTR', 'Y',\n'PTS', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4756 | ',\n'PTT', 'X',\n'PTU', 'X',\n'PTY', 'X',\n'PUA', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4757 | 'X',\n'PUB', 'X',\n'PUR', 'X',\n'PUT', 'X',\n'PVA'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4758 | , 'X',\n'PVB', 'X',\n'PVH', 'H',\n'PVL', 'X',\n'PX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4759 | A', 'X',\n'PXF', 'X',\n'PXG', 'X',\n'PXP', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4760 | PXY', 'X',\n'PXZ', 'X',\n'PY2', 'X',\n'PY4', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4761 | n'PY5', 'X',\n'PY6', 'X',\n'PYA', 'A',\n'PYC', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4762 | ,\n'PYD', 'X',\n'PYE', 'X',\n'PYL', 'X',\n'PYM', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4763 | X',\n'PYO', 'X',\n'PYP', 'X',\n'PYQ', 'X',\n'PYR',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4764 | 'X',\n'PYS', 'X',\n'PYT', 'X',\n'PYX', 'X',\n'PYY\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4765 | ', 'X',\n'PYZ', 'X',\n'PZQ', 'X',\n'Q82', 'X',\n'Q\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4766 | NC', 'X',\n'QND', 'X',\n'QSI', 'Q',\n'QTR', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4767 | 'QUA', 'X',\n'QUE', 'X',\n'QUI', 'X',\n'QUO', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4768 | \n'R11', 'X',\n'R12', 'X',\n'R13', 'X',\n'R18', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4769 | ',\n'R1P', 'X',\n'R56', 'X',\n'R5P', 'X',\n'RA2', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4770 | 'X',\n'RAD', 'X',\n'RAI', 'X',\n'RAL', 'X',\n'RAM'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4771 | , 'X',\n'RAN', 'X',\n'RAP', 'X',\n'RBF', 'X',\n'RB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4772 | U', 'X',\n'RCA', 'X',\n'RCL', 'X',\n'RCO', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4773 | RDC', 'X',\n'RDF', 'W',\n'RE9', 'X',\n'REA', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4774 | n'RED', 'K',\n'REO', 'X',\n'REP', 'X',\n'RET', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4775 | ,\n'RFA', 'X',\n'RFB', 'X',\n'RFL', 'X',\n'RFP', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4776 | X',\n'RG1', 'X',\n'RGS', 'X',\n'RH1', 'X',\n'RHA',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4777 | 'X',\n'RHC', 'X',\n'RHD', 'X',\n'RHM', 'X',\n'RHO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4778 | ', 'X',\n'RHQ', 'X',\n'RHS', 'X',\n'RIA', 'X',\n'R\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4779 | IB', 'X',\n'RIC', 'X',\n'RIF', 'X',\n'RIN', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4780 | 'RIP', 'X',\n'RIT', 'X',\n'RMB', 'X',\n'RMN', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4781 | \n'RMP', 'X',\n'RNG', 'X',\n'RNS', 'X',\n'RNT', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4782 | ',\n'RO2', 'X',\n'RO4', 'X',\n'ROC', 'N',\n'ROI', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4783 | 'X',\n'ROM', 'X',\n'RON', 'V',\n'ROP', 'X',\n'ROS'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4784 | , 'X',\n'ROX', 'X',\n'RPA', 'X',\n'RPD', 'X',\n'RP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4785 | H', 'X',\n'RPL', 'X',\n'RPP', 'X',\n'RPR', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4786 | RPX', 'X',\n'RQ3', 'X',\n'RR1', 'X',\n'RR6', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4787 | n'RRS', 'X',\n'RS1', 'X',\n'RS2', 'X',\n'RS7', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4788 | ,\n'RSS', 'X',\n'RTA', 'X',\n'RTB', 'X',\n'RTC', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4789 | X',\n'RTL', 'X',\n'RUB', 'X',\n'RUN', 'X',\n'RWJ',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4790 | 'X',\n'RXP', 'X',\n'S02', 'X',\n'S11', 'X',\n'S1H\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4791 | ', 'S',\n'S27', 'X',\n'S2C', 'C',\n'S3P', 'X',\n'S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4792 | 4U', 'X',\n'S57', 'X',\n'S58', 'X',\n'S5H', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4793 | 'S6G', 'X',\n'S80', 'X',\n'SAA', 'X',\n'SAB', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4794 | \n'SAC', 'S',\n'SAD', 'X',\n'SAE', 'X',\n'SAF', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4795 | ',\n'SAH', 'C',\n'SAI', 'C',\n'SAL', 'X',\n'SAM', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4796 | 'M',\n'SAN', 'X',\n'SAP', 'X',\n'SAR', 'X',\n'SAS'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4797 | , 'X',\n'SB1', 'X',\n'SB2', 'X',\n'SB3', 'X',\n'SB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4798 | 4', 'X',\n'SB5', 'X',\n'SB6', 'X',\n'SBA', 'L',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4799 | SBB', 'X',\n'SBD', 'A',\n'SBI', 'X',\n'SBL', 'A',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4800 | n'SBN', 'X',\n'SBO', 'X',\n'SBR', 'X',\n'SBS', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4801 | ,\n'SBT', 'X',\n'SBU', 'X',\n'SBX', 'X',\n'SC4', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4802 | X',\n'SCA', 'X',\n'SCC', 'X',\n'SCD', 'X',\n'SCH',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4803 | 'C',\n'SCI', 'X',\n'SCL', 'X',\n'SCM', 'X',\n'SCN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4804 | ', 'X',\n'SCO', 'X',\n'SCP', 'S',\n'SCR', 'X',\n'S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4805 | CS', 'X',\n'SCV', 'C',\n'SCY', 'C',\n'SD8', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4806 | 'SDK', 'X',\n'SDZ', 'X',\n'SE4', 'X',\n'SEA', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4807 | \n'SEB', 'S',\n'SEC', 'X',\n'SEG', 'A',\n'SEI', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4808 | ',\n'SEL', 'S',\n'SEM', 'X',\n'SEO', 'X',\n'SEP', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4809 | 'S',\n'SER', 'S',\n'SES', 'X',\n'SET', 'S',\n'SEU'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4810 | , 'X',\n'SF4', 'X',\n'SFG', 'X',\n'SFN', 'X',\n'SF\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4811 | O', 'X',\n'SGA', 'X',\n'SGC', 'X',\n'SGL', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4812 | SGM', 'X',\n'SGN', 'X',\n'SGP', 'X',\n'SHA', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4813 | n'SHC', 'X',\n'SHF', 'X',\n'SHH', 'X',\n'SHP', 'G'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4814 | ,\n'SHR', 'E',\n'SHT', 'T',\n'SHU', 'X',\n'SI2', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4815 | X',\n'SIA', 'X',\n'SIF', 'X',\n'SIG', 'X',\n'SIH',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4816 | 'X',\n'SIM', 'X',\n'SIN', 'X',\n'SKD', 'X',\n'SKF\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4817 | ', 'X',\n'SLB', 'X',\n'SLE', 'X',\n'SLZ', 'K',\n'S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4818 | MA', 'X',\n'SMC', 'C',\n'SME', 'M',\n'SML', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4819 | 'SMM', 'M',\n'SMN', 'X',\n'SMP', 'X',\n'SMS', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4820 | \n'SN1', 'X',\n'SN6', 'X',\n'SN7', 'X',\n'SNC', 'C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4821 | ',\n'SNN', 'X',\n'SNP', 'X',\n'SO1', 'X',\n'SO2', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4822 | 'X',\n'SO3', 'X',\n'SO4', 'X',\n'SOA', 'X',\n'SOC'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4823 | , 'C',\n'SOM', 'X',\n'SOR', 'X',\n'SOT', 'X',\n'SO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4824 | X', 'X',\n'SPA', 'X',\n'SPB', 'X',\n'SPC', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4825 | SPD', 'X',\n'SPE', 'X',\n'SPG', 'X',\n'SPH', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4826 | n'SPI', 'X',\n'SPK', 'X',\n'SPM', 'X',\n'SPN', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4827 | ,\n'SPO', 'X',\n'SPP', 'X',\n'SPS', 'X',\n'SPY', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4828 | X',\n'SQU', 'X',\n'SRA', 'X',\n'SRB', 'X',\n'SRD',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4829 | 'X',\n'SRL', 'X',\n'SRM', 'X',\n'SRS', 'X',\n'SRY\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4830 | ', 'X',\n'SSA', 'X',\n'SSB', 'X',\n'SSG', 'X',\n'S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4831 | SP', 'X',\n'ST1', 'X',\n'ST2', 'X',\n'ST3', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4832 | 'ST4', 'X',\n'ST5', 'X',\n'ST6', 'X',\n'STA', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4833 | \n'STB', 'X',\n'STE', 'X',\n'STG', 'X',\n'STI', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4834 | ',\n'STL', 'X',\n'STN', 'X',\n'STO', 'X',\n'STP', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4835 | 'X',\n'STR', 'X',\n'STU', 'X',\n'STY', 'Y',\n'SU1'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4836 | , 'X',\n'SU2', 'X',\n'SUC', 'X',\n'SUI', 'X',\n'SU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4837 | L', 'X',\n'SUR', 'X',\n'SVA', 'S',\n'SWA', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4838 | T16', 'X',\n'T19', 'X',\n'T23', 'X',\n'T29', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4839 | n'T33', 'X',\n'T3P', 'X',\n'T42', 'A',\n'T44', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4840 | ,\n'T5A', 'X',\n'T6A', 'T',\n'T6P', 'X',\n'T80', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4841 | X',\n'T87', 'X',\n'TA1', 'X',\n'TAA', 'X',\n'TAB',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4842 | 'X',\n'TAC', 'X',\n'TAD', 'X',\n'TAF', 'X',\n'TAM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4843 | ', 'X',\n'TAP', 'X',\n'TAR', 'X',\n'TAS', 'X',\n'T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4844 | AU', 'X',\n'TAX', 'X',\n'TAZ', 'X',\n'TB9', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4845 | 'TBA', 'X',\n'TBD', 'X',\n'TBG', 'G',\n'TBH', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4846 | \n'TBM', 'T',\n'TBO', 'X',\n'TBP', 'X',\n'TBR', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4847 | ',\n'TBS', 'X',\n'TBT', 'X',\n'TBU', 'X',\n'TBZ', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4848 | 'X',\n'TC4', 'X',\n'TCA', 'X',\n'TCB', 'X',\n'TCH'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4849 | , 'X',\n'TCK', 'X',\n'TCL', 'X',\n'TCM', 'X',\n'TC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4850 | N', 'X',\n'TCP', 'X',\n'TCR', 'W',\n'TCS', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4851 | TCZ', 'X',\n'TDA', 'X',\n'TDB', 'X',\n'TDG', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4852 | n'TDP', 'X',\n'TDR', 'X',\n'TDX', 'X',\n'TEA', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4853 | ,\n'TEM', 'X',\n'TEN', 'X',\n'TEO', 'X',\n'TEP', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4854 | X',\n'TER', 'X',\n'TES', 'X',\n'TET', 'X',\n'TFA',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4855 | 'X',\n'TFB', 'X',\n'TFH', 'X',\n'TFI', 'X',\n'TFK\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4856 | ', 'X',\n'TFP', 'X',\n'THA', 'X',\n'THB', 'X',\n'T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4857 | HC', 'T',\n'THD', 'X',\n'THE', 'X',\n'THF', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4858 | 'THJ', 'X',\n'THK', 'X',\n'THM', 'X',\n'THN', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4859 | \n'THO', 'T',\n'THP', 'X',\n'THQ', 'X',\n'THR', 'T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4860 | ',\n'THS', 'X',\n'THT', 'X',\n'THU', 'X',\n'THX', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4861 | 'X',\n'THZ', 'X',\n'TI1', 'X',\n'TI2', 'X',\n'TI3'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4862 | , 'P',\n'TIA', 'X',\n'TIH', 'A',\n'TK4', 'X',\n'TL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4863 | A', 'X',\n'TLC', 'X',\n'TLM', 'X',\n'TLN', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4864 | TLX', 'X',\n'TM5', 'X',\n'TM6', 'X',\n'TMA', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4865 | n'TMB', 'T',\n'TMC', 'X',\n'TMD', 'T',\n'TME', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4866 | ,\n'TMF', 'X',\n'TML', 'K',\n'TMM', 'X',\n'TMN', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4867 | X',\n'TMP', 'X',\n'TMQ', 'X',\n'TMR', 'X',\n'TMT',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4868 | 'X',\n'TMZ', 'X',\n'TNB', 'C',\n'TND', 'X',\n'TNK\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4869 | ', 'X',\n'TNP', 'X',\n'TNT', 'X',\n'TOA', 'X',\n'T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4870 | OB', 'X',\n'TOC', 'X',\n'TOL', 'X',\n'TOP', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4871 | 'TOS', 'X',\n'TOT', 'X',\n'TP1', 'G',\n'TP2', 'P',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4872 | \n'TP3', 'E',\n'TP4', 'E',\n'TP7', 'T',\n'TPA', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4873 | ',\n'TPE', 'X',\n'TPF', 'X',\n'TPI', 'X',\n'TPL', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4874 | 'W',\n'TPM', 'X',\n'TPN', 'G',\n'TPO', 'T',\n'TPP'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4875 | , 'X',\n'TPQ', 'A',\n'TPR', 'P',\n'TPS', 'X',\n'TP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4876 | T', 'X',\n'TPV', 'X',\n'TPX', 'X',\n'TPY', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4877 | TQ3', 'X',\n'TQ4', 'X',\n'TQ5', 'X',\n'TQ6', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4878 | n'TR1', 'X',\n'TRA', 'X',\n'TRB', 'X',\n'TRC', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4879 | ,\n'TRD', 'X',\n'TRE', 'X',\n'TRF', 'W',\n'TRG', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4880 | K',\n'TRH', 'X',\n'TRI', 'X',\n'TRJ', 'X',\n'TRM',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4881 | 'X',\n'TRN', 'W',\n'TRO', 'W',\n'TRP', 'W',\n'TRQ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4882 | ', 'X',\n'TRS', 'X',\n'TRX', 'W',\n'TRZ', 'X',\n'T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4883 | S2', 'X',\n'TS3', 'X',\n'TS4', 'X',\n'TS5', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4884 | 'TSA', 'X',\n'TSB', 'X',\n'TSI', 'X',\n'TSM', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4885 | \n'TSN', 'X',\n'TSP', 'X',\n'TSU', 'X',\n'TTA', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4886 | ',\n'TTE', 'X',\n'TTN', 'X',\n'TTO', 'X',\n'TTP', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4887 | 'X',\n'TTX', 'X',\n'TXL', 'X',\n'TYA', 'Y',\n'TYB'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4888 | , 'Y',\n'TYD', 'X',\n'TYI', 'Y',\n'TYL', 'X',\n'TY\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4889 | M', 'W',\n'TYN', 'Y',\n'TYQ', 'Y',\n'TYR', 'Y',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4890 | TYS', 'Y',\n'TYV', 'X',\n'TYY', 'A',\n'TZB', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4891 | n'TZC', 'X',\n'TZE', 'X',\n'TZL', 'X',\n'TZO', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4892 | ,\n'TZP', 'X',\n'U01', 'X',\n'U02', 'X',\n'U03', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4893 | X',\n'U04', 'X',\n'U05', 'X',\n'U0E', 'X',\n'U10',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4894 | 'X',\n'U18', 'X',\n'U2G', 'X',\n'U3P', 'X',\n'U49\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4895 | ', 'X',\n'U55', 'X',\n'U5P', 'X',\n'U66', 'X',\n'U\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4896 | 89', 'X',\n'U8U', 'X',\n'UAA', 'X',\n'UAG', 'A',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4897 | 'UAP', 'X',\n'UAR', 'X',\n'UC1', 'X',\n'UC2', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4898 | \n'UC3', 'X',\n'UC4', 'X',\n'UD1', 'X',\n'UD2', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4899 | ',\n'UDP', 'X',\n'UDX', 'X',\n'UFG', 'X',\n'UFM', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4900 | 'X',\n'UFP', 'X',\n'UGA', 'X',\n'UIN', 'X',\n'UKP'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4901 | , 'A',\n'UM3', 'X',\n'UMA', 'A',\n'UMG', 'X',\n'UM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4902 | P', 'X',\n'UNA', 'X',\n'UND', 'X',\n'UNI', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4903 | UNK', 'X',\n'UNN', 'X',\n'UNX', 'X',\n'UP5', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4904 | n'UP6', 'X',\n'UPA', 'X',\n'UPF', 'X',\n'UPG', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4905 | ,\n'UPP', 'X',\n'UQ1', 'X',\n'UQ2', 'X',\n'UQ6', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4906 | X',\n'UR2', 'X',\n'URA', 'X',\n'URE', 'X',\n'URF',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4907 | 'X',\n'URI', 'X',\n'URS', 'X',\n'UTP', 'X',\n'UVC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4908 | ', 'X',\n'UVW', 'X',\n'V35', 'X',\n'V36', 'X',\n'V\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4909 | 4O', 'X',\n'V7O', 'X',\n'VAA', 'V',\n'VAC', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4910 | 'VAD', 'V',\n'VAF', 'V',\n'VAG', 'X',\n'VAL', 'V',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4911 | \n'VAN', 'X',\n'VAS', 'X',\n'VAX', 'X',\n'VDX', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4912 | ',\n'VDY', 'X',\n'VG1', 'X',\n'VIB', 'X',\n'VIR', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4913 | 'X',\n'VIT', 'X',\n'VK3', 'X',\n'VO3', 'X',\n'VO4'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4914 | , 'X',\n'VS1', 'F',\n'VS2', 'F',\n'VS3', 'F',\n'VS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4915 | 4', 'F',\n'VXA', 'X',\n'W01', 'X',\n'W02', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4916 | W03', 'X',\n'W11', 'X',\n'W33', 'X',\n'W35', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4917 | n'W42', 'X',\n'W43', 'X',\n'W54', 'X',\n'W56', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4918 | ,\n'W59', 'X',\n'W71', 'X',\n'W84', 'X',\n'W8R', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4919 | X',\n'W91', 'X',\n'WAY', 'X',\n'WCC', 'X',\n'WO2',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4920 | 'X',\n'WO4', 'X',\n'WRB', 'X',\n'WRR', 'X',\n'WRS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4921 | ', 'X',\n'WW7', 'X',\n'X2F', 'X',\n'X7O', 'X',\n'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4922 | AA', 'X',\n'XAN', 'X',\n'XAO', 'X',\n'XBB', 'X',\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4923 | 'XBP', 'X',\n'XDN', 'X',\n'XDP', 'X',\n'XIF', 'X',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4924 | \n'XIM', 'X',\n'XK2', 'X',\n'XL1', 'X',\n'XLS', 'X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4925 | ',\n'XMP', 'X',\n'XN1', 'X',\n'XN2', 'X',\n'XN3', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4926 | 'X',\n'XUL', 'X',\n'XV6', 'X',\n'XYD', 'X',\n'XYH'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4927 | , 'X',\n'XYL', 'X',\n'XYP', 'X',\n'XYS', 'X',\n'YO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4928 | F', 'Y',\n'YRR', 'X',\n'YT3', 'X',\n'YZ9', 'X',\n'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4929 | Z34', 'G',\n'Z5A', 'X',\n'ZAF', 'X',\n'ZAP', 'X',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4930 | n'ZEB', 'X',\n'ZEN', 'X',\n'ZES', 'X',\n'ZID', 'X'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4931 | ,\n'ZMR', 'X',\n'ZN3', 'X',\n'ZNH', 'X',\n'ZNO', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4932 | X',\n'ZO3', 'X',\n'ZPR', 'P',\n'ZRA', 'A',\n'ZST',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4933 | 'X',\n'ZYA', 'A',\n\n\n'ASN','N');\n} \n\n\nsub f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4934 | ile2head\n {\n my $file = shift;\n my $size =\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4935 | shift;\n my $f= new FileHandle;\n my $line;\n ope\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4936 | n ($f,$file);\n read ($f,$line, $size);\n close ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4937 | f);\n return $line;\n }\nsub file2tail\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4938 | {\n my $file = shift;\n my $size = shift;\n my $f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4939 | = new FileHandle;\n my $line;\n \n open ($f,$file)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4940 | ;\n seek ($f,$size*-1, 2);\n read ($f,$line, $size\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4941 | );\n close ($f);\n return $line;\n }\n\n\nsub\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4942 | vtmpnam\n {\n my $r=rand(100000);\n my $f=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4943 | file.$r.$$\";\n while (-e $f)\n {\n $f=vtmpn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4944 | am();\n }\n push (@TMPFILE_LIST, $f);\n return $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4945 | f;\n }\n\nsub myexit\n {\n my $code=@_[0]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4946 | ;\n if ($CLEAN_EXIT_STARTED==1){return;}\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4947 | lse {$CLEAN_EXIT_STARTED=1;}\n ### ONLY BARE EX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4948 | IT\n exit ($code);\n }\nsub set_error_lock\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4949 | {\n my $name = shift;\n my $pid=$$;\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4950 | n \n &lock4tc ($$,\"LERROR\", \"LSET\", \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4951 | \"$$ -- ERROR: $name $PROGRAM\\n\");\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4952 | ;\n }\nsub set_lock\n {\n my $pid=shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4953 | my $msg= shift;\n my $p=getppid();\n &loc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4954 | k4tc ($pid,\"LLOCK\",\"LRESET\",\"$p$msg\\n\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4955 | }\nsub unset_lock\n {\n \n my $pid=shift\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4956 | ;\n &lock4tc ($pid,\"LLOCK\",\"LRELEASE\",\"\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4957 | ;\n }\nsub shift_lock\n {\n my $from=shift;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4958 | my $to=shift;\n my $from_type=shift;\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4959 | y $to_type=shift;\n my $action=shift;\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4960 | msg;\n \n if (!&lock4tc($from, $from_type, \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4961 | "LCHECK\", \"\")){return 0;}\n $msg=&lock4tc ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4962 | from, $from_type, \"LREAD\", \"\");\n &lock4tc \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4963 | ($from, $from_type,\"LRELEASE\", $msg);\n &lock\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4964 | 4tc ($to, $to_type, $action, $msg);\n return;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4965 | }\nsub isshellpid\n {\n my $p=shift;\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4966 | (!lock4tc ($p, \"LLOCK\", \"LCHECK\")){return 0;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4967 | \n else\n {\n my $c=lock4tc($p, \"LLOCK\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4968 | \"LREAD\");\n if ( $c=~/-SHELL-/){return 1;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4969 | }\n return 0;\n }\nsub isrootpid\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4970 | if(lock4tc (getppid(), \"LLOCK\", \"LCHECK\")){ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4971 | urn 0;}\n else {return 1;}\n }\nsub lock4tc\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4972 | {\n my ($pid,$type,$action,$value)=@_;\n my $f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4973 | name;\n my $host=hostname;\n \n if ($type eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4974 | \"LLOCK\"){$fname=\"$LOCKDIR/.$pid.$host.lock4tco\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4975 | ffee\";}\n elsif ( $type eq \"LERROR\"){ $fname=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4976 | \"$LOCKDIR/.$pid.$host.error4tcoffee\";}\n elsif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4977 | ( $type eq \"LWARNING\"){ $fname=\"$LOCKDIR/.$pid\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4978 | .$host.warning4tcoffee\";}\n \n if ($debug_loc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4979 | k)\n {\n print STDERR \"\\n\\t---lock4tc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4980 | (tcg): $action => $fname =>$value (RD: $LOCKDIR)\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4981 | n\";\n }\n\n if ($action eq \"LCHECK\") {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4982 | return -e $fname;}\n elsif ($action eq \"LREAD\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4983 | ){return file2string($fname);}\n elsif ($action \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4984 | eq \"LSET\") {return string2file ($value, $fname, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4985 | \">>\");}\n elsif ($action eq \"LRESET\") {retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4986 | n string2file ($value, $fname, \">\");}\n elsif \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4987 | ($action eq \"LRELEASE\") \n {\n if ( $d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4988 | ebug_lock)\n {\n my $g=new FileHandle;\n op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4989 | en ($g, \">>$fname\");\n print $g \"\\nDestroye\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4990 | d by $$\\n\";\n close ($g);\n safe_system (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4991 | "mv $fname $fname.old\");\n }\n else\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4992 | unlink ($fname);\n }\n }\n return \"\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4993 | \n }\n \nsub file2string\n {\n my $file=@_[0];\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4994 | my $f=new FileHandle;\n my $r;\n open ($f, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4995 | \"$file\");\n while (<$f>){$r.=$_;}\n close ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4996 | f);\n return $r;\n }\nsub string2file \n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4997 | my ($s,$file,$mode)=@_;\n my $f=new FileHand\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4998 | le;\n \n open ($f, \"$mode$file\");\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4999 | nt $f \"$s\";\n close ($f);\n }\n\nBEGIN\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5000 | {\n srand;\n \n $SIG{'SIGUP'}='signa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5001 | l_cleanup';\n $SIG{'SIGINT'}='signal_cleanup'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5002 | ;\n $SIG{'SIGQUIT'}='signal_cleanup';\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5003 | $SIG{'SIGILL'}='signal_cleanup';\n $SIG{'SIGT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5004 | RAP'}='signal_cleanup';\n $SIG{'SIGABRT'}='si\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5005 | gnal_cleanup';\n $SIG{'SIGEMT'}='signal_clean\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5006 | up';\n $SIG{'SIGFPE'}='signal_cleanup';\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5007 | \n $SIG{'SIGKILL'}='signal_cleanup';\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5008 | $SIG{'SIGPIPE'}='signal_cleanup';\n $SIG{'SI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5009 | GSTOP'}='signal_cleanup';\n $SIG{'SIGTTIN'}='\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5010 | signal_cleanup';\n $SIG{'SIGXFSZ'}='signal_cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5011 | eanup';\n $SIG{'SIGINFO'}='signal_cleanup';\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5012 | \n $SIG{'SIGBUS'}='signal_cleanup';\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5013 | $SIG{'SIGALRM'}='signal_cleanup';\n $SIG{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5014 | 'SIGTSTP'}='signal_cleanup';\n $SIG{'SIGTTOU'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5015 | }='signal_cleanup';\n $SIG{'SIGVTALRM'}='sign\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5016 | al_cleanup';\n $SIG{'SIGUSR1'}='signal_cleanu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5017 | p';\n\n\n $SIG{'SIGSEGV'}='signal_cleanup';\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5018 | $SIG{'SIGTERM'}='signal_cleanup';\n $SI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5019 | G{'SIGCONT'}='signal_cleanup';\n $SIG{'SIGIO'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5020 | }='signal_cleanup';\n $SIG{'SIGPROF'}='signal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5021 | _cleanup';\n $SIG{'SIGUSR2'}='signal_cleanup'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5022 | ;\n\n $SIG{'SIGSYS'}='signal_cleanup';\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5023 | $SIG{'SIGURG'}='signal_cleanup';\n $SIG{'SIG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5024 | CHLD'}='signal_cleanup';\n $SIG{'SIGXCPU'}='s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5025 | ignal_cleanup';\n $SIG{'SIGWINCH'}='signal_cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5026 | eanup';\n \n $SIG{'INT'}='signal_cleanup\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5027 | ';\n $SIG{'TERM'}='signal_cleanup';\n $S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5028 | IG{'KILL'}='signal_cleanup';\n $SIG{'QUIT'}='\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5029 | signal_cleanup';\n \n our $debug_lock=$E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5030 | NV{\"DEBUG_LOCK\"};\n \n \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5031 | \n foreach my $a (@ARGV){$CL.=\" $a\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5032 | if ( $debug_lock ){print STDERR \"\\n\\n\\n****\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5033 | ****** START PG: $PROGRAM *************\\n\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5034 | if ( $debug_lock ){print STDERR \"\\n\\n\\n***\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5035 | *******(tcg) LOCKDIR: $LOCKDIR $$ *************\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5036 | \";}\n if ( $debug_lock ){print STDERR \"\\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5037 | --- $$ -- $CL\\n\";}\n \n \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5038 | \n }\nsub flush_error\n {\n my $msg=shift\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5039 | ;\n return add_error ($EXIT_FAILURE,$$, $$,getp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5040 | pid(), $msg, $CL);\n }\nsub add_error \n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5041 | my $code=shift;\n my $rpid=shift;\n my $pid=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5042 | shift;\n my $ppid=shift;\n my $type=shift;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5043 | my $com=shift;\n \n $ERROR_DONE=1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5044 | lock4tc ($rpid, \"LERROR\",\"LSET\",\"$pid -- ERRO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5045 | R: $type\\n\");\n lock4tc ($$, \"LERROR\",\"LSE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5046 | T\", \"$pid -- COM: $com\\n\");\n lock4tc ($$, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5047 | \"LERROR\",\"LSET\", \"$pid -- STACK: $ppid -> $pi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5048 | d\\n\");\n \n return $code;\n }\nsub add_war\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5049 | ning \n {\n my $rpid=shift;\n my $pid =shif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5050 | t;\n my $command=shift;\n my $msg=\"$$ -- WA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5051 | RNING: $command\\n\";\n print STDERR \"$msg\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5052 | n lock4tc ($$, \"LWARNING\", \"LSET\", $msg);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5053 | }\n\nsub signal_cleanup\n {\n print dtderr \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5054 | "\\n**** $$ (tcg) was killed\\n\";\n &cleanup;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5055 | n exit ($EXIT_FAILURE);\n }\nsub clean_dir\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5056 | {\n my $dir=@_[0];\n if ( !-d $dir){return ;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5057 | }\n elsif (!($dir=~/tmp/)){return ;}#safety che\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5058 | ck 1\n elsif (($dir=~/\\*/)){return ;}#safety c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5059 | heck 2\n else\n {\n `rm -rf $dir`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5060 | }\n return;\n }\nsub cleanup\n {\n #print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5061 | stderr \"\\n----tc: $$ Kills $PIDCHILD\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5062 | #kill (SIGTERM,$PIDCHILD);\n my $p=getppid();\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5063 | $CLEAN_EXIT_STARTED=1;\n \n \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5064 | if (&lock4tc($$,\"LERROR\", \"LCHECK\", \"\"))\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5065 | {\n my $ppid=getppid();\n if (!$ERROR_DONE) \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5066 | {\n &lock4tc($$,\"LERROR\", \"LSET\", \"$$ \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5067 | -- STACK: $p -> $$\\n\");\n &lock4tc($$,\"LERR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5068 | OR\", \"LSET\", \"$$ -- COM: $CL\\n\");\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5069 | }\n my $warning=&lock4tc($$, \"LWARNING\", \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5070 | "LREAD\", \"\");\n my $error=&lock4tc($$, \"LE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5071 | RROR\", \"LREAD\", \"\");\n #release error and \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5072 | warning lock if root\n \n if (isrootpid() &&\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5073 | ($warning || $error) )\n {\n \n print STDERR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5074 | \"**************** Summary *************\\n$error\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5075 | \\n$warning\\n\";\n\n &lock4tc($$,\"LERROR\",\"REL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5076 | EASE\",\"\");\n &lock4tc($$,\"LWARNING\",\"RELEASE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5077 | \",\"\");\n } \n \n \n foreach my $f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5078 | (@TMPFILE_LIST)\n {\n if (-e $f){unlink ($f)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5079 | ;} \n }\n foreach my $d (@TMPDIR_LIST)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5080 | {\n clean_dir ($d);\n }\n #No More Loc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5081 | k Release\n #&lock4tc($$,\"LLOCK\",\"LRELEASE\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5082 | ,\"\"); #release lock \n\n if ( $debug_lock ){p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5083 | rint STDERR \"\\n\\n\\n********** END PG: $PROGRAM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5084 | ($$) *************\\n\";}\n if ( $debug_lock )\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5085 | {print STDERR \"\\n\\n\\n**********(tcg) LOCKDIR: \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5086 | $LOCKDIR $$ *************\\n\";}\n }\nEND \n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5087 | \n &cleanup();\n }\n \n\nsub safe_system\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5088 | \n{\n my $com=shift;\n my $ntry=shift;\n my $c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5089 | try=shift;\n my $pid;\n my $status;\n my $ppid=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5090 | getppid();\n if ($com eq \"\"){return 1;}\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5091 | \n\n if (($pid = fork ()) < 0){return (-1);}\n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5092 | f ($pid == 0)\n {\n set_lock($$, \" -SHELL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5093 | - $com (tcg)\");\n exec ($com);\n }\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5094 | e\n {\n lock4tc ($$, \"LLOCK\", \"LSET\", \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5095 | \"$pid\\n\");#update parent\n $PIDCHILD=$pid;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5096 | \n }\n if ($debug_lock){printf STDERR \"\\n\\t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5097 | .... safe_system (fasta_seq2hmm) p: $$ c: $pid C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5098 | OM: $com\\n\";}\n\n waitpid ($pid,WTERMSIG);\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5099 | shift_lock ($pid,$$, \"LWARNING\",\"LWARNING\", \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5100 | "LSET\");\n\n if ($? == $EXIT_FAILURE || lock4tc(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5101 | $pid, \"LERROR\", \"LCHECK\", \"\"))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5102 | if ($ntry && $ctry <$ntry)\n {\n add_warning ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5103 | $,$$,\"$com failed [retry: $ctry]\");\n lock4tc \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5104 | ($pid, \"LRELEASE\", \"LERROR\", \"\");\n return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5105 | safe_system ($com, $ntry, ++$ctry);\n }\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5106 | sif ($ntry == -1)\n {\n if (!shift_lock ($pid, $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5107 | $, \"LERROR\", \"LWARNING\", \"LSET\"))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5108 | add_warning ($$,$$,\"$com failed\");\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5109 | \n else\n {\n lock4tc ($pid, \"LRELEAS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5110 | E\", \"LERROR\", \"\");\n }\n return $?;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5111 | else\n {\n if (!shift_lock ($pid,$$, \"LERR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5112 | OR\",\"LERROR\", \"LSET\"))\n {\n myexit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5113 | (add_error ($EXIT_FAILURE,$$,$pid,getppid(), \"UNS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5114 | PECIFIED system\", $com));\n }\n }\n }\n r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5115 | eturn $?;\n}\n\nsub check_configuration \n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5116 | my @l=@_;\n my $v;\n foreach my $p \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5117 | (@l)\n {\n \n if ( $p eq \"EMAIL\")\n { \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5118 | \n if ( !($EMAIL=~/@/))\n {\n add_warning(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5119 | $$,$$,\"Could Not Use EMAIL\");\n myexit(add_erro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5120 | r ($EXIT_FAILURE,$$,$$,getppid(),\"EMAIL\",\"$CL\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5121 | ));\n }\n }\n elsif( $p eq \"INTERNET\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5122 | ")\n {\n if ( !&check_internet_connectio\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5123 | n())\n {\n myexit(add_error ($EXIT_FAILURE,$$,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5124 | $$,getppid(),\"INTERNET\",\"$CL\"));\n }\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5125 | n elsif( $p eq \"wget\")\n {\n if (!&p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5126 | g_is_installed (\"wget\") && !&pg_is_installed (\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5127 | curl\"))\n {\n myexit(add_error ($EXIT_FAILURE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5128 | ,$$,$$,getppid(),\"PG_NOT_INSTALLED:wget\",\"$CL\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5129 | ));\n }\n }\n elsif( !(&pg_is_installed ($p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5130 | )))\n {\n myexit(add_error ($EXIT_FAILUR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5131 | E,$$,$$,getppid(),\"PG_NOT_INSTALLED:$p\",\"$CL\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5132 | );\n }\n }\n return 1;\n }\nsub pg_is_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5133 | installed\n {\n my @ml=@_;\n my $r, $p, $m;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5134 | \n my $supported=0;\n \n my $p=shift (@ml\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5135 | );\n if ($p=~/::/)\n {\n if (safe_system (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5136 | \"perl -M$p -e 1\")==$EXIT_SUCCESS){return 1;}\n e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5137 | lse {return 0;}\n }\n else\n {\n $r=`\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5138 | which $p 2>/dev/null`;\n if ($r eq \"\"){return 0;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5139 | }\n else {return 1;}\n }\n }\n\n\n\nsub chec\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5140 | k_internet_connection\n {\n my $internet;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5141 | my $tmp;\n &check_configuration ( \"wget\"); \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5142 | n \n $tmp=&vtmpnam ();\n \n if (&p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5143 | g_is_installed (\"wget\")){`wget www.google.com\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5144 | -O$tmp >/dev/null 2>/dev/null`;}\n elsif (&pg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5145 | _is_installed (\"curl\")){`curl www.google.com \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5146 | -o$tmp >/dev/null 2>/dev/null`;}\n \n if ( !\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5147 | -e $tmp || -s $tmp < 10){$internet=0;}\n else {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5148 | $internet=1;}\n if (-e $tmp){unlink $tmp;}\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5149 | return $internet;\n }\nsub check_pg_is_install\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5150 | ed\n {\n my @ml=@_;\n my $r=&pg_is_installe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5151 | d (@ml);\n if (!$r && $p=~/::/)\n {\n prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5152 | t STDERR \"\\nYou Must Install the perl package $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5153 | on your system.\\nRUN:\\n\\tsudo perl -MCPAN -e '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5154 | install $pg'\\n\";\n }\n elsif (!$r)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5155 | {\n myexit(flush_error(\"\\nProgram $p Supported\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5156 | but Not Installed on your system\"));\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5157 | else\n {\n return 1;\n }\n }\n\n\nsu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5158 | b remote_is_pdb_name_deprecated\n{\n my $in=@_[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5159 | 0];\n my ($ref_file, $pdb);\n my ($value,$va\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5160 | lue1,$value2);\n my $max=2;\n \n \n \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5161 | $ref_file=\"$cache/pdb_entry_type.txt\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5162 | \n if ( $in=~/[^\\w\\d\\:\\_]/){return 0;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5163 | elsif ($no_remote_pdb_dir==1)\n {\n my $pdbd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5164 | ir=$ENV{'PDB_DIR'};\n \n my $r1=\"$pdbdir/derived_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5165 | data/pdb_entry_type.txt\";\n my $r2=$ref_file;\n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5166 | f (-e $r1){$ref_file=$r1;}\n elsif (-e $r2){$re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5167 | f_file=$r2;}\n else\n {\n my $p=substr ($in,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5168 | 0, 4);\n add_warning ($$, $$, \"Cannot find pd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5169 | b_entry_type.txt; $p is assumed to be valid; add \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5170 | ftp://ftp.wwpdb.org/pub/pdb/derived_data/pdb_entry\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5171 | _type.txt in $cache to check name status\");\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5172 | \n }\n elsif ( !-e $ref_file || (-M $ref_f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5173 | ile)>$max || -z $ref_file)\n {\n &url2file(\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5174 | ftp://ftp.wwpdb.org/pub/pdb/derived_data/pdb_entry\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5175 | _type.txt\", $ref_file);\n }\n $pdb=substr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5176 | ($in,0, 4);\n chomp(($value1=`grep -c $pdb $re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5177 | f_file`));\n $pdb=lc($pdb);\n chomp(($value2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5178 | =`grep -c $pdb $ref_file`));\n $value=($value1 \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5179 | || $value2)?1:0;\n $value=($value>0)?1:0;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5180 | \n return $value;\n }\n","use Cwd;\nuse Env;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:5180:30: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 5180 | \n return $value;\n }\n","use Cwd;\nuse Env;\n\ | ^~~~~~~~~~~~~~~~~~~~~~ 5181 | use File::Path;\nuse FileHandle;\nuse strict;\n\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5182 | nour (%MODE, %PG, %ENV_SET, %SUPPORTED_OS);\n\nour\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5183 | $VERSION=\"0\"; #_#UPDATE_VERSION\n\nour $EXIT_SU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5184 | CCESS=0;\nour $EXIT_FAILURE=1;\nour $INTERNET=0;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5185 | \nour $CP=\"cp \"; #was causing a crash on MacOSX\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5186 | nour $SILENT=\">/dev/null 2>/dev/null\";\nour $WEB\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5187 | _BASE=\"http://www.tcoffee.org\";\nour $TCLINKDB_A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5188 | DDRESS=\"$WEB_BASE/Resources/tclinkdb.txt\";\nour \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5189 | $OS=get_os();\nour $ROOT=&get_root();\nour $CD=cwd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5190 | ();\nour $CDIR=$CD;\nour $HOME=$ENV{'HOME'};\n\nou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5191 | r $OSNAME=$ENV{'OSNAME'};\nour $OSARCH=$ENV{'OSARC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5192 | H'};\nour $REPO_ROOT=\"\";\n\nour $TCDIR;\nour $TC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5193 | CACHE;\nour $TCTMP;\nour $TCM;\nour $TCMETHODS;\no\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5194 | ur $TCPLUGINS;\nour $PLUGINS_DIR=\"\";\nour $INSTA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5195 | LL_DIR=\"\";\nour $email;\nour $recompile;\n\nour \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5196 | $CXX=\"g++\";\nour $CXXFLAGS=\"\";\n\nour $CPP=\"g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5197 | ++\";\nour $CPPFLAGS=\"\";\n\nour $CC=\"gcc\";\nou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5198 | r $CFLAGS=$ENV{'CFLAGS'};\n\nour $FC=\"f77\";\nour\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5199 | $FFLAGS=\"\";\n\nmy $install=\"all\";\nmy $defaul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5200 | t_update_action=\"no_update\";\nmy @required_appli\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5201 | cations=(\"wget_OR_curl\");\nmy @smode=(\"all\", \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5202 | "clean\", \"install\");\n\n&initialize_PG();\nmy $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5203 | cl=join( \" \", @ARGV);\nif ($#ARGV==-1 || ($cl=~/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5204 | -h/) ||($cl=~/-H/) )\n {\n print \"\\n!!!!!!!\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5205 | ./install t_coffee --> installs t_co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5206 | ffee only\";\n print \"\\n!!!!!!! ./install a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5207 | ll --> installs all the modes [mc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5208 | offee, expresso, psicoffee,rcoffee..]\";\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209 | nt \"\\n!!!!!!! ./install [mcoffee|rcoffee|..] --\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5210 | > installs the specified mode\";\n print \"\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5211 | !!!!!!! ./install -h --> print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5212 | usage\\n\\n\";\n if ( $#ARGV==-1){exit ($EXIT_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5213 | FAILURE);}\n }\n \nif (($cl=~/-h/) ||($cl=~/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5214 | -H/) )\n {\n my $m;\n print \"\\n\\n!!!!!!!\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5215 | advanced mode\\n\";\n foreach $m ((keys (%MODE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5216 | )),@smode)\n {\n print \"!!!!!!! ./inst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5217 | all $m\\n\";\n }\n \n print \"!!!!!!! .\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5218 | /install [target:package|mode|] [-update|-force|-e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5219 | xec=dir|-dis=dir|-root|-tclinkdb=file|-] [CC=|FCC=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5220 | |CXX=|CFLAGS=|CXXFLAGS=]\\n\";\n print \"!!!!!!\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5221 | ! ./install clean [removes all executables]\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5222 | ";\n print \"!!!!!!! ./install [optional:target\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5223 | ] -update [updates package already i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5224 | nstalled]\\n\";\n print \"!!!!!!! ./install [op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5225 | tional:target] -recompile [forces the r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5226 | ecompilation of T-Coffee]\\n\";\n\n print \"!!!\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5227 | !!!! ./install [optional:target] -force \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5228 | [Forces recompilation over everything]\\n\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5229 | n \n print \"!!!!!!! ./install [optional:tar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5230 | get] -root [You are running as roo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5231 | t]\\n\";\n print \"!!!!!!! ./install [optional:\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5232 | target] -exec=/foo/bar/ [address for the T-C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5233 | offee executable]\\n\";\n print \"!!!!!!! ./ins\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5234 | tall [optional:target] -dis=/foo/bar/ [Addr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5235 | ess where distributions should be stored]\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5236 | print \"!!!!!!! ./install [optional:target] -tc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5237 | linkdb=foo|update [file containing all the packag\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5238 | es to be installed]\\n\";\n print \"!!!!!!! ./i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5239 | nstall [optional:target] -clean [cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5240 | ean everything]\\n\";\n print \"!!!!!!! ./insta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5241 | ll [optional:target] -plugins [plugin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5242 | s directory]\\n\";\n print \"!!!!!!! ./install \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5243 | [optional:target] -tcdir=/foor/bar [base path\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5244 | where T-Coffee will be installed - default ~/.t_c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5245 | offee]\\n\";\n print \"!!!!!!! ./install [optio\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5246 | nal:target] -repo=/path/to/repo [binaries reposi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5247 | tory root directory]\\n\";\n print \"!!!!!!! ./\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5248 | install [optional:target] -email= [n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5249 | eeded for remote BLAST]\\n\";\n print \"!!!!!!!\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5250 | ./install [optional:target] -proxy= [may\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5251 | be needed to access remote services]\\n\";\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5252 | n print \"!!!!!!! mode:\";\n foreach $m (key\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5253 | s(%MODE)){print \"$m \";}\n print \"\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5254 | print \"!!!!!!! Packages:\";\n foreach $m (key\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5255 | s (%PG)){print \"$m \";}\n print \"\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5256 | \n print \"\\n\\n\";\n exit ($EXIT_FAILURE);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5257 | \n }\n\n\n\nmy (@argl)=($cl=~/(\\S+=[^=]+)\\s\\w+\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5258 | =/g);\npush (@argl, ($cl=~/(\\S+=[^=]+\\S)\\s*$/g)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5259 | );\n\nforeach $a (@argl)\n {\n if ( ($cl=~/CXX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5260 | =(.*)/)){$CXX=$1;}\n if ( ($cl=~/-CC=(.*)/ )\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5261 | ){$CC=$1;}\n if ( ($cl=~/-FC=(.*)/ )){$FC=$1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5262 | ;}\n if ( ($cl=~/-CFLAGS=(.*)/)){$CFLAGS=$1;}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5263 | if ( ($cl=~/-CXXFLAGS=(.*)/)){$CXXFLAGS=$1;}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5264 | }\nour ($ROOT_INSTALL, $NO_QUESTION, $default_up\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5265 | date_action,$BINARIES_ONLY,$force, $default_update\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5266 | _action, $INSTALL_DIR, $PLUGINS_DIR, $DISTRIBUTION\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5267 | S,$tclinkdb, $proxy, $clean);\nif ( ($cl=~/-root/)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5268 | ){$ROOT_INSTALL=1;}\nif ( ($cl=~/-no_question/)){$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5269 | NO_QUESTION=1;}\nif ( ($cl=~/-update/)){$default_u\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5270 | pdate_action=\"update\";}\nif ( ($cl=~/-recompile/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5271 | )){$recompile=1;}\n\n\n$BINARIES_ONLY=1;\n\nif ( (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5272 | $cl=~/-nobinaries/)){$BINARIES_ONLY=0;}\nif ( ($cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5273 | =~/-force/)){$force=1;$default_update_action=\"upd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5274 | ate\"}\nif ( ($cl=~/-exec=\\s*(\\S+)/)){$INSTALL_D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5275 | IR=$1;}\nif ( ($cl=~/-plugins=\\s*(\\S+)/)){$PLUGI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5276 | NS_DIR=$1;}\nif ( ($cl=~/-dis=\\s*(\\S+)/)){$DISTR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5277 | IBUTIONS=$1;}\n\nif ( ($cl=~/-tclinkdb=\\s*(\\S+)/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5278 | )){$tclinkdb=$1;}\nif ( ($cl=~/-proxy=\\s*(\\S+)/)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5279 | ){$proxy=$1;}\nif ( ($cl=~/-clean/)){$clean=1;}\ni\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5280 | f ( ($cl=~/-repo=\\s*(\\S+)/)){ $REPO_ROOT=$1; }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5281 | if ( ($cl=~/-tcdir=\\s*(\\S+)/)){ $TCDIR=$1; }\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5282 | if ( ($cl=~/-email=\\s*(\\S+)/)){$email=$1;}\n\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5283 | if ($tclinkdb){&update_tclinkdb ($tclinkdb);}\n\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5284 | nif( $REPO_ROOT ne \"\" ) {\n if( $OSNAME eq \"\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5285 | ) { print \"You have specified the repository fold\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5286 | er but the required \\\"OSNAME\\\" enviroment vari\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5287 | able is missing. \\n\"; exit 1; } \n if( $OSARCH e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5288 | q \"\" ) { print \"You have specified the reposito\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5289 | ry folder but the required \\\"OSARCH\\\" envirome\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5290 | nt variable is missing. \\n\"; exit 1; } \n}\n\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5291 | if(!$TCDIR) { $TCDIR=\"$HOME/.t_coffee\"; }\n&add_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5292 | dir ($TCDIR);\n&add_dir ($TCCACHE=\"$TCDIR/cache\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5293 | );\n&add_dir ($TCTMP=\"$CDIR/tmp\");\n&add_dir ($T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5294 | CM=\"$TCDIR/mcoffee\");\n&add_dir ($TCMETHODS=\"$T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5295 | CDIR/methods\");\n&add_dir ($TCPLUGINS=\"$TCDIR/pl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5296 | ugins/$OS\");\n\n\nour $BASE=\"$CD/bin\";\nour $BI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5297 | N=\"$BASE/cache/binaries/$OS\";\nour $DOWNLOAD_DIR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5298 | =\"$BASE/cache/download\";\nour $DOWNLOAD_FILE=\"$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5299 | DOWNLOAD_DIR/files\";\nour $TMP=\"$BASE/cache/tmp\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5300 | ";\n\n&add_dir($BASE);\n&add_dir($BIN);\n&add_dir(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5301 | $DOWNLOAD_DIR);\n&add_dir($DOWNLOAD_FILE);\nif (!$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5302 | DISTRIBUTIONS){$DISTRIBUTIONS=\"$DOWNLOAD_DIR/dist\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5303 | ributions\";}\n&add_dir ($DISTRIBUTIONS);\n&add_di\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5304 | r ($TMP);\n\n\nif (!$PLUGINS_DIR && !$ROOT_INST\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5305 | ALL){$PLUGINS_DIR=$TCPLUGINS;}\nelsif (!$PLUGINS_D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5306 | IR && $ROOT_INSTALL){$PLUGINS_DIR=\"/usr/local/bi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5307 | n/\";}\n\nif (!$INSTALL_DIR && !$ROOT_INSTALL){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5308 | $INSTALL_DIR=\"$TCDIR/bin/$OS\";mkpath ($INSTALL_D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5309 | IR);}\nelsif (!$INSTALL_DIR && $ROOT_INSTALL){$IN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5310 | STALL_DIR=\"/usr/local/bin/\";}\n\nif (-d \"mcoffe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5311 | e\"){`cp mcoffee/* $TCM`;}\n\n\nour $ENV_FILE=\"$T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5312 | CDIR/.t_coffee_env\";\nunlink ($ENV_FILE);\n&add2e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5313 | nv_file ($ENV_FILE,\"EMAIL_4_TCOFFEE\", $email);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5314 | &add2env_file ($ENV_FILE,\"http_proxy_4_TCOFFEE\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5315 | $proxy);\n&env_file2putenv ($ENV_FILE);\n&set_pro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5316 | xy($proxy);\n\n\n\nmy ($target, $p, $r);\n$target=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5317 | $p;\n\nforeach $p ( ((keys (%PG)),(keys(%MODE)),(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5318 | @smode)) )\n {\n if ($ARGV[0] eq $p && $target\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5319 | eq \"\"){$target=$p;}\n }\nif ($target eq \"\"){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5320 | exit ($EXIT_FAILURE);}\n\n\nforeach $r (@required_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5321 | applications)\n {\n my @app_list;\n my $i;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5322 | n $i=0;\n \n @app_list=split (/_OR_/, $r)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5323 | ;\n foreach my $pg (@app_list)\n {\n $i+=&\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5324 | pg_is_installed ($pg);\n }\n if ($i==0)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5325 | {\n print \"One of the following package\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5326 | s must be installed to proceed: \";\n foreach\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5327 | my $pg (@app_list)\n {\n print (\"$pg \");\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5328 | n die;\n }\n }\n\n\n\n\n\n\n&sign_license\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5329 | _ni();\n\n\n$PG{C}{compiler}=get_C_compiler($CC);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5330 | n$PG{Fortran}{compiler}=get_F_compiler($FC);\n$PG{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5331 | CXX}{compiler}=$PG{CPP}{compiler}=$PG{GPP}{compile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5332 | r}=get_CXX_compiler($CXX);\nif ($CXXFLAGS){$PG{CPP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5333 | }{options}=$PG{GPP}{options}=$PG{CXX}{options}=$CX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5334 | XFLAGS;}\nif ($CFLAGS ne \"\" ){$PG{C}{options}=$C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5335 | FLAGS;}\nforeach my $c (keys(%PG))\n {\n my $a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5336 | rguments;\n if ($PG{$c}{compiler})\n {\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5337 | arguments=\"$PG{$c}{compiler_flag}=$PG{$c}{compile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5338 | r} \";\n if ($PG{$c}{options})\n {\n $argume\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5339 | nts.=\"$PG{$c}{options_flag}='\" . $PG{$c}{options\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5340 | } . \"' \";\n }\n $PG{$c}{arguments}=$arguments;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5341 | \n }\n }\n\nif ($PG{$target}){$PG{$target}{i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5342 | nstall}=1;}\nelse\n {\n foreach my $pg (keys(%\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5343 | PG))\n {\n if ( $target eq \"all\" || ($PG{$p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5344 | g}{mode}=~/$target/))\n {\n $PG{$pg} {instal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5345 | l}=1;\n }\n }\n }\n\nforeach my $pg (keys(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5346 | %PG))\n {\n if (!$PG{$pg}{update_action}){$PG{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5347 | $pg}{update_action}=$default_update_action;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5348 | elsif ($PG{$pg}{update_action} eq \"never\"){$PG{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5349 | pg}{install}=0;}\n if ( $force && $PG{$pg}{inst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5350 | all})\n {\n `rm $BIN/$pg $BIN/$pg.exe $SILENT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5351 | `;\n }\n if ($PG{$pg}{update_action} eq \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5352 | update\" && $PG{$pg}{install}){$PG{$pg}{update}=1;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5353 | }\n }\n\nif (($target=~/clean/))\n {\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5354 | \"------- cleaning executables -----\\n\";\n `r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5355 | m bin/* $SILENT`;\n exit ($EXIT_SUCCESS);\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5356 | n\nif ( !$PG{$target}){print \"------- Installing \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5357 | T-Coffee Modes\\n\";}\n\nforeach my $m (keys(%MODE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5358 | ))\n {\n if ( $target eq \"all\" || $target eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5359 | $m)\n {\n print \"\\n------- The installer w\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5360 | ill now install the $m components $MODE{$m}{descri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5361 | ption}\\n\";\n foreach my $pg (keys(%PG))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5362 | if ( $PG{$pg}{mode} =~/$m/ && $PG{$pg}{install\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5363 | })\n {\n if ($PG{$pg}{touched}){print \"---\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5364 | ---- $PG{$pg}{dname}: already processed\\n\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5365 | else {$PG{$pg}{success}=&install_pg($pg);$PG{$pg}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5366 | touched}=1;}\n }\n }\n }\n }\n\nif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5367 | $PG{$target}){print \"------- Installing Individu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5368 | al Package\\n\";}\nforeach my $pg (keys (%PG))\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5369 | {\n \n if ( $PG{$pg}{install} && !$PG{$pg}{t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5370 | ouched})\n {\n print \"\\n------- Install $pg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5371 | \\n\";\n $PG{$pg}{success}=&install_pg($pg);$PG{$p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5372 | g}{touched}=1;\n }\n }\nprint \"------- Fini\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5373 | shing The installation\\n\";\nmy $final_report=&in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5374 | stall ($INSTALL_DIR);\n\nprint \"\\n\";\nprint \"*\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5375 | **************************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5376 | ******************\\n\";\nprint \"******** \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5377 | INSTALLATION SUMMARY **************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5378 | ***\\n\";\nprint \"*******************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5379 | **************************************\\n\";\nprin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5380 | t \"------- SUMMARY package Installation:\\n\";\np\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5381 | rint \"------- Executable Installed in: $PLUGINS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5382 | _DIR\\n\";\n\nforeach my $pg (keys(%PG))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5383 | if ( $PG{$pg}{install})\n {\n my $bin_status\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5384 | =($PG{$pg}{from_binary} && $PG{$pg}{success})?\"[f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5385 | rom binary]\":\"\";\n if ( $PG{$pg}{new} && !$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5386 | PG{$pg}{old}) {print \"*------\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5387 | $PG{$pg}{dname}: installed $bin_status\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5388 | "; $PG{$pg}{status}=1;}\n elsif ( $PG{$pg}{new} &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5389 | & $PG{$pg}{old}) {print \"*--\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5390 | ---- $PG{$pg}{dname}: updated $bin_status\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5391 | n\" ; $PG{$pg}{status}=1;} \n elsif (!$PG{$pg}{n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5392 | ew} && $PG{$pg}{old} && !$PG{$pg}{update}){print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5393 | \"*------ $PG{$pg}{dname}: previous\\n\" ; \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5394 | $PG{$pg}{status}=1;}\n elsif (!$PG{$pg}{new} && \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5395 | $PG{$pg}{old} && $PG{$pg}{update}){print \"*-----\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5396 | - $PG{$pg}{dname}: failed update (previous \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5397 | installation available)\\n\";$PG{$pg}{status}=0;}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5398 | n else \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5399 | {print \"*------ $PG{$pg}{dna\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5400 | me}: failed installation\\n\";$PG{$pg}{status}=0;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5401 | \n }\n }\nmy $failure;\n\nif ( !$PG{$target}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5402 | ){print \"*------ SUMMARY mode Installation:\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5403 | }\nforeach my $m (keys(%MODE))\n {\n \n if ( \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5404 | $target eq \"all\" || $target eq $m)\n {\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5405 | $succesful=1;\n foreach my $pg (keys(%PG))\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5406 | n if (($PG{$pg}{mode}=~/$m/) && $PG{$pg}{insta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5407 | ll} && $PG{$pg}{status}==0)\n {\n $succesfu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5408 | l=0;\n print \"*!!!!!! $PG{$pg}{dname}: Mis\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5409 | sing\\n\";\n }\n }\n if ( $succesful)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5410 | {\n $MODE{$m}{status}=1;\n print \"*------\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5411 | MODE $MODE{$m}{dname} SUCCESSFULLY installe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5412 | d\\n\";\n }\n else\n {\n $failure++;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5413 | $MODE{$m}{status}=0;\n print \"*!!!!!! \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5414 | MODE $MODE{$m}{dname} UNSUCCESSFULLY installed\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5415 | ";\n }\n }\n }\n\n \n \nif ($clean\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5416 | ==1 && ($BASE=~/install4tcoffee/) ){print \"*-----\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5417 | - Clean Installation Directory: $BASE\\n\";`rm -rf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5418 | $BASE`;}\nforeach my $pg (keys(%PG)){if ($PG{$pg}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5419 | {install} && $PG{$pg}{status}==0){exit ($EXIT_FAIL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5420 | URE);}}\n\nif ($failure)\n {\n print \"*******\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5421 | **************************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5422 | ************\\n\";\n print \"******** SOME \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5423 | PACKAGES FAILED TO INSTALL ****************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5424 | *\\n\";\n print \"*****************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5425 | ****************************************\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5426 | print \"\\nSome of the reported failures may be \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5427 | due to connectivity problems\";\n print \"\\nRe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5428 | run the installation and the installer will specif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5429 | ically try to install the missing packages\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5430 | print \"\\nIf this Fails, go to the original webs\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5431 | ite and install the package manually\";\n }\n\npr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5432 | int \"********************************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5433 | *************************\\n\";\nprint \"******** \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5434 | FINALIZE YOUR INSTALLATION *******\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5435 | **********\\n\";\nprint \"************************\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5436 | *********************************************\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5437 | ;\nprint \"------- Your third party executables ar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5438 | e in:\\n\"; \nprint \"------- $PLUGINS_DIR:\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5439 | \n\";\nprint \"------- Your t_coffee exccutable is\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5440 | in\\n\";\nprint \"------- $INSTALL_DIR:\\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5441 | ";\nprint \"------- In order to make your installa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5442 | tion permanent add these two lines\\n\";\nprint \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5443 | export PATH=$INSTALL_DIR:\\$PATH\\n\";\nprint \"ex\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5444 | port PLUGINS_4_TCOFFEE=$PLUGINS_DIR:\\n\";\nif ($O\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5445 | S eq \"linux\")\n {\n print \"------- to\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5446 | the file: $HOME/.bashrc\\n\";\n }\nelse \n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5447 | print \"------- to the file: $HOME/.profi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5448 | le\\ OR $HOME/.basrc\";\n }\nexit ($EXIT_SUCCESS)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5449 | ; \n \nsub get_CXX_compiler\n {\n my $c=@_[0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5450 | ];\n my (@clist)=(\"g++\");\n \n return g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5451 | et_compil ($c, @clist);\n }\nsub get_C_compiler\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5452 | {\n my $c=@_[0];\n my (@clist)=(\"gcc\", \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5453 | cc\", \"icc\");\n \n return get_compil ($c, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5454 | @clist);\n }\n\nsub get_F_compiler\n {\n my ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5455 | c)=@_[0];\n my @clist=(\"f77\", \"g77\",\"g95\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5456 | , \"gfortran\", \"ifort\");\n return get_compil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5457 | ($c, @clist);\n } \n \nsub get_compil\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5458 | \n my ($fav,@clist)=(@_);\n \n #return th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5459 | e first compiler found installed in the system. Ch\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5460 | eck first the favorite\n foreach my $c ($fav,@c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5461 | list)\n {\n if (&pg_is_installed ($c)){retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5462 | n $c;}\n }\n return \"\";\n }\nsub exit_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5463 | f_pg_not_installed\n {\n my (@arg)=(@_);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5464 | \n foreach my $p (@arg)\n {\n if ( !&pg_is\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5465 | _installed ($p))\n {\n print \"!!!!!!!! The \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5466 | $p utility must be installed for this installation\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5467 | to proceed [FATAL]\\n\";\n die;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5468 | }\n return 1;\n }\nsub set_proxy\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5469 | ($proxy)=(@_);\n my (@list,$p);\n \n @lis\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5470 | t= (\"HTTP_proxy\", \"http_proxy\", \"HTTP_PROXY\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5471 | , \"ALL_proxy\", \"all_proxy\",\"HTTP_proxy_4_TCOF\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5472 | FEE\",\"http_proxy_4_TCOFFEE\");\n \n if (!$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5473 | proxy)\n {\n foreach my $p (@list)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5474 | if ( ($ENV_SET{$p}) || $ENV{$p}){$proxy=$ENV{$p}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5475 | ;}\n }\n }\n foreach my $p(@list){$ENV{$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5476 | p}=$proxy;}\n }\n \nsub check_internet_connection\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5477 | \n {\n my $internet;\n \n if ( -e \"x\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5478 | {unlink (\"x\");}\n if (&pg_is_installed \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5479 | (\"wget\")){`wget www.google.com -Ox >/dev/null 2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5480 | >/dev/null`;}\n elsif (&pg_is_installed (\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5481 | curl\")){`curl www.google.com -ox >/dev/null 2>/de\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5482 | v/null`;}\n else\n {\n printf stderr \"\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5483 | ERROR: No pg for remote file fetching [wget or cur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5484 | l][FATAL]\\n\";\n exit ($EXIT_FAILURE);\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5485 | \n if ( !-e \"x\" || -s \"x\" < 10){$intern\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5486 | et=0;}\n else {$internet=1;}\n if (-e \"x\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5487 | {unlink \"x\";}\n return $internet;\n }\nsub u\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5488 | rl2file\n {\n my ($cmd, $file,$wget_arg, $curl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5489 | _arg)=(@_);\n my ($exit,$flag, $pg, $arg);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5490 | \n if ($INTERNET || check_internet_connection \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5491 | ()){$INTERNET=1;}\n else\n {\n print STDER\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5492 | R \"ERROR: No Internet Connection [FATAL:install.p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5493 | l]\\n\";\n exit ($EXIT_FAILURE);\n }\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5494 | if (&pg_is_installed (\"wget\")){$pg=\"w\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5495 | get\"; $flag=\"-O\";$arg=\"--tries=2 --connect-tim\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5496 | eout=10 --no-check-certificate $wget_arg\";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5497 | elsif (&pg_is_installed (\"curl\")){$pg=\"curl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5498 | \"; $flag=\"-f -o\";$arg=$curl_arg;}\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5499 | {\n printf stderr \"\\nERROR: No pg for remote\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5500 | file fetching [wget or curl][FATAL]\\n\";\n exit \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5501 | ($EXIT_FAILURE);\n }\n \n \n if (-e \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5502 | $file){unlink($file);}\n $exit=system \"$pg $cm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5503 | d $flag$file $arg\";\n return $exit;\n }\n\nsu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5504 | b pg_is_installed\n {\n my ($p, $dir)=(@_);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5505 | my ($r,$m, $ret);\n my ($supported, $languag\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5506 | e, $compil);\n \n \n if ( $PG{$p})\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5507 | \n $language=$PG{$p}{language2};\n $compil=$PG{$la\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5508 | nguage}{compiler};\n }\n \n if ( $compi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5509 | l eq \"CPAN\")\n {\n if ( system (\"perl -M$p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5510 | -e 1\")==$EXIT_SUCCESS){$ret=1;}\n else {$ret=0;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5511 | \n }\n elsif ($dir)\n {\n if (-e \"$d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5512 | ir/$p\" || -e \"$dir/$p\\.exe\"){$ret=1;}\n else {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5513 | $ret=0;}\n }\n elsif (-e \"$PLUGINS_DIR/$p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5514 | \" || -e \"$PLUGINS_DIR/$p.exe\"){$ret=1;}\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5515 | se\n {\n $r=`which $p 2>/dev/null`;\n if ($r \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5516 | eq \"\"){$ret=0;}\n else {$ret=1;}\n }\n \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5517 | return $ret;\n }\nsub install\n {\n my ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5518 | new_bin)=(@_);\n my ($copied, $report);\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5519 | \n if (!$ROOT_INSTALL)\n {\n `$CP $BIN/* $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5520 | PLUGINS_DIR`;\n if (-e \"$BIN/t_coffee\")\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5521 | `$CP $BIN/t_coffee $INSTALL_DIR`;\n unli\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5522 | nk(\"$PLUGINS_DIR/t_coffee\");\n }\n $copied=1;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5523 | n }\n else\n {\n $copied=&root_run (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5524 | "You must be root to finalize the installation\", \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5525 | \"$CP $BIN/* $PLUGINS_DIR $SILENT\");\n if (-e \"$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5526 | BIN/t_coffee\")\n {\n &root_run (\"You must \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5527 | be root to finalize the installation\", \"$CP $BIN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5528 | /t_coffee $INSTALL_DIR\");\n &root_run (\"You \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5529 | must be root to finalize the installation\", \"rm \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5530 | $PLUGINS_DIR/t_coffee\");\n }\n }\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5531 | \n if ( !$copied)\n {\n $report=\"*!!\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5532 | !!!! Installation unsuccesful. The executables hav\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5533 | e been left in $BASE/bin\\n\";\n }\n elsif ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5534 | copied && $ROOT)\n {\n $report=\"*------ I\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5535 | nstallation succesful. Your executables have been \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5536 | copied in $new_bin and are on your PATH\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5537 | }\n elsif ( $copied && !$ROOT)\n {\n $re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5538 | port= \"*!!!!!! T-Coffee has been installed in $IN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5539 | STALL_DIR\\n\";\n $report= \"*!!!!!! T-Coffee\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5540 | and associated packages have been copied in: $PLU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5541 | GINS_DIR\\n\";\n $report.=\"*!!!!!! This T-Co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5542 | ffee location is NOT on your PATH sytem variable\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5543 | n\";\n if ( $OS eq \"linux\")\n {\n $report\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5544 | .=\"*!!!!!! You can do so by adding the following \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5545 | line in your ~/.bashrc file:\\n\";\n }\n else\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5546 | \n {\n $report.=\"*!!!!!! You can do so by addin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5547 | g the following line in your ~/.profile file:\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5548 | ;\n }\n $report.=\"*!!!!!! export PATH=$INSTA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5549 | LL_DIR:\\$PATH\\n\";\n }\n return $report;\n}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5550 | n\nsub sign_license_ni\n {\n my $F=new FileHan\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5551 | dle;\n open ($F, \"license.txt\");\n while (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5552 | <$F>)\n {\n print \"$_\";\n }\n close\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5553 | ($F);\n \n return;\n }\n\nsub install_pg\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5554 | {\n my ($pg)=(@_);\n my ($report, $previou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5555 | s, $language, $compiler, $return);\n \n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5556 | !$PG{$pg}{install}){return 1;}\n \n $previou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5557 | s=&pg_is_installed ($pg);\n \n if ($PG{$pg}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5558 | update_action} eq \"no_update\" && $previous)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5559 | {\n $PG{$pg}{old}=1;\n $PG{$pg}{new}=0;\n $retu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5560 | rn=1;\n }\n else\n {\n $PG{$pg}{old}=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5561 | $previous;\n \n if ($PG{$pg} {language2} eq \"Perl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5562 | \"){&install_perl_package ($pg);}\n elsif ($BINARI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5563 | ES_ONLY && &install_binary_package ($pg)){$PG{$pg}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5564 | {from_binary}=1;}\n elsif (&install_source_package\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5565 | ($pg)){;}\n else \n {\n \n if (!&suppor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5566 | ted_os($OS))\n {\n print \"!!!!!!!! $pg com\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5567 | pilation failed, binary unsupported for $OS\\n\"; \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5568 | \n }\n elsif (!($PG{$pg}{from_binary}=&i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5569 | nstall_binary_package ($pg)))\n {\n print \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5570 | "!!!!!!!! $pg compilation and binary installation\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5571 | failed\\n\";\n }\n }\n $PG{$pg}{new}=$ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5572 | urn=&pg_is_installed ($pg,$BIN);\n }\n\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5573 | n return $return;\n }\nsub install_perl_packag\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5574 | e\n {\n my ($pg)=(@_);\n my ($report, $lang\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5575 | uage, $compiler);\n \n $language=$PG{$pg} {l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5576 | anguage2};\n $compiler=$PG{$language}{compiler}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5577 | ;\n \n if (!&pg_is_installed ($pg))\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5578 | \n if ( $OS eq \"windows\"){`perl -M$compiler -e '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5579 | install $pg'`;}\n elsif ( $ROOT eq \"sudo\"){syste\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5580 | m (\"sudo perl -M$compiler -e 'install $pg'\");}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5581 | else {system (\"su root -c perl -M$compiler -e 'i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5582 | nstall $pg'\");}\n }\n return &pg_is_insta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5583 | lled ($pg);\n }\n\n\n\nsub install_source_package\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5584 | \n {\n my ($pg)=(@_);\n my ($report, $downl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5585 | oad, $arguments, $language, $address, $name, $ext,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5586 | $main_dir, $distrib);\n my $wget_tmp=\"$TMP/wg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5587 | et.tmp\";\n my (@fl);\n if ( $default_update\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5588 | _action ne \"update\" && (-e \"$BIN/$pg\" || -e \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5589 | $BIN/$pg.exe\" ) ){return 1;}\n \n #\n #\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5590 | check if the module exists in the repository cach\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5591 | e \n #\n if( repo_load($pg) ) {\n return 1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5592 | }\n \n if ($pg eq \"t_coffee\") {return &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5593 | install_t_coffee_source ($pg);}\n elsif ($pg eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5594 | \"TMalign\"){return &install_TMalign ($pg);}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5595 | \n chdir $DISTRIBUTIONS;\n \n $downloa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5596 | d=$PG{$pg}{source};\n \n if (($download =~/t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5597 | gz/))\n {\n ($address,$name,$ext)=($download=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5598 | ~/(.+\\/)([^\\/]+)(\\.tgz).*/);\n }\n elsi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5599 | f (($download=~/tar\\.gz/))\n {\n ($address,$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5600 | name,$ext)=($download=~/(.+\\/)([^\\/]+)(\\.tar\\.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5601 | gz).*/);\n }\n elsif (($download=~/tar/))\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5602 | n {\n ($address,$name,$ext)=($download=~/(.+\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5603 | \/)([^\\/]+)(\\.tar).*/);\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5604 | {\n ($address,$name)=($download=~/(.+\\/)([^\\/]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5605 | +)/);\n $ext=\"\";\n }\n $distrib=\"$name$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5606 | ext\";\n \n if ( !-d $pg){mkdir $pg;}\n c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5607 | hdir $pg;\n \n #get the distribution if avail\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5608 | able\n if ( -e \"$DOWNLOAD_DIR/$distrib\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5609 | {\n `$CP $DOWNLOAD_DIR/$distrib .`;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5610 | #UNTAR and Prepare everything\n if (!-e \"$n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5611 | ame.tar\" && !-e \"$name\")\n {\n &check_rm (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5612 | $wget_tmp);\n print \"\\n------- Downloading/Insta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5613 | lling $pg\\n\";\n \n if (!-e $distrib && &url2file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5614 | (\"$download\", \"$wget_tmp\")==$EXIT_SUCCESS)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5615 | {\n \n `mv $wget_tmp $distrib`;\n `$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5616 | CP $distrib $DOWNLOAD_DIR/`;\n }\n\n if (!-e $di\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5617 | strib)\n {\n print \"!!!!!!! Download of $pg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5618 | distribution failed\\n\";\n print \"!!!!!!! C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5619 | heck Address: $PG{$pg}{source}\\n\";\n return \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5620 | 0;\n }\n print \"\\n------- unzipping/untaring $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5621 | name\\n\";\n if (($ext =~/z/))\n { \n &flush\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5622 | _command (\"gunzip -f $name$ext\");\n \n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5623 | if (($ext =~/tar/) || ($ext =~/tgz/))\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5624 | &flush_command(\"tar -xvf $name.tar\");\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5625 | }\n #Guess and enter the distribution direc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5626 | tory\n @fl=ls($p);\n foreach my $f (@fl)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5627 | {\n if (-d $f)\n {\n $main_dir=$f;\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5628 | \n }\n if (-d $main_dir)\n \n {\n c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5629 | hdir $main_dir;}\n else\n {\n print \"Erro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5630 | r: $main_dir does not exist\";\n }\n print\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5631 | \"\\n------- Compiling/Installing $pg\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5632 | `make clean $SILENT`;\n \n \n #\n # SA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5633 | P module\n #\n if ($pg eq \"sap\")\n {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5634 | n if (-e \"./configure\")\n {\n #new sap dis\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5635 | tribution\n \n &flush_command (\"./configu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5636 | re\");\n &flush_command (\"make clean\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5637 | &flush_command (\"make\");\n &check_cp (\"./\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5638 | src/$pg\", \"$BIN\");\n repo_store(\"./src/$pg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5639 | \");\n }\n else\n {\n #old style distribut\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5640 | ion\n `rm *.o sap sap.exe ./util/aa/*.o ./ut\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5641 | il/wt/.o $SILENT`;\n &flush_command (\"make $a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5642 | rguments sap\");\n &check_cp ($pg, \"$BIN\");\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5643 | n repo_store($pg);\n }\n }\n \n #\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5644 | \n # CLUSTALW2 module\n #\n elsif ($pg eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5645 | \"clustalw2\")\n {\n &flush_command(\"./conf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5646 | igure\");\n &flush_command(\"make $arguments\");\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5647 | &check_cp (\"./src/$pg\", \"$BIN\");\n repo_store\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5648 | (\"./src/$pg\");\n }\n\n #\n # CLUSTAL-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5649 | OMEGA module\n #\n elsif ($pg eq \"clustalo\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5650 | ")\n {\n &flush_command(\"./configure\");\n &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5651 | flush_command(\"make $arguments\");\n &check_cp (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5652 | "./src/$pg\", \"$BIN\");\n repo_store(\"./src/$pg\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5653 | ");\n }\n\n #\n # STRIKE module\n #\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5654 | n elsif ($pg eq \"strike\")\n {\n &flush_c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5655 | ommand(\"make $arguments\");\n &check_cp (\"./bin/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5656 | $pg\", \"$BIN\");\n repo_store(\"./bin/$pg\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5657 | }\n \n #\n # FSA module\n # \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5658 | elsif ($pg eq \"fsa\")\n {\n &flush_command(\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5659 | "./configure --prefix=$BIN\");\n &flush_command(\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5660 | make $arguments\");\n &flush_command (\"make insta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5661 | ll\");\n\n repo_store(\"fsa\", \"$BIN/bin\");\n `m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5662 | v $BIN/bin/* $BIN`;\n `rmdir $BIN/bin`;\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5663 | \n #\n # CLUSTALW module\n #\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5664 | if ($pg eq \"clustalw\")\n {\n &flush_command\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5665 | (\"make $arguments clustalw\");\n `$CP $pg $BIN $S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5666 | ILENT`;\n repo_store($pg);\n }\n \n #\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5667 | # MAFFT module\n #\n elsif ($pg eq \"maf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5668 | ft\")\n {\n my $base=cwd();\n my $c;\n \n #co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5669 | mpile core\n mkpath (\"./mafft/bin\");\n mkpath (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5670 | "./mafft/lib\");\n chdir \"$base/core\";\n `make c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5671 | lean $SILENT`;\n &flush_command (\"make $arguments\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5672 | \");\n &flush_command (\"make install LIBDIR=../ma\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5673 | fft/lib BINDIR=../mafft/bin\");\n \n #compile exte\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5674 | nsion\n chdir \"$base/extensions\";\n `make clean \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5675 | $SILENT`;\n &flush_command (\"make $arguments\");\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5676 | n &flush_command (\"make install LIBDIR=../mafft/l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5677 | ib BINDIR=../mafft/bin\");\n \n #put everything in\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5678 | mafft and copy the compiled stuff in bin\n chdir \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5679 | \"$base\";\n if ($ROOT_INSTALL)\n {\n &root_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5680 | run (\"You Must be Root to Install MAFFT\\n\", \"m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5681 | kdir /usr/local/mafft/;$CP mafft/lib/* /usr/local/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5682 | mafft;$CP mafft/lib/mafft* /usr/local/bin ;$CP maf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5683 | ft/bin/mafft /usr/local/bin/; \");\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5684 | {\n `$CP mafft/lib/* $BIN`;\n `$CP maff\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5685 | t/bin/mafft $BIN`;\n }\n `tar -cvf mafft.tar ma\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5686 | fft`;\n `gzip mafft.tar`;\n `mv mafft.tar.gz $BIN`\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5687 | ;\n \n repo_store(\"mafft/bin/mafft\", \"mafft/lib\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5688 | /\", \"$BIN/mafft.tar.gz\");\n }\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5689 | #\n # DIALIGN-TX module\n #\n elsif ( $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5690 | g eq \"dialign-tx\" )\n {\n my $f;\n my $base\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5691 | =cwd();\n\n chdir \"./source\";\n if ($OS eq \"mac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5692 | osx\"){&flush_command (\"cp makefile.MAC_OS makefi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5693 | le\");}\n\n &flush_command (\" make CPPFLAGS='-O3 \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5694 | -funroll-loops' all\");\n \n chdir \"..\";\n &chec\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5695 | k_cp (\"./source/$pg\", \"$BIN\");\n repo_store(\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5696 | ./source/$pg\");\n }\n \n #\n # DI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5697 | ALIGN-T module \n # (is the same as dialign-tx,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5698 | but it is mantained for backward name compatibili\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5699 | ty with tcoffee)\n #\n elsif ( $pg eq \"dial\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5700 | ign-t\" )\n {\n my $f;\n my $base=cwd();\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5701 | chdir \"./source\";\n if ($OS eq \"macosx\"){&flus\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5702 | h_command (\"cp makefile.MAC_OS makefile\");}\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5703 | &flush_command (\" make CPPFLAGS='-O3 -funroll-loo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5704 | ps' all\");\n \n chdir \"..\";\n &check_cp (\"./so\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5705 | urce/dialign-tx\", \"$BIN/dialign-t\");\n repo_sto\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5706 | re(\"$BIN/dialign-t\"); \n } \n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5707 | #\n # POA module\n #\n elsif ($pg eq \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5708 | "poa\")\n {\n &flush_command (\"make $argumen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5709 | ts poa\");\n &check_cp (\"$pg\", \"$BIN\");\n repo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5710 | _store(\"$pg\");\n }\n \n \n #\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5711 | # PROBCONS module\n #\n elsif ( $pg eq \"p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5712 | robcons\")\n {\n &add_C_libraries(\"./Probabi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5713 | listicModel.h\", \"list\", \"cstring\");\n \n `rm \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5714 | *.exe $SILENT`;\n &flush_command (\"make $argument\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5715 | s probcons\");\n &check_cp(\"$pg\", \"$BIN/$pg\");\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5716 | \n repo_store(\"$pg\");\n }\n \n #\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5717 | # PROBCONS RNA module\n #\n elsif ( $pg e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5718 | q \"probconsRNA\")\n {\n &add_C_libraries(\".\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5719 | /ProbabilisticModel.h\", \"list\", \"cstring\");\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5720 | &add_C_libraries(\"./Main.cc\", \"iomanip\", \"cs\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5721 | tring\",\"climits\");\n `rm *.exe $SILENT`;\n &flu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5722 | sh_command (\"make $arguments probcons\");\n &chec\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5723 | k_cp(\"probcons\", \"$BIN/$pg\");\n repo_store(\"$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5724 | BIN/$pg\");\n }\n\n #\n # MUSCLE module\n #\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5725 | elsif ( $pg eq \"muscle\")\n { \n `rm *.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5726 | o muscle muscle.exe $SILENT`;\n if ($OS eq \"macos\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5727 | x\" || $OS eq \"linux\")\n {\n &replace_line\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5728 | _in_file (\"./Makefile\", \"LDLIBS = -lm -static\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5729 | , \"LDLIBS = -lm\");\n }\n elsif ($OS eq \"wind\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5730 | ows\")\n {\n &replace_line_in_file (\"./intm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5731 | ath.cpp\", \"double log2e\", \"double cedric\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5732 | _log\");\n &replace_line_in_file (\"./intmath.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5733 | cpp\", \"double log2\", \"double log_notuse\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5734 | \");\n &replace_line_in_file (\"./intmath.cpp\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5735 | ", \"double cedric_log\", \"double log2e\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5736 | }\n &flush_command (\"make $arguments all\");\n &c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5737 | heck_cp(\"$pg\", \"$BIN\");\n repo_store(\"$pg\");\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5738 | \n }\n \n #\n # MUS4 module\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5739 | #\n elsif ( $pg eq \"mus4\")\n {\n `r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5740 | m *.o muscle muscle.exe $SILENT`;\n &flush_command\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5741 | (\"./mk\");\n &check_cp(\"$pg\", \"$BIN\");\n rep\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5742 | o_store(\"$pg\"); \n }\n \n #\n # \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5743 | PCMA module\n #\n elsif ( $pg eq \"pcma\")\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5744 | {\n if ($OS eq \"macosx\")\n {\n &repl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5745 | ace_line_in_file (\"./alcomp2.c\", \"malloc.h\", \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5746 | \"\");\n }\n &flush_command (\"make $arguments p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5747 | cma\");\n &check_cp(\"$pg\", \"$BIN\");\n repo_sto\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5748 | re(\"$pg\"); \n }\n \n #\n # KALIG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5749 | N module\n #\n elsif ($pg eq \"kalign\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5750 | {\n &flush_command (\"./configure\");\n &flush\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5751 | _command(\"make $arguments\");\n &check_cp (\"$pg\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5752 | ",$BIN);\n repo_store(\"$pg\"); \n }\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5753 | n #\n # AMAP module\n #\n elsif ( $pg \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5754 | eq \"amap\")\n {\n &add_C_libraries(\"./Amap.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5755 | cc\", \"iomanip\", \"cstring\",\"climits\"); \n `m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5756 | ake clean $SILENT`;\n &flush_command (\"make $argu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5757 | ments all\");\n &check_cp (\"$pg\", $BIN);\n repo_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5758 | store(\"$pg\"); \n }\n \n #\n # PR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5759 | ODA module\n #\n elsif ( $pg eq \"proda\")\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5760 | {\n `sed -i '' 's/int errno = 0;/int errno; \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5761 | errno = 0;/' Main.cc`;\n &add_C_libraries(\"Aligne\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5762 | dFragment.h\", \"vector\", \"iostream\", \"cstring\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5763 | \",\"cstdlib\");\n &add_C_libraries(\"Main.cc\", \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5764 | "vector\", \"climits\"); \n &add_C_libraries(\"Seq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5765 | uence.cc\", \"stdlib.h\", \"cstdio\"); \n &flush_c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5766 | ommand (\"make $arguments all\");\n &check_cp (\"$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5767 | pg\", $BIN);\n repo_store(\"$pg\"); \n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5768 | \n #\n # PRANK module\n #\n elsif (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5769 | $pg eq \"prank\")\n {\n &flush_command (\"ma\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5770 | ke $arguments all\");\n &check_cp (\"$pg\", $BIN);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5771 | \n repo_store(\"$pg\"); \n }\n \n #\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5772 | # !!!! MUSTANG module\n #\n elsif ( $pg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5773 | eq \"mustang\")\n {\n &flush_command (\"rm .\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5774 | /bin/*\");\n &flush_command (\"make $arguments all\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5775 | \");\n\n if ( $OS=~/windows/){&flush_command(\"cp \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5776 | ./bin/* $BIN/mustang.exe\");}\n else {&flush_comma\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5777 | nd(\"cp ./bin/* $BIN/mustang\");}\n \n repo_store(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5778 | \"$BIN/mustang\");\n }\n\n #\n # RNAplfold mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5779 | dule\n #\n elsif ( $pg eq \"RNAplfold\")\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5780 | {\n &flush_command(\"./configure\");\n &flush_com\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5781 | mand (\"make $arguments all\");\n &check_cp(\"./Pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5782 | ogs/RNAplfold\", \"$BIN\");\n &check_cp(\"./Progs/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5783 | RNAalifold\", \"$BIN\");\n &check_cp(\"./Progs/RNA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5784 | fold\", \"$BIN\");\n \n repo_store(\"./Progs/RNApl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5785 | fold\", \"./Progs/RNAalifold\", \"./Progs/RNAfold\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5786 | ");\n }\n \n #\n # !!! RETREE modu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5787 | le\n #\n elsif ( $pg eq \"retree\")\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5788 | \n chdir \"src\";\n &flush_command (\"cp Makefile.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5789 | unx Makefile\");\n &flush_command (\"make $argumen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5790 | ts all\");\n &flush_command (\"make put\");\n syst\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5791 | em \"cp ../exe/* $BIN\";\n \n repo_store(\"retree\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5792 | ", \"../exe\");\n }\n \n chdir $CDIR;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5793 | return &pg_is_installed ($pg, $BIN);\n }\n\nsub \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5794 | install_t_coffee_source\n {\n my ($pg)=(@_);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5795 | my ($report,$cflags, $arguments, $language, $c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5796 | ompiler) ;\n\n #1-Install T-Coffee\n chdir \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5797 | "t_coffee_source\";\n &flush_command (\"make cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5798 | ean\");\n print \"\\n------- Compiling T-Coffee\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5799 | \\n\";\n $language=$PG{$pg} {language2};\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5800 | arguments=$PG{$language}{arguments};\n \n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5801 | ( $CC ne \"\")\n {\n print \"make -i $argume\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5802 | nts t_coffee \\n\";\n &flush_command (\"make -i $a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5803 | rguments t_coffee\");\n }\n &check_cp ($pg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5804 | , $BIN);\n \n chdir $CDIR;\n return &pg_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5805 | s_installed ($pg, $BIN);\n }\nsub install_TMalign\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5806 | \n {\n my ($pg)=(@_);\n my $report;\n ch\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5807 | dir \"t_coffee_source\";\n print \"\\n------- C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5808 | ompiling TMalign\\n\";\n `rm TMalign TMalign.ex\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5809 | e $SILENT`;\n if ( $FC ne \"\"){&flush_command \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5810 | (\"make -i $PG{Fortran}{arguments} TMalign\");}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5811 | &check_cp ($pg, $BIN);\n repo_store($pg);\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5812 | n if ( !-e \"$BIN/$pg\" && pg_has_binary_distri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5813 | b ($pg))\n {\n print \"!!!!!!! Compilation of\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5814 | $pg impossible. Will try to install from binary\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5815 | n\";\n return &install_binary_package ($pg);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5816 | }\n chdir $CDIR;\n return &pg_is_installed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5817 | ($pg, $BIN);\n }\n\nsub pg_has_binary_distrib\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5818 | {\n my ($pg)=(@_);\n if ($PG{$pg}{windows})\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5819 | {return 1;}\n elsif ($PG{$pg}{osx}){return 1;}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5820 | n elsif ($PG{$pg}{macosx}){return 1;}\n\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5821 | sif ($PG{$pg}{linux}){return 1;}\n return 0;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5822 | }\nsub install_binary_package\n {\n my ($pg)=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5823 | (@_);\n my ($base,$report,$name, $download, $ar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5824 | guments, $language, $dir);\n my $isdir;\n &i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5825 | nput_os();\n \n #\n # - paolodt - Check i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5826 | f the module exists in the repository cache \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5827 | #\n if( repo_load($pg) ) {\n $PG{$pg}{from_bin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5828 | ary}=1;\n return 1;\n }\n # - paolodt - end \n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5829 | \n if (!&supported_os($OS)){return 0;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5830 | if ( $PG{$pg}{binary}){$name=$PG{$pg}{binary};}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5831 | else {$name=$pg;}\n if ($name eq \"t_coffee\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5832 | \")\n {\n #check if local bin is there\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5833 | -e \"./bin/$OS/t_coffee\")\n {\n print \"\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5834 | ------- Installing T-Coffee from Pre-Compiled/Pre\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5835 | -Downloaded $OS binary\\n\";\n print \"\\n----\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5836 | --- If you want to trigger a fresh compilation use\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5837 | -recompile\\n\";\n &check_cp (\"./bin/$OS/t_c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5838 | offee\", $BIN);\n return &pg_is_installed ($pg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5839 | , $BIN);\n }\n #try to get precompiled binary --\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5840 | available from MAC is distribution from MAC\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5841 | e\n {\n $download=\"$WEB_BASE/Packages/Binar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5842 | ies/tcoffee/$OS/$name.$VERSION\";\n }\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5843 | else\n {\n $download=\"$WEB_BASE/Packages\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5844 | /Binaries/plugins/$OS/$name\";\n }\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5845 | $base=cwd();\n chdir $TMP;\n \n if (!-e \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5846 | $name)\n {\n `rm x $SILENT`;\n if ( url2file(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5847 | \"$download\",\"x\")==$EXIT_SUCCESS)\n {\n `\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5848 | mv x $name`;\n }\n }\n \n if (!-e $na\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5849 | me)\n {\n print \"!!!!!!! $PG{$pg}{dname}: Do\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5850 | wnload of $pg binary failed\\n\";\n print \"!!!!!!\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5851 | ! $PG{$pg}{dname}: Check Address: $download\\n\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5852 | n chdir $base;\n return 0;\n }\n print \"\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5853 | \n------- Installing $pg\\n\";\n \n if ($nam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5854 | e =~/tar\\.gz/)\n {\n `gunzip -f $name`;\n `\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5855 | tar -xvf $pg.tar`;\n chdir $pg;\n `chmod u+x *`;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5856 | `mv * $BIN`;\n #if (!($pg=~/\\*/)){`rm -rf $pg`;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5857 | }\n }\n else\n {\n &check_cp (\"$pg\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5858 | , \"$BIN\");\n `chmod u+x $BIN/$pg`; \n unlink ($p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5859 | g);\n }\n chdir $base;\n $PG{$pg}{from_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5860 | binary}=1;\n\n return &pg_is_installed ($pg, $B\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5861 | IN);\n }\n\n \nsub add_dir\n {\n my $dir=@_[0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5862 | ];\n \n if (!-e $dir && !-d $dir)\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5863 | my @l;\n umask (0000);\n @l=mkpath ($dir,{mode =>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5864 | 0777});\n \n }\n else\n {\n return 0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5865 | ;\n }\n }\nsub check_rm \n {\n my ($file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5866 | )=(@_);\n \n if ( -e $file)\n {\n retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5867 | n unlink($file);\n }\n return 0;\n }\nsub\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5868 | check_cp\n {\n my ($from, $to)=(@_);\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5869 | ( !-e $from && -e \"$from\\.exe\"){$from=\"$from\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5870 | .exe\";}\n if ( !-e $from){return 0;}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5871 | \n `$CP $from $to`;\n return 1;\n }\n\nsub \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5872 | repo_store \n{\n # check that all required data \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5873 | are available\n if( $REPO_ROOT eq \"\" ) { retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5874 | n; }\n\n\n # extract the package name from the \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5875 | specified path\n my $pg =`basename $_[0]`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5876 | chomp($pg);\n \n my $VER = $PG{$pg}{version};\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5877 | n my $CACHE = \"$REPO_ROOT/$pg/$VER/$OSNAME-$OS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5878 | ARCH\"; \n \n print \"-------- Storing packa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5879 | ge: \\\"$pg\\\" to path: $CACHE\\n\";\n \n #\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5880 | clean the cache path if exists and create it agai\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5881 | n\n `rm -rf $CACHE`;\n `mkdir -p $CACHE`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5882 | \n for my $path (@_) {\n\n # check if it i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5883 | s a single file \n if( -f $path ) {\n `cp $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5884 | path $CACHE`;\n }\n # .. or a directory, in this\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5885 | case copy all the content \n elsif( -d $path ) {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5886 | \n opendir(IMD, $path);\n my @thefiles= readdi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5887 | r(IMD);\n closedir(IMD);\n \n for my $_file \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5888 | (@thefiles) {\n if( $_file ne \".\" && $_file n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5889 | e \"..\") {\n `cp $path/$_file $CACHE`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5890 | }\n }\n } \n } \n \n \n} \n\nsub repo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5891 | _load \n{\n my ($pg)=(@_);\n\n #Bypass the R\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5892 | epository Cache\n return 0;\n # check that a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5893 | ll required data are available\n if( $REPO_ROOT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5894 | eq \"\" ) { return 0; }\n\n my $VER = $PG{$pg}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5895 | {version};\n my $CACHE = \"$REPO_ROOT/$pg/$VER/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5896 | $OSNAME-$OSARCH\"; \n if( !-e \"$CACHE/$pg\" ) \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5897 | {\n print \"-------- Module \\\"$pg\\\" NOT f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5898 | ound on repository cache.\\n\";\n return 0;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5899 | }\n \n print \"-------- Module \\\"$pg\\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5900 | " found on repository cache. Using copy on path: $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5901 | CACHE\\n\";\n `cp $CACHE/* $BIN`;\n return 1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5902 | ;\n}\n\nsub check_file_list_exists \n {\n my (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5903 | $base, @flist)=(@_);\n my $f;\n\n foreach $f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5904 | (@flist)\n {\n if ( !-e \"$base/$f\"){return\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5905 | 0;}\n }\n return 1;\n }\nsub ls\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5906 | my $f=@_[0];\n my @fl;\n chomp(@fl=`ls -1 \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5907 | $f`);\n return @fl;\n }\nsub flush_command\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5908 | {\n my $command=@_[0];\n my $F=new FileHandl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5909 | e;\n open ($F, \"$command|\");\n while (<$F>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5910 | ){print \" --- $_\";}\n close ($F);\n } \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5911 | \n\nsub input_installation_directory\n {\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5912 | $dir=@_[0];\n my $new;\n \n print \"-----\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5913 | -- The current installation directory is: [$dir]\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5914 | n\";\n print \"??????? Return to keep the defau\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5915 | lt or new value:\";\n \n if ($NO_QUESTION==0)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5916 | \n {\n chomp ($new=);\n while ( $new n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5917 | e \"\" && !input_yes (\"You have entered $new. Is \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5918 | this correct? ([y]/n):\"))\n {\n print \"???\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5919 | ????New installation directory:\";\n chomp ($n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5920 | ew=);\n }\n $dir=($new eq \"\")?$dir:$new\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5921 | ;\n $dir=~s/\\/$//;\n }\n \n if ( -d $d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5922 | ir){return $dir;}\n elsif (&root_run (\"You mus\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5923 | t be root to create $dir\",\"mkdir $dir\")==$EXIT_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5924 | SUCCESS){return $dir;}\n else\n {\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5925 | \"!!!!!!! $dir could not be created\\n\";\n if ( $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5926 | NO_QUESTION)\n {\n return \"\";\n }\n elsi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5927 | f ( &input_yes (\"??????? Do you want to provide a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5928 | new directory([y]/n)?:\"))\n {\n return inp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5929 | ut_installation_directory ($dir);\n }\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5930 | {\n return \"\";\n }\n }\n \n }\ns\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5931 | ub input_yes\n {\n my $question =@_[0];\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5932 | y $answer;\n\n if ($NO_QUESTION==1){return 1;}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5933 | n \n if ($question eq \"\"){$question=\"????\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5934 | ??? Do you wish to proceed ([y]/n)?:\";}\n prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5935 | t $question;\n chomp($answer=lc());\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5936 | if (($answer=~/^y/) || $answer eq \"\"){return 1;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5937 | }\n elsif ( ($answer=~/^n/)){return 0;}\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5938 | se\n {\n return input_yes($question);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5939 | }\n }\nsub root_run\n {\n my ($txt, $cmd)=(@_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5940 | );\n \n if ( system ($cmd)==$EXIT_SUCCESS){r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5941 | eturn $EXIT_SUCCESS;}\n else \n {\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5942 | \"------- $txt\\n\";\n if ( $ROOT eq \"sudo\"){ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5943 | urn system (\"sudo $cmd\");}\n else {return system\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5944 | (\"su root -c \\\"$cmd\\\"\");}\n }\n }\nsu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5945 | b get_root\n {\n if (&pg_is_installed (\"sudo\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5946 | ")){return \"sudo\";}\n else {return \"su\";}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5947 | }\n\nsub get_os\n {\n my $raw_os=`uname`;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5948 | my $os;\n\n $raw_os=lc ($raw_os);\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5949 | if ($raw_os =~/cygwin/){$os=\"windows\";}\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5950 | sif ($raw_os =~/linux/){$os=\"linux\";}\n elsif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5951 | ($raw_os =~/osx/){$os=\"macosx\";}\n elsif ($r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5952 | aw_os =~/darwin/){$os=\"macosx\";}\n else\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5953 | {\n $os=$raw_os;\n }\n return $os;\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5954 | nsub input_os\n {\n my $answer;\n if ($OS) \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5955 | {return $OS;}\n \n print \"??????? which os \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5956 | do you use: [w]indows, [l]inux, [m]acosx:?\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5957 | $answer=lc();\n\n if (($answer=~/^m/)){\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5958 | $OS=\"macosx\";}\n elsif ( ($answer=~/^w/)){$OS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5959 | =\"windows\";}\n elsif ( ($answer=~/^linux/)){$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5960 | OS=\"linux\";}\n \n else\n {\n return &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5961 | input_os();\n }\n return $OS;\n }\n\nsub \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5962 | supported_os\n {\n my ($os)=(@_[0]);\n retu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5963 | rn $SUPPORTED_OS{$os};\n }\n\nsub add2env_file\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5964 | {\n my ($env, $var, $value)=(@_);\n my $F =\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5965 | new FileHandle;\n my $t;\n if (!$value){ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5966 | urn;}\n #make sure new variables do not get dup\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5967 | licated\n if ( -e $env)\n {\n open ($F, \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5968 | $env\");\n while (<$F>)\n {\n my $line=$_;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5969 | if (!($line=~/$var/)){$t.=$line;}\n }\n clo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5970 | se ($F);\n }\n $t.=\"$var=$value\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5971 | open ($F, \">$env\");\n print $F \"$t\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5972 | $ENV{$var}=$value;\n close ($F);\n } \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5973 | \n\n\nsub update_tclinkdb \n {\n my $file =@_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5974 | [0];\n my $name;\n my $F=new FileHandle;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5975 | my ($download, $address, $name, $l, $db);\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5976 | n if ( $file eq \"update\"){$file=$TCLINKDB_ADD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5977 | RESS;}\n \n if ( $file =~/http:\\/\\// || $f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5978 | ile =~/ftp:\\/\\//)\n {\n ($address, $name)=(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5979 | $download=~/(.*)\\/([^\\/]+)$/);\n `rm x $SILENT`;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5980 | \n if (&url2file ($file,\"x\")==$EXIT_SUCCESS)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5981 | {\n print \"------- Susscessful upload of $na\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5982 | me\";\n `mv x $name`;\n $file=$name;\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5983 | \n }\n open ($F, \"$file\");\n while (<\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5984 | $F>)\n {\n my $l=$_;\n if (($l =~/^\\/\\//) |\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5985 | | ($db=~/^#/)){;}\n elsif ( !($l =~/\\w/)){;}\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5986 | se\n {\n my @v=split (/\\s+/, $l);\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5987 | ( $l=~/^MODE/)\n {\n $MODE{$v[1]}{$v[2]}=$v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5988 | [3];\n }\n elsif ($l=~/^PG/)\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5989 | $PG{$v[1]}{$v[2]}=$v[3];\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5990 | }\n close ($F);\n &post_process_PG();\n r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5991 | eturn;\n }\n\n\n\nsub initialize_PG\n {\n\n$PG{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5992 | "t_coffee\"}{\"4_TCOFFEE\"}=\"TCOFFEE\";\n$PG{\"t_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5993 | coffee\"}{\"type\"}=\"sequence_multiple_aligner\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5994 | \n$PG{\"t_coffee\"}{\"ADDRESS\"}=\"http://www.tcof\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5995 | fee.org\";\n$PG{\"t_coffee\"}{\"language\"}=\"C++\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5996 | ";\n$PG{\"t_coffee\"}{\"language2\"}=\"CXX\";\n$PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5997 | {\"t_coffee\"}{\"source\"}=\"http://www.tcoffee.or\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5998 | g/Packages/sources/tcoffee/stable/T-COFFEE_distrib\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5999 | ution.tar.gz\";\n$PG{\"t_coffee\"}{\"update_action\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6000 | \"}=\"always\";\n$PG{\"t_coffee\"}{\"binary\"}=\"t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6001 | _coffee\";\n$PG{\"t_coffee\"}{\"mode\"}=\"tcoffee,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6002 | mcoffee,rcoffee,expresso,3dcoffee\";\n$PG{\"clusta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6003 | lo\"}{\"4_TCOFFEE\"}=\"CLUSTALO\";\n$PG{\"clustalo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6004 | \"}{\"type\"}=\"sequence_multiple_aligner\";\n$PG{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6005 | \"clustalo\"}{\"ADDRESS\"}=\"http://www.clustal.or\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6006 | g/omega/\";\n$PG{\"clustalo\"}{\"language\"}=\"C++\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6007 | \";\n$PG{\"clustalo\"}{\"language2\"}=\"C++\";\n$P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6008 | G{\"clustalo\"}{\"source\"}=\"http://www.clustal.o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6009 | rg/omega/clustal-omega-1.2.4.tar.gz\";\n$PG{\"clus\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6010 | talo\"}{\"mode\"}=\"mcoffee\";\n$PG{\"clustalo\"}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6011 | \"binary\"}=\"clustalo\";\n$PG{\"clustalo\"}{\"ver\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6012 | sion\"}=\"1.2.4\";\n$PG{\"strike\"}{\"4_TCOFFEE\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6013 | =\"STRIKE\";\n$PG{\"strike\"}{\"type\"}=\"sequence\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6014 | _alignment_scoring\";\n$PG{\"strike\"}{\"ADDRESS\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6015 | }=\"http://www.tcoffee.org/Projects/strike/index.h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6016 | tml\";\n$PG{\"strike\"}{\"language\"}=\"C++\";\n$P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6017 | G{\"strike\"}{\"language2\"}=\"CXX\";\n$PG{\"strik\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6018 | e\"}{\"source\"}=\"http://www.tcoffee.org/Projects\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6019 | /strike/strike_v1.2.tar.bz2\";\n$PG{\"strike\"}{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6020 | mode\"}=\"tcoffee,expresso\";\n$PG{\"strike\"}{\"v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6021 | ersion\"}=\"1.2\";\n$PG{\"strike\"}{\"binary\"}=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6022 | strike\";\n$PG{\"clustalw2\"}{\"4_TCOFFEE\"}=\"CLU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6023 | STALW2\";\n$PG{\"clustalw2\"}{\"type\"}=\"sequence\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6024 | _multiple_aligner\";\n$PG{\"clustalw2\"}{\"ADDRESS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6025 | \"}=\"http://www.clustal.org\";\n$PG{\"clustalw2\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6026 | }{\"language\"}=\"C++\";\n$PG{\"clustalw2\"}{\"lan\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6027 | guage2\"}=\"CXX\";\n$PG{\"clustalw2\"}{\"source\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6028 | =\"http://www.clustal.org/download/2.0.10/clustalw\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6029 | -2.0.10-src.tar.gz\";\n$PG{\"clustalw2\"}{\"mode\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6030 | }=\"mcoffee,rcoffee\";\n$PG{\"clustalw2\"}{\"binar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6031 | y\"}=\"clustalw2\";\n$PG{\"clustalw2\"}{\"version\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6032 | "}=\"2.0.10\";\n$PG{\"clustalw\"}{\"4_TCOFFEE\"}=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6033 | "CLUSTALW\";\n$PG{\"clustalw\"}{\"type\"}=\"sequen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6034 | ce_multiple_aligner\";\n$PG{\"clustalw\"}{\"ADDRES\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6035 | S\"}=\"http://www.clustal.org\";\n$PG{\"clustalw\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6036 | }{\"language\"}=\"C\";\n$PG{\"clustalw\"}{\"langua\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6037 | ge2\"}=\"C\";\n$PG{\"clustalw\"}{\"source\"}=\"htt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6038 | p://www.clustal.org/download/1.X/ftp-igbmc.u-stras\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6039 | bg.fr/pub/ClustalW/clustalw1.82.UNIX.tar.gz\";\n$P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6040 | G{\"clustalw\"}{\"mode\"}=\"mcoffee,rcoffee\";\n$P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6041 | G{\"clustalw\"}{\"version\"}=\"1.82\";\n$PG{\"clus\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6042 | talw\"}{\"binary\"}=\"clustalw\";\n$PG{\"dialign-t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6043 | \"}{\"4_TCOFFEE\"}=\"DIALIGNT\";\n$PG{\"dialign-t\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6044 | "}{\"type\"}=\"sequence_multiple_aligner\";\n$PG{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6045 | "dialign-t\"}{\"ADDRESS\"}=\"http://dialign-tx.gob\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6046 | ics.de/\";\n$PG{\"dialign-t\"}{\"DIR\"}=\"/usr/sha\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6047 | re/dialign-tx/\";\n$PG{\"dialign-t\"}{\"language\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6048 | }=\"C\";\n$PG{\"dialign-t\"}{\"language2\"}=\"C\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6049 | \n$PG{\"dialign-t\"}{\"source\"}=\"http://dialign-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6050 | tx.gobics.de/DIALIGN-TX_1.0.2.tar.gz\";\n$PG{\"dia\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6051 | lign-t\"}{\"mode\"}=\"mcoffee\";\n$PG{\"dialign-t\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6052 | "}{\"binary\"}=\"dialign-t\";\n$PG{\"dialign-t\"}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6053 | \"version\"}=\"1.0.2\";\n$PG{\"dialign-tx\"}{\"4_T\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6054 | COFFEE\"}=\"DIALIGNTX\";\n$PG{\"dialign-tx\"}{\"ty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6055 | pe\"}=\"sequence_multiple_aligner\";\n$PG{\"dialig\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6056 | n-tx\"}{\"ADDRESS\"}=\"http://dialign-tx.gobics.de\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6057 | /\";\n$PG{\"dialign-tx\"}{\"DIR\"}=\"/usr/share/di\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6058 | align-tx/\";\n$PG{\"dialign-tx\"}{\"language\"}=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6059 | C\";\n$PG{\"dialign-tx\"}{\"language2\"}=\"C\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6060 | PG{\"dialign-tx\"}{\"source\"}=\"http://dialign-tx\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6061 | .gobics.de/DIALIGN-TX_1.0.2.tar.gz\";\n$PG{\"diali\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6062 | gn-tx\"}{\"mode\"}=\"mcoffee\";\n$PG{\"dialign-tx\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6063 | "}{\"binary\"}=\"dialign-tx\";\n$PG{\"dialign-tx\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6064 | }{\"version\"}=\"1.0.2\";\n$PG{\"poa\"}{\"4_TCOFFE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6065 | E\"}=\"POA\";\n$PG{\"poa\"}{\"type\"}=\"sequence_m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6066 | ultiple_aligner\";\n$PG{\"poa\"}{\"ADDRESS\"}=\"ht\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6067 | tp://www.bioinformatics.ucla.edu/poa/\";\n$PG{\"po\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6068 | a\"}{\"language\"}=\"C\";\n$PG{\"poa\"}{\"language\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6069 | 2\"}=\"C\";\n$PG{\"poa\"}{\"source\"}=\"http://dow\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6070 | nloads.sourceforge.net/poamsa/poaV2.tar.gz\";\n$PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6071 | {\"poa\"}{\"DIR\"}=\"/usr/share/\";\n$PG{\"poa\"}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6072 | \"FILE1\"}=\"blosum80.mat\";\n$PG{\"poa\"}{\"mode\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6073 | "}=\"mcoffee\";\n$PG{\"poa\"}{\"binary\"}=\"poa\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6074 | \n$PG{\"poa\"}{\"version\"}=\"2.0\";\n$PG{\"probco\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6075 | ns\"}{\"4_TCOFFEE\"}=\"PROBCONS\";\n$PG{\"probcons\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6076 | \"}{\"type\"}=\"sequence_multiple_aligner\";\n$PG{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6077 | \"probcons\"}{\"ADDRESS\"}=\"http://probcons.stanf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6078 | ord.edu/\";\n$PG{\"probcons\"}{\"language2\"}=\"CX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6079 | X\";\n$PG{\"probcons\"}{\"language\"}=\"C++\";\n$P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6080 | G{\"probcons\"}{\"source\"}=\"http://probcons.stan\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6081 | ford.edu/probcons_v1_12.tar.gz\";\n$PG{\"probcons\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6082 | "}{\"mode\"}=\"mcoffee\";\n$PG{\"probcons\"}{\"bin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6083 | ary\"}=\"probcons\";\n$PG{\"probcons\"}{\"version\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6084 | "}=\"1.12\";\n$PG{\"msaprobs\"}{\"4_TCOFFEE\"}=\"M\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6085 | SAPROBS\";\n$PG{\"msaprobs\"}{\"type\"}=\"sequence\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6086 | _multiple_aligner\";\n$PG{\"msaprobs\"}{\"ADDRESS\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6087 | "}=\"http://msaprobs.sourceforge.net/homepage.htm#\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6088 | latest\";\n$PG{\"msaprobs\"}{\"language2\"}=\"CXX\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6089 | ";\n$PG{\"msaprobs\"}{\"language\"}=\"C++\";\n$PG{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6090 | \"msaprobs\"}{\"source\"}=\"https://sourceforge.ne\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6091 | t/projects/msaprobs/files/MSAProbs-MPI/MSAProbs-MP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6092 | I_rel1.0.5.tar.gz\";\n$PG{\"msaprobs\"}{\"mode\"}=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6093 | \"mcoffee\";\n$PG{\"msaprobs\"}{\"binary\"}=\"msap\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6094 | robs\";\n$PG{\"msaprobs\"}{\"version\"}=\"1.05\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6095 | n$PG{\"msaprobs\"}{\"update_action\"}=\"never\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6096 | $PG{\"upp\"}{\"4_TCOFFEE\"}=\"UPP\";\n$PG{\"upp\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6097 | {\"type\"}=\"sequence_multiple_aligner\";\n$PG{\"u\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6098 | pp\"}{\"ADDRESS\"}=\"http://www.cs.utexas.edu/user\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6099 | s/phylo/software/upp/\";\n$PG{\"upp\"}{\"language2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6100 | \"}=\"CXX\";\n$PG{\"upp\"}{\"language\"}=\"C++\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6101 | n$PG{\"upp\"}{\"source\"}=\"https://github.com/smi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6102 | rarab/pasta/archive/upp.zip\";\n$PG{\"upp\"}{\"mod\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6103 | e\"}=\"mcoffee\";\n$PG{\"upp\"}{\"binary\"}=\"upp\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6104 | ";\n$PG{\"upp\"}{\"version\"}=\"1\";\n$PG{\"upp\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6105 | {\"update_action\"}=\"never\";\n$PG{\"famsa\"}{\"4\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6106 | _TCOFFEE\"}=\"FAMSA\";\n$PG{\"famsa\"}{\"type\"}=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6107 | "sequence_multiple_aligner\";\n$PG{\"famsa\"}{\"AD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6108 | DRESS\"}=\"https://github.com/refresh-bio/FAMSA\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6109 | \n$PG{\"famsa\"}{\"language\"}=\"C++\";\n$PG{\"fam\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6110 | sa\"}{\"language\"}=\"C++\";\n$PG{\"famsa\"}{\"sou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6111 | rce\"}=\"https://github.com/refresh-bio/FAMSA.git\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6112 | ";\n$PG{\"famsa\"}{\"mode\"}=\"mcoffee,rcoffee\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6113 | n$PG{\"famsa\"}{\"binary\"}=\"famsa\";\n$PG{\"fams\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6114 | a\"}{\"version\"}=\"1.1\";\n$PG{\"mafft\"}{\"4_TCO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6115 | FFEE\"}=\"MAFFT\";\n$PG{\"mafft\"}{\"type\"}=\"seq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6116 | uence_multiple_aligner\";\n$PG{\"mafft\"}{\"ADDRES\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6117 | S\"}=\"http://align.bmr.kyushu-u.ac.jp/mafft/onlin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6118 | e/server/\";\n$PG{\"mafft\"}{\"language\"}=\"C\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6119 | n$PG{\"mafft\"}{\"language\"}=\"C\";\n$PG{\"mafft\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6120 | "}{\"source\"}=\"http://mafft.cbrc.jp/alignment/so\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6121 | ftware/mafft-7.310-with-extensions-src.tgz\";\n$PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6122 | {\"mafft\"}{\"mode\"}=\"mcoffee,rcoffee\";\n$PG{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6123 | mafft\"}{\"binary\"}=\"mafft.tar.gz\";\n$PG{\"maff\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6124 | t\"}{\"version\"}=\"7.310\";\n$PG{\"msa\"}{\"4_TCO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6125 | FFEE\"}=\"MSA\";\n$PG{\"msa\"}{\"type\"}=\"sequenc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6126 | e_multiple_aligner\";\n$PG{\"msa\"}{\"ADDRESS\"}=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6127 | "https://www.ncbi.nlm.nih.gov/CBBresearch/Schaffer\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6128 | /msa.html\";\n$PG{\"msa\"}{\"language\"}=\"C\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6129 | PG{\"msa\"}{\"language\"}=\"C\";\n$PG{\"msa\"}{\"s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6130 | ource\"}=\"ftp://ftp.ncbi.nih.gov/pub/msa/msa.tar.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6131 | Z\";\n$PG{\"msa\"}{\"mode\"}=\"mcoffee\";\n$PG{\"m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6132 | sa\"}{\"binary\"}=\"msa.pl\";\n$PG{\"msa\"}{\"vers\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6133 | ion\"}=\"1.0\";\n$PG{\"msa\"}{\"update_action\"}=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6134 | "never\";\n$PG{\"dca\"}{\"4_TCOFFEE\"}=\"DCA\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6135 | PG{\"dca\"}{\"type\"}=\"sequence_multiple_aligner\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6136 | ";\n$PG{\"dca\"}{\"ADDRESS\"}=\"https://bibiserv2.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6137 | cebitec.uni-bielefeld.de/dca\";\n$PG{\"dca\"}{\"la\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6138 | nguage\"}=\"C\";\n$PG{\"dca\"}{\"language\"}=\"C\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6139 | ;\n$PG{\"dca\"}{\"source\"}=\"https://bibiserv2.ce\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6140 | bitec.uni-bielefeld.de/applications/dca/resources/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6141 | downloads/dca-1.1-src.tar.gz\";\n$PG{\"dca\"}{\"mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6142 | de\"}=\"mcoffee\";\n$PG{\"dca\"}{\"binary\"}=\"dca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6143 | .pl\";\n$PG{\"dca\"}{\"version\"}=\"1.1\";\n$PG{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6144 | dca\"}{\"update_action\"}=\"never\";\n$PG{\"muscle\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6145 | \"}{\"4_TCOFFEE\"}=\"MUSCLE\";\n$PG{\"muscle\"}{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6146 | type\"}=\"sequence_multiple_aligner\";\n$PG{\"musc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6147 | le\"}{\"ADDRESS\"}=\"http://www.drive5.com/muscle/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6148 | \";\n$PG{\"muscle\"}{\"language\"}=\"C++\";\n$PG{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6149 | "muscle\"}{\"language2\"}=\"GPP\";\n$PG{\"muscle\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6150 | }{\"source\"}=\"http://www.drive5.com/muscle/downl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6151 | oads3.7/muscle3.7_src.tar.gz\";\n$PG{\"muscle\"}{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6152 | "windows\"}=\"http://www.drive5.com/muscle/downloa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6153 | ds3.7/muscle3.7_win32.zip\";\n$PG{\"muscle\"}{\"li\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6154 | nux\"}=\"http://www.drive5.com/muscle/downloads3.7\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6155 | /muscle3.7_linux_ia32.tar.gz\";\n$PG{\"muscle\"}{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6156 | "mode\"}=\"mcoffee,rcoffee\";\n$PG{\"muscle\"}{\"v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6157 | ersion\"}=\"3.7\";\n$PG{\"pcma\"}{\"4_TCOFFEE\"}=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6158 | "PCMA\";\n$PG{\"pcma\"}{\"type\"}=\"sequence_multi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6159 | ple_aligner\";\n$PG{\"pcma\"}{\"ADDRESS\"}=\"http:\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6160 | //prodata.swmed.edu/pcma/pcma.php\";\n$PG{\"pcma\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6161 | }{\"language\"}=\"C\";\n$PG{\"pcma\"}{\"language2\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6162 | "}=\"C\";\n$PG{\"pcma\"}{\"source\"}=\"http://prod\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6163 | ata.swmed.edu/download/pub/PCMA/pcma.tar.gz\";\n$P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6164 | G{\"pcma\"}{\"mode\"}=\"mcoffee\";\n$PG{\"pcma\"}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6165 | \"version\"}=\"1.0\";\n$PG{\"kalign\"}{\"4_TCOFFEE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6166 | \"}=\"KALIGN\";\n$PG{\"kalign\"}{\"type\"}=\"seque\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6167 | nce_multiple_aligner\";\n$PG{\"kalign\"}{\"ADDRESS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6168 | \"}=\"http://msa.cgb.ki.se\";\n$PG{\"kalign\"}{\"l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6169 | anguage\"}=\"C\";\n$PG{\"kalign\"}{\"language2\"}=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6170 | \"C\";\n$PG{\"kalign\"}{\"source\"}=\"http://msa.c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6171 | gb.ki.se/downloads/kalign/current.tar.gz\";\n$PG{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6172 | "kalign\"}{\"mode\"}=\"mcoffee\";\n$PG{\"kalign\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6173 | {\"version\"}=\"1.0\";\n$PG{\"amap\"}{\"4_TCOFFEE\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6174 | "}=\"AMAP\";\n$PG{\"amap\"}{\"type\"}=\"sequence_m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6175 | ultiple_aligner\";\n$PG{\"amap\"}{\"ADDRESS\"}=\"h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6176 | ttp://bio.math.berkeley.edu/amap/\";\n$PG{\"amap\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6177 | }{\"language\"}=\"C++\";\n$PG{\"amap\"}{\"language\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6178 | 2\"}=\"CXX\";\n$PG{\"amap\"}{\"source\"}=\"https:/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6179 | /github.com/mes5k/amap-align/archive/amap.zip\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6180 | $PG{\"amap\"}{\"mode\"}=\"mcoffee\";\n$PG{\"amap\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6181 | }{\"version\"}=\"2.0\";\n$PG{\"amap\"}{\"update_ac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6182 | tion\"}=\"never\";\n$PG{\"proda\"}{\"4_TCOFFEE\"}=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6183 | \"PRODA\";\n$PG{\"proda\"}{\"type\"}=\"sequence_mu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6184 | ltiple_aligner\";\n$PG{\"proda\"}{\"ADDRESS\"}=\"h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6185 | ttp://proda.stanford.edu\";\n$PG{\"proda\"}{\"lang\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6186 | uage\"}=\"C++\";\n$PG{\"proda\"}{\"language2\"}=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6187 | CXX\";\n$PG{\"proda\"}{\"source\"}=\"http://proda.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6188 | stanford.edu/proda_1_0.tar.gz\";\n$PG{\"proda\"}{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6189 | "mode\"}=\"mcoffee\";\n$PG{\"proda\"}{\"version\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6190 | =\"1.0\";\n$PG{\"prank\"}{\"4_TCOFFEE\"}=\"PRANK\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6191 | ;\n$PG{\"prank\"}{\"type\"}=\"sequence_multiple_al\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6192 | igner\";\n$PG{\"prank\"}{\"ADDRESS\"}=\"http://www\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6193 | .ebi.ac.uk/goldman-srv/prank/\";\n$PG{\"prank\"}{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6194 | "language\"}=\"C++\";\n$PG{\"prank\"}{\"language2\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6195 | "}=\"CXX\";\n$PG{\"prank\"}{\"source\"}=\"http://w\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6196 | ww.ebi.ac.uk/goldman-srv/prank/src/prank/prank.src\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6197 | .100802.tgz\";\n$PG{\"prank\"}{\"mode\"}=\"mcoffee\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6198 | \";\n$PG{\"prank\"}{\"version\"}=\"100303\";\n$PG{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6199 | \"sap\"}{\"4_TCOFFEE\"}=\"SAP\";\n$PG{\"sap\"}{\"t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6200 | ype\"}=\"structure_pairwise_aligner\";\n$PG{\"sap\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6201 | "}{\"ADDRESS\"}=\"https://mathbio.crick.ac.uk/wiki\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6202 | /Software#SAP\";\n$PG{\"sap\"}{\"language\"}=\"C\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6203 | ;\n$PG{\"sap\"}{\"language2\"}=\"C\";\n$PG{\"sap\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6204 | }{\"source\"}=\"https://github.com/jkleinj/SAP/arc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6205 | hive/v.1.1.3.tar.gz\";\n$PG{\"sap\"}{\"mode\"}=\"e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6206 | xpresso,3dcoffee\";\n$PG{\"sap\"}{\"version\"}=\"1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6207 | .1.3\";\n$PG{\"sap\"}{\"binary\"}=\"sap\";\n$PG{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6208 | TMalign\"}{\"4_TCOFFEE\"}=\"TMALIGN\";\n$PG{\"TMal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6209 | ign\"}{\"type\"}=\"structure_pairwise_aligner\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6210 | $PG{\"TMalign\"}{\"ADDRESS\"}=\"http://zhanglab.cc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6211 | mb.med.umich.edu/TM-align/TMalign.f\";\n$PG{\"TMal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6212 | ign\"}{\"language\"}=\"Fortran\";\n$PG{\"TMalign\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6213 | }{\"language2\"}=\"Fortran\";\n$PG{\"TMalign\"}{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6214 | source\"}=\"http://zhanglab.ccmb.med.umich.edu/TM-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6215 | align/TMalign.f\";\n$PG{\"TMalign\"}{\"linux\"}=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6216 | http://zhanglab.ccmb.med.umich.edu/TM-align/TMalig\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6217 | n_32.gz\";\n$PG{\"TMalign\"}{\"mode\"}=\"expresso,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6218 | 3dcoffee\";\n$PG{\"TMalign\"}{\"version\"}=\"2013.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6219 | 05.11\";\n$PG{\"mustang\"}{\"4_TCOFFEE\"}=\"MUSTAN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6220 | G\";\n$PG{\"mustang\"}{\"type\"}=\"structure_pairw\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6221 | ise_aligner\";\n$PG{\"mustang\"}{\"ADDRESS\"}=\"ht\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6222 | tp://lcb.infotech.monash.edu.au/mustang/\";\n$PG{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6223 | "mustang\"}{\"language\"}=\"C++\";\n$PG{\"mustang\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6224 | "}{\"language2\"}=\"CXX\";\n$PG{\"mustang\"}{\"sou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6225 | rce\"}=\"http://lcb.infotech.monash.edu.au/mustang\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6226 | /mustang_v3.2.3.tgz\";\n$PG{\"mustang\"}{\"mode\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6227 | =\"expresso,3dcoffee\";\n$PG{\"mustang\"}{\"versio\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6228 | n\"}=\"3.2.3\";\n$PG{\"lsqman\"}{\"4_TCOFFEE\"}=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6229 | LSQMAN\";\n$PG{\"lsqman\"}{\"type\"}=\"structure_p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6230 | airwise_aligner\";\n$PG{\"lsqman\"}{\"ADDRESS\"}=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6231 | "empty\";\n$PG{\"lsqman\"}{\"language\"}=\"empty\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6232 | ;\n$PG{\"lsqman\"}{\"language2\"}=\"empty\";\n$PG{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6233 | \"lsqman\"}{\"source\"}=\"empty\";\n$PG{\"lsqman\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6234 | }{\"update_action\"}=\"never\";\n$PG{\"lsqman\"}{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6235 | "mode\"}=\"expresso,3dcoffee\";\n$PG{\"align_pdb\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6236 | }{\"4_TCOFFEE\"}=\"ALIGN_PDB\";\n$PG{\"align_pdb\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6237 | }{\"type\"}=\"structure_pairwise_aligner\";\n$PG{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6238 | "align_pdb\"}{\"ADDRESS\"}=\"empty\";\n$PG{\"align\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6239 | _pdb\"}{\"language\"}=\"empty\";\n$PG{\"align_pdb\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6240 | "}{\"language2\"}=\"empty\";\n$PG{\"align_pdb\"}{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6241 | "source\"}=\"empty\";\n$PG{\"align_pdb\"}{\"update\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6242 | _action\"}=\"never\";\n$PG{\"align_pdb\"}{\"mode\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6243 | }=\"expresso,3dcoffee\";\n$PG{\"fugueali\"}{\"4_TC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6244 | OFFEE\"}=\"FUGUE\";\n$PG{\"fugueali\"}{\"type\"}=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6245 | "structure_pairwise_aligner\";\n$PG{\"fugueali\"}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6246 | \"ADDRESS\"}=\"http://mizuguchilab.org/fugue/\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6247 | $PG{\"fugueali\"}{\"language\"}=\"empty\";\n$PG{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6248 | fugueali\"}{\"language2\"}=\"empty\";\n$PG{\"fugue\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6249 | ali\"}{\"source\"}=\"empty\";\n$PG{\"fugueali\"}{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6250 | "update_action\"}=\"never\";\n$PG{\"fugueali\"}{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6251 | mode\"}=\"expresso,3dcoffee\";\n$PG{\"dalilite.pl\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6252 | "}{\"4_TCOFFEE\"}=\"DALILITEc\";\n$PG{\"dalilite.p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6253 | l\"}{\"type\"}=\"structure_pairwise_aligner\";\n$P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6254 | G{\"dalilite.pl\"}{\"ADDRESS\"}=\"built_in\";\n$PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6255 | {\"dalilite.pl\"}{\"ADDRESS2\"}=\"http://www.ebi.a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6256 | c.uk/Tools/webservices/services/dalilite\";\n$PG{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6257 | "dalilite.pl\"}{\"language\"}=\"Perl\";\n$PG{\"dal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6258 | ilite.pl\"}{\"language2\"}=\"Perl\";\n$PG{\"dalili\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6259 | te.pl\"}{\"source\"}=\"empty\";\n$PG{\"dalilite.pl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6260 | \"}{\"update_action\"}=\"never\";\n$PG{\"dalilite.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6261 | pl\"}{\"mode\"}=\"expresso,3dcoffee\";\n$PG{\"prob\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6262 | consRNA\"}{\"4_TCOFFEE\"}=\"PROBCONSRNA\";\n$PG{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6263 | probconsRNA\"}{\"type\"}=\"RNA_multiple_aligner\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6264 | \n$PG{\"probconsRNA\"}{\"ADDRESS\"}=\"http://probc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6265 | ons.stanford.edu/\";\n$PG{\"probconsRNA\"}{\"langu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6266 | age\"}=\"C++\";\n$PG{\"probconsRNA\"}{\"language2\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6267 | "}=\"CXX\";\n$PG{\"probconsRNA\"}{\"source\"}=\"ht\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6268 | tp://probcons.stanford.edu/probconsRNA.tar.gz\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6269 | $PG{\"probconsRNA\"}{\"mode\"}=\"mcoffee,rcoffee\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6270 | ;\n$PG{\"probconsRNA\"}{\"version\"}=\"1.0\";\n$PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6271 | {\"sfold\"}{\"4_TCOFFEE\"}=\"CONSAN\";\n$PG{\"sfol\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6272 | d\"}{\"type\"}=\"RNA_pairwise_aligner\";\n$PG{\"sf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6273 | old\"}{\"ADDRESS\"}=\"http://selab.janelia.org/sof\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6274 | tware/consan/\";\n$PG{\"sfold\"}{\"language\"}=\"e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6275 | mpty\";\n$PG{\"sfold\"}{\"language2\"}=\"empty\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6276 | n$PG{\"sfold\"}{\"source\"}=\"empty\";\n$PG{\"sfol\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6277 | d\"}{\"update_action\"}=\"never\";\n$PG{\"sfold\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6278 | {\"mode\"}=\"rcoffee\";\n$PG{\"RNAplfold\"}{\"4_TC\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6279 | OFFEE\"}=\"RNAPLFOLD\";\n$PG{\"RNAplfold\"}{\"type\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6280 | \"}=\"RNA_secondarystructure_predictor\";\n$PG{\"R\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6281 | NAplfold\"}{\"ADDRESS\"}=\"http://www.tbi.univie.a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6282 | c.at/RNA/\";\n$PG{\"RNAplfold\"}{\"language\"}=\"C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6283 | \";\n$PG{\"RNAplfold\"}{\"language2\"}=\"C\";\n$PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6284 | {\"RNAplfold\"}{\"source\"}=\"http://www.tbi.univi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6285 | e.ac.at/RNA/packages/source/ViennaRNA-2.1.9.tar.gz\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6286 | \";\n$PG{\"RNAplfold\"}{\"mode\"}=\"rcoffee,\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6287 | PG{\"RNAplfold\"}{\"binary\"}=\"RNAplfold.tar.gz\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6288 | ;\n$PG{\"RNAplfold\"}{\"version\"}=\"2.1.9\";\n$PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6289 | {\"retree\"}{\"4_TCOFFEE\"}=\"PHYLIP\";\n$PG{\"ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6290 | ree\"}{\"type\"}=\"Phylogeny\";\n$PG{\"retree\"}{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6291 | "ADDRESS\"}=\"http://evolution.gs.washington.edu/p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6292 | hylip/\";\n$PG{\"retree\"}{\"language\"}=\"C\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6293 | PG{\"retree\"}{\"language2\"}=\"C\";\n$PG{\"retree\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6294 | \"}{\"source\"}=\"http://www.tcoffee.org/Packages/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6295 | mirrors/source/phylip-3.66.tar.gz\";\n$PG{\"retree\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6296 | \"}{\"mode\"}=\"trmsd,\";\n$PG{\"retree\"}{\"binar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6297 | y\"}=\"retree.tar.gz\";\n$PG{\"retree\"}{\"version\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6298 | \"}=\"3.66\";\n$PG{\"hmmtop\"}{\"4_TCOFFEE\"}=\"HM\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6299 | MTOP\";\n$PG{\"hmmtop\"}{\"type\"}=\"protein_secon\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6300 | darystructure_predictor\";\n$PG{\"hmmtop\"}{\"ADDR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6301 | ESS\"}=\"www.enzim.hu/hmmtop/\";\n$PG{\"hmmtop\"}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6302 | \"language\"}=\"C\";\n$PG{\"hmmtop\"}{\"language2\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6303 | "}=\"C\";\n$PG{\"hmmtop\"}{\"source\"}=\"http://ww\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6304 | w.tcoffee.org/Packages/mirrors/hmmtop2.1.tgz\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6305 | PG{\"hmmtop\"}{\"binary\"}=\"hmmtop\";\n$PG{\"hmmt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6306 | op\"}{\"update_action\"}=\"never\";\n$PG{\"hmmtop\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6307 | "}{\"mode\"}=\"psicoffee\";\n$PG{\"hmmtop\"}{\"ver\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6308 | sion\"}=\"2.1\";\n$PG{\"gorIV\"}{\"4_TCOFFEE\"}=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6309 | GOR4\";\n$PG{\"gorIV\"}{\"type\"}=\"protein_second\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6310 | arystructure_predictor\";\n$PG{\"gorIV\"}{\"ADDRES\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6311 | S\"}=\"http://mig.jouy.inra.fr/logiciels/gorIV/\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6312 | \n$PG{\"gorIV\"}{\"language\"}=\"C\";\n$PG{\"gorIV\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6313 | \"}{\"language2\"}=\"C\";\n$PG{\"gorIV\"}{\"source\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6314 | \"}=\"http://www.tcoffee.org/Packages/mirrors/GOR_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6315 | IV.tar.gz\";\n$PG{\"gorIV\"}{\"update_action\"}=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6316 | never\";\n$PG{\"gorIV\"}{\"mode\"}=\"tcoffee\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6317 | PG{\"wublast.pl\"}{\"4_TCOFFEE\"}=\"EBIWUBLASTc\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6318 | \n$PG{\"wublast.pl\"}{\"type\"}=\"protein_homology\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6319 | _predictor\";\n$PG{\"wublast.pl\"}{\"ADDRESS\"}=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6320 | built_in\";\n$PG{\"wublast.pl\"}{\"ADDRESS2\"}=\"h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6321 | ttp://www.ebi.ac.uk/Tools/webservices/services/wub\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6322 | last\";\n$PG{\"wublast.pl\"}{\"language\"}=\"Perl\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6323 | ";\n$PG{\"wublast.pl\"}{\"language2\"}=\"Perl\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6324 | $PG{\"wublast.pl\"}{\"source\"}=\"empty\";\n$PG{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6325 | wublast.pl\"}{\"update_action\"}=\"never\";\n$PG{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6326 | "wublast.pl\"}{\"mode\"}=\"psicoffee,expresso,accu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6327 | rate\";\n$PG{\"blastpgp.pl\"}{\"4_TCOFFEE\"}=\"EBI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6328 | BLASTPGPc\";\n$PG{\"blastpgp.pl\"}{\"type\"}=\"pro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6329 | tein_homology_predictor\";\n$PG{\"blastpgp.pl\"}{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6330 | "ADDRESS\"}=\"built_in\";\n$PG{\"blastpgp.pl\"}{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6331 | ADDRESS2\"}=\"http://www.ebi.ac.uk/Tools/webservic\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6332 | es/services/blastpgp\";\n$PG{\"blastpgp.pl\"}{\"la\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6333 | nguage\"}=\"Perl\";\n$PG{\"blastpgp.pl\"}{\"langua\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6334 | ge2\"}=\"Perl\";\n$PG{\"blastpgp.pl\"}{\"source\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6335 | =\"empty\";\n$PG{\"blastpgp.pl\"}{\"update_action\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6336 | "}=\"never\";\n$PG{\"blastpgp.pl\"}{\"mode\"}=\"ps\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6337 | icoffee,expresso,accurate\";\n$PG{\"blastall\"}{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6338 | 4_TCOFFEE\"}=\"blastall\";\n$PG{\"blastall\"}{\"ty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6339 | pe\"}=\"protein_homology_predictor\";\n$PG{\"blast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6340 | all\"}{\"ADDRESS\"}=\"ftp://ftp.ncbi.nih.gov/blast\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6341 | /executables/LATEST\";\n$PG{\"blastall\"}{\"langua\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6342 | ge\"}=\"C\";\n$PG{\"blastall\"}{\"language2\"}=\"C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6343 | \";\n$PG{\"blastall\"}{\"source\"}=\"ftp://ftp.ncb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6344 | i.nlm.nih.gov/blast/executables/blast+/2.6.0/ncbi-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6345 | blast-2.6.0+-src.tar.gz\";\n$PG{\"blastall\"}{\"up\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6346 | date_action\"}=\"never\";\n$PG{\"blastall\"}{\"mod\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6347 | e\"}=\"psicoffee,expresso,3dcoffee\";\n$PG{\"legac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6348 | y_blast.pl\"}{\"4_TCOFFEE\"}=\"NCBIBLAST\";\n$PG{\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6349 | "legacy_blast.pl\"}{\"type\"}=\"protein_homology_p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6350 | redictor\";\n$PG{\"legacy_blast.pl\"}{\"ADDRESS\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6351 | =\"ftp://ftp.ncbi.nih.gov/blast/executables/LATEST\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6352 | \";\n$PG{\"legacy_blast.pl\"}{\"language\"}=\"C\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6353 | \n$PG{\"legacy_blast.pl\"}{\"language2\"}=\"C\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6354 | $PG{\"legacy_blast.pl\"}{\"source\"}=\"ftp://ftp.n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6355 | cbi.nlm.nih.gov/blast/executables/blast+/2.6.0/ncb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6356 | i-blast-2.6.0+-src.tar.gz\";\n$PG{\"legacy_blast.p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6357 | l\"}{\"update_action\"}=\"never\";\n$PG{\"legacy_b\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6358 | last.pl\"}{\"mode\"}=\"psicoffee,expresso,3dcoffee\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6359 | \";\n$PG{\"SOAP::Lite\"}{\"4_TCOFFEE\"}=\"SOAPLITE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6360 | \";\n$PG{\"SOAP::Lite\"}{\"type\"}=\"library\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6361 | PG{\"SOAP::Lite\"}{\"ADDRESS\"}=\"http://cpansearc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6362 | h.perl.org/src/MKUTTER/SOAP-Lite-0.710.08/Makefile\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6363 | .PL\";\n$PG{\"SOAP::Lite\"}{\"language\"}=\"Perl\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6364 | ;\n$PG{\"SOAP::Lite\"}{\"language2\"}=\"Perl\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6365 | PG{\"SOAP::Lite\"}{\"source\"}=\"empty\";\n$PG{\"S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6366 | OAP::Lite\"}{\"update_action\"}=\"never\";\n$PG{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6367 | SOAP::Lite\"}{\"mode\"}=\"none\";\n$PG{\"XML::Simp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6368 | le\"}{\"4_TCOFFEE\"}=\"XMLSIMPLE\";\n$PG{\"XML::Si\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6369 | mple\"}{\"type\"}=\"library\";\n$PG{\"XML::Simple\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6370 | "}{\"ADDRESS\"}=\"http://search.cpan.org/~grantm/X\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6371 | ML-Simple-2.18/lib/XML/Simple.pm\";\n$PG{\"XML::Si\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6372 | mple\"}{\"language\"}=\"Perl\";\n$PG{\"XML::Simple\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6373 | \"}{\"language2\"}=\"Perl\";\n$PG{\"XML::Simple\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6374 | {\"source\"}=\"empty\";\n$PG{\"XML::Simple\"}{\"mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6375 | de\"}=\"psicoffee,expresso,accurate\";\n$PG{\"x3dn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6376 | a\"}{\"4_TCOFFEE\"}=\"x3dna\";\n$PG{\"x3dna\"}{\"t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6377 | ype\"}=\"RNA_secondarystructure_predictor\";\n$PG{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6378 | \"x3dna\"}{\"ADDRESS\"}=\"http://x3dna.bio.columbi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6379 | a.edu/\";\n$PG{\"x3dna\"}{\"source\"}=\"http://www\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6380 | .tcoffee.org/Packages/mirrors/source/x3dna-v2.3-li\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6381 | nux-64bit.tar.gz\";\n$PG{\"x3dna\"}{\"mode\"}=\"sa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6382 | racoffee\";\n$PG{\"x3dna\"}{\"update_action\"}=\"n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6383 | ever\";\n$PG{\"fsa\"}{\"4_TCOFFEE\"}=\"FSA\";\n$PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6384 | {\"fsa\"}{\"type\"}=\"sequence_multiple_aligner\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6385 | \n$PG{\"fsa\"}{\"ADDRESS\"}=\"http://fsa.sourcefor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6386 | ge.net/\";\n$PG{\"fsa\"}{\"language\"}=\"C++\";\n$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6387 | PG{\"fsa\"}{\"language2\"}=\"CXX\";\n$PG{\"fsa\"}{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6388 | \"source\"}=\"http://sourceforge.net/projects/fsa/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6389 | files/fsa-1.15.3.tar.gz/download/\";\n$PG{\"fsa\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6390 | {\"mode\"}=\"mcoffee\";\n$PG{\"fsa\"}{\"version\"}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6391 | =\"1.15.3\";\n$PG{\"fsa\"}{\"update_action\"}=\"ne\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6392 | ver\";\n$PG{\"mus4\"}{\"4_TCOFFEE\"}=\"MUS4\";\n$P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6393 | G{\"mus4\"}{\"type\"}=\"sequence_multiple_aligner\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6394 | ";\n$PG{\"mus4\"}{\"ADDRESS\"}=\"http://www.drive5\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6395 | .com/muscle/\";\n$PG{\"mus4\"}{\"language\"}=\"C++\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6396 | \";\n$PG{\"mus4\"}{\"language2\"}=\"GPP\";\n$PG{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6397 | mus4\"}{\"source\"}=\"http://www.drive5.com/muscle\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6398 | /muscle4.0_src.tar.gz\";\n$PG{\"mus4\"}{\"mode\"}=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6399 | \"mcoffee,rcoffee\";\n$PG{\"mus4\"}{\"version\"}=\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6400 | "4.0\";\n$PG{\"mus4\"}{\"update_action\"}=\"never\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6401 | ";\n$MODE{\"tcoffee\"}{\"name\"}=\"tcoffee\";\n$MO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6402 | DE{\"rcoffee\"}{\"name\"}=\"rcoffee\";\n$MODE{\"3d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6403 | coffee\"}{\"name\"}=\"3dcoffee\";\n$MODE{\"mcoffee\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6404 | \"}{\"name\"}=\"mcoffee\";\n$MODE{\"expresso\"}{\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6405 | name\"}=\"expresso\";\n$MODE{\"trmsd\"}{\"name\"}=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6406 | \"trmsd\";\n$MODE{\"accurate\"}{\"name\"}=\"accura\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6407 | te\";\n$MODE{\"seq_reformat\"}{\"name\"}=\"seq_ref\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6408 | ormat\";\n\n\n$PG{C}{compiler}=\"gcc\";\n$PG{C}{co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6409 | mpiler_flag}=\"CC\";\n$PG{C}{options}=\"\";\n$PG{C\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6410 | }{options_flag}=\"CFLAGS\";\n$PG{C}{type}=\"compil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6411 | er\";\n\n$PG{\"CXX\"}{compiler}=\"g++\";\n$PG{\"CX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6412 | X\"}{compiler_flag}=\"CXX\";\n$PG{\"CXX\"}{options\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6413 | }=\"\";\n$PG{\"CXX\"}{options_flag}=\"CXXFLAGS\";\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6414 | n$PG{CXX}{type}=\"compiler\";\n\n$PG{\"CPP\"}{comp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6415 | iler}=\"g++\";\n$PG{\"CPP\"}{compiler_flag}=\"CPP\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6416 | ";\n$PG{\"CPP\"}{options}=\"\";\n$PG{\"CPP\"}{opti\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6417 | ons_flag}=\"CPPFLAGS\";\n$PG{CPP}{type}=\"compiler\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6418 | \";\n\n$PG{\"GPP\"}{compiler}=\"g++\";\n$PG{\"GPP\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6419 | "}{compiler_flag}=\"GPP\";\n$PG{\"GPP\"}{options}=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6420 | \"\";\n$PG{\"GPP\"}{options_flag}=\"CFLAGS\";\n$PG\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6421 | {GPP}{type}=\"compiler\";\n\n$PG{Fortran}{compiler\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6422 | }=\"g77\";\n$PG{Fortran}{compiler_flag}=\"FCC\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6423 | $PG{Fortran}{type}=\"compiler\";\n\n$PG{Perl}{comp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6424 | iler}=\"CPAN\";\n$PG{Perl}{type}=\"compiler\";\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6425 | $SUPPORTED_OS{macosx}=\"Macintosh\";\n$SUPPORTED_O\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6426 | S{linux}=\"Linux\";\n$SUPPORTED_OS{windows}=\"Cygw\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6427 | in\";\n\n\n\n$MODE{t_coffee}{description}=\" for r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6428 | egular multiple sequence alignments\";\n$MODE{rcof\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6429 | fee} {description}=\" for RNA multiple sequence al\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6430 | ignments\";\n\n$MODE{psicoffee} {description}=\" f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6431 | or Homology Extended multiple sequence alignments\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6432 | ";\n$MODE{expresso}{description}=\" for very accur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6433 | ate structure based multiple sequence alignments\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6434 | ;\n$MODE{\"3dcoffee\"}{description}=\" for multipl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6435 | e structure alignments\";\n$MODE{mcoffee} {descrip\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6436 | tion}=\" for combining alternative multiple sequen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6437 | ce alignment packages\\n------- into a unique meta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6438 | -package. The installer will upload several MSA pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6439 | ckages and compile them\\n\n\";\n\n\n&post_process\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6440 | _PG();\nreturn;\n}\n\nsub post_process_PG\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6441 | my $p;\n \n %PG=&name2dname (%PG);\n %M\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6442 | ODE=&name2dname(%MODE);\n foreach $p (keys(%PG)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6443 | ){if ( $PG{$p}{type} eq \"compiler\"){$PG{$p}{upda\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6444 | te_action}=\"never\";}}\n \n }\n\nsub name2dna\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6445 | me\n {\n my (%L)=(@_);\n my ($l, $ml);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6446 | \n foreach my $pg (keys(%L))\n {\n $l=len\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6447 | gth ($pg);\n if ( $l>$ml){$ml=$l;}\n }\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6448 | ml+=1;\n foreach my $pg (keys(%L))\n {\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6449 | y $name;\n $l=$ml-length ($pg);\n $name=$pg;\n for\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6450 | ( $b=0; $b<$l; $b++)\n {\n $name .=\" \";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6451 | }\n $L{$pg}{dname}=$name;\n }\n return \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6452 | %L;\n }\n\nsub env_file2putenv\n {\n my $f=@_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6453 | [0];\n my $F=new FileHandle;\n my $n;\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6454 | n open ($F, \"$f\");\n while (<$F>)\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6455 | \n my $line=$_;\n my($var, $value)=($_=~/(\\S+)\\=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6456 | (\\S*)/);\n $ENV{$var}=$value;\n $ENV_SET{$var}=1;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6457 | \n $n++;\n }\n close ($F);\n return $n;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6458 | \n }\n\nsub replace_line_in_file\n {\n my ($f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6459 | ile, $wordin, $wordout)=@_;\n my $O=new FileHan\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6460 | dle;\n my $I=new FileHandle;\n my $l;\n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6461 | f (!-e $file){return;}\n \n system (\"mv $fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6462 | le $file.old\");\n open ($O, \">$file\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6463 | open ($I, \"$file.old\");\n while (<$I>)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6464 | {\n $l=$_;\n if (!($l=~/$wordin/)){print $O \"$l\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6465 | ";}\n elsif ( $wordout ne \"\"){$l=~s/$wordin/$wor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6466 | dout/g;print $O \"$l\";}\n }\n close ($O);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6467 | \n close ($I);\n return;\n }\n\nsub add_C_l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6468 | ibraries\n {\n my ($file,$first,@list)=@_;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6469 | \n my $O=new FileHandle;\n my $I=new FileHan\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6470 | dle;\n my ($l,$anchor);\n if (!-e $file){ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6471 | urn;}\n \n $anchor=\"#include <$first>\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6472 | \n system (\"mv $file $file.old\");\n open (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6473 | $O, \">$file\");\n open ($I, \"$file.old\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6474 | while (<$I>)\n {\n $l=$_;\n print $O \"$l\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6475 | ";\n if (!($l=~/$anchor/))\n {\n \n for\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6476 | each my $lib (@list)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6477 | print $O \"#include <$lib>\\n\";\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6478 | }\n }\n close ($O);\n close ($I)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6479 | ;\n return;\n }\n","use Env;\nuse Cwd;\n@suf\ | ~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:6479:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6479 | ;\n return;\n }\n","use Env;\nuse Cwd;\n@suf\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~ 6480 | fix=(\"tmp\", \"temp\", \"cache\", \"t_coffee\", \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6481 | "core\", \"tcoffee\");\n\nif ($#ARGV==-1)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6482 | print \"clean_cache.pl -file -dir= -size=\\n0: unlimited -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6484 | 1 always.\\nWill only clean directories matching:[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6485 | \";\n foreach $k(@suffix){print \"*$k* \";}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6486 | print \"]\\n\";\n exit (EXIT_FAILURE);\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6487 | \n$cl=join (\" \",@ARGV);\nif (($cl=~/\\-no_action\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6488 | /))\n {\n exit (EXIT_SUCCESS);\n }\n\nif (($c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6489 | l=~/\\-debug/))\n {\n $DEBUG=1;\n }\nelse\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6490 | {\n $DEBUG=0;\n }\n\nif (($cl=~/\\-dir=(\\S+)/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6491 | ))\n {\n $dir=$1;\n }\nelse\n {\n $dir=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6492 | ./\";\n }\n\nif ($cl=~/\\-file=(\\S+)/)\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6493 | $file=$1;\n }\nelse\n {\n $file=0;\n }\n\ni\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6494 | f ($cl=~/\\-size=(\\S+)/)\n {\n $max_size=$1;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6495 | n }\nelse\n {\n $max_size=0;#unlimited\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6496 | if ($cl=~/\\-force/)\n {\n $force=1;\n }\nels\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6497 | e\n {\n $force=0;\n }\n\nif ($cl=~/\\-age=(\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6498 | S+)/)\n {\n $max_age=$1;\n }\nelse\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6499 | $max_age=0;#unlimited\n }\n\n$max_size*=1000000;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6500 | nif ( ! -d $dir)\n {\n print STDERR \"\\nCanno\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6501 | t process $dir: does not exist \\n\";\n exit (E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6502 | XIT_FAILURE);\n }\n\nif ( !($dir=~/^\\//))\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6503 | $base=cwd();\n $dir=\"$base/$dir\";\n }\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6504 | n$proceed=0;\nforeach $s (@suffix)\n {\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6505 | if (($dir=~/$s/)){$proceed=1;}\n $s=uc ($s);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6506 | if (($dir=~/$s/)){$proceed=1;}\n }\nif ( $pro\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6507 | ceed==0)\n {\n print STDERR \"Clean_cache.pl c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6508 | an only clean directories whose absolute path name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6509 | contains the following strings:\";\n foreach $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6510 | w (@suffix) {print STDERR \"$w \";$w=lc($w); print\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6511 | STDERR \"$w \";}\n print STDERR \"\\nCannot pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6512 | ocess $dir\\n\";\n exit (EXIT_FAILURE);\n }\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6513 | n$name_file=\"$dir/name_file.txt\";\n$size_file=\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6514 | $dir/size_file.txt\";\nif ( $force){&create_ref_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6515 | le ($dir,$name_file,$size_file);}\nif ($file){&add\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6516 | _file ($dir, $name_file, $size_file, $file);}\n&cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6517 | ean_dir ($dir, $name_file, $size_file, $max_size,$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6518 | max_age);\nexit (EXIT_SUCCESS);\n\nsub clean_dir \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6519 | n {\n my ($dir, $name_file, $size_file, $max_s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6520 | ize, $max_age)=@_;\n my ($tot_size, $size, $f, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6521 | $s);\n\n \n $tot_size=&get_tot_size ($dir, $na\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6522 | me_file, $size_file);\n\n if ( $tot_size<=$max_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6523 | size){return ;}\n else {$max_size/=2;}\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6524 | #recreate the name file in case some temprary f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6525 | iles have not been properly registered\n &creat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6526 | e_ref_file ($dir, $name_file, $size_file, $max_age\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6527 | );\n \n $new_name_file=&vtmpnam();\n open (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6528 | R, \"$name_file\");\n open (W, \">$new_name_fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6529 | e\");\n while ()\n {\n my $line=$_;\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6530 | n ($f, $s)=($line=~/(\\S+) (\\S+)/);\n if ( !($f=~\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6531 | /\\S/)){next;}\n \n elsif ($max_size && $tot_size>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6532 | =$max_size && !($f=~/name_file/))\n {\n remo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6533 | ve ( \"$dir/$f\");\n $tot_size-=$s;\n }\n el\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6534 | sif ( $max_age && -M(\"$dir/$f\")>=$max_age)\n {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6535 | \n remove ( \"$dir/$f\");\n $tot_size-=$s;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6536 | \n }\n else\n {\n print W \"$f $s\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6537 | }\n }\n close (R);\n close (W);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6538 | open (F, \">$size_file\");\n print F \"$tot_siz\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6539 | e\";\n if ( -e $new_name_file){`mv $new_name_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6540 | le $name_file`;}\n close (F);\n }\nsub get_tot\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6541 | _size\n {\n my ($dir, $name_file, $size_file)=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6542 | @_;\n my $size;\n \n if ( !-d $dir){retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6543 | n 0;}\n if ( !-e $name_file)\n {\n \n &cre\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6544 | ate_ref_file ($dir, $name_file, $size_file);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6545 | }\n open (F, \"$size_file\");\n $size=;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6546 | \n close (F);\n chomp ($size);\n return $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6547 | size;\n }\nsub size \n {\n my $f=@_[0];\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6548 | if ( !-d $f){return -s($f);}\n else {return &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6549 | dir2size($f);}\n }\nsub dir2size\n {\n my $d=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6550 | @_[0];\n my ($s, $f);\n \n if ( !-d $d) {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6551 | return 0;}\n \n foreach $f (&dir2list ($d))\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6552 | n {\n if ( -d $f){$s+=&dir2size (\"$d/$f\");}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6553 | \n else {$s+= -s \"$dir/$f\";}\n }\n retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6554 | n $s;\n }\n\nsub remove \n {\n my $file=@_[0]\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6555 | ;\n my ($f);\n \n debug_print( \"--- $fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6556 | e ---\\n\");\n if (($file eq \".\") || ($file e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6557 | q \"..\") || ($file=~/\\*/)){return EXIT_FAILURE;}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6558 | \n elsif ( !-d $file)\n {\n debug_print (\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6559 | "unlink $file\\n\");\n if (-e $file){unlink ($file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6560 | );}\n }\n elsif ( -d $file)\n {\n deb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6561 | ug_print (\"++++++++ $file +++++++\\n\");\n foreac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6562 | h $f (&dir2list($file))\n {\n &remove (\"$fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6563 | le/$f\");\n }\n debug_print (\"rmdir $file\\n\")\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6564 | ;\n rmdir $file;\n }\n else\n {\n deb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6565 | ug_print (\"????????? $file ????????\\n\");\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6566 | }\n return EXIT_SUCCESS;\n }\n\nsub dir2list\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6567 | n {\n my $dir=@_[0];\n my (@list1, @list2,@\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6568 | list3, $l);\n\n opendir (DIR,$dir);\n @list1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6569 | =readdir (DIR);\n closedir (DIR);\n \n fo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6570 | reach $l (@list1)\n {\n if ( $l ne \".\" && $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6571 | l ne \"..\"){@list2=(@list2, $l);}\n }\n @\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6572 | list3 = sort { (-M \"$dir/$list2[$b]\") <=> (-M \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6573 | $dir/$list2[$a]\")} @list2;\n return @list3;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6574 | \n }\n\nsub debug_print\n {\n \n if ($D\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6575 | EBUG==1){print @_;}\n \n }\nsub create_ref_fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6576 | e\n {\n my ($dir,$name_file,$size_file)=@_;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6577 | my ($f, $s, $tot_size, @l);\n \n if ( !-d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6578 | $dir){return;}\n \n @l=&dir2list ($dir);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6579 | open (F, \">$name_file\");\n foreach $f (@l)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6580 | \n {\n $s=&size(\"$dir/$f\");\n $tot_size+=$s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6581 | ;\n print F \"$f $s\\n\";\n }\n &myecho ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6582 | tot_size, \">$size_file\");\n close (F);\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6583 | sub add_file \n {\n my ($dir,$name_file,$size_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6584 | file,$file)=@_;\n my ($s, $tot_size);\n \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6585 | if ( !-d $dir) {return;}\n if ( !-e \"$dir/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6586 | $file\" ) {return;}\n if ( !-e $name_file){&cre\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6587 | ate_ref_file ($dir,$name_file,$size_file);}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6588 | \n $s=&size(\"$dir/$file\");\n open (F, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6589 | \">>$name_file\");\n print F \"$file\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6590 | close (F);\n\n $tot_size=&get_tot_size ($dir,$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6591 | name_file,$size_file);\n $tot_size+=$s;\n &m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6592 | yecho ($tot_size, \">$size_file\");\n \n }\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6593 | nsub myecho\n {\n my ($string, $file)=@_;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6594 | open (ECHO, $file) || die;\n print ECHO \"$str\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6595 | ing\";\n close (ECHO);\n }\n \n \n \nsub v\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6596 | tmpnam\n {\n my $tmp_file_name;\n $tmp_name\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6597 | _counter++;\n $tmp_file_name=\"tmp_file_for_cle\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6598 | an_cache_pdb$$.$tmp_name_counter\";\n $tmp_file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6599 | _list[$ntmp_file++]=$tmp_file_name;\n if ( -e $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6600 | tmp_file_name) {return &vtmpnam ();}\n else {re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6601 | turn $tmp_file_name;}\n }\n","\nmy $address=\"htt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:6601:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6601 | turn $tmp_file_name;}\n }\n","\nmy $address=\"htt\ | ^~~~~~~~~~~~~~~~~~~~~ 6602 | p://www.tcoffee.org/Data/Datasets/NatureProtocolsD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6603 | ataset.tar.gz\";\nmy $out=\"NatureProtocolsDataset\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6604 | .tar.gz\";\n&url2file ($address,$out);\n\nif ( -e \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6605 | $out)\n {\n \n system (\"gunzip NatureProto\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6606 | colsDataset.tar.gz\");\n system (\"tar -xvf Nat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6607 | ureProtocolsDataset.tar\");\n system (\"rm -rf N\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6608 | atureProtocolsDataset.tar\"); \n print \"Your \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6609 | Data Set is in the Folder 'NatureProtocolsDataset'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6610 | \\n\";\n }\nelse \n {\n print \"Could not Dow\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6611 | nload Dataset --- Web site may be down -- Try agai\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6612 | n later\\n\";\n }\n\n\n\n\nsub url2file\n{\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6613 | y ($address, $out, $wget_arg, $curl_arg)=(@_);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6614 | my ($pg, $flag, $r, $arg, $count);\n \n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6615 | (!$CONFIGURATION){&check_configuration (\"wget\",\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6616 | \"INTERNET\", \"gzip\");$CONFIGURATION=1;}\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6617 | n if (&pg_is_installed (\"wget\")) {$pg=\"wge\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6618 | t\"; $flag=\"-O\";$arg=$wget_arg;}\n elsif (&pg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6619 | _is_installed (\"curl\")){$pg=\"curl\"; $flag=\"-o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6620 | \";$arg=$curl_arg;}\n return system (\"$pg $add\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6621 | ress $flag $out>/dev/null 2>/dev/null\");\n\n}\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6622 | sub pg_is_installed\n {\n my @ml=@_;\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6623 | r, $p, $m;\n my $supported=0;\n \n my $p=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6624 | shift (@ml);\n if ($p=~/::/)\n {\n if (sys\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6625 | tem (\"perl -M$p -e 1\")==$EXIT_SUCCESS){return 1;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6626 | }\n else {return 0;}\n }\n else\n {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6627 | $r=`which $p 2>/dev/null`;\n if ($r eq \"\"){retu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6628 | rn 0;}\n else {return 1;}\n }\n }\nsub check\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6629 | _configuration \n {\n my @l=@_;\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6630 | $v;\n foreach my $p (@l)\n {\n \n if ( \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6631 | $p eq \"EMAIL\")\n { \n if ( !($EMAIL=~/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6632 | @/))\n {\n exit (EXIT_FAILURE);\n }\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6633 | elsif( $p eq \"INTERNET\")\n {\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6634 | !&check_internet_connection())\n {\n exit (EX\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6635 | IT_FAILURE);\n }\n }\n elsif( $p eq \"wget\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6636 | ")\n {\n if (!&pg_is_installed (\"wget\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6637 | ) && !&pg_is_installed (\"curl\"))\n {\n exit \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6638 | (EXIT_FAILURE);\n }\n }\n elsif( !(&pg_is_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6639 | nstalled ($p)))\n {\n exit (EXIT_FAILURE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6640 | );\n }\n }\n return 1;\n }\nsub check_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6641 | internet_connection\n {\n my $internet;\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6642 | y $tmp;\n &check_configuration ( \"wget\"); \n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6643 | \n $tmp=&vtmpnam ();\n \n if (&pg_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6644 | is_installed (\"wget\")){`wget www.google.com -\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6645 | O$tmp >/dev/null 2>/dev/null`;}\n elsif (&pg_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6646 | s_installed (\"curl\")){`curl www.google.com -o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6647 | $tmp >/dev/null 2>/dev/null`;}\n \n if ( !-e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6648 | $tmp || -s $tmp < 10){$internet=0;}\n else {$i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6649 | nternet=1;}\n if (-e $tmp){unlink $tmp;}\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6650 | return $internet;\n }\n\nsub vtmpnam\n {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6651 | my $r=rand(100000);\n my $f=\"file.$r.$$\";\n whil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6652 | e (-e $f)\n {\n $f=vtmpnam();\n }\n push (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6653 | @TMPFILE_LIST, $f);\n return $f;\n }\n\n","\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:6653:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6653 | @TMPFILE_LIST, $f);\n return $f;\n }\n\n","\n\ | ^~~~ 6654 | $t_coffee=\"t_coffee\";\n\nforeach $value ( @ARGV)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6655 | \n {\n $seq_file=$seq_file.\" \".$value;\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6656 | n\n$name=$ARGV[0];\n$name=~s/\\.[^\\.]*$//;\n$lib_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6657 | name=\"$name.mocca_lib\";\n$type=`t_coffee $seq_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6658 | le -get_type -quiet`;\nchop ($type);\n\nif ( $type\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6659 | eq \"PROTEIN\"){$lib_mode=\"lalign_rs_s_pair -lal\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6660 | ign_n_top 20\";}\nelsif ( $type eq\"DNA\"){$lib_mo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6661 | de=\"lalign_rs_s_dna_pair -lalign_n_top 40\";}\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6662 | if ( !(-e $lib_name))\n {\n \n $command=\"$t_c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6663 | offee -mocca -seq_weight=no -cosmetic_penalty=0 -m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6664 | occa_interactive -in $lib_mode -out_lib $lib_name \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6665 | -infile $seq_file\";\n \n }\nelsif ( (-e $lib_na\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6666 | me))\n {\n $command=\"$t_coffee -mocca -seq_weig\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6667 | ht=no -cosmetic_penalty=0 -mocca_interactive -in $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6668 | lib_name -infile $seq_file\";\n \n }\n\nsystem (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6669 | $command);\n\nexit;\n\n","my $WSDL = 'http://www.e\ | ~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:6669:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6669 | $command);\n\nexit;\n\n","my $WSDL = 'http://www.e\ | ^~~~~~~~~~~~~~~~~~~~~~~~~~ 6670 | bi.ac.uk/Tools/webservices/wsdl/WSDaliLite.wsdl';\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6671 | n\nuse SOAP::Lite;\nuse Data::Dumper;\nuse Getopt:\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6672 | :Long qw(:config no_ignore_case bundling);\nuse Fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6673 | le::Basename;\n\nmy $checkInterval = 5;\n\nmy %par\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6674 | ams=(\n 'async' => '1', # Use async mode and s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6675 | imulate sync mode in client\n );\nGetOptions(\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6676 | n 'pdb1=s' => \\$params{'sequence1'},\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6677 | 'chainid1=s' => \\$params{'chainid1'},\n 'pdb2=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6678 | s' => \\$params{'sequence2'},\n 'chainid2=s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6679 | ' => \\$params{'chainid2'},\n \"help|h\" => \\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6680 | $help, # Usage info\n \"async|a\" => \\$async,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6681 | # Asynchronous submission\n \"polljob\" => \\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6682 | $polljob, # Get results\n \"status\" => \\$sta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6683 | tus, # Get status\n \"jobid|j=s\" => \\$jobid,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6684 | # JobId\n \"email|S=s\" => \\$params{email}, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6685 | # E-mail address\n \"trace\" => \\$trace, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6686 | # SOAP messages\n \"sequence=s\" => \\$sequence\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6687 | , # Input PDB\n );\n\nmy $scriptName = basename\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6688 | ($0, ());\nif($help) {\n &usage();\n exit(0)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6689 | ;\n}\n\nif($trace) {\n print \"Tracing active\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6690 | n\";\n SOAP::Lite->import(+trace => 'debug');\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6691 | }\n\nmy $soap = SOAP::Lite\n ->service($WSDL)\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6692 | ->on_fault(sub {\n my $soap = shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6693 | my $res = shift;\n # Throw an except\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6694 | ion for all faults\n if(ref($res) eq '') {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6695 | n die($res);\n } else {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6696 | die($res->faultstring);\n }\n r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6697 | eturn new SOAP::SOM;\n }\n );\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6698 | if( !($polljob || $status) &&\n !( defined($par\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6699 | ams{'sequence1'}) && defined($params{'sequence2'})\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6700 | )\n ) {\n print STDERR 'Error: bad option c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6701 | ombination', \"\\n\";\n &usage();\n exit(1);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6702 | \n}\nelsif($polljob && defined($jobid)) {\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6703 | nt \"Getting results for job $jobid\\n\";\n get\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6704 | Results($jobid);\n}\nelsif($status && defined($job\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6705 | id)) {\n print STDERR \"Getting status for job \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6706 | $jobid\\n\";\n my $result = $soap->checkStatus(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6707 | $jobid);\n print STDOUT \"$result\", \"\\n\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6708 | if($result eq 'DONE') {\n print STDERR \"To ge\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6709 | t results: $scriptName --polljob --jobid $jobid\\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6710 | \";\n }\n}\nelse {\n if(-f $params{'sequence\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6711 | 1'}) {\n $params{'sequence1'} = read_file($params{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6712 | 'sequence1'});\n }\n if(-f $params{'sequence\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6713 | 2'}) {\n $params{'sequence2'} = read_file($params{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6714 | 'sequence2'});\n }\n\n my $jobid;\n my $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6715 | aramsData = SOAP::Data->name('params')->type(map=>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6716 | \\%params);\n # For SOAP::Lite 0.60 and earlier\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6717 | parameters are passed directly\n if($SOAP::Lit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6718 | e::VERSION eq '0.60' || $SOAP::Lite::VERSION =~ /0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6719 | \\.[1-5]/) {\n $jobid = $soap->runDaliLite(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6720 | $paramsData);\n }\n # For SOAP::Lite 0.69 an\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6721 | d later parameter handling is different, so pass\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6722 | # undef's for templated params, and then pass \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6723 | the formatted args.\n else {\n $jobid = \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6724 | $soap->runDaliLite(undef,\n $paramsData);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6725 | n }\n\n if (defined($async)) {\n print STDOU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6726 | T $jobid, \"\\n\";\n print STDERR \"To chec\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6727 | k status: $scriptName --status --jobid $jobid\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6728 | ;\n } else { # Synchronous mode\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6729 | STDERR \"JobId: $jobid\\n\";\n sleep 1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6730 | getResults($jobid);\n }\n}\n\nsub clientP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6731 | oll($) {\n my $jobid = shift;\n my $result =\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6732 | 'PENDING';\n # Check status and wait if not fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6733 | nished\n #print STDERR \"Checking status: $jobi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6734 | d\\n\";\n while($result eq 'RUNNING' || $result\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6735 | eq 'PENDING') {\n $result = $soap->checkSt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6736 | atus($jobid);\n print STDERR \"$result\\n\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6737 | ;\n if($result eq 'RUNNING' || $result eq '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6738 | PENDING') {\n # Wait before polling aga\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6739 | in.\n sleep $checkInterval;\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6740 | n }\n}\n\nsub getResults($) {\n $jobid = shi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6741 | ft;\n # Check status, and wait if not finished\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6742 | n clientPoll($jobid);\n # Use JobId if outpu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6743 | t file name is not defined\n unless(defined($ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6744 | tfile)) {\n $outfile=$jobid;\n }\n # \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6745 | Get list of data types\n my $resultTypes = $soa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6746 | p->getResults($jobid);\n # Get the data and wri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6747 | te it to a file\n if(defined($outformat)) { # S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6748 | pecified data type\n my $selResultType;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6749 | foreach my $resultType (@$resultTypes) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6750 | if($resultType->{type} eq $outformat) {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6751 | n $selResultType = $resultType;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6752 | }\n }\n $res=$soap->poll($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6753 | jobid, $selResultType->{type});\n write_fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6754 | e($outfile.'.'.$selResultType->{ext}, $res);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6755 | } else { # Data types available\n # Write a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6756 | file for each output type\n for my $result\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6757 | Type (@$resultTypes){\n #print \"Gettin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6758 | g $resultType->{type}\\n\";\n $res=$soa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6759 | p->poll($jobid, $resultType->{type});\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6760 | write_file($outfile.'.'.$resultType->{ext}, $res)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6761 | ;\n }\n }\n}\n\nsub read_file($) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6762 | my $filename = shift;\n open(FILE, $filename);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6763 | n my $content;\n my $buffer;\n while(sysr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6764 | ead(FILE, $buffer, 1024)) {\n $content.= $buffer;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6765 | n }\n close(FILE);\n return $content;\n}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6766 | n\nsub write_file($$) {\n my ($tmp,$entity) = @\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6767 | _;\n print STDERR \"Creating result file: \".$t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6768 | mp.\"\\n\";\n unless(open (FILE, \">$tmp\")) {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6769 | n return 0;\n }\n syswrite(FILE, $entity);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6770 | close (FILE);\n return 1;\n}\n\nsub usage {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6771 | \n print STDERR < [options] pdbFile [--outfile st\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6792 | ring]\n Returns: saves the results to disk\n\nAsy\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6793 | nchronous job:\n\n Use this if you want to retrie\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6794 | ve the results at a later time. The results \n ar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6795 | e stored for up to 24 hours. \n The asynchronous \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6796 | submission mode is recommended when users are subm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6797 | itting \n batch jobs or large database searches \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6798 | n Usage: $scriptName --email --asy\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6799 | nc [options] pdbFile\n Returns: jobid\n\n Use th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6800 | e jobid to query for the status of the job. \n Us\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6801 | age: $scriptName --status --jobid \n Retur\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6802 | ns: string indicating the status of the job:\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6803 | DONE - job has finished\n RUNNING - job is runn\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6804 | ing\n NOT_FOUND - job cannot be found\n ERRO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6805 | R - the jobs has encountered an error\n\n When do\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6806 | ne, use the jobid to retrieve the status of the jo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6807 | b. \n Usage: $scriptName --polljob --jobid [--outfile string]\n\n[Help]\n\n For more detai\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6809 | led help information refer to\n http://www.ebi.ac\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6810 | .uk/DaliLite/\nEOF\n;\n}\n","my $WSDL = 'http://ww\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:6810:29: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 6810 | .uk/DaliLite/\nEOF\n;\n}\n","my $WSDL = 'http://ww\ | ^~~~~~~~~~~~~~~~~~~~~~~ 6811 | w.ebi.ac.uk/Tools/webservices/wsdl/WSWUBlast.wsdl'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6812 | ;\n\nuse strict;\nuse SOAP::Lite;\nuse Getopt::Lon\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6813 | g qw(:config no_ignore_case bundling);\nuse File::\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6814 | Basename;\n\nmy $checkInterval = 15;\n\nmy $numOpt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6815 | s = scalar(@ARGV);\nmy ($outfile, $outformat, $hel\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6816 | p, $async, $polljob, $status, $ids, $jobid, $trace\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6817 | , $sequence);\nmy %params= ( # Defaults\n 'a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6818 | sync' => 1, # Force into async mode\n 'exp' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6819 | => 10.0, # E-value threshold\n 'numal' => 50\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6820 | , # Maximum number of alignments\n 'scores' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6821 | => 100, # Maximum number of scores\n );\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6822 | \nGetOptions( # Map the options into variables\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6823 | \"program|p=s\" => \\$params{program}, # BLA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6824 | ST program\n \"database|D=s\" => \\$params{d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6825 | atabase}, # Search database\n \"matrix|m=s\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6826 | => \\$params{matrix}, # Scoring matrix\n \"e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6827 | xp|E=f\" => \\$params{exp}, # E-value thre\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6828 | shold\n \"echofilter|e\" => \\$params{echofi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6829 | lter}, # Display filtered sequence\n \"filter|f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6830 | =s\" => \\$params{filter}, # Low complexity f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6831 | ilter name\n \"alignments|b=i\" => \\$params{n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6832 | umal}, # Number of alignments\n \"scores|s=i\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6833 | => \\$params{scores}, # Number of scores\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6834 | \"sensitivity|S=s\" => \\$params{sensitivity}, # \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6835 | Search sensitivity\n \"sort|t=s\" => \\$p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6836 | arams{sort}, # Sort hits by...\n \"stats|T=s\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6837 | => \\$params{stats}, # Scoring statistic to \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6838 | use\n \"strand|d=s\" => \\$params{strand},\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6839 | # Strand to use in DNA vs. DNA search\n \"topc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6840 | ombon|c=i\" => \\$params{topcombon}, # Consisten\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6841 | t sets of HSPs\n \"outfile=s\" => \\$outf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6842 | ile, # Output file\n \"outformat|o=s\" => \\$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6843 | outformat, # Output format\n \"help|h\" =\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6844 | > \\$help, # Usage info\n \"async|a\" => \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6845 | \\$async, # Asynchronous mode\n \"polljob\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6846 | => \\$polljob, # Get results\n \"status\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6847 | => \\$status, # Get job status\n \"ids\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6848 | => \\$ids, # Get ids from result\n \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6849 | jobid|j=s\" => \\$jobid, # JobId\n \"emai\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6850 | l=s\" => \\$params{email}, # E-mail addres\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6851 | s\n \"trace\" => \\$trace, # SOAP tra\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6852 | ce\n \"sequence=s\" => \\$sequence, # Quer\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6853 | y sequence\n );\n\nmy $scriptName = basename($0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6854 | , ());\nif($help || $numOpts == 0) {\n &usage()\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6855 | ;\n exit(0);\n}\n\nif($trace){\n print STDER\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6856 | R \"Tracing active\\n\";\n SOAP::Lite->import(+\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6857 | trace => 'debug');\n}\n\nmy $soap = SOAP::Lite\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6858 | ->service($WSDL)\n ->proxy('http://localhost/\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6859 | ',\n #proxy => ['http' => 'http://your.proxy.se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6860 | rver/'], # HTTP proxy\n timeout => 600, # HTTP \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6861 | connection timeout\n )\n ->on_fault(sub { # \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6862 | SOAP fault handler\n my $soap = shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6863 | my $res = shift;\n # Throw an exceptio\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6864 | n for all faults\n if(ref($res) eq '') {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6865 | die($res);\n } else {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6866 | die($res->faultstring);\n }\n ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6867 | urn new SOAP::SOM;\n }\n );\n\nif\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6868 | ( !($polljob || $status || $ids) &&\n !( define\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6869 | d($ARGV[0]) || defined($sequence) )\n ) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6870 | print STDERR 'Error: bad option combination', \"\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6871 | n\";\n &usage();\n exit(1);\n}\nelsif($pollj\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6872 | ob && defined($jobid)) {\n print \"Getting resu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6873 | lts for job $jobid\\n\";\n getResults($jobid);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6874 | n}\nelsif($status && defined($jobid)) {\n print\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6875 | STDERR \"Getting status for job $jobid\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6876 | my $result = $soap->checkStatus($jobid);\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6877 | nt STDOUT \"$result\\n\";\n if($result eq 'DONE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6878 | ') {\n print STDERR \"To get results: $scriptName \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6879 | --polljob --jobid $jobid\\n\";\n }\n} \nelsif(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6880 | $ids && defined($jobid)) {\n print STDERR \"Get\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6881 | ting ids from job $jobid\\n\";\n getIds($jobid)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6882 | ;\n}\nelse {\n # Prepare input data\n my $co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6883 | ntent;\n my (@contents) = ();\n if(-f $ARGV[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6884 | 0] || $ARGV[0] eq '-') { \n $content={type=>'seque\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6885 | nce',content=>read_file($ARGV[0])}; \n }\n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6886 | f($sequence) { \n if(-f $sequence || $sequence eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6887 | '-') { \n $content={type=>'sequence',content=>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6888 | read_file($ARGV[0])}; \n } else {\n $content={\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6889 | type=>'sequence',content=>$sequence};\n }\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6890 | push @contents, $content;\n\n # Submit the \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6891 | job\n my $paramsData = SOAP::Data->name('params\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6892 | ')->type(map=>\\%params);\n my $contentData = S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6893 | OAP::Data->name('content')->value(\\@contents);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6894 | # For SOAP::Lite 0.60 and earlier parameters ar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6895 | e passed directly\n if($SOAP::Lite::VERSION eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6896 | '0.60' || $SOAP::Lite::VERSION =~ /0\\.[1-5]/) {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6897 | $jobid = $soap->runWUBlast($paramsData, $c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6898 | ontentData);\n }\n # For SOAP::Lite 0.69 and\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6899 | later parameter handling is different, so pass\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6900 | # undef's for templated params, and then pass t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6901 | he formatted args.\n else {\n $jobid = $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6902 | soap->runWUBlast(undef, undef,\n $paramsData\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6903 | , $contentData);\n }\n\n # Asynchronous mode\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6904 | : output jobid and exit.\n if (defined($async))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6905 | {\n print STDOUT $jobid, \"\\n\";\n print \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6906 | STDERR \"To check status: $scriptName --status --j\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6907 | obid $jobid\\n\";\n }\n # Synchronous mode: \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6908 | try to get results\n else {\n print STDE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6909 | RR \"JobId: $jobid\\n\";\n sleep 1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6910 | getResults($jobid);\n }\n}\n\nsub getIds($) {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6911 | \n my $jobid = shift;\n my $results = $soap-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6912 | >getIds($jobid);\n for my $result (@$results){\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6913 | n print \"$result\\n\";\n }\n}\n\nsub clientPol\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6914 | l($) {\n my $jobid = shift;\n my $result = '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6915 | PENDING';\n # Check status and wait if not fini\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6916 | shed\n while($result eq 'RUNNING' || $result eq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6917 | 'PENDING') {\n $result = $soap->checkStatu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6918 | s($jobid);\n print STDERR \"$result\\n\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6919 | if($result eq 'RUNNING' || $result eq 'PEN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6920 | DING') {\n # Wait before polling again.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6921 | \n sleep $checkInterval;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6922 | }\n}\n\nsub getResults($) {\n my $jobid = shi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6923 | ft;\n my $res;\n # Check status, and wait if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6924 | not finished\n clientPoll($jobid);\n # Use \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6925 | JobId if output file name is not defined\n unle\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6926 | ss(defined($outfile)) {\n $outfile=$jobid;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6927 | n }\n # Get list of data types\n my $resu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6928 | ltTypes = $soap->getResults($jobid);\n # Get th\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6929 | e data and write it to a file\n if(defined($out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6930 | format)) { # Specified data type\n if($outformat e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6931 | q 'xml') {$outformat = 'toolxml';}\n if($outformat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6932 | eq 'txt') {$outformat = 'tooloutput';}\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6933 | y $selResultType;\n foreach my $resultType \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6934 | (@$resultTypes) {\n if($resultType->{ty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6935 | pe} eq $outformat) {\n $selResultTy\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6936 | pe = $resultType;\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6937 | $res=$soap->poll($jobid, $selResultType->{type}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6938 | );\n if($outfile eq '-') {\n write_file($outf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6939 | ile, $res);\n } else {\n write_file($outfile.'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6940 | .'.$selResultType->{ext}, $res);\n }\n } else {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6941 | # Data types available\n # Write a file fo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6942 | r each output type\n for my $resultType (@$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6943 | resultTypes){\n #print STDERR \"Getting\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6944 | $resultType->{type}\\n\";\n $res=$soap\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6945 | ->poll($jobid, $resultType->{type});\n if($out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6946 | file eq '-') {\n write_file($outfile, $res);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6947 | } else {\n write_file($outfile.'.'.$resultType-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6948 | >{ext}, $res);\n }\n }\n }\n}\n\nsub\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6949 | read_file($) {\n my $filename = shift;\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6950 | ($content, $buffer);\n if($filename eq '-') {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6951 | n while(sysread(STDIN, $buffer, 1024)) {\n $co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6952 | ntent .= $buffer;\n }\n }\n else { # File\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6953 | open(FILE, $filename) or die \"Error: unable to op\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6954 | en input file\";\n while(sysread(FILE, $buffer, 10\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6955 | 24)) {\n $content .= $buffer;\n }\n close(FILE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6956 | );\n }\n return $content;\n}\n\nsub write_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6957 | le($$) {\n my ($filename, $data) = @_;\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6958 | nt STDERR 'Creating result file: ' . $filename . \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6959 | "\\n\";\n if($filename eq '-') {\n print STDOUT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6960 | $data;\n }\n else {\n open(FILE, \">$filena\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6961 | me\") or die \"Error: unable to open output file\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6962 | ;\n syswrite(FILE, $data);\n close(FILE);\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6963 | }\n\nsub usage {\n print STDERR < [options...] seqFile\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7002 | Returns: saves the results to disk\n\nAsynchrono\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7003 | us job:\n\n Use this if you want to retrieve the \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7004 | results at a later time. The results \n are store\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7005 | d for up to 24 hours. \n The asynchronous submiss\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7006 | ion mode is recommended when users are submitting \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7007 | \n batch jobs or large database searches \n Usag\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7008 | e: $scriptName --async --email [opt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7009 | ions...] seqFile\n Returns : jobid\n\n Use the j\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7010 | obid to query for the status of the job. \n Usage\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7011 | : $scriptName --status --jobid \n Returns \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7012 | : string indicating the status of the job:\n DO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7013 | NE - job has finished\n RUNNING - job is runnin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7014 | g\n NOT_FOUND - job cannot be found\n ERROR \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7015 | - the jobs has encountered an error\n\n When done\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7016 | , use the jobid to retrieve the status of the job.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7017 | \n Usage: $scriptName --polljob --jobid \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7018 | [--outfile string]\n Returns: saves the results t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7019 | o disk\n\n[Help]\n\nFor more detailed help informa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7020 | tion refer to \nhttp://www.ebi.ac.uk/blast2/WU-Bla\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7021 | st2_Help_frame.html\n \nEOF\n;\n}\n","\nmy $WSDL =\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:7021:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7021 | st2_Help_frame.html\n \nEOF\n;\n}\n","\nmy $WSDL =\ | ^~~~~~~~~~~~~~ 7022 | 'http://www.ebi.ac.uk/Tools/webservices/wsdl/WSBl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7023 | astpgp.wsdl';\n\nuse SOAP::Lite;\nuse Getopt::Long\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7024 | qw(:config no_ignore_case bundling);\nuse File::B\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7025 | asename;\n\nmy $checkInterval = 15;\n\nmy %params=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7026 | (\n 'async' => '1', # Use async mode and simul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7027 | ate sync mode in client\n );\nGetOptions(\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7028 | \"mode=s\" => \\$params{mode}, # Search\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7029 | mode: PSI-Blast or PHI-Blast\n \"database|d=s\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7030 | " => \\$params{database}, # Database to search\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7031 | \n \"matrix|M=s\" => \\$params{matrix},# \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7032 | Scoring maxtrix\n \"exp|e=f\" => \\$pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7033 | rams{exp}, # E-value\n \"expmulti|h=f\" => \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7034 | \\$params{expmulti}, # E-value\n \"filter|F=s\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7035 | => \\$params{filter}, # Low complexity filt\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7036 | er\n \"dropoff|X=i\" => \\$params{dropoff}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7037 | , # Dropoff score\n \"finaldropoff|Z=i\" => \\$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7038 | params{finaldropoff}, # Final dropoff score\n \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7039 | "scores|v=i\" => \\$params{scores}, # Max nu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7040 | mber of scores\n \"align=i\" => \\$par\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7041 | ams{align}, # Alignment view\n \"startregion|S=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7042 | i\" => \\$params{startregion}, # Start of region \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7043 | in query\n \"endregion|H=i\" => \\$params{en\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7044 | dregion}, # End of region in query\n \"maxpasse\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7045 | s|j=i\" => \\$params{maxpasses}, # Number of PS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7046 | I iterations\n \"opengap|G=i\" => \\$param\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7047 | s{opengap}, # Gap open penalty\n \"extendgap|E=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7048 | i\" => \\$params{extendgap}, # Gap extension pe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7049 | nalty\n \"pattern=s\" => \\$params{patte\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7050 | rn}, # PHI-BLAST pattern\n \"usagemode|p=s\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7051 | => \\$params{usagemode}, # PHI-BLAST program\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7052 | \"appxml=s\" => \\$params{appxml}, # Appl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7053 | ication XML\n \"sequence=s\" => \\$sequen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7054 | ce, # Query sequence\n \"help\" => \\$he\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7055 | lp, # Usage info\n \"polljob\" => \\$pol\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7056 | ljob, # Get results\n \"status\" => \\$s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7057 | tatus, # Get status\n \"ids\" => \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7058 | \$ids, # Get ids from result\n \"jobid=s\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7059 | => \\$jobid, # JobId\n \"outfile=s\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7060 | => \\$outfile, # Output filename\n \"outforma\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7061 | t|o=s\" => \\$outformat, # Output file format\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7062 | \"async|a\" => \\$async, # Async submis\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7063 | sion\n \"email=s\" => \\$params{email}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7064 | , # User e-mail address\n \"trace\" \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7065 | => \\$trace, # Show SOAP messages\n );\n\nmy $s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7066 | criptName = basename($0, ());\nif($help) {\n &u\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7067 | sage();\n exit(0);\n}\n\nif ($trace){\n prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7068 | t \"Tracing active\\n\";\n SOAP::Lite->import(+\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7069 | trace => 'debug');\n}\n\nmy $soap = SOAP::Lite\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7070 | ->service($WSDL)\n ->on_fault(sub {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7071 | my $soap = shift;\n my $res = shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7072 | # Throw an exception for all faults\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7073 | (ref($res) eq '') {\n die($res);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7074 | } else {\n die($res->faultstring);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7075 | }\n return new SOAP::SOM;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7076 | );\n\nif( !($polljob || $status || $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7077 | ids) &&\n !( (defined($ARGV[0]) && -f $ARGV[0])\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7078 | || defined($sequence) )\n ) {\n print STDER\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7079 | R 'Error: bad option combination', \"\\n\";\n &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7080 | usage();\n exit(1);\n}\nelsif($polljob && defin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7081 | ed($jobid)) {\n print \"Getting results for job\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7082 | $jobid\\n\";\n getResults($jobid);\n}\nelsif($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7083 | status && defined($jobid)) {\n print STDERR \"G\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7084 | etting status for job $jobid\\n\";\n my $result\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7085 | = $soap->checkStatus($jobid);\n print STDOUT $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7086 | result, \"\\n\";\n if($result eq 'DONE') {\n pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7087 | int STDERR \"To get results: $scriptName --polljob\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7088 | --jobid $jobid\\n\";\n }\n} \nelsif($ids && d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7089 | efined($jobid)) {\n print STDERR \"Getting ids \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7090 | from job $jobid\\n\";\n getIds($jobid);\n}\nels\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7091 | e {\n if(-f $ARGV[0]) { \n $content={type=>'seq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7092 | uence', content=>read_file($ARGV[0])}; \n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7093 | if($sequence) { \n if(-f $sequence) {\n $con\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7094 | tent={type=>'sequence', content=>read_file($sequen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7095 | ce)}; \n } else {\n $content={type=>'sequence'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7096 | , content=>$sequence};\n }\n }\n push @conte\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7097 | nt, $content;\n\n my $jobid;\n my $paramsDat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7098 | a = SOAP::Data->name('params')->type(map=>\\%param\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7099 | s);\n my $contentData = SOAP::Data->name('conte\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7100 | nt')->value(\\@content);\n # For SOAP::Lite 0.6\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7101 | 0 and earlier parameters are passed directly\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7102 | if($SOAP::Lite::VERSION eq '0.60' || $SOAP::Lite::\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7103 | VERSION =~ /0\\.[1-5]/) {\n $jobid = $soap-\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7104 | >runBlastpgp($paramsData, $contentData);\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7105 | # For SOAP::Lite 0.69 and later parameter handl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7106 | ing is different, so pass\n # undef's for templ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7107 | ated params, and then pass the formatted args.\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7108 | else {\n $jobid = $soap->runBlastpgp(unde\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7109 | f, undef,\n $paramsData, $contentData);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7110 | }\n\n if (defined($async)) {\n print STDOUT $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7111 | jobid, \"\\n\";\n print STDERR \"To check s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7112 | tatus: $scriptName --status --jobid $jobid\\n\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7113 | } else { # Synchronous mode\n print STD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7114 | ERR \"JobId: $jobid\\n\";\n sleep 1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7115 | getResults($jobid);\n }\n}\n\nsub getIds($) \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7116 | {\n $jobid = shift;\n my $results = $soap->g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7117 | etIds($jobid);\n for $result (@$results){\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7118 | nt \"$result\\n\";\n }\n}\n\nsub clientPoll($) \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7119 | {\n my $jobid = shift;\n my $result = 'PENDI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7120 | NG';\n # Check status and wait if not finished\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7121 | n #print STDERR \"Checking status: $jobid\\n\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7122 | \n while($result eq 'RUNNING' || $result eq 'PE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7123 | NDING') {\n $result = $soap->checkStatus($j\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7124 | obid);\n print STDERR \"$result\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7125 | if($result eq 'RUNNING' || $result eq 'PENDING\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7126 | ') {\n # Wait before polling again.\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7127 | sleep $checkInterval;\n }\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7128 | n}\n\nsub getResults($) {\n $jobid = shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7129 | # Check status, and wait if not finished\n cl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7130 | ientPoll($jobid);\n # Use JobId if output file \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7131 | name is not defined\n unless(defined($outfile))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7132 | {\n $outfile=$jobid;\n }\n # Get lis\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7133 | t of data types\n my $resultTypes = $soap->getR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7134 | esults($jobid);\n # Get the data and write it t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7135 | o a file\n if(defined($outformat)) { # Specifie\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7136 | d data type\n my $selResultType;\n f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7137 | oreach my $resultType (@$resultTypes) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7138 | if($resultType->{type} eq $outformat) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7139 | $selResultType = $resultType;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7140 | }\n }\n $res=$soap->poll($jobid, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7141 | $selResultType->{type});\n write_file($outf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7142 | ile.'.'.$selResultType->{ext}, $res);\n } else \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7143 | { # Data types available\n # Write a file f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7144 | or each output type\n for my $resultType (@\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7145 | $resultTypes){\n #print \"Getting $resu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7146 | ltType->{type}\\n\";\n $res=$soap->poll\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7147 | ($jobid, $resultType->{type});\n write_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7148 | file($outfile.'.'.$resultType->{ext}, $res);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7149 | }\n }\n}\n\nsub read_file($) {\n my $fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7150 | ename = shift;\n open(FILE, $filename);\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7151 | $content;\n my $buffer;\n while(sysread(FIL\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7152 | E, $buffer, 1024)) {\n $content.= $buffer;\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7153 | n close(FILE); \n return $content;\n}\n\nsu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7154 | b write_file($$) {\n my ($tmp,$entity) = @_;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7155 | print STDERR \"Creating result file: \".$tmp.\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7156 | \\n\";\n unless(open (FILE, \">$tmp\")) {\n ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7157 | urn 0;\n }\n syswrite(FILE, $entity);\n c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7158 | lose (FILE);\n return 1;\n}\n\nsub usage {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7159 | print STDERR < [options...] seqfile\n Returns: saves t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7210 | he results to disk\n\nAsynchronous job:\n\n Use t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7211 | his if you want to retrieve the results at a later\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7212 | time. The results\n are stored for up to 24 hour\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7213 | s.\n The asynchronous submission mode is recommen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7214 | ded when users are submitting\n batch jobs or lar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7215 | ge database searches\n Usage: blastpgp.pl --email\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7216 | --async [options...] seqFile\n Retu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7217 | rns: jobid\n\n Use the jobid to query for the sta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7218 | tus of the job.\n Usage: blastpgp.pl --status --j\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7219 | obid \n Returns: string indicating the sta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7220 | tus of the job\n DONE - job has finished\n R\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7221 | UNNING - job is running\n NOT_FOUND - job canno\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7222 | t be found\n ERROR - the jobs has encountered a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7223 | n error\n\n When done, use the jobid to retrieve \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7224 | the results of the job.\n Usage: blastpgp.pl --po\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7225 | lljob --jobid [--outfile ]\n Re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7226 | turns: saves the results to disk\nEOF\n;\n}\n","\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./perl_header_lib.h:7226:48: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 7226 | turns: saves the results to disk\nEOF\n;\n}\n","\n\ | ^~~~ 7227 | =head1 NAME\n\nncbiblast.pl\n\n=head1 DESCRIPTION\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7228 | n\nNCBI Blast (REST) web service Perl client using\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7229 | L.\n\nTested with:\n\n=over\n\n=item *\nL 6.35, L 2.25 and Perl 5.22.0 (MacO\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7231 | S 10.13.6)\n\n=back\n\nFor further information see\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7232 | :\n\n=over\n\n=item *\nL\n\n=back\n\n=head1 LICENSE\n\nCop\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7234 | yright 2012-2018 EMBL - European Bioinformatics In\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7235 | stitute\n\nLicensed under the Apache License, Vers\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7236 | ion 2.0 (the \"License\");\nyou may not use this f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7237 | ile except in compliance with the License.\nYou ma\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7238 | y obtain a copy of the License at\n\n http://ww\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7239 | w.apache.org/licenses/LICENSE-2.0\n\nUnless requir\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7240 | ed by applicable law or agreed to in writing, soft\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7241 | ware\ndistributed under the License is distributed\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7242 | on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CON\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7243 | DITIONS OF ANY KIND, either express or implied.\nS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7244 | ee the License for the specific language governing\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7245 | permissions and\nlimitations under the License.\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7246 | \nPerl Client Automatically generated with:\nhttps\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7247 | ://github.com/ebi-wp/webservice-clients-generator\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7248 | n\n=cut\n\nuse strict;\nuse warnings;\n\nuse Engli\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7249 | sh;\nuse LWP;\nuse XML::Simple;\nuse Getopt::Long \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7250 | qw(:config no_ignore_case bundling);\nuse File::Ba\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7251 | sename;\nuse Data::Dumper;\nuse Time::HiRes qw(usl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7252 | eep);\n\nmy $baseUrl = 'https://www.ebi.ac.uk/Tool\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7253 | s/services/rest/ncbiblast';\nmy $version = '2019-0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7254 | 7-03 16:26';\n\nmy $checkInterval = 3;\n\nmy $maxE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7255 | rrorStatusCount = 3;\n\nmy $outputLevel = 1;\n\nmy\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7256 | $numOpts = scalar(@ARGV);\nmy %params = (\n 'd\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7257 | ebugLevel' => 0,\n 'maxJobs' => 1\n);\n\nGet\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7258 | Options(\n # Tool specific options\n 'progra\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7259 | m=s' => \\$params{'program'}, # The B\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7260 | LAST program to be used for the Sequence Similarit\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7261 | y Search.\n 'task=s' => \\$params{'tas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7262 | k'}, # Task option (only selectable for \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7263 | blastn)\n 'matrix=s' => \\$params{'matri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7264 | x'}, # (Protein searches) The substitution\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7265 | matrix used for scoring alignments when searching\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7266 | the database.\n 'alignments=i' => \\$params\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7267 | {'alignments'}, # Maximum number of match alig\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7268 | nments reported in the result output.\n 'scores\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7269 | =i' => \\$params{'scores'}, # Maxim\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7270 | um number of match score summaries reported in the\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7271 | result output.\n 'exp=s' => \\$param\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7272 | s{'exp'}, # Limits the number of scores\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7273 | and alignments reported based on the expectation \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7274 | value. This is the maximum number of times the mat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7275 | ch is expected to occur by chance.\n 'dropoff=i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7276 | ' => \\$params{'dropoff'}, # The amou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7277 | nt a score can drop before gapped extension of wor\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7278 | d hits is halted\n 'match_scores=s' => \\$para\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7279 | ms{'match_scores'}, # (Nucleotide searches) The \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7280 | match score is the bonus to the alignment score wh\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7281 | en matching the same base. The mismatch is the pen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7282 | alty when failing to match.\n 'gapopen=i' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7283 | => \\$params{'gapopen'}, # Penalty taken a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7284 | way from the score when a gap is created in sequen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7285 | ce. Increasing the gap openning penalty will decre\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7286 | ase the number of gaps in the final alignment.\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7287 | 'gapext=i' => \\$params{'gapext'}, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7288 | # Penalty taken away from the score for each bas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7289 | e or residue in the gap. Increasing the gap extens\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7290 | ion penalty favors short gaps in the final alignme\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7291 | nt, conversly decreasing the gap extension penalty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7292 | favors long gaps in the final alignment.\n 'fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7293 | lter=s' => \\$params{'filter'}, # F\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7294 | ilter regions of low sequence complexity. This can\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7295 | avoid issues with low complexity sequences where \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7296 | matches are found due to composition rather than m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7297 | eaningful sequence similarity. However in some cas\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7298 | es filtering also masks regions of interest and so\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7299 | should be used with caution.\n 'seqrange=s' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7300 | => \\$params{'seqrange'}, # Specify a ran\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7301 | ge or section of the input sequence to use in the \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7302 | search. Example: Specifying '34-89' in an input se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7303 | quence of total length 100, will tell BLAST to onl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7304 | y use residues 34 to 89, inclusive.\n 'gapalign\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7305 | ' => \\$params{'gapalign'}, # This is\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7306 | a true/false setting that tells the program the p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7307 | erform optimised alignments within regions involvi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7308 | ng gaps. If set to true, the program will perform \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7309 | an alignment using gaps. Otherwise, if it is set t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7310 | o false, it will report only individual HSP where \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7311 | two sequence match each other, and thus will not p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7312 | roduce alignments with gaps.\n 'wordsize=i' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7313 | => \\$params{'wordsize'}, # Word size for \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7314 | wordfinder algorithm\n 'compstats=s' => \\$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7315 | params{'compstats'}, # Use composition-based \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7316 | statistics.\n 'align=i' => \\$params{'a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7317 | lign'}, # Formating for the alignments\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7318 | 'transltable=i' => \\$params{'transltable'}, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7319 | # Query Genetic code to use in translation\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7320 | 'stype=s' => \\$params{'stype'}, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7321 | # Indicates if the sequence is protein or DNA/RNA\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7322 | .\n 'sequence=s' => \\$params{'sequence'},\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7323 | # The query sequence can be entered directl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7324 | y into this form. The sequence can be in GCG, FAST\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7325 | A, EMBL (Nucleotide only), GenBank, PIR, NBRF, PHY\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7326 | LIP or UniProtKB/Swiss-Prot (Protein only) format.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7327 | A partially formatted sequence is not accepted. A\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7328 | dding a return to the end of the sequence may help\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7329 | certain applications understand the input. Note t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7330 | hat directly using data from word processors may y\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7331 | ield unpredictable results as hidden/control chara\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7332 | cters may be present.\n 'database=s' => \\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7333 | $params{'database'}, # Database\n # Gener\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7334 | ic options\n 'email=s' => \\$params{'em\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7335 | ail'}, # User e-mail address\n 'title=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7336 | s' => \\$params{'title'}, # Job t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7337 | itle\n 'outfile=s' => \\$params{'outfile'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7338 | }, # Output file name\n 'outformat=s' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7339 | => \\$params{'outformat'}, # Output file ty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7340 | pe\n 'jobid=s' => \\$params{'jobid'}, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7341 | # JobId\n 'help|h' => \\$param\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7342 | s{'help'}, # Usage help\n 'asyncjob' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7343 | => \\$params{'asyncjob'}, # Asynchron\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7344 | ous submission\n 'polljob' => \\$params\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7345 | {'polljob'}, # Get results\n 'pollFreq=f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7346 | ' => \\$params{'pollFreq'}, # Poll Freq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7347 | uency\n 'resultTypes' => \\$params{'resultT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7348 | ypes'}, # Get result types\n 'status' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7349 | => \\$params{'status'}, # Get status\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7350 | 'params' => \\$params{'params'}, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7351 | # List input parameters\n 'paramDetail=s' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7352 | => \\$params{'paramDetail'}, # Get details for \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7353 | parameter\n 'multifasta' => \\$params{'mul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7354 | tifasta'}, # Multiple fasta input\n 'useSeq\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7355 | Id' => \\$params{'useSeqId'}, # Seq I\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7356 | d file name\n 'maxJobs=i' => \\$params{'m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7357 | axJobs'}, # Max. parallel jobs\n\n 'verb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7358 | ose' => \\$params{'verbose'}, # Inc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7359 | rease output level\n 'version' => \\$pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7360 | rams{'version'}, # Prints out the version o\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7361 | f the Client and exit.\n 'quiet' => \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7362 | \$params{'quiet'}, # Decrease output leve\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7363 | l\n 'debugLevel=i' => \\$params{'debugLevel'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7364 | }, # Debugging level\n 'baseUrl=s' =>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7365 | \\$baseUrl, # Base URL for servi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7366 | ce.\n);\nif ($params{'verbose'}) {$outputLevel++}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7367 | nif ($params{'quiet'}) {$outputLevel--}\nif ($para\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7368 | ms{'pollFreq'}) {$checkInterval = $params{'pollFre\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7369 | q'} * 1000 * 1000}\nif ($params{'baseUrl'}) {$base\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7370 | Url = $params{'baseUrl'}}\n\n&print_debug_message(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7371 | 'MAIN', 'LWP::VERSION: ' . $LWP::VERSION,\n 1);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7372 | \n\n&print_debug_message('MAIN', \"params:\\n\" . \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7373 | Dumper(\\%params), 11);\n\nmy $ua;\n\nmy $scriptNa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7374 | me = basename($0, ());\n\nif ($params{'help'} || $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7375 | numOpts == 0) {\n &usage();\n exit(0);\n}\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7376 | n&print_debug_message('MAIN', 'baseUrl: ' . $baseU\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7377 | rl, 1);\nif (\n !(\n $params{'polljob'}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7378 | n || $params{'resultTypes'}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7379 | || $params{'status'}\n || $params{'pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7380 | rams'}\n || $params{'paramDetail'}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7381 | || $params{'version'}\n )\n && \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7382 | !(defined($ARGV[0]) || defined($params{'sequence'}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7383 | ))\n) {\n\n # Bad argument combination, so prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7384 | t error message and usage\n print STDERR 'Error\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7385 | : bad option combination', \"\\n\";\n &usage();\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7386 | \n exit(1);\n}\nelsif ($params{'params'}) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7387 | &print_tool_params();\n}\n\nelsif ($params{'para\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7388 | mDetail'}) {\n &print_param_details($params{'pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7389 | ramDetail'});\n}\n\nelsif ($params{'version'}) {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7390 | print STDOUT 'Revision: ' . $version, \"\\n\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7391 | exit(1);\n}\n\nelsif ($params{'status'} && defin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7392 | ed($params{'jobid'})) {\n &print_job_status($pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7393 | rams{'jobid'});\n}\n\nelsif ($params{'resultTypes'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7394 | } && defined($params{'jobid'})) {\n &print_resu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7395 | lt_types($params{'jobid'});\n}\n\nelsif ($params{'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7396 | polljob'} && defined($params{'jobid'})) {\n &ge\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7397 | t_results($params{'jobid'});\n}\n\nelse {\n # M\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7398 | ultiple input sequence mode, assume fasta format.\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7399 | n if (defined($params{'multifasta'}) && $params\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7400 | {'multifasta'}) {\n &multi_submit_job();\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7401 | }\n\n # Entry identifier list file.\n els\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7402 | if ((defined($params{'sequence'}) && $params{'sequ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7403 | ence'} =~ m/^\\@/)\n || (defined($ARGV[0]) \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7404 | && $ARGV[0] =~ m/^\\@/)) {\n my $list_filen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7405 | ame = $params{'sequence'} || $ARGV[0];\n $l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7406 | ist_filename =~ s/^\\@//;\n &list_file_subm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7407 | it_job($list_filename);\n }\n # Default: sin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7408 | gle sequence/identifier.\n else {\n # Wa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7409 | rn for invalid batch only option use.\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7410 | (defined($params{'useSeqId'}) && $params{'useSeqId\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7411 | '}) {\n print STDERR \"Warning: --useSe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7412 | qId option ignored.\\n\";\n delete $par\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7413 | ams{'useSeqId'};\n }\n if (defined($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7414 | params{'maxJobs'}) && $params{'maxJobs'} > 1) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7415 | print STDERR \"Warning: --maxJobs optio\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7416 | n ignored.\\n\";\n $params{'maxJobs'} =\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7417 | 1;\n }\n # Load the sequence data a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7418 | nd submit.\n &submit_job(&load_data());\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7419 | }\n}\n\n\n\n=head1 FUNCTIONS\n\n=cut\n\n\n=head2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7420 | rest_user_agent()\n\nGet a LWP UserAgent to use t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7421 | o perform REST requests.\n\n my $ua = &rest_user_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7422 | agent();\n\n=cut\n\nsub rest_user_agent() {\n p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7423 | rint_debug_message('rest_user_agent', 'Begin', 21)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7424 | ;\n # Create an LWP UserAgent for making HTTP c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7425 | alls.\n my $ua = LWP::UserAgent->new();\n # \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7426 | Set 'User-Agent' HTTP header to identifiy the clie\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7427 | nt.\n my $revisionNumber = 0;\n $revisionNum\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7428 | ber = \"Revision: \" . $version;\n $ua->agent(\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7429 | "EBI-Sample-Client/$revisionNumber ($scriptName; $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7430 | OSNAME) \" . $ua->agent());\n # Configure HTTP \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7431 | proxy support from environment.\n $ua->env_prox\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7432 | y;\n print_debug_message('rest_user_agent', 'En\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7433 | d', 21);\n return $ua;\n}\n\n=head2 rest_error(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7434 | )\n\nCheck a REST response for an error condition.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7435 | An error is mapped to a die.\n\n &rest_error($re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7436 | sponse, $content_data);\n\n=cut\n\nsub rest_error(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7437 | ) {\n print_debug_message('rest_error', 'Begin'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7438 | , 21);\n my $response = shift;\n my $content\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7439 | data;\n if (scalar(@_) > 0) {\n $content\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7440 | data = shift;\n }\n if (!defined($contentdat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7441 | a) || $contentdata eq '') {\n $contentdata \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7442 | = $response->content();\n }\n # Check for HT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7443 | TP error codes\n if ($response->is_error) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7444 | my $error_message = '';\n # HTML resp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7445 | onse.\n if ($contentdata =~ m/

([^<]+)<\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7446 | \/h1>/) {\n $error_message = $1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7447 | }\n # XML response.\n elsif ($co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7448 | ntentdata =~ m/([^<]+)<\\/description\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7449 | >/) {\n $error_message = $1;\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7450 | \n # die 'http status: ' . $response->code \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7451 | . ' ' . $response->message . ' ' . $error_message\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7452 | ;\n }\n print_debug_message('rest_error', 'E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7453 | nd', 21);\n}\n\n=head2 rest_request()\n\nPerform a\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7454 | REST request (HTTP GET).\n\n my $response_str = \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7455 | &rest_request($url);\n\n=cut\n\nsub rest_request {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7456 | \n print_debug_message('rest_request', 'Begin',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7457 | 11);\n my $requestUrl = shift;\n print_debu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7458 | g_message('rest_request', 'URL: ' . $requestUrl, 1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7459 | 1);\n\n # Get an LWP UserAgent.\n $ua = &res\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7460 | t_user_agent() unless defined($ua);\n # Availab\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7461 | le HTTP compression methods.\n my $can_accept;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7462 | n eval {\n $can_accept = HTTP::Message::\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7463 | decodable();\n };\n $can_accept = '' unless \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7464 | defined($can_accept);\n # Perform the request\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7465 | my $response = $ua->get($requestUrl,\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7466 | 'Accept-Encoding' => $can_accept, # HTTP compressi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7467 | on.\n );\n print_debug_message('rest_request\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7468 | ', 'HTTP status: ' . $response->code,\n 11)\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7469 | ;\n print_debug_message('rest_request',\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7470 | 'response length: ' . length($response->content(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7471 | )), 11);\n print_debug_message('rest_request',\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7472 | n 'request:' . \"\\n\" . $response->request\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7473 | ()->as_string(), 32);\n print_debug_message('re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7474 | st_request',\n 'response: ' . \"\\n\" . $re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7475 | sponse->as_string(), 32);\n # Unpack possibly c\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7476 | ompressed response.\n my $retVal;\n if (defi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7477 | ned($can_accept) && $can_accept ne '') {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7478 | $retVal = $response->decoded_content();\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7479 | # If unable to decode use orginal content.\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7480 | $retVal = $response->content() unless defined($ret\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7481 | Val);\n # Check for an error.\n &rest_error(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7482 | $response, $retVal);\n print_debug_message('res\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7483 | t_request', 'retVal: ' . $retVal, 12);\n print_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7484 | debug_message('rest_request', 'End', 11);\n\n #\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7485 | Return the response data\n return $retVal;\n}\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7486 | n\n=head2 rest_get_parameters()\n\nGet list of too\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7487 | l parameter names.\n\n my (@param_list) = &rest_g\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7488 | et_parameters();\n\n=cut\n\nsub rest_get_parameter\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7489 | s {\n print_debug_message('rest_get_parameters'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7490 | , 'Begin', 1);\n my $url = $baseUrl . '/paramet\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7491 | ers/';\n my $param_list_xml_str = rest_request(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7492 | $url);\n my $param_list_xml = XMLin($param_list\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7493 | _xml_str);\n my (@param_list) = @{$param_list_x\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7494 | ml->{'id'}};\n print_debug_message('rest_get_pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7495 | rameters', 'End', 1);\n return(@param_list);\n}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7496 | \n\n=head2 rest_get_parameter_details()\n\nGet det\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7497 | ails of a tool parameter.\n\n my $paramDetail = &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7498 | rest_get_parameter_details($param_name);\n\n=cut\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7499 | \nsub rest_get_parameter_details {\n print_debu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7500 | g_message('rest_get_parameter_details', 'Begin', 1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7501 | );\n my $parameterId = shift;\n print_debug_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7502 | message('rest_get_parameter_details',\n 'pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7503 | rameterId: ' . $parameterId, 1);\n my $url = $b\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7504 | aseUrl . '/parameterdetails/' . $parameterId;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7505 | my $param_detail_xml_str = rest_request($url);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7506 | my $param_detail_xml = XMLin($param_detail_xml_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7507 | str);\n print_debug_message('rest_get_parameter\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7508 | _details', 'End', 1);\n return($param_detail_xm\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7509 | l);\n}\n\n=head2 rest_run()\n\nSubmit a job.\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7510 | my $job_id = &rest_run($email, $title, \\%params )\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7511 | ;\n\n=cut\n\nsub rest_run {\n print_debug_messa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7512 | ge('rest_run', 'Begin', 1);\n my $email = shift\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7513 | ;\n my $title = shift;\n my $params = shift;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7514 | \n $email = '' if (!$email);\n print_debug_m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7515 | essage('rest_run', 'email: ' . $email, 1);\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7516 | (defined($title)) {\n print_debug_message(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7517 | 'rest_run', 'title: ' . $title, 1);\n }\n pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7518 | int_debug_message('rest_run', 'params: ' . Dumper(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7519 | $params), 1);\n\n # Get an LWP UserAgent.\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7520 | $ua = &rest_user_agent() unless defined($ua);\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7521 | # Clean up parameters\n my (%tmp_params) = %\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7522 | {$params};\n $tmp_params{'email'} = $email;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7523 | $tmp_params{'title'} = $title;\n foreach my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7524 | param_name (keys(%tmp_params)) {\n if (!def\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7525 | ined($tmp_params{$param_name})) {\n del\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7526 | ete $tmp_params{$param_name};\n }\n }\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7527 | n # Submit the job as a POST\n my $url = $ba\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7528 | seUrl . '/run';\n my $response = $ua->post($url\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7529 | , \\%tmp_params);\n print_debug_message('rest_r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7530 | un', 'HTTP status: ' . $response->code, 11);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7531 | print_debug_message('rest_run',\n 'request:\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7532 | ' . \"\\n\" . $response->request()->as_string(), 1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7533 | 1);\n print_debug_message('rest_run',\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7534 | 'response: ' . length($response->as_string()) . \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7535 | \\n\" . $response->as_string(), 11);\n\n # Chec\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7536 | k for an error.\n &rest_error($response);\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7537 | # The job id is returned\n my $job_id = $resp\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7538 | onse->content();\n print_debug_message('rest_ru\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7539 | n', 'End', 1);\n return $job_id;\n}\n\n=head2 r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7540 | est_get_status()\n\nCheck the status of a job.\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7541 | my $status = &rest_get_status($job_id);\n\n=cut\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7542 | n\nsub rest_get_status {\n print_debug_message(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7543 | 'rest_get_status', 'Begin', 1);\n my $job_id = \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7544 | shift;\n print_debug_message('rest_get_status',\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7545 | 'jobid: ' . $job_id, 2);\n my $status_str = 'U\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7546 | NKNOWN';\n my $url = $baseUrl . '/status/' . $j\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7547 | ob_id;\n $status_str = &rest_request($url);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7548 | print_debug_message('rest_get_status', 'status_s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7549 | tr: ' . $status_str, 2);\n print_debug_message(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7550 | 'rest_get_status', 'End', 1);\n return $status_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7551 | str;\n}\n\n=head2 rest_get_result_types()\n\nGet l\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7552 | ist of result types for finished job.\n\n my (@re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7553 | sult_types) = &rest_get_result_types($job_id);\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7554 | =cut\n\nsub rest_get_result_types {\n print_deb\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7555 | ug_message('rest_get_result_types', 'Begin', 1);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7556 | my $job_id = shift;\n print_debug_message('\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7557 | rest_get_result_types', 'jobid: ' . $job_id, 2);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7558 | my (@resultTypes);\n my $url = $baseUrl . '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7559 | /resulttypes/' . $job_id;\n my $result_type_lis\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7560 | t_xml_str = &rest_request($url);\n my $result_t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7561 | ype_list_xml = XMLin($result_type_list_xml_str);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7562 | (@resultTypes) = @{$result_type_list_xml->{'ty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7563 | pe'}};\n print_debug_message('rest_get_result_t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7564 | ypes',\n scalar(@resultTypes) . ' result ty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7565 | pes', 2);\n print_debug_message('rest_get_resul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7566 | t_types', 'End', 1);\n return(@resultTypes);\n}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7567 | \n\n=head2 rest_get_result()\n\nGet result data of\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7568 | a specified type for a finished job.\n\n my $res\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7569 | ult = rest_get_result($job_id, $result_type);\n\n=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7570 | cut\n\nsub rest_get_result {\n print_debug_mess\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7571 | age('rest_get_result', 'Begin', 1);\n my $job_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7572 | d = shift;\n my $type = shift;\n print_debug\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7573 | _message('rest_get_result', 'jobid: ' . $job_id, 1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7574 | );\n print_debug_message('rest_get_result', 'ty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7575 | pe: ' . $type, 1);\n my $url = $baseUrl . '/res\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7576 | ult/' . $job_id . '/' . $type;\n my $result = &\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7577 | rest_request($url);\n print_debug_message('rest\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7578 | _get_result', length($result) . ' characters',\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7579 | 1);\n print_debug_message('rest_get_resul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7580 | t', 'End', 1);\n return $result;\n}\n\n\n=head2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7581 | print_debug_message()\n\nPrint debug message at s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7582 | pecified debug level.\n\n &print_debug_message($m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7583 | ethod_name, $message, $level);\n\n=cut\n\nsub prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7584 | t_debug_message {\n my $function_name = shift;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7585 | n my $message = shift;\n my $level = shift;\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7586 | n if ($level <= $params{'debugLevel'}) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7587 | print STDERR '[', $function_name, '()] ', $mess\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7588 | age, \"\\n\";\n }\n}\n\n=head2 print_tool_param\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7589 | s()\n\nPrint list of tool parameters.\n\n &print_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7590 | tool_params();\n\n=cut\n\nsub print_tool_params {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7591 | n print_debug_message('print_tool_params', 'Beg\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7592 | in', 1);\n my (@param_list) = &rest_get_paramet\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7593 | ers();\n foreach my $param (sort (@param_list))\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7594 | {\n print $param, \"\\n\";\n }\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7595 | nt_debug_message('print_tool_params', 'End', 1);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7596 | }\n\n=head2 print_param_details()\n\nPrint details\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7597 | of a tool parameter.\n\n &print_param_details($p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7598 | aram_name);\n\n=cut\n\nsub print_param_details {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7599 | print_debug_message('print_param_details', 'Be\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7600 | gin', 1);\n my $paramName = shift;\n print_d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7601 | ebug_message('print_param_details', 'paramName: ' \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7602 | . $paramName, 2);\n my $paramDetail = &rest_get\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7603 | _parameter_details($paramName);\n print $paramD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7604 | etail->{'name'}, \"\\t\", $paramDetail->{'type'}, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7605 | \"\\n\";\n print $paramDetail->{'description'},\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7606 | \"\\n\";\n if (defined($paramDetail->{'values'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7607 | }->{'value'})) {\n if (ref($paramDetail->{'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7608 | values'}->{'value'}) eq 'ARRAY') {\n fo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7609 | reach my $value (@{$paramDetail->{'values'}->{'val\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7610 | ue'}}) {\n &print_param_value($valu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7611 | e);\n }\n }\n else {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7612 | &print_param_value($paramDetail->{'values\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7613 | '}->{'value'});\n }\n }\n print_debug\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7614 | _message('print_param_details', 'End', 1);\n}\n\n=\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7615 | head2 print_param_value()\n\nPrint details of a to\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7616 | ol parameter value.\n\n &print_param_details($par\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7617 | am_value);\n\nUsed by print_param_details() to han\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7618 | dle both singluar and array values.\n\n=cut\n\nsub\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7619 | print_param_value {\n my $value = shift;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7620 | print $value->{'value'};\n if ($value->{'defaul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7621 | tValue'} eq 'true') {\n print \"\\t\", 'def\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7622 | ault';\n }\n print \"\\n\";\n print \"\\t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7623 | \", $value->{'label'}, \"\\n\";\n if (defined($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7624 | value->{'properties'})) {\n foreach\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7625 | my $key (sort ( keys(%{$value->{'properties'}{'p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7626 | roperty'}}) )) {\n if (ref($value->{'pr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7627 | operties'}{'property'}{$key}) eq 'HASH'\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7628 | && defined($value->{'properties'}{'property\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7629 | '}{$key}{'value'})\n ) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7630 | print \"\\t\", $key, \"\\t\",\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7631 | $value->{'properties'}{'property'}{$key}{'valu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7632 | e'}, \"\\n\";\n }\n else {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7633 | print \"\\t\", $value->{'propertie\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7634 | s'}{'property'}{'key'},\n \"\\t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7635 | \", $value->{'properties'}{'property'}{'value'}, \\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7636 | "\\n\";\n last;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7637 | }\n }\n}\n\n=head2 print_job_status()\n\nP\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7638 | rint status of a job.\n\n &print_job_status($job_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7639 | id);\n\n=cut\n\nsub print_job_status {\n print_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7640 | debug_message('print_job_status', 'Begin', 1);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7641 | my $jobid = shift;\n print_debug_message('pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7642 | nt_job_status', 'jobid: ' . $jobid, 1);\n if ($\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7643 | outputLevel > 0) {\n print STDERR 'Getting \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7644 | status for job ', $jobid, \"\\n\";\n }\n my \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7645 | $result = &rest_get_status($jobid);\n print \"$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7646 | result\\n\";\n if ($result eq 'FINISHED' && $ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7647 | tputLevel > 0) {\n print STDERR \"To get re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7648 | sults: perl $scriptName --polljob --jobid \" . $jo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7649 | bid\n . \"\\n\";\n }\n print_debu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7650 | g_message('print_job_status', 'End', 1);\n}\n\n=he\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7651 | ad2 print_result_types()\n\nPrint available result\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7652 | types for a job.\n\n &print_result_types($job_id\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7653 | );\n\n=cut\n\nsub print_result_types {\n print_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7654 | debug_message('result_types', 'Begin', 1);\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7655 | $jobid = shift;\n print_debug_message('result_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7656 | types', 'jobid: ' . $jobid, 1);\n if ($outputLe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7657 | vel > 0) {\n print STDERR 'Getting result t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7658 | ypes for job ', $jobid, \"\\n\";\n }\n my $s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7659 | tatus = &rest_get_status($jobid);\n if ($status\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7660 | eq 'PENDING' || $status eq 'RUNNING') {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7661 | print STDERR 'Error: Job status is ', $status,\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7662 | '. To get result types the job must be f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7663 | inished.', \"\\n\";\n }\n else {\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7664 | (@resultTypes) = &rest_get_result_types($jobid);\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7665 | n if ($outputLevel > 0) {\n prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7666 | t STDOUT 'Available result types:', \"\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7667 | }\n foreach my $resultType (@resultType\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7668 | s) {\n print STDOUT $resultType->{'iden\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7669 | tifier'}, \"\\n\";\n if (defined($resul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7670 | tType->{'label'})) {\n print STDOUT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7671 | \"\\t\", $resultType->{'label'}, \"\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7672 | }\n if (defined($resultType->{'de\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7673 | scription'})) {\n print STDOUT \"\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7674 | t\", $resultType->{'description'}, \"\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7675 | }\n if (defined($resultType->{'m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7676 | ediaType'})) {\n print STDOUT \"\\t\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7677 | \", $resultType->{'mediaType'}, \"\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7678 | }\n if (defined($resultType->{'file\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7679 | Suffix'})) {\n print STDOUT \"\\t\"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7680 | , $resultType->{'fileSuffix'}, \"\\n\";\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7681 | }\n }\n if ($status eq 'FINISHED'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7682 | && $outputLevel > 0) {\n print STDERR \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7683 | \"\\n\", 'To get results:', \"\\n\",\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7684 | \" perl $scriptName --polljob --jobid \" . $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7685 | arams{'jobid'} . \"\\n\",\n \" per\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7686 | l $scriptName --polljob --outformat --jobid\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7687 | \"\n . $params{'jobid'} . \"\\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7688 | n\";\n }\n }\n print_debug_message('r\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7689 | esult_types', 'End', 1);\n}\n\n=head2 submit_job()\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7690 | \n\nSubmit a job to the service.\n\n &submit_job(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7691 | $seq);\n\n=cut\n\nsub submit_job {\n print_debu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7692 | g_message('submit_job', 'Begin', 1);\n\n # Set \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7693 | input sequence\n $params{'sequence'} = shift;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7694 | my $seq_id = shift;\n\n # Load parameters\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7695 | &load_params();\n\n # Submit the job\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7696 | y $jobid = &rest_run($params{'email'}, $params{'ti\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7697 | tle'}, \\%params);\n\n # Asynchronous submissio\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7698 | n.\n if (defined($params{'asyncjob'})) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7699 | print STDOUT $jobid, \"\\n\";\n if ($out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7700 | putLevel > 0) {\n print STDERR\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7701 | \"To check status: perl $scriptName --sta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7702 | tus --jobid $jobid\\n\";\n }\n }\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7703 | # Simulate synchronous submission serial mode.\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7704 | else {\n if ($outputLevel > 0) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7705 | print STDERR \"JobId: $jobid\\n\";\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7706 | else {\n print STDERR \"$jobid\\n\";\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7707 | }\n usleep($checkInterval);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7708 | # Get results.\n &get_results($jobid, $se\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7709 | q_id);\n\n }\n print_debug_message('submit_j\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7710 | ob', 'End', 1);\n return $jobid;\n}\n=head2 mul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7711 | ti_submit_job()\n\nSubmit multiple jobs assuming i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7712 | nput is a collection of fasta formatted sequences.\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7713 | \n\n &multi_submit_job();\n\n=cut\n\nsub multi_su\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7714 | bmit_job {\n print_debug_message('multi_submit_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7715 | job', 'Begin', 1);\n my (@filename_list) = ();\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7716 | n\n # Query sequence\n if (defined($ARGV[0])\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7717 | ) { # Bare option\n if (-f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7718 | $ARGV[0] || $ARGV[0] eq '-') { # File\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7719 | push(@filename_list, $ARGV[0]);\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7720 | else {\n warn 'Warning: Input file \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7721 | \"' . $ARGV[0] . '\" does not exist';\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7722 | }\n if ($params{'sequence'}) { \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7723 | # Via --sequence\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 7724 | if (-f $params{'sequence'} || $params{'sequence'}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7725 | eq '-') { # File\n push(@filename_list\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7726 | , $params{'sequence'});\n }\n else {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7727 | \n warn 'Warning: Input file \"'\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7728 | . $params{'sequence'}\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7729 | . '\" does not exist';\n }\n }\n\n # \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7730 | Job identifier tracking for parallel execution.\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7731 | my @jobid_list = ();\n my $job_number = 0;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7732 | $/ = '>';\n foreach my $filename (@filename\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7733 | _list) {\n my $INFILE;\n if ($filena\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7734 | me eq '-') { # STDIN.\n open($INFILE, '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7735 | <-')\n or die 'Error: unable to STD\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7736 | IN (' . $! . ')';\n }\n else { # Fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7737 | e.\n open($INFILE, '<', $filename)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7738 | or die 'Error: unable to open file '\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7739 | n . $filename . ' ('\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7740 | . $! . ')';\n }\n while (<$INFILE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7741 | >) {\n my $seq = $_;\n $seq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7742 | =~ s/>$//;\n if ($seq =~ m/(\\S+)/) {\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7743 | my $seq_id = $1;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7744 | print STDERR \"Submitting job for: $seq_id\\n\"\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7745 | if ($outputLevel > 0);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7746 | $seq = '>' . $seq;\n &prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7747 | t_debug_message('multi_submit_job', $seq, 11);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7748 | $job_number++;\n my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7749 | job_id = &submit_job($seq, $seq_id);\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7750 | my $job_info_str = sprintf('%s %d %d', $job_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7751 | id, 0, $job_number);\n\n push(@jobi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7752 | d_list, $job_info_str);\n }\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7753 | # Parallel mode, wait for job(s) to finish to \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7754 | free slots.\n while ($params{'maxJobs'}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7755 | > 1\n && scalar(@jobid_list) >= $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7756 | arams{'maxJobs'}) {\n &_job_list_po\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7757 | ll(\\@jobid_list);\n print_debug_me\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7758 | ssage('multi_submit_job',\n 'Re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7759 | maining jobs: ' . scalar(@jobid_list), 1);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7760 | }\n }\n close $INFILE;\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7761 | n\n # Parallel mode, wait for remaining jobs to\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7762 | finish.\n while ($params{'maxJobs'} > 1 && sca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7763 | lar(@jobid_list) > 0) {\n &_job_list_poll(\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7764 | \@jobid_list);\n print_debug_message('multi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7765 | _submit_job',\n 'Remaining jobs: ' . sc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7766 | alar(@jobid_list), 1);\n }\n print_debug_mes\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7767 | sage('multi_submit_job', 'End', 1);\n}\n\n\n=head2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7768 | _job_list_poll()\n\nPoll the status of a list of \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7769 | jobs and fetch results for finished jobs.\n\n whi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7770 | le(scalar(@jobid_list) > 0) {\n &_job_list_poll\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7771 | (\\@jobid_list);\n }\n\n=cut\n\nsub _job_list_pol\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7772 | l {\n print_debug_message('_job_list_poll', 'Be\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7773 | gin', 1);\n my $jobid_list = shift;\n print_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7774 | debug_message('_job_list_poll', 'Num jobs: ' . sca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7775 | lar(@$jobid_list),\n 11);\n\n # Loop tho\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7776 | ugh job Id list polling job status.\n for (my $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7777 | jobNum = (scalar(@$jobid_list) - 1); $jobNum > -1;\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7778 | $jobNum--) {\n my ($jobid, $seq_id, $error\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7779 | _count, $job_number) =\n split(/\\s+/, \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7780 | $jobid_list->[$jobNum]);\n print_debug_mess\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7781 | age('_job_list_poll', 'jobNum: ' . $jobNum, 12);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7782 | print_debug_message('_job_list_poll',\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7783 | 'Job info: ' . $jobid_list->[$jobNum], 12\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7784 | );\n\n # Get job status.\n my $job_s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7785 | tatus = &rest_get_status($jobid);\n print_d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7786 | ebug_message('_job_list_poll', 'Status: ' . $job_s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7787 | tatus, 12);\n\n # Fetch results and remove \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7788 | finished/failed jobs from list.\n if (\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7789 | !(\n $job_status eq 'RUNNI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7790 | NG'\n || $job_status eq 'PENDIN\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7791 | G'\n || ($job_status eq 'ERROR'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7792 | \n && $error_count < $maxErrorS\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7793 | tatusCount)\n )\n ) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7794 | if ($job_status eq 'ERROR' || $job_status eq 'F\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7795 | AILED') {\n print STDERR\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7796 | \"Warning: job $jobid failed for sequen\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7797 | ce $job_number: $seq_id\\n\";\n }\n #\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7798 | Duplicated getting results.\n #&get_re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7799 | sults($jobid, $seq_id);\n splice(@$jobi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7800 | d_list, $jobNum, 1);\n }\n else {\n\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7801 | n # Update error count, increment for n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7802 | ew error or clear old errors.\n if ($jo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7803 | b_status eq 'ERROR') {\n $error_cou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7804 | nt++;\n }\n elsif ($error_co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7805 | unt > 0) {\n $error_count--;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7806 | }\n\n # Update job tracking info\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7807 | .\n my $job_info_str = sprintf('%s %s %\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7808 | d %d',\n $jobid, $seq_id, $error_co\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7809 | unt, $job_number);\n $jobid_list->[$job\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7810 | Num] = $job_info_str;\n }\n }\n print\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7811 | _debug_message('_job_list_poll', 'Num jobs: ' . sc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7812 | alar(@$jobid_list),\n 11);\n print_debug\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7813 | _message('_job_list_poll', 'End', 1);\n}\n\n=head2\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7814 | list_file_submit_job()\n\nSubmit multiple jobs us\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7815 | ing a file containing a list of entry identifiers \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7816 | as\ninput.\n\n &list_file_submit_job($list_filena\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7817 | me)\n\n=cut\n\nsub list_file_submit_job {\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7818 | nt_debug_message('list_file_submit_job', 'Begin', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7819 | 1);\n my $filename = shift;\n\n # Open the f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7820 | ile of identifiers.\n my $LISTFILE;\n if ($f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7821 | ilename eq '-') { # STDIN.\n open($LISTFILE\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7822 | , '<-')\n or die 'Error: unable to STDI\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7823 | N (' . $! . ')';\n }\n else { # File.\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7824 | open($LISTFILE, '<', $filename)\n or\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7825 | die 'Error: unable to open file ' . $filename . '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7826 | (' . $! . ')';\n }\n\n # Job identifier tra\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7827 | cking for parallel execution.\n my @jobid_list \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7828 | = ();\n my $job_number = 0;\n\n # Iterate ov\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7829 | er identifiers, submitting each job\n while (<$\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7830 | LISTFILE>) {\n my $line = $_;\n chom\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7831 | p($line);\n if ($line ne '') {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7832 | &print_debug_message('list_file_submit_job', 'lin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7833 | e: ' . $line, 2);\n if ($line =~ m/\\w:\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7834 | \\w/) {\n # Check this is an identi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7835 | fier\n my $seq_id = $line;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7836 | print STDERR \"Submitting job for: $seq_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7837 | d\\n\"\n if ($outputLevel > 0);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7838 | \n $job_number++;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7839 | my $job_id = &submit_job($seq_id, $seq_id);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7840 | my $job_info_str =\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7841 | sprintf('%s %s %d %d', $job_id, $seq_id, 0, $job_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7842 | number);\n push(@jobid_list, $job_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7843 | nfo_str);\n }\n else {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7844 | print STDERR\n \"Wa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7845 | rning: line \\\"$line\\\" is not recognised as an \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7846 | identifier\\n\";\n }\n\n # P\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7847 | arallel mode, wait for job(s) to finish to free sl\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7848 | ots.\n while ($params{'maxJobs'} > 1\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7849 | && scalar(@jobid_list) >= $params{'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7850 | maxJobs'}) {\n &_job_list_poll(\\@j\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7851 | obid_list);\n print_debug_message('\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7852 | list_file_submit_job',\n 'Remai\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7853 | ning jobs: ' . scalar(@jobid_list), 1);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7854 | }\n }\n }\n close $LISTFILE;\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7855 | # Parallel mode, wait for remaining jobs to fini\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7856 | sh.\n while ($params{'maxJobs'} > 1 && scalar(@\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7857 | jobid_list) > 0) {\n &_job_list_poll(\\@job\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7858 | id_list);\n print_debug_message('list_file_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7859 | submit_job',\n 'Remaining jobs: ' . sca\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7860 | lar(@jobid_list), 1);\n }\n print_debug_mess\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7861 | age('list_file_submit_job', 'End', 1);\n}\n\n\n=he\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7862 | ad2 load_data()\n\nLoad sequence data from file or\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7863 | option specified on the command-line.\n\n &load_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7864 | data();\n\n=cut\n\nsub load_data {\n print_debu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7865 | g_message('load_data', 'Begin', 1);\n my $retSe\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7866 | q;\n\n # Query sequence\n if (defined($ARGV[\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7867 | 0])) { # Bare option\n if \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7868 | (-f $ARGV[0] || $ARGV[0] eq '-') { # File\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7869 | $retSeq = &read_file($ARGV[0]);\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7870 | else { # DB:ID or sequence\n $re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7871 | tSeq = $ARGV[0];\n }\n }\n if ($param\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7872 | s{'sequence'}) { \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7873 | # Via --sequence\n if (-f $params{'sequ\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7874 | ence'} || $params{'sequence'} eq '-') { # File\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7875 | $retSeq = &read_file($params{'sequence'}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7876 | );\n }\n else { # DB:ID or sequence\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7877 | n $retSeq = $params{'sequence'};\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7878 | }\n }\n print_debug_message('load_data', \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7879 | 'End', 1);\n return $retSeq;\n}\n\n=head2 load_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7880 | params()\n\nLoad job parameters from command-line \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7881 | options.\n\n &load_params();\n\n=cut\n\nsub load_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7882 | params {\n print_debug_message('load_params', '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7883 | Begin', 1);\n\n # Pass default values and fix b\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7884 | ools (without default value)\n if ($params{'sty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7885 | pe'} eq 'protein') {\n if (!$params{'task'}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7886 | ) {\n $params{'task'} = 'blastp'\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7887 | }\n }\n if ($params{'stype'} eq 'nucleoti\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7888 | de') {\n if (!$params{'task'}) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7889 | $params{'task'} = 'blastn'\n }\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7890 | if ($params{'stype'} eq 'vector') {\n if\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7891 | (!$params{'task'}) {\n $params{'task'}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7892 | = 'blastn'\n }\n }\n\n if ($params{'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7893 | stype'} eq 'protein') {\n if (!$params{'mat\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7894 | rix'}) {\n $params{'matrix'} = 'BLOSUM6\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7895 | 2'\n }\n }\n if ($params{'stype'} eq \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7896 | 'nucleotide') {\n if (!$params{'matrix'}) {\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7897 | \n $params{'matrix'} = 'NONE'\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7898 | }\n }\n if ($params{'stype'} eq 'vector') {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7899 | n if (!$params{'matrix'}) {\n $p\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7900 | arams{'matrix'} = 'NONE'\n }\n }\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7901 | if (!$params{'alignments'}) {\n $params{'al\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7902 | ignments'} = 50\n }\n\n if (!$params{'scores\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7903 | '}) {\n $params{'scores'} = 50\n }\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7904 | if (!$params{'exp'}) {\n $params{'exp'} =\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7905 | '10'\n }\n\n if (!$params{'dropoff'}) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7906 | $params{'dropoff'} = 0\n }\n\n if ($pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7907 | rams{'stype'} eq 'nucleotide') {\n if (!$pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7908 | rams{'match_scores'}) {\n $params{'matc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7909 | h_scores'} = '1,-3'\n }\n }\n if ($pa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7910 | rams{'stype'} eq 'vector') {\n if (!$params\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7911 | {'match_scores'}) {\n $params{'match_sc\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7912 | ores'} = '1,-3'\n }\n }\n\n if (!$par\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7913 | ams{'gapopen'}) {\n $params{'gapopen'} = -1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7914 | \n }\n\n if (!$params{'gapext'}) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7915 | $params{'gapext'} = -1\n }\n\n if ($params{'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7916 | stype'} eq 'protein') {\n if (!$params{'fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7917 | ter'}) {\n $params{'filter'} = 'F'\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7918 | }\n }\n if ($params{'stype'} eq 'nucleo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7919 | tide') {\n if (!$params{'filter'}) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7920 | $params{'filter'} = 'T'\n }\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7921 | if ($params{'stype'} eq 'vector') {\n i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7922 | f (!$params{'filter'}) {\n $params{'fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7923 | ter'} = 'T'\n }\n }\n\n if (!$params{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7924 | 'gapalign'}) {\n $params{'gapalign'} = 'tru\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7925 | e'\n }\n\n if (!$params{'compstats'}) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7926 | $params{'compstats'} = 'F'\n }\n\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7927 | !$params{'align'}) {\n $params{'align'} = 0\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7928 | \n }\n\n if (!$params{'transltable'}) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7929 | $params{'transltable'} = 1\n }\n\n prin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7930 | t_debug_message('load_params', 'End', 1);\n}\n\n=h\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7931 | ead2 client_poll()\n\nClient-side job polling.\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7932 | &client_poll($job_id);\n\n=cut\n\nsub client_pol\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7933 | l {\n print_debug_message('client_poll', 'Begin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7934 | ', 1);\n my $jobid = shift;\n my $status = '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7935 | PENDING';\n\n # Check status and wait if not fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7936 | nished. Terminate if three attempts get \"ERROR\".\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7937 | \n my $errorCount = 0;\n while ($status eq '\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7938 | RUNNING'\n || $status eq 'PENDING'\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7939 | || ($status eq 'ERROR' && $errorCount < 2)) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7940 | $status = rest_get_status($jobid);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7941 | print STDERR \"$status\\n\" if ($outputLevel > 0);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7942 | \n if ($status eq 'ERROR') {\n $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7943 | errorCount++;\n }\n elsif ($errorCou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7944 | nt > 0) {\n $errorCount--;\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7945 | if ($status eq 'RUNNING'\n || $\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7946 | status eq 'PENDING'\n || $status eq 'ER\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7947 | ROR') {\n\n # Wait before polling again\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7948 | .\n usleep($checkInterval);\n }\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7949 | n }\n print_debug_message('client_poll', 'En\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7950 | d', 1);\n return $status;\n}\n\n=head2 get_resu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7951 | lts()\n\nGet the results for a job identifier.\n\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7952 | &get_results($job_id);\n\n=cut\n\nsub get_result\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7953 | s {\n print_debug_message('get_results', 'Begin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7954 | ', 1);\n my $jobid = shift;\n print_debug_me\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7955 | ssage('get_results', 'jobid: ' . $jobid, 1);\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7956 | my $seq_id = shift;\n print_debug_message('get_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7957 | results', 'seq_id: ' . $seq_id, 1) if ($seq_id);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7958 | \n my $output_basename = $jobid;\n\n # Verbo\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7959 | se\n if ($outputLevel > 1) {\n print 'Ge\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7960 | tting results for job ', $jobid, \"\\n\";\n }\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7961 | \n # Check status, and wait if not finished\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7962 | client_poll($jobid);\n\n # Default output fil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7963 | e names use JobId, however the name can be specifi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7964 | ed...\n if (defined($params{'outfile'})) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7965 | $output_basename = $params{'outfile'};\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7966 | \n # Or use sequence identifer.\n elsif (def\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7967 | ined($params{'useSeqId'} && defined($seq_id) && $s\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7968 | eq_id ne '')) {\n $output_basename = $seq_i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7969 | d;\n\n # Make safe to use as a file name.\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7970 | $output_basename =~ s/\\W/_/g;\n }\n\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7971 | # Use JobId if output file name is not defined\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7972 | n else {\n unless (defined($params{'outf\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7973 | ile'})) {\n #$params{'outfile'} = $jobi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7974 | d;\n $output_basename = $jobid;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7975 | }\n }\n\n # Get list of data types\n my\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7976 | (@resultTypes) = rest_get_result_types($jobid);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7977 | \n\n # Get the data and write it to a file\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7978 | if (defined($params{'outformat'})) {\n # S\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7979 | pecified data type\n # check to see if ther\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7980 | e are multiple formats (comma separated)\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7981 | my $sep = \",\";\n my (@multResultTypes);\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7982 | if ($params{'outformat'} =~ /$sep/) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7983 | @multResultTypes = split(',', $params{'ou\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7984 | tformat'});\n }\n else {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7985 | $multResultTypes[0] = $params{'outformat'};\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7986 | }\n # check if the provided formats ar\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7987 | e recognised\n foreach my $inputType (@mult\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7988 | ResultTypes) {\n my $expectation = 0;\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7989 | foreach my $resultType (@resultTypes) \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7990 | {\n if ($resultType->{'identifier'}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7991 | eq $inputType && $expectation eq 0) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7992 | $expectation = 1;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7993 | }\n if ($expectation ne 1) {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7994 | n die 'Error: unknown result format\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7995 | \"' . $inputType . '\"';\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7996 | }\n # if so get the files\n my $selR\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7997 | esultType;\n foreach my $resultType (@resul\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7998 | tTypes) {\n if (grep {$_ eq $resultType\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7999 | ->{'identifier'}} @multResultTypes) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8000 | $selResultType = $resultType;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8001 | my $result = rest_get_result($jobid, $selResultT\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8002 | ype->{'identifier'});\n if (defined\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8003 | ($params{'outfile'}) && $params{'outfile'} eq '-')\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8004 | {\n write_file($params{'outfil\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8005 | e'}, $result);\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8006 | else {\n write_file(\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8007 | $output_basename . '.'\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8008 | . $selResultType->{'identifier'}\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8009 | . '.'\n . $selResultTy\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8010 | pe->{'fileSuffix'},\n $resu\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8011 | lt\n );\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8012 | }\n }\n }\n else { # Data ty\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8013 | pes available\n # Write a file for each out\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8014 | put type\n for my $resultType (@resultTypes\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8015 | ) {\n if ($outputLevel > 1) {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8016 | print STDERR 'Getting ', $resultType->{'id\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8017 | entifier'}, \"\\n\";\n }\n m\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8018 | y $result = rest_get_result($jobid, $resultType->{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8019 | 'identifier'});\n if (defined($params{'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8020 | outfile'}) && $params{'outfile'} eq '-') {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8021 | write_file($params{'outfile'}, $result);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8022 | \n }\n else {\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8023 | write_file(\n $output_basena\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8024 | me . '.'\n . $resultType->{\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8025 | 'identifier'} . '.'\n . $re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8026 | sultType->{'fileSuffix'},\n $re\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8027 | sult\n );\n }\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8028 | \n }\n print_debug_message('get_results', 'E\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8029 | nd', 1);\n}\n\n=head2 read_file()\n\nRead a file i\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8030 | nto a scalar. The special filename '-' can be used\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8031 | to read from\nstandard input (STDIN).\n\n my $da\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8032 | ta = &read_file($filename);\n\n=cut\n\nsub read_fi\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8033 | le {\n print_debug_message('read_file', 'Begin'\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8034 | , 1);\n my $filename = shift;\n print_debug_\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8035 | message('read_file', 'filename: ' . $filename, 2);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8036 | \n my ($content, $buffer);\n if ($filename e\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8037 | q '-') {\n while (sysread(STDIN, $buffer, 1\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8038 | 024)) {\n $content .= $buffer;\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8039 | }\n }\n else {\n # File\n ope\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8040 | n(my $FILE, '<', $filename)\n or die \"\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8041 | Error: unable to open input file $filename ($!)\";\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8042 | \n while (sysread($FILE, $buffer, 1024)) {\\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8043 | n $content .= $buffer;\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8044 | close($FILE);\n }\n print_debug_message(\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8045 | 'read_file', 'End', 1);\n return $content;\n}\n\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8046 | \n=head2 write_file()\n\nWrite data to a file. The\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8047 | special filename '-' can be used to write to\nsta\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8048 | ndard output (STDOUT).\n\n &write_file($filename,\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8049 | $data);\n\n=cut\n\nsub write_file {\n print_de\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8050 | bug_message('write_file', 'Begin', 1);\n my ($f\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8051 | ilename, $data) = @_;\n print_debug_message('wr\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8052 | ite_file', 'filename: ' . $filename, 2);\n if (\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8053 | $outputLevel > 0) {\n print STDERR 'Creatin\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8054 | g result file: ' . $filename . \"\\n\";\n }\n \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8055 | if ($filename eq '-') {\n print STDOUT $d\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8056 | ata;\n }\n else {\n open(my $FILE, '>\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8057 | ', $filename)\n or die \"Error: unable \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8058 | to open output file $filename ($!)\";\n sys\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8059 | write($FILE, $data);\n close($FILE);\n }\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8060 | \n print_debug_message('write_file', 'End', 1);\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8061 | \n}\n\n=head2 usage()\n\nPrint program usage messa\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8062 | ge.\n\n &usage();\n\n=cut\n\nsub usage {\n pri\ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8063 | nt STDERR <