Team:GO Paris-Saclay/Software

Software

Logiciel

Софт/ПО

bd hardware


Au départ, lorsque nous étions à la recherche d'une méthode de détection, nous étions confrontés à un choix entre Toeholds et crispr/cas. une partie de notre équipe a travaillé sur un logiciel pour les Toeholds lors du choix d'un système. Par conséquent, malgré le changement de sujet, nous avons décidé de publier ce code pour d'autres équipes, et avons également analysé les données pour l'équipe IGEM UParis_BME. Pour l'équipe UParis, nous avons évalué le choix des Toeholds pour leur système. Initialement, lors du développement du projet, nous avons créé un logiciel pour évaluer le croisement/liaison possible des microARN entre eux avant que la réaction ne se produise. En raison du fait que les microARN sont de petite taille, une telle liaison peut avoir un impact important sur la réponse globale. Nous avons estimé le niveau de chevauchements possibles dans deux situations - une version simplifiée avec des microARN linéaires et prenant en compte la structure secondaire. Malheureusement, nous n'avons pas pu utiliser l'estimation de la structure secondaire en raison d'un manque de puissance de calcul (environ 1 an). Ainsi, si vous disposez d'une puissance de calcul, vous pouvez tester notre programme sur vos microARN.

software 1


Initially, when we were in search of a detection method, we were faced with a choice between Toeholds and crispr / cas. part of our team worked on software for toeholds when choosing a system. Therefore, despite the change of topic, we decided to publish this code for other teams, and also analyzed the data for the IGEM UParis_BME team. For the UParis team, we evaluated the choice of Toeholds for their system. Initially, during the development of the project, we created Software to evaluate the possible crossing/binding of microRNAs with each other before the reaction occurs. Due to the fact that microRNAs are quite small in size, such binding can have a large impact on the overall response. We estimated the level of possible overlaps in two situations - a simplified version with linear microRNA and taking into account the secondary structure. Unfortunately, we could not use the secondary structure estimate due to a lack of computing power (about 1 year). Therefore, if you have computing power, you can test our program on your microRNAs.

software 1


Изначально, когда мы искали метод обнаружения, мы столкнулись с выбором между Toeholds и crispr / cas. Часть нашей команды работала над программным обеспечением для переключателей при выборе системы. Поэтому, несмотря на смену темы, мы решили опубликовать этот код для других команд, а также проанализировали данные для команды IGEM UParis_BME. Для команды UParis мы оценили выбор Toeholds для их системы. Первоначально, во время разработки проекта, мы создали программное обеспечение для оценки возможного пересечения / связывания микроРНК друг с другом до того, как произойдет реакция. Из-за того, что микроРНК довольно малы по размеру, такое связывание может иметь большое влияние на общий ответ. Мы оценили уровень возможных перекрытий в двух ситуациях - упрощенный вариант с линейной микроРНК и с учетом вторичной структуры. К сожалению, мы не смогли использовать оценку вторичной структуры из-за нехватки вычислительной мощности (около 1 года). Поэтому, если у вас есть вычислительные мощности, вы можете протестировать нашу программу на своих микроРНК.

software 1

Témoignage de l'équipe UParis_BME :

UParis_BME team testimony:

Откровение команды UParis_BME:

"GO_Paris_Saclay a utilisé les bibliothèques candidates pour détecter les microARN-21 et microARN-141 que nous avons utilisées pour notre cycle de preuve de concept en laboratoire humide. Initialement, nous avons envisagé de comparer les prédictions fournies par les collègues de Saclay avec les lectures de fluorescence produites par notre système bactérien. Malheureusement, nous n'avons pas eu suffisamment de temps pour faire fonctionner notre prototype, donc cette partie de la collaboration n'a pas pu avoir lieu. Néanmoins, cet algorithme peut être d'une grande aide pour les équipes qui conçoivent à l'avenir leurs bibliothèques de toehold switch."

“GO_Paris_Saclay took the candidate libraries for detecting microRNA-21 and microRNA-141 that we utilised for our wet lab proof-of-concept cycle. Initially, we considered comparing the predictions provided by the Saclay colleagues with the fluorescence readouts produced by our bacterial system. Unfortunately, we haven’t had sufficient time to make our prototype work, so this part of the collaboration could not happen. Nevertheless, this algorithm may provide great help for teams designing their toehold switch candidate libraries in the future.”

