-
Notifications
You must be signed in to change notification settings - Fork 7
Session 20: Final project specification
- Project tittle: Browsing human and vertebrates genome
- Date: Tuesday, April-14th-2020
- Deadline: May the 25th, 2020
Let's practice all the concepts we have learnt so far by doing a final project. You should develop a python application for getting information about the human and other vertebrates genome
The application user interface is a web page with forms for querying the genome database. We will use the database from the ensembl project. The API REST can be found in this link: Ensembl REST API Endpoints
It is important that you spend time understanding this API and all the information available before you begin to code. There are many details and definitions involved that are necessary for a complete understanding of all the services provided by your application
As an Engineer, is your job to understand and process all the available information. Initially you may be a little lost... but DON'T PANIC! The more you read and test, the more you will understand it. All the projects initially look complex and are difficult to start. But little by little, everything makes sense. Read, work and test
- The project will be developed in your github account
- It should be stored in your working 2019-2020-PNE-Practices repository in github
- It should be located inside the Final-Project folder
- Your application filename must be Final-Project/server.py. It must be listening on port 8080
- You can include any other additional files you need
The project is divided into three levels: Basic, medium and advanced. You decide were to stop. But, you can only access to the next level if the previous one is working perfectly
Important! For every level you should include a Test report: a text file in which you show the endpoints tested, the argument passed and the response from the server. This is a document that demonstrate that your endpoints are working. Only the endpoints shown in this report will be evaluated
Your application will be a web server that should provided some services using the HTTP protocol. The response should be an HTML page with the required information
- Maximum score: 6 points
- Requirements: You should have finished all the practices (P0 - P7) and have more than 6 weeks of activity on github
Endpoint | Parameters | Description |
---|---|---|
/listSpecies | limit (optional) | List the names of all the species available in the database. The limit parameter (optional) indicates the maximum number of species to show. If it is not specified, all the species will be listed |
/karyotype | specie (mandatory) | Return information about the karyotype of a specie: The name (usually a number) of all the chromosomes |
/chromosomeLength | specie, chromo | Return the Length of the chromosome named "chromo" of the given specie |
/ | none | Main endpoint. The server should return an HTML page with the forms for accessing to all the previous services |
If other endpoint different than the previous is introduced, the server should response with an HTML error page
These are examples of use of the previous endpoints
- http://localhost:8000/listSpecies?limit=10
- http://localhost:8000/listSpecies
- http://localhost:8000/karyotype?specie=mouse
- http://localhost:8000/chromosomeLength?specie=mouse&chromo=18
- Maximum score: 8 points
- Requirements: You should have finished the Basic level (with an score equal or greater than 5)
Endpoint | Parameters | Description |
---|---|---|
/geneSeq | gene | Return the sequence of a given human gene |
/geneInfo | gene | Return information about a human gene: start, end, Length, id and Chromose |
/geneCalc | gene | Performs some calculations on the given human gene and returns the total length and the percentage of all its bases |
/geneList | chromo, start, end | Return the names of the genes located in the chromosome "chromo" from the start to end positions |
Some endpoints are implemented directly using the REST API from ensamble but for others is neccesary to perform some calculations on the data
- http://localhost:8000/geneSeq?gene=FRAT1
- http://localhost:8000/geneInfo?gene=FRAT1
- http://localhost:8000/geneCalc?gene=FRAT1
- http://localhost:8000/geneList?chromo=1&start=0&end=30000
- Maximum score: 10 points
- Requirements: You should have finished the Medium level (with an score equal or greater than 7)
Convert the previous user API into a REST API. If the parameter json=1 is included, the server will create a json object with the requested data and send it to the client. When the json parameter is not present, the server response with the previous HTML pages (It should behaves the same as in the basic and medium levels).
In order to test the server, you should create a client that makes request to the server, process the received json file and print the information on the console
- Juan González-Gómez (Obijuan)
- Alvaro del Castillo. He designed and created the original content of this subject. Thanks a lot :-)
S0: Introduction
S1: Tools I
S2: Tools II
S3: Practicing with the tools
S8: Client-Server-1
S9: Client-Server-2
S10: Client-server-3
S11: Client-server-4
S12: HTTP protocol-1
S13: HTTP protocol-2
S14: HTTP module
S15: HTTP module
S16: HTML forms
S17: HTML forms