views:

9

answers:

0

I have tried to do it myself--asking for help on specific functions, but the more I think about the possibilities, the more lost I get. I have some software (quantum chemistry packages). That reads input files and generates output files that are basically clumps of data of the form: Energy:[many spaces]6.3432 H 5 O 33 OHO 32 And weird stuff like that. I figure I can parse the output with perl scripts that search for words and lines followed by/sandwiched between strings.

But I would like to turn this project into an open source code (and save others the effort) so I am looking for the best way to store information containing: a) a template for the input file (it would look like a regular input file but with certain numbers replaced with variables/strings that would be evaluated/replaced with user input. b) a script or some metadata (I hope I am using that right) that contains information about what the parameters are in the template that need to be filled in, how to run the input file, what information to grab in the output file and how to grab it. As for extracting output--I figure I can make a bunch of scripts that do different types of parsing and refer to them like commands.

I know bits and pieces of lots of languages, but not a lot about any particular language (except Mathematica.) I have never used classes or objects, but I get the feeling I will have to for this project.

Also, perhaps there is a way to skip the step of actually saving input and output files and just communicate with the quantum chemistry software via metadata (there's that word again). The "metadata" would contain information like the title of the file its extension and its contents. I figure using this would be much faster than actually saving and then deleting input and output files. Speed is very much a factor because the main use of this program I want to develope is to write hundreds of input files (with different values of some parameter(s)) and read hundreds of output files and graph the results.

I know this is a large task that cannot be solved in one thread, but some pointers, languages to learn, and just a general starting point would mean a lot.

Thank you