91 research outputs found

    Generating software tests to check for flaws and functionalities

    Get PDF
    Tese de mestrado, Engenharia Informática (Engenharia de Software) Universidade de Lisboa, Faculdade de Ciências, 2019O rápido crescimento da complexidade de software unido com a grande necessidade de software no dia a dia causou uma exigência para testar os mesmos de modo a conseguir garantir um certo nível de qualidade, funcionamento e segurança. Por exemplo, tanto o carro que conduzimos hoje como o frigorifico que usamos para manter a temperatura desejada dos nossos alimentos, requer software de tal complexidade que quando postos sobre alto stress, poderiam apresentar algum tipo de bug. No caso desse bug ser uma vulnerabilidade, e, por conseguinte, poder ser explorada, seria capaz de por vidas em perigo e mesmo causar danos financeiros no valor de milhões de euros. Essa vulnerabilidade conseguiria, por exemplo, criar a hipótese ao atacante de tomar controlo do carro ou, no caso do frigorifico, aumentar a temperatura fazendo com que a comida se estrague. Não obstante a isso, depois de essas vulnerabilidades terem sido descobertas, é necessário iniciar um processo de correção do software, custando tempo e dinheiro. A complexidade do software cresce quando é necessário criar variantes das aplicações a partir de diversos componentes de software, como acontece em sistemas embebidos. Tal complexidade dificulta o teste e a validação do software para as funcionalidades que foi desenhado, podendo aumentar também o número vulnerabilidades de segurança. Estas vulnerabilidades podem permanecer ocultas durante vários anos em qualquer programa, independentemente de quantos testes foram executados para tentar assegurar a sua qualidade e segurança. Isto é tanto devido à eficiência destes testes que podem ser de uma qualidade limitada, bem como ao curto tempo disponível para garantir a correta funcionalidade. Um atacante externo, ao contrário, possui tempo teoricamente ilimitado para explorar o software quando este já se encontra no mercado. Vulnerabilidades são a principal causa de problemas de segurança e o foco principal quando os atacantes estão a tentar explorar o sistema. Estes, podem também causar diversos tipos de danos ao sistema e aos stockholders da aplicação, como por exemplo o dono da aplicação e os utilizadores. Uma distinção importante é que nem todos os bugs são vulnerabilidades. Uma vulnerabilidade tem de ser explorada de modo a possibilitar a corrupção do comportamento normal do programa, levando a um estado erróneo deste. De modo a conseguir tomar partido de um pedaço de software, os atacantes externos necessitam apenas de conseguir encontrar uma vulnerabilidade. No entanto, os testes desenvolvidos pelos responsáveis pela qualidade de segurança têm de encontrar inúmeros. Como resultado disto, hoje em dia as companhias gastam recursos em termos de custo e de tempo para conseguirem melhorar o processo de verificação e validação de software, por forma a tentar garantir o nível de qualidade e segurança desejado em qualquer dos seus produtos. No entanto, como acima referido, os recursos e tempo são limitados nos testes, fazendo com que vários bugs e vulnerabilidades possam não ser detetados por estes testes, mantendo-se ainda nos produtos finais. Embora já existam ferramentas automáticas de validação de segurança, não existe nenhuma ferramenta que possibilite a reutilização de resultados de testes entre versões de aplicações, de modo a validar estas versões e variantes da maneira mais eficiente possível. Validação de Software é o processo de assegurar um certo nível de confiança, que o software corresponde às espectativas e necessidades do utilizador e funciona como é suposto, não tendo nenhuma incoerência de comportamento e tendo o menor número de bugs possível. Neste contexto, cada teste examina o comportamento do software em teste de modo a verificar todas as condições mencionadas anteriormente e contribui para aumentar a confiança no sistema em si. Normalmente, esta verificação é feita com conhecimento à priori do programa a ser testado. Isto, no entanto, é um processo muito lento e pode ser sujeito a erros humanos e suposições sobre o programa a ser testado, especialmente se forem efetuadas pela mesma pessoa que fez o programa em si. Existem várias técnicas para testar software de maneira rápida, automática e eficiente, como por exemplo fuzzers. Fuzzing é uma técnica popular para encontrar bugs de software onde o sistema a ser testado é corrido com vários inputs semivalidos gerados pelo fuzzer, isto é, inputs certos o suficiente para correr no programa, mas que podem gerar erros. Enquanto o programa está a ser submetido a todos os testes, é monitorizado na espectativa de encontrar bugs que façam o programa crashar devido ao input dado. Inicialmente, os fuzzers não tinham em consideração o programa a ser testado, tratando-o como uma caixa preta, não tendo qualquer conhecimento sobre o seu código. Assim, o foco era apenas na geração rápida de inputs aleatórios e a monitorização desses inputs na execução do programa. No entanto, estes poderiam levar muito tempo para encontrar bugs somente atingíveis após certas condições logicas serem satisfeitas, as quais são pouco prováveis de ser ativadas com inputs aleatórios. A fim de resolver esse problema, um segundo tipo de fuzzers foi desenvolvido, whitebox fuzzers (fuzzers de caixa branca), que utilizam inputs de formato conhecido de modo a executar de maneira simbólica o programa a ser testado, guardando qualquer condição lógica que esteja no caminho de execução de um input, para depois as resolver uma a uma e criar novos inputs a partir das soluções dessas condições. No entanto, a execução simbólica é bastante lenta e guardar as condições todas leva a uma explosão de condições a serem resolvidas perdendo muito tempo nelas. De modo a resolver estes problemas com o whitebox fuzzers (fuzzers de caixa branca), foram criados greybox fuzzers, uma mistura dos dois tipos de fuzzer descritos anteriormente que usa instrumentação de baixo peso para ter uma ideia da estrutura do programa sem necessitar analise previa causando muito tempo nessa instrumentalização, mas compensado com a cobertura devolvida. No entanto, não existe nenhuma ferramenta, ou fuzzer, que consiga usufruir de informação obtida de testes realizados a versões mais antigas de um dado software para melhorar os resultados dos testes de uma versão do mesmo software mais recente. Hoje em dia, dois produtos que partilham funcionalidades implementadas de maneira semelhante ou mesmo igual irão ser testadas individualmente, repetindo assim todos os testes que já foram realizados no outro programa. Isto representa, claramente, uma falta de eficiência, perdendo tempo e dinheiro em repetições de testes, enquanto outras funcionalidades ainda não foram testadas, onde provavelmente podem existir vulnerabilidades que continuam por não ser descobertas. Este trabalho propõe uma abordagem que permite testar variantes ainda não testadas a partir de resultados das que já foram avaliadas. A abordagem foi implementada na ferramenta PandoraFuzzer, a qual tem por base a aplicação de fuzzing American Fuzzy Lop (AFL), e foi validada com um conjunto de programas de diferentes versões. Os resultados experimentais mostraram que a ferramenta melhora os resultados do AFL. A primeira etapa consiste na compreensão das várias vulnerabilidades comuns em programas desenvolvidos em C/C++ e os modos mais comuns de detetar e corrigir tais vulnerabilidades. A segunda etapa deste projeto é a implementação e validação da ferramenta. Esta ferramenta vai ser construída sobre um Fuzzer guiado por cobertura já existente, AFL, e segue um princípio semelhante. A terceira etapa deste projeto consiste na avaliação da ferramenta em si, usando várias medidas de comparação e foi validada com um conjunto de programas de diferentes versões. Os resultados experimentais mostraram que a ferramenta melhora os resultados do AFL.Industrial products, like vehicles and trains, integrate embedded systems implementing diverse and complicated functionalities. Such functionalities are programmable by software containing a multitude of parameters necessary for their configuration, which have been increasing due to the market diversification and customer demand. However, the increasing functionality and complexity of such systems make the validation and testing of the software highly complex. The complexity inherent to software nowadays has a direct relationship with the rising number of vulnerabilities found in the software itself due to the increased attack surface. A vulnerability is defined as a weakness in the application that if exploitable can cause serious damages and great financial impact. Products with such variability need to be tested adequately, looking for security flaws to guarantee public safety and quality assurance of the application. While efficient automated testing systems already exist, such as fuzzing, no tool is able to use results of a previous testable programme to more efficiently test the next piece of software that shares certain functionalities. The objective of this dissertation is to implement such a tool that can ignore already covered functionalities that have been seen and tested before in a previously tested program and give more importance to block codes that have yet to been tested, detect security vulnerabilities and to avoid repeating work when it is not necessary, hence increasing the speed and the coverage in the new program. The approach was implemented in a tool based on the American Fuzzy Lop (AFL) fuzzing application and was validated with a set of programs of different versions. The experimental results showed that the tool can perform better than AFL

    Homing in Lipophyrs pholis: an evolutionary perspective

    Get PDF
    Tese de mestrado. Biologia (Biologia Evolutiva e do Desenvolvimento). Universidade de Lisboa, Faculdade de Ciências, 2014Lipophrys pholis é uma das espécies de blenídeos mais comuns da zona costeira Portuguesa. Residente em poças da zona intertidal, esta espécie apresenta um comportamento exploratório bastante desenvolvido durante o período de preia-mar, onde pode estar implícita a sua capacidade para memorizar características do território. Alguns autores sugerem que esta espécie de peixes não apresenta uma distribuição aleatória. Ao invés, selecionam ativamente determinadas poças de maré disponíveis na sua área vital. Durante a época de reprodução, que decorre de Outubro a Maio, os machos de L. pholis nidificam geralmente dentro de fendas e buracos, os quais podem ficar emersos por longos períodos de tempo durante o período baixa-mar. Em alternativa estes machos também podem nidificar sob pedras, onde em ambos os casos, as fêmeas, que não fornecem quaisquer cuidados parentais, depositam os ovos. Encontrar e escolher o ninho certo é crucial para os machos terem sucesso reprodutor pois são estes que prestam os cuidados parentais. Em alguns estudos é mencionado que a agregação de ninhos e a proximidade entre machos é um fator importante para a atração das fêmeas. Assim, o conhecimento prévio das características específicas de uma determinada área, ou seja, a localização de potenciais refúgios, locais de nidificação, bem como o conhecimento de rotas de fuga preferenciais, pode desempenhar um papel importante na sobrevivência destes peixes, os quais, estão sujeitos a elevada pressão predatória. A memorização da posição dos refúgios e dos ninhos bem como a direção das rotas de fuga preferenciais têm como referencial pistas visuais conspícuas do habitat. Estas pistas visuais conspícuas “landmarks” são integradas a nível cerebral num referencial de “landmarks”, formando mapas espaciais da área familiar que os peixes usam para uma constante atualização da sua localização. As pistas do terreno podem ser proximais, i.e. localizadas dentro das poças habitadas pelos peixes, ou distais, i.e. localizadas fora das poças. Experiências de orientação mostraram que os indivíduos desta espécie também conseguem determinar a direção da área de residência a partir de locais não familiares localizados a várias dezenas de quilômetros do local de captura. Com este trabalho pretende-se, através da análise de registos de presenças de L. pholis ao longo de três anos sucessivos, testar a capacidade de homing e mais concretamente testar a fidelidade dos machos aos locais de nidificação e aos ninhos em particular. O comportamento de homing é definido no seu sentido restrito como o regresso de um animal a um local espacialmente definido onde possui um abrigo. Um dos benefícios do homing é que assegura que o animal volta a uma área familiar, conferindo-lhe assim uma vantagem adaptativa (ver acima), apoiando a ideia de que a familiaridade é importante para a sobrevivência dos indivíduos. A maioria dos estudos sobre homing, em peixes intertidais rochosos, indica que embora os peixes regressem muitas vezes a um local específico, geralmente não estão exclusivamente vinculados a esse local. Assim, um peixe pode utilizar uma rede de locais ou abrigos, mais ou menos desenvolvida, que visita regularmente, sem estar permanentemente ligado a nenhum deles. Em L. pholis, e considerando que se trata de uma espécie aparentemente não-migratória, questiona-se qual será a funcionalidade de um sistema de navegação tão desenvolvido? Uma vez que se trata de uma população aberta a viver no seu habitat natural, e como não dispomos de meios que nos permitam registar os movimentos diários dos indivíduos, neste estudo utilizamos como uma aproximação de homing a capacidade que os machos adultos têm para retornar aos mesmos locais de nidificação após uma ausência mais ou menos prolongada durante o período não reprodutor. Assim, desde 2011 temos vindo sistematicamente a marcar e registar a presença de animais adultos de uma população de L. pholis estabelecida no Cabo Raso, Cascais, Portugal. No total, 211 animais adultos foram capturados e marcados individualmente com recurso a marcação electrónica por meio de cirurgia, libertados e seguidos periodicamente. Cento e quinze indivíduos foram recapturados considerando um intervalo mínimo de tempo nunca inferior a quinze dias após a data da sua marcação. A inspeção da área de estudo foi realizada duas vezes por mês durante os dias de maior amplitude de maré (i.e. no período de lua nova e de lua cheia). Durante as inspeções procurou-se ativamente registar a presença dos animais marcados. Indivíduos novos (i.e. adultos não marcados) e encontrados durante as inspeções, dentro da área de estudo, foram sendo sucessivamente marcados. A presença, posição relativa (coordenadas do local) e medidas corporais foram registadas para todos os peixes capturados. Para identificar os abrigos durante estes três anos, várias marcações metálicas foram inseridas na rocha com a ajuda de um berbequim. Ninhos espacialmente próximos uns dos outros foram agregados em secções. Foram ainda calculadas as distâncias entre as diversas secções de ninhos assim como as distâncias particulares entre os diversos ninhos. Estando descrito que esta espécie apresenta uma maior atividade exploratória durante a preia-mar do período diurno, assumiu-se que, se os peixes marcados, que apresentam posteriormente registo de recaptura, não foram amostrados é porque se encontram noutro local fora da área de amostragem. A análise dos registos de recaptura mostrou que os machos de L. pholis, em geral, passam significativamente mais tempo na área amostrada durante a época de reprodução do que fora da época de reprodução. O mesmo não se verifica nas fêmeas com uma presença homogénea dentro e fora da época de reprodução. Interessante é que 54% dos machos regressaram ao mesmo ninho em épocas de reprodução distintas e esse número aumenta para 83% se considerarmos o comportamento de fidelidade ao sector. Importante de mencionar é o facto de que as maiores distâncias entre recapturas observadas correspondem a indivíduos que foram capturados e marcados primeiramente em poças e posteriormente reencontrados em ninhos. O retorno dos machos ano após ano às mesmas áreas de nidificação, suporta a hipótese de que os peixes adquirem e armazenam vasta informação do meio envolvente utilizando-a posteriormente aquando do retorno em épocas de reprodução distintas. As observações resultantes deste trabalho indicam que os machos de L. pholis têm um comportamento de homing, mas mais importante é que representam um caso extremo deste comportamento, particularizando a sua fidelidade à área local até ao nível do ninho (ou seja, eles apresentam um comportamento de nest fidelity). Uma vez que nos é impossível seguir estes indivíduos devido a limitações técnicas (não existem dispositivos de GPS para estes animais), permanece em aberto a distância coberta nestas hipotéticas migrações verticais sazonais. Em conjunto, esses resultados suportam a ideia de que os mecanismos de navegação são característica geral dos vertebrados e que poderão ter evoluído a partir dum ancestral comum e manter-se nas diferentes classes: Peixes (e.g. salmões e enguias), anfíbios (e.g. salamandras), aves (e.g. pombo-correio), mamíferos (e.g. elefantes e morcegos) e répteis (e.g. tartarugas marinhas). Curiosamente, um artigo recentemente publicado em gobídeos, onde foram testadas as capacidades de memorização e aprendizagem, sugere que o comportamento de orientação/navegação está dependente da história de vida das espécies em questão. Numa arena artificial onde foram simulados os ciclos de maré, as espécies que habitam o intertidal rochoso, e contrariamente às espécies que habitam em areia aprendem rapidamente a memorizar a posição de poças o que lhes permitem evitar a sobre-exposição ao sol aquando do recuo da maré. Os autores sugerem que a ausência de necessidade das espécies que habitam em areia em procurar locais de abrigo contribuiu claramente para este resultado. Assim, dependendo do ambiente onde os animais estão inseridos e através de seleção natural os comportamentos de orientação/navegação poderão ser otimizados ou reduzidos.Lipophrys pholis is one of the most common species of blennies that inhabits the Portuguese rocky shores. Usually residing in intertidal rocky pools, they perform exploratory behavior during high tide, which may elicit their ability to memorize terrain characteristics. For a non-migrant species, it has excellent homing abilities. Despite the ability to memorize the position of refuges based on conspicuous visual cues, displacement experiments showed that they can determine the homeward direction even at unfamiliar places tens of kilometers away from their home range; they can perform true navigation. But, why does a non-migrant species need such complex navigational skills? To answer this question we have started tagging adult animals from a population of L. pholis at Cabo Raso, Cascais, Portugal in 2011. Adults were captured, tag individually with a microchip introduced into the abdominal cavity and subsequently released in the place where they were previously captured. During field inspections, performed twice a month (i.e. during days of new and full moon), we actively searched for the presence of tagged animals as well as for new animals to be tagged. The presence, relative position (spatial coordinates) and body measures were recorded for all fish. The findings showed that many males return to the same area and to particular nests (i.e. Nest-site fidelity) in successive breeding seasons supporting the hypothesis that fish acquire large information of the surroundings, which they may use when returning to a previous breeding area. Therefore, these findings suggest that navigational mechanisms are widespread in vertebrates and may have evolved from a common ancestor to the different classes. A recent publication on gobies suggested that depending on the habitat where species live, natural selection have evolved to maximize or reduce the use of the navigational skills

    Deep Reinforcement Learning Driven Applications Testing

    Get PDF
    Applications have become indispensable in our lives, and ensuring their correctness is now a critical issue. Automatic system test case generation can significantly improve the testing process for these applications, which has recently motivated researchers to work on this problem, defining various approaches. However, most state-of-the-art approaches automatically generate test cases leveraging symbolic execution or random exploration techniques. This led to techniques that lose efficiency when dealing with an increasing number of program constraints and become inapplicable when conditions are too challenging to solve or even to formulate. This Ph.D. thesis proposes addressing current techniques' limitations by exploiting Deep Reinforcement Learning. Deep Reinforcement Learning (Deep RL) is a machine learning technique that does not require a labeled training set as input since the learning process is guided by the positive or negative reward experienced during the tentative execution of a task. Hence, it can be used to dynamically learn how to build a test suite based on the feedback obtained during past successful or unsuccessful attempts. This dissertation presents three novel techniques that exploit this intuition: ARES, RONIN, and IFRIT. Since functional testing and security testing are complementary, this Ph.D. thesis explores both testing techniques using the same approach for test cases generation. ARES is a Deep RL approach for functional testing of Android apps. RONIN addresses the issue of generating exploits for a subset of Android ICC vulnerabilities. Subsequently, to better expose the bugs discovered by previous techniques, this thesis presents IFRIT, a focused testing approach capable of increasing the number of test cases that can reach a specific target (i.e., a precise section or statement of an application) and their diversity. IFRIT has the ultimate goal of exposing faults affecting the given program point

    Finding the shortest path to reproduce a failure found by TESTAR

    No full text
    TESTAR is a tool for automated testing via the GUI. It uses dynamic analysis during automated GUI exploration and generates the test sequences during the execution. TESTAR saves all kind of information about the tests in a Graph database that can be queried or traversed during or after the tests using a traversal language. Test sequences leading to a failure can be excessively long, making the root-cause analysis of the failure difficult. This paper proposes an initial approach to find the shortest path to reproduce an error found by TESTA

    Trajectory planning based on adaptive model predictive control: Study of the performance of an autonomous vehicle in critical highway scenarios

    Get PDF
    Increasing automation in automotive industry is an important contribution to overcome many of the major societal challenges. However, testing and validating a highly autonomous vehicle is one of the biggest obstacles to the deployment of such vehicles, since they rely on data-driven and real-time sensors, actuators, complex algorithms, machine learning systems, and powerful processors to execute software, and they must be proven to be reliable and safe. For this reason, the verification, validation and testing (VVT) of autonomous vehicles is gaining interest and attention among the scientific community and there has been a number of significant efforts in this field. VVT helps developers and testers to determine any hidden faults, increasing systems confidence in safety, security, functional analysis, and in the ability to integrate autonomous prototypes into existing road networks. Other stakeholders like higher-management, public authorities and the public are also crucial to complete the VTT process. As autonomous vehicles require hundreds of millions of kilometers of testing driven on public roads before vehicle certification, simulations are playing a key role as they allow the simulation tools to virtually test millions of real-life scenarios, increasing safety and reducing costs, time and the need for physical road tests. In this study, a literature review is conducted to classify approaches for the VVT and an existing simulation tool is used to implement an autonomous driving system. The system will be characterized from the point of view of its performance in some critical highway scenarios.O aumento da automação na indústria automotiva é uma importante contribuição para superar muitos dos principais desafios da sociedade. No entanto, testar e validar um veículo altamente autónomo é um dos maiores obstáculos para a implantação de tais veículos, uma vez que eles contam com sensores, atuadores, algoritmos complexos, sistemas de aprendizagem de máquina e processadores potentes para executar softwares em tempo real, e devem ser comprovadamente confiáveis e seguros. Por esta razão, a verificação, validação e teste (VVT) de veículos autónomos está a ganhar interesse e atenção entre a comunidade científica e tem havido uma série de esforços significativos neste campo. A VVT ajuda os desenvolvedores e testadores a determinar quaisquer falhas ocultas, aumentando a confiança dos sistemas na segurança, proteção, análise funcional e na capacidade de integrar protótipos autónomos em redes rodoviárias existentes. Outras partes interessadas, como a alta administração, autoridades públicas e o público também são cruciais para concluir o processo de VTT. Como os veículos autónomos exigem centenas de milhões de quilómetros de testes conduzidos em vias públicas antes da certificação do veículo, as simulações estão a desempenhar cada vez mais um papel fundamental, pois permitem que as ferramentas de simulação testem virtualmente milhões de cenários da vida real, aumentando a segurança e reduzindo custos, tempo e necessidade de testes físicos em estrada. Neste estudo, é realizada uma revisão da literatura para classificar abordagens para a VVT e uma ferramenta de simulação existente é usada para implementar um sistema de direção autónoma. O sistema é caracterizado do ponto de vista do seu desempenho em alguns cenários críticos de autoestrad

    Designing a Frequency Selective Scheduler for WiMAX using Genetic Algorithms

    Get PDF
    Projecte final de carrera fet en col.laboració amb University of Stuttgar

    Functional profiling of genome-scale experiments: new approaches leading to a systemic analysis

    Full text link
    Tesis doctoral inédita. Universidad Autónoma de Madrid, Facultad de Ciencias, Departamento de Biología Molecular. Fecha de lectura: 31-10-200

    Design and implementation of a platform for predicting pharmacological properties of molecules

    Get PDF
    Tese de mestrado, Bioinformática e Biologia Computacional, Universidade de Lisboa, Faculdade de Ciências, 2019O processo de descoberta e desenvolvimento de novos medicamentos prolonga-se por vários anos e implica o gasto de imensos recursos monetários. Como tal, vários métodos in silico são aplicados com o intuito de dimiuir os custos e tornar o processo mais eficiente. Estes métodos incluem triagem virtual, um processo pelo qual vastas coleções de compostos são examinadas para encontrar potencial terapêutico. QSAR (Quantitative Structure Activity Relationship) é uma das tecnologias utilizada em triagem virtual e em optimização de potencial farmacológico, em que a informação estrutural de ligandos conhecidos do alvo terapêutico é utilizada para prever a actividade biológica de um novo composto para com o alvo. Vários investigadores desenvolvem modelos de aprendizagem automática de QSAR para múltiplos alvos terapêuticos. Mas o seu uso está dependente do acesso aos mesmos e da facilidade em ter os modelos funcionais, o que pode ser complexo quando existem várias dependências ou quando o ambiente de desenvolvimento difere bastante do ambiente em que é usado. A aplicação ao qual este documento se refere foi desenvolvida para lidar com esta questão. Esta é uma plataforma centralizada onde investigadores podem aceder a vários modelos de QSAR, podendo testar os seus datasets para uma multitude de alvos terapêuticos. A aplicação permite usar identificadores moleculares como SMILES e InChI, e gere a sua integração em descritores moleculares para usar como input nos modelos. A plataforma pode ser acedida através de uma aplicação web com interface gráfica desenvolvida com o pacote Shiny para R e directamente através de uma REST API desenvolvida com o pacote flask-restful para Python. Toda a aplicação está modularizada através de teconologia de “contentores”, especificamente o Docker. O objectivo desta plataforma é divulgar o acesso aos modelos criados pela comunidade, condensando-os num só local e removendo a necessidade do utilizador de instalar ou parametrizar qualquer tipo de software. Fomentando assim o desenvolvimento de conhecimento e facilitando o processo de investigação.The drug discovery and design process is expensive, time-consuming and resource-intensive. Various in silico methods are used to make the process more efficient and productive. Methods such as Virtual Screening often take advantage of QSAR machine learning models to more easily pinpoint the most promising drug candidates, from large pools of compounds. QSAR, which means Quantitative Structure Activity Relationship, is a ligand-based method where structural information of known ligands of a specific target is used to predict the biological activity of another molecule against that target. They are also used to improve upon an existing molecule’s pharmacologic potential by elucidating the structural composition with desirable properties. Several researchers create and develop QSAR machine learning models for a variety of different therapeutic targets. However, their use is limited by lack of access to said models. Beyond access, there are often difficulties in using published software given the need to manage dependencies and replicating the development environment. To address this issue, the application documented here was designed and developed. In this centralized platform, researchers can access several QSAR machine learning models and test their own datasets for interaction with various therapeutic targets. The platform allows the use of widespread molecule identifiers as input, such as SMILES and InChI, handling the necessary integration into the appropriate molecular descriptors to be used in the model. The platform can be accessed through a Web Application with a full graphical user interface developed with the R package Shiny and through a REST API developed with the Flask Restful package for Python. The complete application is packaged up in container technology, specifically Docker. The main goal of this platform is to grant widespread access to the QSAR models developed by the scientific community, by concentrating them in a single location and removing the user’s need to install or set up software unfamiliar to them. This intends to incite knowledge creation and facilitate the research process
    corecore