«GO_Paris_Saclay взяла библиотеки-кандидаты для обнаружения микроРНК-21 и микроРНК-141, которые мы использовали для нашего цикла проверки концепции мокрой лаборатории. Первоначально мы рассматривали возможность сравнения прогнозов, сделанных коллегами, с данными флуоресценции, полученными нашей бактериальной системой. К сожалению, у нас не было достаточно времени, чтобы заставить наш прототип работать, поэтому эта часть сотрудничества не состоялась. Тем не менее, этот алгоритм может оказаться большим подспорьем для команд, разрабатывающих свои библиотеки-кандидаты для опорных переключателей в будущем ».


Py-ARN: Comment ça marche?

Py-RNA: How does it work?

Py-RNA: Как это работает?

Py-arn est un ensemble de fonction de comparaison sur des ARNs. Il y a plusieurs méthodes pour l’utiliser, soit par la CLI (command line interface) , soit par une Web Ui (interface utilisateur web).

Que pouvez-vous faire avec ce programme ?
- comparer les deux miARN et visualiser leurs différences dans leurs séquences.

software 1

- comparer 2 miARN et voir à quel point ils peuvent se coller entre eux. L'output est le % de nucléotides qui peuvent se lier entre eux à une position donnée (toutes les positions sont testées d'abord linéairement).

software 2

software 3

software 4

- la même chose que précédement, sauf que cette fois le programme prend en compte que l'ARN peut faire des boucles et "sauter" des nucléotides. On rentre un seuil qu'on estime critique. Par exemple "ça serait problématique si 80% des nucléotides des 2 séquences étaient collées pour une position donnée" : on rentre seuil = 80% et le programme va chercher s' il existe des positions pour lesquelles ce seuil est atteint. Il s'arrêtera à la première position trouvée dans le cas des boucles pour une raison de temps. Cette option n'est disponible qu'en ligne de commande et comporte un problème fonctionnel que nous développeront plus tard.

- le software peut également calculer la probabilité qu'ont 2 miARN à former des structures tiges boucles. Dans le cadre d'un test diagnostique, ces structures pourraient éventuellement gêner notre système de détection. Le programme informatique nous donne les positions pour lesquelles le miARN testé à le plus de nucléotides appariés en tige boucle. Une visualisation de cette position est disponible sur l'interface graphique.

Le programme fonctionne également pour l'ARN et l'ADN en changeant la lettre du code. Il a une limite au niveau du temps de calcul pour la 3ème section, qui augmente selon que l'on augmente le seuil ou que l'on allonge la séquence.

Retrouvez notre software ici.

Le projet est open source. Des contributeurs pourront donc ajouter/améliorer des features qu’ils aimeraient avoir dans le logiciel.
Py-arn est simple d’utilisation. Vous choississez la méthode de comparaison et vous mettez vos 2 ARNs (ou 1), et vous obtenez le résultat avec la Web Ui.

Pour la CLI voici trois exemple =>
python position.py –sequence1=ARN1 –sequence2=ARN2
Le 1er fera simplement la comparaison par position et poussera l’analyse dans le fichier par défault se trouvant dans /tmp/log.txt.
python position.py –sequence1=ARN1 –sequence2=ARN2 –verbose
Le 2ème fera simplement la comparaison par position , poussera l’analyse dans le fichier par défault se trouvant dans /tmp/log.txt ainsi qu’en sortie standard (sera afficher dans l’écran du terminal).
python position.py –sequence1 = ARN1 –sequence2 = ARN2 –log_output = / path / output.txt
Le 3ème fera simplement la comparaison par position , poussera l’analyse dans le fichier donné par l’utilisateur. Le fichier s’appelera output.txt, sera crée dans /path/.
Les autres comparaison en CLI suivent la même logique.

Nos résultats

software results

Les pourcentages d'appareillement entre les nucléotides restent raisonnables. Notre software conforte notre choix de miARN et pourra être appliqué pour tester d'autres marqueurs miARN, notamment ceux révélés par notre modèle mathématiques.

Py-arn is a set of functions for comparing different RNAs. It can be used in several ways: through the CLI (command line interface) or through the web user interface (web user interface).

What can you do with it?
- compare two miRNAs and visualize their differences in their sequences.

software 1

- compare 2 miRNAs and see how much they can stick together. The result is the percentage of nucleotides that can bind together at a given position (first, all positions are checked linearly).

software 2

software 3

software 4

