Skip to content

Session 11: Practice 3

Juan Gonzalez-Gomez edited this page Mar 4, 2020 · 30 revisions

Session 11: Practice 3

  • Time: 2h
  • Date: Wednesday, March-04th-2020
  • Goals:
    • Practicing on the programming of servers
    • Develop our own server for working with DNA sequences

Contents

Introduction

The goal of this practice is to develop our own Seq server for working with DNA sequences. We have been working with DNA sequences for many sessions, but always in our local computer. Now we will make these calculations available to other applications on Internet

The first step is to define the set of rules and commands that the clients need to follow in order to access the services given by our server: we should define the protocol

Service name Request message Argument Response message Description
PING "PING" none "OK" Ping service for testing if the server is alive of not
GET "GET n" n: 0-4 A sequence Get the sequence n. It could be any valid sequence of any length. There are only 5 sequences, numbered from 0 to 4
INFO "INFO seq" seq: A sequence See format below Get information about the given sequence: total length, number of bases and their percentages
COMP "COMP seq" seq: A sequene The complement sequence Calculate the complement of the given sequence
REV "REV seq" seq: A sequence The reverse sequence Calculate the reverse of the given sequence
GENE "GENE name" Gene name. See format below The sequence of the gene Get the complete sequence of the given GENE

The response message returned by the INFO service should be like this example:

Sequence: ATAGACCAAACATGAGAGGCT
Total length: 21
A: 9 (42.9%)
C: 4 (19.0%)
G: 5 (23.8%)
T: 3 (14.3%)

The names of the genes that are valid when calling the GENE service are: U5, ADA, FRAT1, FXN, RNU6_269P

The server will be programmed step by step, following the guides given in the exercises

Localhost IP address

TODO

Exercises

We will implement the Seq Server and develop some example clients for testing it. While developing the server, we will use the printf and nc linux commands for sending messages to the server. But you can also do it from your own client, if you like

The server will be stored in the Seq-Server.py file inside folder P3

Exercise 1: PING

  • Filename: P3/Seq-Server.py

Let's start by programming a server that implements the PING command. The client will send a message with the word PING. Then, the server should parse the request message. If the PING command is detected, it should generate the response message "OK!\n". Also, it should print on the console the message "PING command!" in GREEN, and then the response message in white

For testing the server we use this command, executed from the command line:

printf "PING" | nc 127.0.0.1 8080

This is what we will see on the linux console:

And this is what we should get in the Server's console:

Exercise 2:

END of the session

The session is finished. Make sure, during this week, that everything in this list is checked!

  • You have all the items of the session 6 checked!
  • Your working repo contains the P1 Folder with the following files:
    • Ex1.py
    • Ex2.py
    • Ex3.py
    • Ex4.py
    • Ex5.py
    • Ex6.py
    • Ex7.py
    • server1.py
    • server2.py
    • Client0.py
  • All the previous files have been pushed to your remote Github repo

Author

Credits

  • Alvaro del Castillo. He designed and created the original content of this subject. Thanks a lot :-)

License

Links

Clone this wiki locally