241 research outputs found

    Composable languages for bioinformatics: the NYoSh experiment

    Get PDF

    MetaR: simple, high-level languages for data analysis with the R ecosystem 2

    Get PDF
    ABSTRACT 11 Data analysis tools have become essential to the study of biology. Tools available today were constructed with layers of technology developed over decades. Here, we explain how some of the principles used to develop this technology are sub-optimal for the construction of data analysis tools for biologists. In contrast, we applied language workbench technology (LWT) to create a data analysis language, called MetaR, tailored for biologists with no programming experience, as well as expert bioinformaticians and statisticians. A key novelty of this approach is its ability to blend user interface with scripting in such a way that beginners and experts alike can analyze data productively in the same analysis platform. While presenting MetaR, we explain how a judicious use of LWT eliminates problems that have historically contributed to data analysis bottlenecks. These results show that language design with LWT can be a compelling approach for developing intelligent data analysis tools. [1958, 1978]). 21 In this manuscript, we discuss several drawbacks of encoding programs as text that we believe One question we were particularly interested in testing was whether we could create an analysis tool 29 that would blend the boundary between programming/scripting languages and graphical user interfaces. 30 Programming languages such as the R language Ihaka and Gentleman [1996] are frequently preferred for 31 data analysis by experts. They have so far been the most flexible and powerful tools for data analysis, but 32 require a steep learning curve. In contrast, beginners tend to prefer data analysis software with a graphical 33 user interface, which are easier to learn, but eventually are found to lack flexibility and extensibility. 34 We reasoned that blending these two types of interfaces into one tool could provide a simpler way for We found that LWT made it straightforward to develop a data analysis tool that blends the distinction 38 between graphical user interface and scripting. If implementation was straightforward, our design of a 39 novel type of analysis tool was an iterative process that benefited from frequent feedback from users of 40 the tool. In this manuscript, we describe the goals of the language, explain how the tool can be used, and 41 highlight the most innovative aspects of the language compared to other tools used for data analysis, such 42 as the R language Ihaka and Gentleman [1996] or electronic notebooks. 43 The initial focus of MetaR was on analysis of RNA-Seq data and the creation of heatmaps, but the 44 tool is general and can be readily extended to support a broad range of data analyses. For instance, we 45 have used MetaR to analyze data in a study of association between the allogenomics score and kidney 46 graft function Mesnard et al. [2015]. We chose to focus on the construction of heatmaps as a use case and 47 illustration for this study because this activity is of interest to many biologists who obtain high-throughput 48 data. 49 Interestingly, we found that both beginners and experts can benefit from blending user interfaces and 50 scripting. Beginners benefit because the MetaR user interface is much simpler to learn than the full R 51 programming language. Expert users benefit because they can develop high-level language elements 52 to simplify repetitive aspects of data analysis in ways that text-based programming languages cannot 53 achieve. 54 LANGUAGE WORKBENCH TECHNOLOGY PRIMER 55 Since many readers may not be familiar with LWT, this section briefly describes how this technology 56 differs from traditional text-based technology. 57 Text-based programming languages are implemented with compilers that internally convert the text 58 representation of the source code into an abstract syntax tree (AST), a data structure used when analyzing 59 and transforming programming languages into machine code. 60 In the MPS LW, the AST is also a central data structure, but the parsing elements of the compilers are an AST to disk is done using serialization (loading is conversely done via deserialization to memory AST 67 data structures). 68 The choice of serialization rather than encoding with text has a profound consequence. Serialization Benson and Campagne [2015]. In this manuscript, we extensively use language composition to extend the 73 R language and provide the ability to embed user interfaces into R programs. 74 Abstract Syntax Tree (AST) 7

    Prototypes of productivity tools for the jadescript programming language

    Get PDF
    Jadescript is an agent-oriented programming language built on top of JADE. So far, the focus of the development of the language was on design choices, on syntax refinements, and on the introduction of expressions and constructs for agent-related abstractions and tasks. In this paper, a proposal to achieve the crucial goal of making Jadescript suitable for professional use is presented. The success of Jadescript, as a solid language to build real-world agent-based software systems, is necessarily related to its effective integration with mainstream development tools. In this paper, some of the productivity tools developed to integrate Jadescript with a mainstream development environment are presented as a way to promote the successful adoption of the language towards the community of JADE users

    Extensible Languages for Flexible and Principled Domain Abstraction

    Get PDF
    Die meisten Programmiersprachen werden als Universalsprachen entworfen. Unabhängig von der zu entwickelnden Anwendung, stellen sie die gleichen Sprachfeatures und Sprachkonstrukte zur Verfügung. Solch universelle Sprachfeatures ignorieren jedoch die spezifischen Anforderungen, die viele Softwareprojekte mit sich bringen. Als Gegenkraft zu Universalsprachen fördern domänenspezifische Programmiersprachen, modellgetriebene Softwareentwicklung und sprachorientierte Programmierung die Verwendung von Domänenabstraktion, welche den Einsatz von domänenspezifischen Sprachfeatures und Sprachkonstrukten ermöglicht. Insbesondere erlaubt Domänenabstraktion Programmieren auf dem selben Abstraktionsniveau zu programmieren wie zu denken und vermeidet dadurch die Notwendigkeit Domänenkonzepte mit universalsprachlichen Features zu kodieren. Leider ermöglichen aktuelle Ansätze zur Domänenabstraktion nicht die Entfaltung ihres ganzen Potentials. Einerseits mangelt es den Ansätzen für interne domänenspezifische Sprachen an Flexibilität bezüglich der Syntax, statischer Analysen, und Werkzeugunterstützung, was das tatsächlich erreichte Abstraktionsniveau beschränkt. Andererseits mangelt es den Ansätzen für externe domänenspezifische Sprachen an wichtigen Prinzipien, wie beispielsweise modularem Schließen oder Komposition von Domänenabstraktionen, was die Anwendbarkeit dieser Ansätze in der Entwicklung größerer Softwaresysteme einschränkt. Wir verfolgen in der vorliegenden Doktorarbeit einen neuartigen Ansatz, welcher die Vorteile von internen und externen domänenspezifischen Sprachen vereint um flexible und prinzipientreue Domänenabstraktion zu unterstützen. Wir schlagen bibliotheksbasierte erweiterbare Programmiersprachen als Grundlage für Domänenabstraktion vor. In einer erweiterbaren Sprache kann Domänenabstraktion durch die Erweiterung der Sprache mit domänenspezifischer Syntax, statischer Analyse, und Werkzeugunterstützung erreicht werden . Dies ermöglicht Domänenabstraktionen die selbe Flexibilität wie externe domänenspezifische Sprachen. Um die Einhaltung üblicher Prinzipien zu gewährleisten, organisieren wir Spracherweiterungen als Bibliotheken und verwenden einfache Import-Anweisungen zur Aktivierung von Erweiterungen. Dies erlaubt modulares Schließen (durch die Inspektion der Import-Anweisungen), unterstützt die Komposition von Domänenabstraktionen (durch das Importieren mehrerer Erweiterungen), und ermöglicht die uniforme Selbstanwendbarkeit von Spracherweiterungen in der Entwicklung zukünftiger Erweiterungen (durch das Importieren von Erweiterungen in einer Erweiterungsdefinition). Die Organisation von Erweiterungen in Form von Bibliotheken ermöglicht Domänenabstraktionen die selbe Prinzipientreue wie interne domänenspezifische Sprachen. Wir haben die bibliotheksbasierte erweiterbare Programmiersprache SugarJ entworfen und implementiert. SugarJ Bibliotheken können Erweiterungen der Syntax, der statischen Analyse, und der Werkzeugunterstützung von SugarJ deklarieren. Eine syntaktische Erweiterung besteht dabei aus einer erweiterten Syntax und einer Transformation der erweiterten Syntax in die Basissyntax von SugarJ. Eine Erweiterung der Analyse testet Teile des abstrakten Syntaxbaums der aktuellen Datei und produziert eine Liste von Fehlern. Eine Erweiterung der Werkzeugunterstützung deklariert Dienste wie Syntaxfärbung oder Codevervollständigung für bestimmte Sprachkonstrukte. SugarJ Erweiterungen sind vollkommen selbstanwendbar: Eine erweiterte Syntax kann in eine Erweiterungsdefinition transformiert werden, eine erweiterte Analyse kann Erweiterungsdefinitionen testen, und eine erweiterte Werkzeugunterstützung kann Entwicklern beim Definieren von Erweiterungen assistieren. Um eine Quelldatei mit Erweiterungen zu verarbeiten, inspizieren der SugarJ Compiler und die SugarJ IDE die importierten Bibliotheken um die aktiven Erweiterungen zu bestimmen. Der Compiler und die IDE adaptieren den Parser, den Codegenerator, die Analyseroutine und die Werkzeugunterstützung der Quelldatei entsprechend der aktiven Erweiterungen. Wir beschreiben in der vorliegenden Doktorarbeit nicht nur das Design und die Implementierung von SugarJ, sondern berichten darüber hinaus über Erweiterungen unseres ursprünglich Designs. Insbesondere haben wir eine Generalisierung des SugarJ Compilers entworfen und implementiert, die neben Java alternative Basissprachen unterstützt. Wir haben diese Generalisierung verwendet um die bibliotheksbasierten erweiterbaren Programmiersprachen SugarHaskell, SugarProlog, und SugarFomega zu entwickeln. Weiterhin haben wir SugarJ ergänzt um polymorphe Domänenabstraktion und Kommunikationsintegrität zu unterstützen. Polymorphe Domänenabstraktion ermöglicht Programmierern mehrere Transformationen für die selbe domänenspezifische Syntax bereitzustellen. Dies erhöht die Flexibilität von SugarJ und unterstützt bekannte Szenarien aus der modellgetriebenen Entwicklung. Kommunikationsintegrität spezifiziert, dass die Komponenten eines Softwaresystems nur über explizite Kanäle kommunizieren dürfen. Im Kontext von Codegenerierung stellt dies eine interessante Eigenschaft dar, welche die Generierung von impliziten Modulabhängigkeiten untersagt. Wir haben Kommunikationsintegrität als weiteres Prinzip zu SugarJ hinzugefügt. Basierend auf SugarJ und zahlreicher Fallstudien argumentieren wir, dass flexible und prinzipientreue Domänenabstraktion ein skalierbares Programmiermodell für die Entwicklung komplexer Softwaresysteme darstellt

    Supermonads: one notion to bind them all

    Get PDF
    Several popular generalizations of monads have been implemented in Haskell. Unfortunately, because the shape of the associated type constructors do not match the standard Haskell monad interface, each such implementation provides its own type class and versions of associated library functions. Furthermore, simultaneous use of different monadic notions can be cumbersome as it in general is necessary to be explicit about which notion is used where. In this paper we introduce supermonads: an encoding of monadic notions that captures several different generalizations along with a version of the standard library of monadic functions that work uniformly with all of them. As standard Haskell type inference does not work for supermonads due to their generality, our supermonad implementation is accompanied with a language extension, in the form of a plugin for the Glasgow Haskell Compiler (GHC), that allows type inference for supermonads, obviating the need for manual annotations

    Web-based Integrated Development Environment for Event-Driven Applications

    Get PDF
    Event-driven programming is a popular methodology for the development of resource-constrained embedded systems. While it is a natural abstraction for applications that interface with the physical world, the disadvantage is that the control flow of a program is hidden in the maze of event handlers and call-back functions. TinyOS is a representative event-driven operating system, designed for wireless sensor networks, featuring a component-based architecture that promotes code reuse. In this paper, we present a web-based model-driven graphical design environment for TinyOS that visualizes the component hierarchy of an application, and captures its eventbased scheduling mechanism. In contrast with existing visual environments, our representation explicitly captures the control flow of the application through events and commands, which makes it easier to understand the program logic than studying the source code. The design environment supports two-way code generation: mapping the visual representation to TinyOS source code, as well as building visual models from existing sources

    Ontology engineering for simulation component reuse

    Get PDF
    Commercial-off-the-shelf (COTS) simulation packages (CSPs) are widely used in industry, although they have yet to operate across organizational boundaries. Reuse across organizations is restricted by the same semantic issues that restrict the inter-organizational use of web services. The current representations of web components are predominantly syntactic in nature lacking the fundamental semantic underpinning required to support discovery on the emerging semantic web. Semantic models, in the form of ontology, utilized by web service discovery and deployment architectures provide one approach to support simulation model reuse. Semantic interoperation is achieved through the use of simulation component ontologies to identify required components at varying levels of granularity (including both abstract and specialized components). Selected simulation components are loaded into a CSP, modified according to the requirements of the new model and executed. The paper presents the development of an ontology, connector software and web service discovery architecture. The ontology is extracted from simulation scenarios involving airport, restaurant and kitchen service suppliers. The ontology engineering framework and discovery architecture provide a novel approach to inter-organizational simulation, adopting a less intrusive interface between participants. Although specific to CSPs the work has wider implications for the simulation community

    An approach to build XML-based domain specific languages solutions for client-side web applications

    Full text link
    Domain-Specific Languages (DSLs) allow for the building of applications that ease the labour of both software engineers and domain experts thanks to the level of abstraction they provide. In cases where the domain is restricted to Client-Side Web Applications (CSWA), XML-based languages, frameworks and widgets are commonly combined in order to provide fast, robust and flexible solutions. This article presents an approach designed to create XML-based DSL solutions for CSWA that includes an evaluation engine, a programming model and a lightweight development environment. The approach is able to evaluate multiple XML-based DSL programs simultaneously to provide solutions to those Domain Specific Problems for CSWAs. To better demonstrate the capabilities and potential of this novel approach, we will employ a couple of case studies, namely Anisha and FeedPsi.This work has been partially supported by the DSVL-B2T research and development department from the B2T-Concept Company (http://www.b2tconcept.com/)
    • …
    corecore