-additionally, as before, except that this time the program takes into account that RNA can form loops and "skip" nucleotides. We introduce a threshold that we consider critical. For example, “it would be problematic if 80% of the nucleotides of the two sequences were stuck in a given position”: we enter a threshold = 80%, and the program will search if there are positions for which this threshold is reached. It will stop at the first position it finds in case of temporary loops. This option is only available on the command line and has a functional problem that we will develop later.

- the software can also calculate the probability of 2 miRNAs forming hairpin structures. In a diagnostic test, these structures could potentially interfere with our detection system. The computer program gives us the positions for which the tested miRNA has the most nucleotides paired in a hairpin structure. A visualisation of this position is available on the graphical interface.

The program also works for RNA and DNA by changing the letter in the code. It has a limit on the level of computation time for the 3rd section, which increases depending on whether we increase the threshold or if we lengthen the sequence.

Here is the project link.

It is an open source project. This way, participants will be able to add / improve the features they would like to have in the software.
Py-arn is easy to use. You choose the comparison method, insert 2 RNA (or 1), click a button and get the result using the web interface.

For the CLI, here are three examples =>
python position.py –sequence1 = ARN1 –sequence2 = ARN2
The first will simply do the comparison by position and send the analysis to the default file located at /tmp/log.txt.
python position.py –sequence1 = ARN1 –sequence2 = ARN2 –verbose
The second will simply do the comparison by position, send the analysis to the default file located at /tmp/log.txt, and also to stdout (will be displayed on the terminal screen).
python position.py –sequence1 = ARN1 –sequence2 = ARN2 –log_output = / path / output.txt
The third will simply compare by position, place the analysis in a file provided by the user. The file will be named output.txt and it will be created in / path /.
The rest of the CLI comparisons follow the same logic.

Our results

software results

The percentages of pairing between nucleotides remain reasonable. Our software confirms our choice of miRNA and can be applied to test other miRNA markers, notably those revealed by our mathematical model.

Py-ARN - это набор функций сравнения различных РНК. Его можно использовать несколькими способами: через CLI (интерфейс командной строки) или через веб-интерфейс пользователя (веб-интерфейс пользователя).

Что вы можете сделать с ним?
- сравнить две miRNA и визуализировать их различия в их последовательностях.

software 1

- сравните 2 miRNA и посмотрите, насколько они могут склеиваться. Результатом является процент нуклеотидов, которые могут связываться вместе в заданном положении (сначала все позиции проверяются линейно).

software 2

software 3

software 4

-То же, что и раньше, за исключением того, что на этот раз программа учитывает, что РНК может образовывать петли и «пропускать» нуклеотиды. Мы вводим порог, который считаем критическим. Например, «было бы проблематично, если бы 80% нуклеотидов двух последовательностей застряли в данной позиции»: мы вводим порог = 80%, и программа будет искать, есть ли позиции, для которых этот порог достигнут. Он остановится в первой найденной позиции в случае возникновения петель по временной причине.

Программа также работает для РНК и ДНК, меняя букву в коде. Он имеет ограничение на уровень времени расчета для 3-го раздела, которое увеличивается в зависимости от того, увеличиваем ли мы порог или если мы удлиняем последовательность.

Ссылка на проект.

Проект с открытым исходным кодом. Таким образом, участники смогут добавлять / улучшать функции, которые они хотели бы иметь в программном обеспечении.
Py-arn прост в использовании. Вы выбираете метод сравнения, вставляете 2 РНК (или 1), нажимаете кнопку и получаете результат с помощью веб-интерфейса.

Для CLI вот три примера =>
python position.py –sequence1 = ARN1 –sequence2 = ARN2
Первый просто выполнит сравнение по позиции и отправит анализ в файл по умолчанию, расположенный в /tmp/log.txt.
python position.py –sequence1 = ARN1 –sequence2 = ARN2 –verbose
Второй просто выполнит сравнение по позиции, отправит анализ в файл по умолчанию, расположенный в /tmp/log.txt, а также в стандартный вывод (будет отображаться на экране терминала).
python position.py –sequence1 = ARN1 –sequence2 = ARN2 –log_output = / path / output.txt
Третий просто проведет сравнение по позиции, поместит анализ в файл, предоставленный пользователем. Файл будет называться output.txt, он будет создан в / path /.
Остальные сравнения CLI следуют той же логике.


Problème

Problem

Проблема

Le gros problème de py-ARN est la comparaison des loop. Il faut comparer toutes les possibilités de l’arn1 par rapport arn2.

