PageRenderTime 180ms CodeModel.GetById 40ms RepoModel.GetById 1ms app.codeStats 0ms

/scripts/batch_findltr.pl

http://dawg-paws.googlecode.com/
Perl | 773 lines | 516 code | 145 blank | 112 comment | 38 complexity | 6382bf4b41b274f1503850834b1bdef7 MD5 | raw file
  1. #!/usr/bin/perl -w
  2. #-----------------------------------------------------------+
  3. # |
  4. # batch_findltr.pl - Run the findltr program in batch mode |
  5. # |
  6. #-----------------------------------------------------------+
  7. # |
  8. # AUTHOR: James C. Estill |
  9. # CONTACT: JamesEstill_@_gmail.com |
  10. # STARTED: 09/13/2007 |
  11. # UPDATED: 09/14/2007 |
  12. # |
  13. # DESCRIPTION: |
  14. # Run the find_ltr.pl LTR finding program in batch mode. |
  15. # |
  16. # LICENSE: |
  17. # GNU General Public License, Version 3 |
  18. # http://www.gnu.org/licenses/gpl.html |
  19. # |
  20. # VERSION: $Rev: 248 $ |
  21. # |
  22. #-----------------------------------------------------------+
  23. package DAWGPAWS;
  24. #-----------------------------+
  25. # INCLUDES |
  26. #-----------------------------+
  27. use strict;
  28. use Getopt::Long;
  29. use File::Copy;
  30. #-----------------------------+
  31. # PROGRAM VARIABLES |
  32. #-----------------------------+
  33. my ($VERSION) = q$Rev: 248 $ =~ /(\d+)/;
  34. #-----------------------------+
  35. # VARIABLE SCOPE |
  36. #-----------------------------+
  37. my $indir; # Base intput dir
  38. my $outdir; # Base output dir
  39. my $config_file; # Configuration file
  40. my $name_root; # Root name of the file being analyzed
  41. my $errmsg; # Var to hold error message strings
  42. my $fl_gff_outpath; # Full output path of the gff output file
  43. # Array of find_ltr parameters
  44. my @fl_params = (); # 2d Array to hold the find_ltr parameters
  45. # Path vars
  46. my $fl_path = $ENV{FIND_LTR_PATH}; # Path to the find_ltr.pl program
  47. my $gff_dir; # Dir to hold the gff output
  48. # Counters/Index Vals
  49. my $i = 0; # Array index val
  50. my $file_num = 0; # File number
  51. my $proc_num = 0; # Process number
  52. # Booleans
  53. my $quiet = 0;
  54. my $verbose = 0;
  55. my $show_help = 0;
  56. my $show_usage = 0;
  57. my $show_man = 0;
  58. my $show_version = 0;
  59. my $do_gff_convert = 0;
  60. my $do_test = 0;
  61. #-----------------------------+
  62. # COMMAND LINE OPTIONS |
  63. #-----------------------------+
  64. my $ok = GetOptions(# REQUIRED OPTIONS
  65. "i|indir=s" => \$indir,
  66. "o|outdir=s" => \$outdir,
  67. "c|config=s" => \$config_file,
  68. # ADDITIONAL OPTIONS
  69. "fl-path=s" => \$fl_path,
  70. "q|quiet" => \$quiet,
  71. "verbose" => \$verbose,
  72. "gff" => \$do_gff_convert,
  73. "test" => \$do_test,
  74. # ADDITIONAL INFORMATION
  75. "usage" => \$show_usage,
  76. "version" => \$show_version,
  77. "man" => \$show_man,
  78. "h|help" => \$show_help,);
  79. #-----------------------------+
  80. # SHOW REQUESTED HELP |
  81. #-----------------------------+
  82. if ($show_usage) {
  83. print_help("");
  84. }
  85. if ($show_help || (!$ok) ) {
  86. }
  87. if ($show_version) {
  88. print "\n$0:\nVersion: $VERSION\n\n";
  89. exit;
  90. }
  91. if ($show_man) {
  92. # User perldoc to generate the man documentation.
  93. system("perldoc $0");
  94. exit($ok ? 0 : 2);
  95. }
  96. # Throw error if required arguments not present
  97. if ( (!$indir) || (!$outdir) || (!$config_file) ) {
  98. print "\a";
  99. print STDERR "ERROR: An input directory must be specified" if !$indir;
  100. print STDERR "ERROR: An output directory must be specified" if !$outdir;
  101. print STDERR "ERROR: A config file must be specified" if !$config_file;
  102. print_help("full");
  103. exit;
  104. }
  105. # If not path for find_ltr.pl exists as an ENV option, and the
  106. # the path is not given at the command line, assume that find_ltr.pl
  107. # exists somewhere that the user has included in their PATH var.
  108. if ( !$fl_path ) {
  109. $fl_path = "find_ltr.pl";
  110. }
  111. #-----------------------------------------------------------+
  112. # MAIN PROGRAM BODY |
  113. #-----------------------------------------------------------+
  114. #-----------------------------+
  115. # CHECK FOR SLASH IN DIR |
  116. # VARIABLES |
  117. #-----------------------------+
  118. # If the indir does not end in a slash then append one
  119. # TO DO: Allow for backslash
  120. unless ($indir =~ /\/$/ ) {
  121. $indir = $indir."/";
  122. }
  123. unless ($outdir =~ /\/$/ ) {
  124. $outdir = $outdir."/";
  125. }
  126. #-----------------------------+
  127. # CREATE THE OUT DIR |
  128. # IF IT DOES NOT EXIST |
  129. #-----------------------------+
  130. unless (-e $outdir) {
  131. print "Creating output dir ...\n" if $verbose;
  132. mkdir $outdir ||
  133. die "Could not create the output directory:\n$outdir";
  134. }
  135. #-----------------------------+
  136. # LOAD THE CONFIG FILE |
  137. #-----------------------------+
  138. $i=0;
  139. my $config_line_num=0;
  140. open (CONFIG, "<$config_file") ||
  141. die "ERROR Can not open the config file:\n $config_file";
  142. while (<CONFIG>) {
  143. chomp;
  144. $config_line_num++;
  145. unless (m/^\#/) {
  146. my @in_line = split; # Implicit split of $_ by whitespace
  147. my $num_in_line = @in_line;
  148. if ($num_in_line == 10) {
  149. $fl_params[$i][0] = $in_line[0] || "NULL"; # Name
  150. $fl_params[$i][1] = $in_line[1] || "NULL"; # MIN-MEM
  151. $fl_params[$i][2] = $in_line[2] || "NULL"; # MIN-MEM-DIST
  152. $fl_params[$i][3] = $in_line[3] || "NULL"; # MAX-MEM-DIST
  153. $fl_params[$i][4] = $in_line[4] || "NULL"; # MAX-MEM-GAP
  154. $fl_params[$i][5] = $in_line[5] || "NULL"; # MIN-LEN-LTR
  155. $fl_params[$i][6] = $in_line[6] || "NULL"; # MAX-LEN-LTR
  156. $fl_params[$i][7] = $in_line[7] || "NULL"; # RANGE-BIN
  157. $fl_params[$i][8] = $in_line[8] || "NULL"; # MIN LEN ORF
  158. $fl_params[$i][9] = $in_line[9] || "NULL"; # MAX E Value HMM
  159. $i++;
  160. } # End of if $num_in_line is 10
  161. else {
  162. print "\a";
  163. print STDERR "WARNING: Unexpected number of line in config".
  164. " file line $config_line_num\n$config_file\n";
  165. }
  166. } # End of unless comment line
  167. } # End of while CONFIG file
  168. close CONFIG;
  169. # Number of parameter sets specified in the config file
  170. my $num_par_sets = $i;
  171. #-----------------------------+
  172. # Get the FASTA files from the|
  173. # directory provided by the |
  174. # var $indir |
  175. #-----------------------------+
  176. opendir( DIR, $indir ) ||
  177. die "Can't open directory:\n$indir";
  178. my @fasta_files = grep /\.fasta$|\.fa$/, readdir DIR ;
  179. closedir( DIR );
  180. my $num_files = @fasta_files;
  181. my $num_proc_total = $num_files * $num_par_sets;
  182. print STDERR "$num_proc_total find_ltr runs to process\n";
  183. for my $ind_file (@fasta_files) {
  184. $file_num++;
  185. # Get root file name
  186. if ($ind_file =~ m/(.*)\.fasta$/ ) {
  187. $name_root = "$1";
  188. }
  189. elsif ($ind_file =~ m/(.*)\.fa$/ ) {
  190. $name_root = "$1";
  191. }
  192. else {
  193. $name_root = "UNDEFINED";
  194. }
  195. # The following added for temp work with gff output
  196. # 09/28/2007
  197. # if ($file_num == 5) {exit;}
  198. # print "Processing: $name_root\n";
  199. #-----------------------------+
  200. # CREATE ROOT NAME DIR |
  201. #-----------------------------+
  202. my $name_root_dir = $outdir.$name_root."/";
  203. unless (-e $name_root_dir) {
  204. mkdir $name_root_dir ||
  205. die "Could not create dir:\n$name_root_dir\n"
  206. }
  207. #-----------------------------+
  208. # CREATE FIND_LTR OUTDIR |
  209. #-----------------------------+
  210. # Dir to hold gene prediction output from local software
  211. my $findltr_dir = $name_root_dir."find_ltr/";
  212. unless (-e $findltr_dir) {
  213. mkdir $findltr_dir ||
  214. die "Could not create genscan out dir:\n$findltr_dir\n";
  215. }
  216. #-----------------------------+
  217. # CREATE GFF OUTDIR |
  218. #-----------------------------+
  219. if ($do_gff_convert) {
  220. $gff_dir = $name_root_dir."gff/";
  221. unless (-e $gff_dir) {
  222. mkdir $gff_dir ||
  223. die "Could not create genscan out dir:\n$gff_dir\n";
  224. }
  225. }
  226. #-----------------------------------------------------------+
  227. # RUN find_ltr.pl FOR EACH SET OF PARAM VALS IN CONFIG FILE |
  228. #-----------------------------------------------------------+
  229. for ($i=0; $i<$num_par_sets; $i++) {
  230. # ASSUME THAT A CONFIG FILE IS USED
  231. # OTHERWISE COULD JUST USE DEFAULT VALS
  232. $proc_num++;
  233. # Load array vals to usefull short names
  234. my $fl_suffix = $fl_params[$i][0]; # Name of the parameter set
  235. my $fl_min_mem = $fl_params[$i][1];
  236. my $fl_min_mem_dist = $fl_params[$i][2];
  237. my $fl_max_mem_dist = $fl_params[$i][3];
  238. my $fl_max_mem_gap = $fl_params[$i][4];
  239. my $fl_min_ltr = $fl_params[$i][5];
  240. my $fl_max_ltr = $fl_params[$i][6];
  241. my $fl_range_bin = $fl_params[$i][7];
  242. my $fl_min_orf = $fl_params[$i][8];
  243. my $fl_e_val = $fl_params[$i][9];
  244. # Show processing information
  245. print "Processing: $name_root $fl_suffix\n";
  246. # The following name will need to be copied from the default
  247. # named output from find_ltr
  248. my $fl_inseqpath = $indir.$ind_file;
  249. my $fl_ltrpos_out = $fl_inseqpath.".ltrpos";
  250. my $fl_out_copy = $findltr_dir.$name_root."_findltr_".$fl_suffix.".txt";
  251. my $fl_ltrseq_out = $fl_inseqpath.".ltrseq";
  252. my $fl_ltrseq_out_cp = $findltr_dir.$name_root."_findltr_".
  253. $fl_suffix.".ltrseq";
  254. if ($do_gff_convert) {
  255. $fl_gff_outpath = $gff_dir.$name_root."_findltr_".$fl_suffix.".gff";
  256. }
  257. #-----------------------------+
  258. # RUN THE find_ltr.pl program |
  259. #-----------------------------+
  260. my $fl_cmd = $fl_path.
  261. " --seq ".$fl_inseqpath.
  262. " --min-mem ".$fl_min_mem.
  263. " --min-dist ".$fl_min_mem_dist.
  264. " --max-dist ".$fl_max_mem_dist.
  265. " --max-gap ".$fl_max_mem_gap.
  266. " --min-ltr ".$fl_min_ltr.
  267. " --max-ltr ".$fl_max_ltr.
  268. " --min-ltr ".$fl_min_ltr.
  269. " --range-bin ".$fl_range_bin.
  270. " --min-orf ".$fl_min_orf.
  271. " --e-val ".$fl_e_val;
  272. if ($verbose) {
  273. $fl_cmd = $fl_cmd." --verbose";
  274. }
  275. print "\n---------------------------------------+\n" if $verbose;
  276. print " Process $proc_num of $num_proc_total\n" if $verbose;
  277. print "---------------------------------------+\n" if $verbose;
  278. print STDERR "FL CMD: $fl_cmd\n\n" if $verbose;
  279. system ($fl_cmd) unless $do_test;
  280. #-----------------------------+
  281. # CONVERT OUTPUT TO GFF |
  282. #-----------------------------+
  283. if ( (-e $fl_ltrpos_out) && ($do_gff_convert)) {
  284. findltr2gff ( $fl_ltrpos_out, $fl_gff_outpath,
  285. 0, $name_root, $fl_suffix);
  286. }
  287. #-----------------------------+
  288. # MOVE RESULTS FILES |
  289. #-----------------------------+
  290. if (-e $fl_ltrpos_out) {
  291. $errmsg = "Could not move\n $fl_ltrpos_out to\n $fl_out_copy\n";
  292. move ($fl_ltrpos_out, $fl_out_copy)
  293. || print STDERR "\a$errmsg";
  294. }
  295. if ($fl_ltrseq_out) {
  296. $errmsg = "Could not move\n $fl_ltrseq_out to \n $fl_ltrseq_out_cp\n";
  297. move ($fl_ltrseq_out, $fl_ltrseq_out_cp )
  298. || print STDERR "\a$errmsg";
  299. }
  300. }
  301. } # End of for each ind_file in @fasta_files
  302. exit;
  303. #-----------------------------------------------------------+
  304. # SUBFUNCTIONS |
  305. #-----------------------------------------------------------+
  306. sub print_help {
  307. # Print requested help or exit.
  308. # Options are to just print the full
  309. my ($opt) = @_;
  310. my $usage = "USAGE:\n".
  311. "MyProg.pl -i InFile -o OutFile";
  312. my $args = "REQUIRED ARGUMENTS:\n".
  313. " --infile # Path to the input file\n".
  314. " --outfile # Path to the output file\n".
  315. "\n".
  316. "OPTIONS::\n".
  317. " --version # Show the program version\n".
  318. " --usage # Show program usage\n".
  319. " --help # Show this help message\n".
  320. " --man # Open full program manual\n".
  321. " --quiet # Run program with minimal output\n";
  322. if ($opt =~ "full") {
  323. print "\n$usage\n\n";
  324. print "$args\n\n";
  325. }
  326. else {
  327. print "\n$usage\n\n";
  328. }
  329. exit;
  330. }
  331. sub findltr2gff {
  332. #-----------------------------+
  333. # SUBFUNCTION VARS |
  334. #-----------------------------+
  335. # gff_suffix is the name appended to the end of the gff_source
  336. my ($findltr_in, $gff_out, $append_gff, $seqname, $gff_suffix) = @_;
  337. # find_ltr
  338. my $gff_source; #
  339. my $findltr_id; # Id as assigned from find_ltr.pl
  340. my $findltr_name; # Full name for the find_ltr prediction
  341. my $ltr5_start; # Start of the 5' LTR
  342. my $ltr5_end; # End of the 5' LTR
  343. my $ltr5_len; # Length of the 5' LTR
  344. my $ltr3_start; # Start of the 3' LTR
  345. my $ltr3_end; # End of the 3' LTR
  346. my $ltr3_len; # Length of the 3' LTR
  347. my $el_len; # Length of the entire element
  348. my $mid_start; # Start of the LTR Mid region
  349. my $mid_end; # End of the LTR Mid region
  350. my $ltr_similarity; # Percent similarity between LTRs
  351. my $ltr_strand; # Strand of the LTR
  352. my @in_split = (); # Split of the infile line
  353. my $num_in; # Number of split vars in the infile
  354. # Initialize Counters
  355. my $findltr_num = 0; # ID Number of putatitve LTR retro
  356. #-----------------------------+
  357. # OPEN FILES |
  358. #-----------------------------+
  359. open (INFILE, "<$findltr_in") ||
  360. die "Can not open input file:\n$findltr_in\n";
  361. if ($append_gff) {
  362. open (GFFOUT, ">>$gff_out") ||
  363. die "Could not open output file for appending\n$gff_out\n";
  364. }
  365. else {
  366. open (GFFOUT, ">$gff_out") ||
  367. die "Could not open output file for output\n$gff_out\n";
  368. } # End of if append_gff
  369. #-----------------------------+
  370. # PROCESS INFILE |
  371. #-----------------------------+
  372. while (<INFILE>) {
  373. chomp;
  374. my @in_split = split;
  375. my $num_in = @in_split;
  376. # Load split data to vars if expected number of columns found
  377. if ($num_in == 10) {
  378. $findltr_num++;
  379. $findltr_id = $in_split[0];
  380. $ltr5_start = $in_split[1];
  381. $ltr5_end = $in_split[2];
  382. $ltr3_start = $in_split[3];
  383. $ltr3_end = $in_split[4];
  384. $ltr_strand = $in_split[5];
  385. $ltr5_len = $in_split[6];
  386. $ltr3_len = $in_split[7];
  387. $el_len = $in_split[8];
  388. $ltr_similarity = $in_split[9];
  389. $mid_start = $ltr5_end + 1;
  390. $mid_end = $ltr3_start - 1;
  391. $findltr_name = $seqname."_findltr_"."".$findltr_id;
  392. $gff_source = "find_ltr:".$gff_suffix;
  393. #-----------------------------+
  394. # PRINT GFF OUTPUT |
  395. #-----------------------------+
  396. # Data type follows SONG
  397. # http://song.cvs.sourceforge.net/*checkout*/song/ontology/so.obo
  398. # Full span of LTR Retrotransposon
  399. print GFFOUT "$seqname\t". # Name of sequence
  400. "$gff_source\t". # Source
  401. "LTR_retrotransposon\t".# Features, exon for Apollo
  402. "$ltr5_start\t". # Feature start
  403. "$ltr3_end\t". # Feature end
  404. ".\t". # Score, Could use $ltr_similarity
  405. "$ltr_strand\t". # Strand
  406. ".\t". # Frame
  407. "$findltr_name\n"; # Features (name)
  408. # 5'LTR
  409. print GFFOUT "$seqname\t". # Name of sequence
  410. "$gff_source\t". # Source
  411. "five_prime_LTR\t". # Features, exon for Apollo
  412. "$ltr5_start\t". # Feature start
  413. "$ltr5_end\t". # Feature end
  414. ".\t". # Score, Could use $ltr_similarity
  415. "$ltr_strand\t". # Strand
  416. ".\t". # Frame
  417. "$findltr_name\n"; # Features (name)
  418. # # MID
  419. # # This is not a SONG complient feature type name
  420. # print GFFOUT "$seqname\t". # Name of sequence
  421. # "$gff_source\t". # Source
  422. # "mid\t". # Features, exon for Apollo
  423. # "$mid_start\t". # Feature start
  424. # "$mid_end\t". # Feature end
  425. # ".\t". # Score, Could use $ltr_similarity
  426. # "$ltr_strand\t". # Strand
  427. # ".\t". # Frame
  428. # "$findltr_name\n"; # Features (name)
  429. # 3'LTR
  430. print GFFOUT "$seqname\t". # Name of sequence
  431. "$gff_source\t". # Source
  432. "three_prime_LTR\t". # Features, exon for Apollo
  433. "$ltr3_start\t". # Feature start
  434. "$ltr3_end\t". # Feature end
  435. ".\t". # Score, Could use $ltr_similarity
  436. "$ltr_strand\t". # Strand
  437. ".\t". # Frame
  438. "$findltr_name\n"; # Features (name)
  439. } # End of if num_in is 10
  440. } # End of while INFILE
  441. } # End of findltr2gff
  442. =head1 NAME
  443. batch_findltr.pl - Run the find_ltr.pl program in batch mode.
  444. =head1 VERSION
  445. This documentation refers to program version $Rev: 248 $
  446. =head1 SYNOPSIS
  447. USAGE:
  448. batch_findltr.pl -i InFile -o OutFile -c Config.cfg [--gff]
  449. REQUIRED ARGUMENTS
  450. --indir # Path to the input directory of fasta files
  451. --outdir # Path to the base output directory
  452. --config # Config file containg batch_findltr.pl paramaters
  453. ADDITIONAL OPTIONS
  454. --gff # Produce a gff formatted output of the results
  455. --quiet # Run the program in quiet mode
  456. --verbose # Run the program with maximum output to STDERR
  457. ADDITIONAL PROGRAM INFORMATION
  458. --usage # Show basic program usage
  459. --help # Show program synopsis
  460. --version # Show program version and exit
  461. --man # Show the full program manual
  462. =head1 DESCRIPTION
  463. Runs the program find_ltr.pl in batch mode. This makes use of a modified
  464. version of the find_ltr.pl program that takes changes to the LTR finding
  465. parameters at the command line.
  466. =head1 COMMAND LINE ARGUMENTS
  467. =head2 Required Arguments
  468. =over 2
  469. =item -i,--indir
  470. Path of the input directory. This is the directory that contains all
  471. of the fasta files to anlayze. The fasta files should all end with
  472. the I<fasta> extension to recognized.
  473. =item -o,--outdir
  474. Path of the output directory. This is the base directory that will
  475. hold all of the batch_findltr.pl output
  476. =item -c, --config
  477. Path of the config file that contains the model options for running
  478. find_ltr. This config file is a white space delimited text file that
  479. should be in the following format.
  480. #---------------------------------------------------------------+
  481. #1 2 3 4 5 6 7 8 9 10 |
  482. #---------------------------------------------------------------+
  483. Def 40 1100 16000 40 100 1000 500 700 0.0000000001
  484. Alt 40 1100 1800 40 100 1000 500 400 0.00001
  485. More information about this file is available under configuration and
  486. environment heading below.
  487. =back
  488. =head2 Additional Options
  489. =over 2
  490. =item --fl-path
  491. Location of the find_ltr.pl program. This option can also be set in the
  492. users envrionment. See Configuration and Environment below.
  493. =item -q,--quiet
  494. Run the program with minimal output.
  495. =item -v, --verbose
  496. Run the program in verbose mode.
  497. =item --gff
  498. Produce gff formatted output of the results.
  499. =item --test
  500. Run the program in test mode. The find_ltr.pl program will not be run, but
  501. the location of source files, binaries, will be checked and the
  502. outupt directories will be created.
  503. =back
  504. =head2 Additional Program Information
  505. =over 2
  506. =item --usage
  507. Short overview of how to use program from command line.
  508. =item --help
  509. Show program usage with summary of options.
  510. =item --version
  511. Show program version.
  512. =item --man
  513. Show the full program manual. This uses the perldoc command to print the
  514. POD documentation for the program.
  515. =back
  516. =head1 DIAGNOSTICS
  517. The list of error messages that can be generated,
  518. explanation of the problem
  519. one or more causes
  520. suggested remedies
  521. list exit status associated with each error
  522. =head1 CONFIGURATION AND ENVIRONMENT
  523. B<FIND_LTR_PATH Environment>
  524. As an alternative to specifying the full path of the find_ltr program
  525. with the --fl-path option,
  526. the path of the find_ltr program can be specified in the users environment.
  527. For example in bash shell, add the following line to your .bashrc
  528. export FIND_LTR_PATH='/usr/local/genome/find_ltr.pl'
  529. assuming that the find_ltr.pl program is in the /usr/local/genome/
  530. directory. This allows the find_ltr.pl program location to be at
  531. any specific location .
  532. B<Configuartion File>
  533. The configuration file in batch_findltr.pl specifies the options for
  534. running the find_ltr.pl program. This is a white space delimited text
  535. file. All lines starting with the # symbol will be treated as comments.
  536. An example of a config file is below:
  537. #---------------------------------------------------------------+
  538. #1 2 3 4 5 6 7 8 9 10 |
  539. #---------------------------------------------------------------+
  540. Def 40 1100 16000 40 100 1000 500 700 0.0000000001
  541. Alt 40 1100 1800 40 100 1000 500 400 0.00001
  542. These 10 columns represents the following information:
  543. =over 2
  544. =item Col 1.
  545. Base_name for the parameter set. This set name will be used to
  546. name the output file, and will be added to the output of
  547. the gff output file. B<DO NOT INCLUDE SPACES IN NAMES>
  548. =item Col 2.
  549. Minimum Length MEM
  550. =item Col 3.
  551. Mimimum distance between MEMs
  552. =item Col 4.
  553. Maximum distance between MEMs
  554. =item Col 5.
  555. Maximu gap between MEMs
  556. =item Col 6.
  557. Minimum length of the LTR
  558. =item Col 7.
  559. Maximum length of the LTR
  560. =item Col 8.
  561. Range Bin
  562. =item Col 9.
  563. Minimum length of ORF
  564. =item Col 10.
  565. Mac E value of HMM Hit
  566. =back
  567. =head1 DEPENDENCIES
  568. B<find_ltr.pl>
  569. A modified version of the find_ltr.pl program is required.
  570. =head1 BUGS AND LIMITATIONS
  571. The batch_finltr.pl program requies a modified version of the batch_ltr.pl
  572. program that accepts parameters from the command line.
  573. =head1 LICENSE
  574. GNU LESSER GENERAL PUBLIC LICENSE
  575. http://www.gnu.org/licenses/lgpl.html
  576. =head1 AUTHOR
  577. James C. Estill E<lt>JamesEstill at gmail.comE<gt>
  578. =head1 HISTORY
  579. STARTED: 09/13/2007
  580. UPDATED: 09/14/2007
  581. VERSION: $Rev: 248 $
  582. =cut
  583. #-----------------------------------------------------------+
  584. # HISTORY |
  585. #-----------------------------------------------------------+
  586. # 09/13/2007
  587. # - Basic input and output working
  588. # 09/14/2007
  589. # - Added findltr2gff from cnv_findltr2gff.pl
  590. # 09/28/2007
  591. # - Making gff output type column SONG complient