WSTester updated to work plus hopefully all the other changes that need to go into...
[jabaws.git] / binaries / src / ViennaRNA / Progs / RNAparconv.c
diff --git a/binaries/src/ViennaRNA/Progs/RNAparconv.c b/binaries/src/ViennaRNA/Progs/RNAparconv.c
new file mode 100644 (file)
index 0000000..d30abe3
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+###################################
+# Access to RNAlib routines to    #
+# convert energy parameter files  #
+# from ViennaRNAPackage 1.8.4 to  #
+# 2.0 format                      #
+#                                 #
+# Ronny Lorenz                    #
+###################################
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <string.h>
+#include "utils.h"
+#include "convert_epars.h"
+#include "RNAparconv_cmdl.h"
+
+int main(int argc, char *argv[]){
+  struct  RNAparconv_args_info  args_info;
+  char                          *ifileName, *ofileName;
+  int                           i, silent;
+  unsigned int                  options;
+
+  ifileName = ofileName = NULL;
+  silent    = 0;
+  options   = VRNA_CONVERT_OUTPUT_ALL;
+
+  /*
+  #############################################
+  # check the command line parameters
+  #############################################
+  */
+  if(RNAparconv_cmdline_parser (argc, argv, &args_info) != 0) exit(1);
+
+  /* use input file */
+  if(args_info.input_given)             ifileName = strdup(args_info.input_arg);
+  /* use output file */
+  if(args_info.output_given)            ofileName = strdup(args_info.output_arg);
+  /* output without (special) hairpin energies + enthalpies */
+  if(args_info.without_HairpinE_given)  options &= ~(VRNA_CONVERT_OUTPUT_HP
+                                                    |VRNA_CONVERT_OUTPUT_SPECIAL_HP);
+  /* output without stacking energies + enthalpies */
+  if(args_info.without_StackE_given)    options &= ~VRNA_CONVERT_OUTPUT_STACK;
+  /* output without 5' dangle energies + enthalpies */
+  if(args_info.without_Dangle5_given)   options &= ~VRNA_CONVERT_OUTPUT_DANGLE5;
+  /* output without 3' dangle energies + enthalpies */
+  if(args_info.without_Dangle3_given)   options &= ~VRNA_CONVERT_OUTPUT_DANGLE3;
+  /* output without interior loop energies + enthalpies */
+  if(args_info.without_IntE_given)      options &= ~(VRNA_CONVERT_OUTPUT_NINIO
+                                                    |VRNA_CONVERT_OUTPUT_INT
+                                                    |VRNA_CONVERT_OUTPUT_INT_11
+                                                    |VRNA_CONVERT_OUTPUT_INT_21
+                                                    |VRNA_CONVERT_OUTPUT_INT_22);
+  /* output without bulge loop energies + enthalpies */
+  if(args_info.without_BulgeE_given)    options &= ~VRNA_CONVERT_OUTPUT_BULGE;
+  /* output without multi loop energies + enthalpies */
+  if(args_info.without_MultiE_given)    options &= ~VRNA_CONVERT_OUTPUT_ML;
+  /* output without misc energies + enthalpies */
+  if(args_info.without_Misc_given)      options &= ~VRNA_CONVERT_OUTPUT_MISC;
+  /* output without hairpin mismatch energies + enthalpies */
+  if(args_info.without_MismatchH_given) options &= ~VRNA_CONVERT_OUTPUT_MM_HP;
+  /* output without interior loop mismatch energies + enthalpies */
+  if(args_info.without_MismatchI_given) options &= ~(VRNA_CONVERT_OUTPUT_MM_INT
+                                                    |VRNA_CONVERT_OUTPUT_MM_INT_1N
+                                                    |VRNA_CONVERT_OUTPUT_MM_INT_23);
+  /* output without multi loop mismatch energies + enthalpies */
+  if(args_info.without_MismatchM_given) options &= ~VRNA_CONVERT_OUTPUT_MM_MULTI;
+  /* output without exterior loop mismatch energies + enthalpies */
+  if(args_info.without_MismatchE_given) options &= ~VRNA_CONVERT_OUTPUT_MM_EXT;
+
+  /* output given energy parameters only */
+  if(args_info.vanilla_given)           options |= VRNA_CONVERT_OUTPUT_VANILLA;
+
+  /* just dump Vienna 1.8.4 parameters in new format */
+  if(args_info.dump_given)              options |= VRNA_CONVERT_OUTPUT_DUMP;
+
+  /* file names given as unnamed option? */
+  for(i = 0; i < args_info.inputs_num; i++){
+    if(ifileName == NULL)       ifileName = strdup(args_info.inputs[i]);
+    else if(ofileName == NULL)  ofileName = strdup(args_info.inputs[i]);
+    else{
+      RNAparconv_cmdline_parser_print_help();
+      nrerror("unrecognized or too many parameter options given!");
+    }
+  }
+
+  /* be silent */
+  if(args_info.silent_given) silent = 1;
+
+  /* free allocated memory of command line data structure */
+  RNAparconv_cmdline_parser_free (&args_info);
+
+  /*
+  #############################################
+  # do something
+  #############################################
+  */
+
+  if(ifileName == NULL)
+    if(!(silent || (options & VRNA_CONVERT_OUTPUT_DUMP)))
+      fprintf(stdout, "Enter parameters:\n(Indicate last line of input parameters by typing \"# END\" or EOF\n\n");
+
+  convert_parameter_file(ifileName, ofileName, options);
+
+  return EXIT_SUCCESS;
+}
+