Skip to content

Implementation

Components

Convert-Pheno is a versatile toolkit composed of multiple components. At its core is a Perl module that functions as a node for both the command-line interface and the API. The Perl module can be used in Python with the included Python Binding that works out-of-the-box with the containerized version. The Web App is built on top of the command-line interface.

%%{init: {'theme':'neutral'}}%% graph TB subgraph "Perl" A[Module]--> B[CLI] A[Module]--> C[API] end subgraph "Python / JavaScript" B --> D[Web App UI] end subgraph "Python" A --> |Python Binding| E[Module] E --> F[API] end style A fill: #6495ED, stroke: #6495ED style B fill: #6495ED, stroke: #6495ED style C fill: #6495ED, stroke: #6495ED style D fill: #AFEEEE, stroke: #AFEEEE style E fill: #FFFF33, stroke: #FFFF33 style F fill: #FFFF33, stroke: #FFFF33
Diagram showing Convert-Pheno implementation

Which one should I use?

Most users find the CLI suitable for their needs. Begin by experimenting with the data in the Web App UI Playground.

Power users may want to check the module or the API version.

Software architecture

The core module is divided into various sub-modules. The main package, Convert::Pheno, handles class initialization and employs the Moo module along with Types::Standard for data validation. After validation, the user-selected method (e.g., pxf2bff) is executed, directing the data to the respective independent modules, each tailored for converting a specific input format.

Why Perl?

The choice of Perl as a language is due to its inherent speed in text processing and its use of sigils to distinguish data types within intricate data structures.