Skip to main content
  • Expression of Interest

    University of St Andrews

    My research work focuses on investigating advanced distributed data-driven frameworks, libraries and architectures, which aim to reduce the effort required to develop data science applications at scale, while ensuring reproducibility of results and enabling scientific software adoption, automation, and understability.

    During the last two years, my research has focused on developing new techniques and frameworks for enabling automatic Knowlege Extraction of Research Software Repositories. I have co-developed inspect4py [1][2] framework, which is a static code analysis framework designed to automatically extract the main features, metadata and documentation of Python code repositories.  The main goal of ths framework is to extract common code features and documentation from a Python code repository in order to ease its understanding.  Given an input folder with code, inspect4py uses abstract syntax trees and state of the art tools to find all functions, classes, tests, documentation, call graphs, asts, module dependencies and control flows within all code files in that repository. Using these findings, inspect4py infers different ways of invoking a software component. We have evaluated our framework on 95 annotated repositories, obtaining promising results for software type classification (over 95% F1-score ver 95% F1-score).  With inspect4py, we aim to ease the understandability and adoption of software repositories by other researchers and developers.

    Note, that this research has foucsed on Python code repositories, but this work could be extend  to other Programming Languages, as Java, R, C, etc. 

    [1] https://research-repository.st-andrews.ac.uk/handle/10023/25075

    [2]  https://github.com/SoftwareUnderstanding/inspect4py

    Currently, I am working on finding solutions for searching, finding and comparing software repositories. Basically, working towards calculating similarity of repositories as a whole. The key challenge here is to determine the right representation for the diverse repository features in a way that: (a) it captures all aspects of the available information, and (b) it is readily usable by ML algorithms. Therefore, using the available information extracted by inspect4py  (ASTS, control flow, call graphs, documentation, etc.), I am in the process of  test and evaluating different ML approaches to calculate respositories similarity. 

     

    {Empty}
    {Empty}