BioLegato - PCD as a Language
From Bioinformatics.Org Wiki
Click here to go back to: BioLegato
Contents[hide] |
ldir.param vs. path
Currently makemnus.py uses a file called ldir.param to know where the local copies of the menus are contained.
With BioLegato, it would make more sense for us to include this functionality in the BL_MENUS environment variable. The paths for BL_MENUS can be separated by a ":" in unix or a ";" in windows (since BioLegato itself is platform independent).
Pros:
- Easier to maintain
- Does not depend on folder structure
- Extra functionality present by using a variable as opposed to a static file. An example would be to allow users to include personal menus
Cons:
Pros:
- Allows files to be restricted based on system
Cons:
- must be updated with any changes to directory structure or name
- must be updated whenever a new menu item is added
- does not have a detectable ability to support submenus
Pros:
- Allows files to be restricted based on system
- submenu support
- menu aliasing
Cons:
- must be updated with any changes to directory structure or name
- must be updated whenever a new menu item is added
Pros:
- easiest to learn
- all pros of menulist version 2
- able to get around any disadvantages of menulist version 2
Cons:
.blnames
Structure: CSV-based
Example:
DNARNA DNA/RNA Programs linux-* Phyl Phylogeny linux-intel,solaris-sparc,osx-x86_64
(order is implicit)
Pros:
- Simple format
- Items do not need to be added to the .blmenu file to be imported
- Allows renaming and system limiting for programs
- Easy to load on startup
- Allows menu files to be restricted based on system
- submenu support
- menu aliasing
Cons:
definitions right inside the .blitem file
Pros:
- Simple format
- Items do not need to be added to a file to be imported
- Allows renaming and system limiting for programs
- Allows menu files to be restricted based on system
- submenu support
- menu aliasing
Cons:
- requires the menu item to be fully parsed on startup
- Minor: can add a little extra parsing overhead because it can complicate the grammar a little
One time conversion vs. plugins
Should we convert all ACD/GDE/whatever files to PCD format:
- on the fly natively through plugins
- on startup using an external plugin (like readseq) to convert to PCD format
- one time conversion
natively
Pros:
- easy for the user
- can add menu items on the fly
- takes 2nd least tie to parse
Cons:
- adds weight to biolegato code
- limits API (must always be backward compatible to plugins)
like readseq
Pros:
- uses less resident memory
- can add menu items on the fly
- easy for the user
Cons:
- takes a little longer to parse
one time conversion - THE WINNER
Pros:
- uses no memory
- takes the least tie to parse
- makes biolegato's footprint "lighter"
Cons:
- must be run each time a new menu item that is not in PCD format is added
ONE TIME CONVERSION WAS THE WINNER FROM A DISCUSSION IN THE BIOINFORMATICS MEETING GROUP
CONSIDERATIONS
PCD Programs are obtained from:
- Conversion software applications (from GDE, ACD, etc) to PCD. These application will be developed for us.
- We are going to convert the existing options in BioLegato.
- Users have to use these programs to include new options in BioLegato from known formats or existing plugging (GDE, ACD, etc)
- Users who want to include new options in BioLegato which are not in a known format, they will have to write the program using the PCD, compile it (analyze syntax and semantics) and include the file in the Menu folder.
Software Applications that need to be done
- Conversions software applications
- Compiler: Syntax and Semantics Analyzer
- Parsing
How to use these Software Applications
- Conversion software applications
- To convert from other formats to PCD ==> only once for each new option to be included for us or for the users
- Compiler: Syntax and semantics Analyzer
- To analyze (looking for syntax or semantics errors) the programs converted by the Conversion program or typed by the user ==> only once time (repeating until there are not more errors)
- Parsing
- To create the window, to get the data, to execute the command ==> whenever the option in BioLegato is chosen.
PCD COMPILER
Compiler application: Lexical and Syntactic Analysis
Lexical Analysis
A Deterministic Finite Automaton is used to perform lexical analysis.
Syntactic Analysis
The LALR algorithm is used to perform syntactic analysis.
GOLD application
GOLD is designed to aid in the development of compilers, interpreters and translators while supporting multiple programming languages. To accomplish this goal, the system takes advantage of the LALR and DFA. GOLD is just a tool to help in the development of Compilers.
How this will be used
Where this will be used
- From the Command Line, passing as parameter the file to be Compile
- as an option in bioLegato, similar to JEMBOSS