Imaginons deux arns de taille 25 (donc deux arns avec 25 nucléotides), il faudrait alors comparer factorielle(25) X factorielle(25). Avec ce qui a été fait alors ça prendrais … quelques milliers d’années (même en utilisant des multi-threads) . Donc ça fait 1,551 121 004 333 098 598 4 X 1,551 121 004 333 098 598 4 possibilités. Humainement ce n’est pas possible.

The big problem with py-arn is the loop comparison. You have to compare all the possible overlaps of the two RNAs.

Let's imagine two RNAs of size 25 (hence two RNAs with 25 nucleotides), then it will be necessary to compare the factorial (25!) X factorial (25!). With what has been done, it would have taken ... several thousand years (even with multithreading). So this is 1.551 121 004 333 098 598 4 1.551 121 004 333 098 598 4 possibilities. Humanly, this is impossible.

Большая проблема с py-arn - это сравнение циклов. Вы должны сравнить все возможные перекрывания двух РНК.

Давайте представим две РНК размером 25 (следовательно, две РНК с 25 нуклеотидами), тогда необходимо будет сравнить факториал (25!) X факториал (25!). С тем, что было сделано, на это потребовалось бы ... несколько тысяч лет (даже при использовании многопоточности). Итак, это 1,551 121 004 333 098 598 4 X 1,551 121 004 333 098 598 4 возможностей. По-человечески это невозможно.


Amélioration

Improvement

Улучшение

Une piste d’amélioration serait d’utiliser des algos de type ACO (Ant Colony Optimization) pour la comparaison par loop. Cependant les algos ACO servent principalement à trouver un chemin, donc je ne suis pas sûr qu’un algo ACO puisse servir dans notre cas, mais c’est une piste à explorer.
Ou alors un algo spécialisé avec de l’exclusion par des regles que nous connaissons...

Une autre grosse amélioration serait d’ajouter une documentation API (via swagger par exemple). Il y a une API Rest dans py-arn quand on utilise une web UI. Dans le cas ou des utilisateurs veulent créer leur propre Interface Utilisateur, il faut qu’ils connaissent les paths, les parametres des endpoints, le format de réponse.

Ce qui serait idéal pour les développeurs serait d’ajouter un Dockerfile. Un dockerfile est une image à un instant d’un service, logiciel, executables très utilisé en informatique. Il permet d’instancier rapidement un service au sein d’un groupe de service (cluster).

Dernière amélioration serait de faire 2 services web, un pour l’API Rest, l’autre pour le Web Ui. Cela permet de différencier les deux services pour pouvoir les installer sur deux serveur différents.

One way to improve might be to use algorithms like ACO (Ant Colony Optimization) to compare cycles. However, the ACO algorithms are mainly used for pathfinding, so I'm not sure if the ACO algorithm can be used in our case, but this is a trail worth exploring.
Or a specialized algorithm with an exception according to the rules we know...

Another big improvement would be to add API documentation (e.g. via swagger). Py-arn has a Rest API when using the web interface. If users want to create their own user interface, they need to know the paths, endpoint parameters, and response format.

It would be ideal for developers to add a Dockerfile. Dockerfile is an instant image of a service, software, executable files widely used in computing. This allows you to quickly create an instance of a service in a service group (cluster).

The final improvement would be to create two web services, one for the Rest API, the other for the web interface. This allows the two services to be distinguished so that they can be installed on two different servers.

Одним из путей улучшения может быть использование алгоритмов типа ACO (Ant Colony Optimization) для сравнения циклов. Однако алгоритмы ACO в основном используются для поиска пути, поэтому я не уверен, что алгоритм ACO можно использовать в нашем случае, но это след, который стоит изучить.
Или специализированный алгоритм с исключением по известным нам правилам ...

Еще одним большим улучшением было бы добавление документации API (например, через swagger). В py-ARN есть Rest API при использовании веб-интерфейса. Если пользователи хотят создать свой собственный пользовательский интерфейс, им необходимо знать пути, параметры конечной точки и формат ответа.

Для разработчиков было бы идеально добавить файл Dockerfile. Dockerfile - это мгновенный образ службы, программного обеспечения, исполняемых файлов, широко используемых в вычислительной технике. Это позволяет быстро создать экземпляр службы в группе служб (кластере).

Последним улучшением было бы создание двух веб-сервисов, один для Rest API, другой для веб-интерфейса. Это позволяет различать две службы, чтобы их можно было установить на двух разных серверах.