Skip to content

Instantly share code, notes, and snippets.

@kantale
Last active September 21, 2019 05:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kantale/993abe0fedb45703b0528abd7f048b42 to your computer and use it in GitHub Desktop.
Save kantale/993abe0fedb45703b0528abd7f048b42 to your computer and use it in GitHub Desktop.
Περιγραφή project για το μαθημα "Προγραμματισμός με τη γλώσσα python" 2018-2019

Εισαγωγή

Σήμερα υπάρχουν πάρα πολλές βάσεις δεδομένων που περιέχουν πολύτιμη πληροφορία για οποιαδήποτε έννοια της γενετικής. Κλασικά παραδείγματα είναι πληροφορίες για την ακολουθία ενός γονιδίου, τη θέση του στο γονιδιώματα, πόσα exons/introns έχει, κτλ. Η αναζήτηση σε μία τέτοια βάση δεδομένων γίνεται συνήθως με δύο τρόπους. Ο πρώτος είναι να πάμε σε κάποιο site (π.χ. http://www.ensembl.org) και μέσα από τη περιήγησή μας αλλά και τα πεδία που θα δώσουμε σε διάφορες φόρμες να βρούμε τη πληροφορία που θέλουμε. Ο δεύτερος τρόπος είναι να κάνουμε το ίδιο τρόπο προγραμματιστικά. Δηλαδή να φτιάξουμε ένα πρόγραμμα/script το οποίο θα "ρωτάει" μία βάση δεδομένων και θα τυπώνει το αποτέλεσμα.

Είναι προφανές ότι κάθε μέθοδος έχει τα θετικά και τα αρνητικά της. Το να αλληλεπιδρούμε με ένα site είναι αργό (και βαρετό) για επαναλαμβανόμενες ερωτήσεις ενώ ο προγραμματιστικός τρόπος απαιτεί τη γνώση κάποιας γλώσσας προγραμματισμού αλλά και τον τρόπο με τον οποία θα πρέπει να "μιλήσει" το πρόγραμμα με τη βάση. Ένας τρόπος να το διαπιστώσουμε αυτό είναι να ρωτήσουμε κάποιον έμπειρο βιολόγο κάτι απλό, π.χ: πόσα exons έχει το γονίδιο APOE; Μπορούμε στη συνέχεια να κάνουμε την ίδια ερώτηση σε έναν βιοπληροφορικό και να δούμε τον τρόπο που θα απαντήσουν στην ερώτηση. Με όποιον τρόπο επιλέξουν να απαντήσουν, θα διαπιστώσουμε (ίσως με έκπληξη) ότι μία τέτοια απλή ερώτηση απαιτεί αρκετή ώρα "ψαξίματος". Δεν θα ήταν ωραίο, λοιπόν, να υπήρχε κάποιο site το οποίο να μπορούσες να του θέσεις σε φυσική γλώσσα, απλές ερωτήσεις της γενετικής και αυτό να σου απαντούσε;

Αυτό λοιπόν είναι και το αντικείμενο του project! Θα πρέπει να φτιάξετε ένα πρόγραμμα το οποίο θα παίρνει ως είσοδο απλές ερωτήσεις γενετικής, να ψάχνει τις κατάλληλες βάσεις δεδομένων και να τυπώνει την απάντηση. Οι ερωτήσεις θα πρέπει να είναι στα Αγγλικά.

Οντότητες

Το πρόγραμμά σας καταρχήν θα πρέπει να μπορεί να αναγνωρίζει τις παρακάτων οντότητες από το κείμενο της ερώτησης:

  • Γονίδιο

    • Ένα από τα ονόματα που αναγνωρίζει επίσημα το HGNC. Μπορείτε να πάρετε τη λίστα όπως είχε περιγραφεί στην άσκηση 18, της 3ης σειράς. Το link είναι: ftp://ftp.ebi.ac.uk/pub/databases/genenames/new/tsv/locus_groups/protein-coding_gene.txt
  • Μετάγραφο (transcript)

    • RefSeq μετάγραφα. π.χ: NM_001350497.1 ή NM_001350497 . Λίστα με όλα τα μετάγραφα σε RefSeq, υπάρχει εδώ (RefSeq Reference Genome Annotation). Δεν είναι απαραίτητο να κατεβάσετε αυτό το αρχείο.
    • ENSEMBL μετάγραφα. Για παράδειγμα: ENST00000003084.
  • Μετάλλαξη: (σε αυτό το project θα ασχοληθούμε μόνο με Single Nucleotide Polymorphisms)

    • rs12345678 . dbSNP variants
    • chr1:1234567A>G . Δηλαδή στο χρωμόσωμα 1, στη θέση 1234567 το Α γίνεται G.
    • 1:1234567A>G
    • <Γονίδιο>:c.100A>G . Δηλαδή στη 100η coding θέση του γονιδίου το Α, γίνεται G.
    • <Μετάγραφο>:c.100A>G . Στη 100η coding θέση του μετάγραφου το Α, γίνεται G.
  • Θέση στο γονιδίωμα: (θα το αναφέρουμε απλά ως "Θέση")

    • 1:1234567 (Χρωμόσωμα 1, θέση 1234567)
    • chr1:1234567
    • chromosome 1, position 1234567
    • chromosome 1 and position 1234567
    • <Μετάλλαξη> , η θέση της μετάλλαξης στο γονιδίωμα

requests

H βιβλιοθήkη requests είναι ίσως η πιο δημοφιλής βιβλιοθήκη της python η οποία δεν είναι μέρος της "επίσημης" έκδοσης της python. Παρέχει πολύ απλούς μηχανισμούς για να έχετε πρόσβαση σε online πηγές δεδομένων. Για να την εγκαταστήσετε κάντε στο shell:

pip install requests 

Στη συνέχεια μπορείτε να τη κάνετε import στη python:

import requests

Μέσω της requests μπορείτε να χρησιμοποιείτε τους μηχανισμούς GET και POST που υποστηρίζει το HTTP πρωτόκολο για να ζητάτε και να παίρνετε δεδομένα από άλλα sites. Μπορείτε να δείτε και τις περσινές σημειώσεις για το πως μπορείτε να το κάνετε αυτό.

Βασικές πηγές πληροφορίας

Πριν ξεκινήσετε θα πρέπει να μελετήσετε τις παρακάτω πολύ βασικές πηγές βιολογικής πληροφορίας.

Το mygene.info είναι μία από τις πιο δημοφιλής, γρήγορη και σύγχρονη πηγή (μετα)μεταπληροφορία για γονίδια. Περιέχει πληροφορία για τη θέση, λειτουργία, μονοπάτια κτλ για όλα τα γονίδια από πολλούς οργανισμούς.

Υπάρχει αναλυτική περιγραφή στο documentation του mygene.info για το πως μπορούμε να κάνουμε GET requests για να πάρουμε διάφορες πληροφορίες για γονίδια.

Για παράδειγμα έστω ότι θέλουμε να βρούμε ποια είναι η θέση του γονιδίου TPMT. Μέσω της requests:

import requests

parameters = {
  'fields': 'genomic_pos',
  'species': 'human',
  'q' : 'symbol:tpmt',
}
url = 'http://mygene.info/v3/query'

response = requests.get(url, params=parameters)

Στη συνέχεια μπορούμε να δούμε αν όλα πήγαν καλά:

response.ok # Αυτό πρέπει να είναι True

Αφού επιβεβαιώσουμε ότι το response.ok είναι True, μπορούμε να πάρουμε το αποτέλεσμα σε μορφή json:

data = response.json()
print (data)
{'max_score': 88.12873,
 'took': 4,
 'total': 1,
 'hits': [{'_id': '7172',
   '_score': 88.12873,
   'genomic_pos': {'chr': '6',
    'end': 18155074,
    'ensemblgene': 'ENSG00000137364',
    'start': 18128311,
    'strand': -1}}]}

Βλέπουμε ότι υπάρχει ένα start και ένα end. Μπορούμε να τα προσπελάσουμε:

chromosome = data['hits'][0]['genomic_pos']['chr']
start = data['hits'][0]['genomic_pos']['start']
end = data['hits'][0]['genomic_pos']['end']
print (chromosome, start, pos)
# Τυπώνει: ('6', 18128311, 18155074)

Παρόμοια με το mygene.info υπάρχει και το myvariant.info το οποίο παρέχει ένα API για πληροφορίες για μεταλλάξεις. Η πρόσβαση γίνεται μέσω GET requests. Για παράδειγμα ποια είναι η θέση της μετάλλαξης rs58991260;

url = 'http://myvariant.info/v1/query'
parameters = {
    'q': 'rs58991260',
    'fields': 'dbsnp',
}

data = requests.get(url, params=parameters)
data.ok # True
chromsome = d['hits'][0]['dbsnp']['chrom']
start = d['hits'][0]['dbsnp']['hg19']['start']
end = d['hits'][0]['dbsnp']['hg19']['end']
print (chromosome, start, end)
## Τυπώνει: 6 218631822 218631822 
# To start με το end είναι το ίδιο αφού πρόκειται για SNP

Αν θέλετε μπορείτε να διαβάσετε και τη δημοσίευση:

Xin, Jiwen, et al. "High-performance web services for querying gene and variant annotation." Genome biology 17.1 (2016): 91.

GENCODE

Η GENCODE είναι μία προσπάθεια ώστε να καταγραφούν όλα τα "λειτουργικά" κομμάτια του ανθρώπινου γονιδιώματος. Χρησιμοποιώντας διάφορες μεθοδολογίες (αυτόματες και με ανθρώπινο curation), καταγράφει σε ποιες περιοχές υπάρχουν γονίδια και πως τα γoνίδια αυτά χωρίζονται σε υπο-περιοχές (introns, exons, CDS, stop codons, start codon, 5' UTR και 3'UTR).

Σε αυτό το ftp site: ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_29/ υπάρχουν όλα τα αρχεία με τη τελευταία έκδοση της GENCODE. Ειδικά σε αυτό το αρχείο: ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_29/_README.TXT περιγράφεται τι περιέχει το κάθε αρχείο. Εκεί διαβάζουμε:

1. gencode.vX.annotation.{gtf,gff3}.gz:
  Main file, gene annotation on reference chromosomes in GTF and GFF3 file formats.
  These are the main GENCODE gene annotation files. They contain annotation (genes, 
  transcripts, exons, start_codon, stop_codon, UTRs, CDS) on the reference chromosomes,
  which are chr1-22, X, Y, M in human and chr1-19, X, Y, M in mouse.

Οπότε για αυτό το project θα χρησιμοποιήσουμε το gencode.v29.annotation.gff3.gz το οποίο μπορούμε να κατεβάσουμε απο εδώ: ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_29/gencode.v29.annotation.gff3.gz Επίσης μπορείτε να μελετήσετε το format gff3 το οποίο χρησιμοποιεί η GENCODE. Η ίδια πληροφορία υπάρχει και σε ένα άλλο format το οποίο λέγεται GTF, αλλά το GFF3 θεωρείται λίγο πιο εξελιγμένο. Μπορείτε να διαβάσετε περισσότερα εδώ.

Ας κατεβάσουμε λοιπόν το αρχείο από το command line:

wget ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_29/gencode.v29.annotation.gff3.gz 

Μέσα σε αυτό το αρχείο βρίσκουμε αυτές τις γραμμές: (Εχω κρατήσει μόνο ένα συγκεκριμμένο μήκος για κάθε γραμμή)

chr1    ENSEMBL transcript      2586750 2591467 .       +       .       ID=ENST00000444521.6;Parent=ENSG00000157870.15;
chr1    ENSEMBL exon    2586750 2586948 .       +       .       ID=exon:ENST00000444521.6:1;Parent=ENST00000444521.6;
chr1    ENSEMBL CDS     2586796 2586948 .       +       0       ID=CDS:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL start_codon     2586796 2586798 .       +       0       ID=start_codon:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL exon    2587091 2587295 .       +       .       ID=exon:ENST00000444521.6:2;Parent=ENST00000444521.6;
chr1    ENSEMBL CDS     2587091 2587295 .       +       0       ID=CDS:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL exon    2587741 2587792 .       +       .       ID=exon:ENST00000444521.6:3;Parent=ENST00000444521.6;
chr1    ENSEMBL CDS     2587741 2587792 .       +       2       ID=CDS:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL exon    2588336 2588453 .       +       .       ID=exon:ENST00000444521.6:4;Parent=ENST00000444521.6;
chr1    ENSEMBL CDS     2588336 2588453 .       +       1       ID=CDS:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL exon    2588550 2588625 .       +       .       ID=exon:ENST00000444521.6:5;Parent=ENST00000444521.6;
chr1    ENSEMBL CDS     2588550 2588625 .       +       0       ID=CDS:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL exon    2588922 2589040 .       +       .       ID=exon:ENST00000444521.6:6;Parent=ENST00000444521.6;
chr1    ENSEMBL CDS     2588922 2589040 .       +       2       ID=CDS:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL exon    2589410 2591467 .       +       .       ID=exon:ENST00000444521.6:7;Parent=ENST00000444521.6;
chr1    ENSEMBL CDS     2589410 2589427 .       +       0       ID=CDS:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL stop_codon      2589425 2589427 .       +       0       ID=stop_codon:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL five_prime_UTR  2586750 2586795 .       +       .       ID=UTR5:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL three_prime_UTR 2589428 2591467 .       +       .       ID=UTR3:ENST00000444521.6;Parent=ENST00000444521.6;
chr1    ENSEMBL transcript      2586750 2591467 .       +       .       ID=ENST00000378425.9;Parent=ENSG00000157870.15;

Τι σημαίνουν όλα αυτά; Αυτά είναι τα δομικά στοιχεία μίας μεταγραφής (ENST00000444521.6) ενός γονιδίου (PRXL2B). Ένα γονίδιο μπορεί να μεταγραφεί με πολλούς τρόπους, ή αλλιώς σε πολλά μετάγραφα (transcripts). Στο παράδειγμά μας βλέπουμε τα δομικά στοιχεία του μετάγραφου ENST00000444521.6 . Ένα μετάγραφο περιέχει exons και introns. Το πρώτο exon αποτελείται από τη περιοχή 5'UTR και τη περιοχή CDS (CoDing Sequence). H περιοχή CDS του πρώτου exon αρχίζει από το start codon. Στα exons που δεν είναι πρώτα ή τελευταία η περιοχή CDS ταυτίζεται με τη περιοχή του exon. Το τελευταίο exon αποτελείται από το CDS και 3'UTR. To CDS του τελευταίου exon τελειώνει με το stop codon.

Παρακάτω υπάρχει ένα διάγραμμα με τη παραπάνω πληροφορία (powerpoint version). img

Άρα από το αρχείο gencode.v29.annotation.gff3.gz μπορούμε να ξέρουμε τι ακριβώς μπορεί να βρούμε σε οποιαδήποτε περιοχή του γoνιδιώματος.

Αν παρατηρήσουμε το αρχείο θα δούμε ένα βασικό πρόβλημα: Για κάθε γονίδιο υπάρχουν πολλά transcripts. Αυτό είναι γνωστό από τη βιολογία, ότι ένα γονίδιο μπορεί να έχει πολλά μετάγραφα λόγω ενός φαινομένου που ονομάζεται alternative splicing. Πως μπορώ να ξέρω εγώ ποιο είναι το πιο "βασικό"; Δηλαδή για πιο transcript θα απαντάει το πρόγραμμά μου; Για να το λύσουμε αυτό υπάρχουν δύο τρόποι.

Ο πρώτος είναι να συμβουλευτούμε τη βάση δεδομένων appris, η οποία έχει τη πληροφορία "πόσο βασικό" είναι ένα transcript για όλα τα γονίδια. Η appris έχει φτιάξει ένα σύστημα ιεραρχικοποιήσης των transcripts. Ιεραρχικοποιεί τα transcripts με 8 tags: PRINCIPAL:1, PRINCIPAL:2, PRINCIPAL:3, PRINCIPAL:4, PRINCIPAL:5, ALTERNATIVE:1, ALTERNATIVE:2 και MINOR. Τα transcripts τα οποία είναι πιο "πάνω" στην ιεραρχία είναι και τα πιο βασικά. Μπορείτε να κατεβάσετε και όλη τη βάση appris από αυτό το link.

Ο δεύτερος τρόπος είναι να χρησιμοποιήσετε το πεδίo tag, στο αρχείο από το GENCODE. Εκεί θα δείτε να υπάρχει σε κάποια transcripts, η πληροφορία tag=basic,appris_principal_2,CCD το οποίο αντιστιχεί και στη τιμή που έχει δόσει η appris. Αν ένα entry δεν έχει αυτή τη πληροφορία μπορείτε να το αγνοείται.

Μπορείτε να υλοποιήσετε οποιαδήποτε από τις δύο μεθόδους για να βρίσκετε το primary transcript ενός γονιδίου.

Ensembl Sequence Region

H Ensembl δίνει το παρακάτω API: https://rest.ensembl.org/documentation/info/sequence_region με το οποίο μπορείτε να ζητήσετε το γονιδίωμα αναφοράς για οποιαδήποτε περιοχή. Στο site αυτό δίνονται παραδείγματα καθώς και python 3 κώδικας.

Ensembl Variant Effect Predictor (VEP)

Επίσης η Ensembl δίνει το παρακάτω API: https://rest.ensembl.org/documentation/info/vep_hgvs_get . To API αυτό δίνει πληροφορίες για μεταλλάξεις. Όπως βλέπετε και από το documentation υποστηρίζει μεταλλάξεις όπως: <Γονίδιο>:c.100A>T και <Ensembl Transcript>:c.100A>G.

Αν έχετε βρει κάποιο άλλο API ή dataset το οποίο κάνει αυτές τις λειτουργίες εννοείται ότι μπορείτε να το χρησιμοποιήσετε.

Tasks

Τώρα που ξέρουμε πως να πάρουμε πληροφορία από το mygene.info, myvariant.info, το GENCODE, Ensembl Sequence Region και VEP, μπορούμε επιτέλους να απαντάμε στις πιο συχνές ερωτήσεις που έχουν οι βιολόγοι και βιοπληροφορικοί σχετικά με το ανθρώπινο γονιδίωμα. Σε αυτό το project λοιπόν, θα πρέπει να υλοποιήσετε ένα πρόγραμμα σε python το οποίο θα παίρνει σαν input μία ερώτηση στην Αγγλική γλώσσα και θα τυπώνει την απάντηση. Το πρόγραμμά σας θα πρέπει να τρέχει από command line και θα πρέπει να δέχεται μία παράμετρο: -q <question> ή --question <question>. Για παράδειγμα:

python project.py -q "What is the location of the gene TPMT?"

Στο οποίο θα τυπώνει κάτι σαν:

chr 6
18128311-18155074
6p22.3

Στη python μπορείτε να πάρετε ορίσματα από τη γραμμή εντολών χρησιμοποιώντας τη βιβλιοθήκη argparse. Για παράδειγμα για να διαβάσετε το όρισμα που δίνεται είτε με -q είτε με --question, ένας τρόπος είναι:

import argparse

if __name__ == '__main__':
   parser = argparse.ArgumentParser(description='The best python project ever')
   
   parser.add_argument('-q', '--question', help='Your question in english')

   args = parser.parse_args()
   question = args.question

   print ('The question asked is:', question)

Σε αυτό το post υπάρχει μία πολύ καλή εξήγηση του τι κάνει το if __name__ == '__main__':.

Εμφάνιση exon/intron map . Βαθμοί: 40/100

Όλα τα ερωτήματα θα έχουν είτε ένα γονίδιο, είτε ένα μετάγραφο, είτε μία μετάλλαξη είτε μία θέση. Αν δεν υπάρχει τίποτα από τα παραπάνω θα πρέπει να βγάζει ένα μήνυμα λάθους.

Στη περίπτωση που υπάρχει θα πρέπει να βγάζει ένα γράφημα με τα intron/exon maps όπως κωδικοποιείται στο GENCODE. Αυτό θα είναι στην ουσία ένα visualization του μετάγραφου (transcript). Αν είναι γονίδιο, θα παίρνετε το primary transcript (σύμφωνα με το appris). Γενικότερα αν δεν δηλώνεται πουθενά το μετάγραφο τότε εσείς θα παίρνετε το primary transcript.

Το πρόγραμμά σας λοιπόν για κάθε valid ερώτηση θα πρέπει να βγάζει ένα γράφημα με το intron/exon map του μετάγραφου. Τι είναι αυτό όμως;

Ένα παράδειγμα αμφιβόλου αισθητικής, που έφτιαξα, είναι εδώ:

img

Μπορείτε να βρείτε πολλά παρόμοια στα Internets αν γκουγκλάρετε "exon/intron map" και ψάξετε για images. Υπάρχει και σχετική συζήτηση στο biostars Προσέξτε ότι αν στην ερώτηση υπάρχει και μετάλλαξη, θα πρέπει να φαίνεται στο γράφημα.

Ερωτήματα . Βαθμοί: 55/100

Αφου βγάλει το γράφημα, το πρόγραμμά σας θα πρέπει να απαντάει στις ερωτήσεις. Παραθέτω τα ελάχιστα ερωτήματα που πρέπει να υποστηρίζει το πρόγραμμά σας (και στα οποία θα βαθμολογηθείτε). Προφανώς και μπορείτε να τα επεκτείνετε όπως θέλετε εσείς. Για κάθε ερώτημα παραθέτω τους βαθμούς που παίρνει (π.χ, 3/100), μερικές οδηγίες ή links για το πως μπορεί το πρόγραμμα σας να τις απαντήσει και κάποιες ενδεικτικές απαντήσεις.
Εσείς μπορείτε να ακολουθήσετε διαφορετικές προσεγγίσεις για να τις απαντήσετε και μπορούν οι απαντήσεις σας να έχουν διαφορετική μορφή (αρκεί φυσικά να υπάρχει η ζητούμενη πληροφορία).

  1. "Which gene is upstream to gene <Γονίδιο> ?". 3/100 Χρησιμοποιήστε το GENCODE.
NHLRC1

Επίσης: "Which gene is downstream?", "Which gene is closest?"

  1. "How many transcripts does the gene <Γονίδιο> have?" 3/100 Χρησιμοποιήστε το GENCODE ή το mygene.info link (ή και τα δύο..)
[Τυπώστε μία λίστα με όλα τα διαφορετικά μετάγραφα και αναφέρεται πιο είναι το primary]

Επίσης: "Which transcripts exist for gene <Γονίδιο> ?"

  1. "What is in <Θέση> ?" (Χρησιμοποιήστε το GENCODE) 3/100

Παράδειγμα απάντησης:

This the 100th nucleotide of the 2nd exon of gene PRXL2B for transcript ENST00000444521.6. The length of this exon is XXX . downstream element is an intron in XXX bases. upstream element is an intron in XXX bases.
[Συμπληρώστε κατάλληλες τιμές για τα XXX]
Προσθέστε την ακολουθία του γονιδιώματος αναφοράς για -50 και +50 θέσεις από τη <Θέση> 

Για να βρείτε την ακολουθία μίας περιοχής του γονιδιώματος, μπορείτε να χρησιμοποιήσετε το sequence_region service της Ensembl: https://rest.ensembl.org/documentation/info/sequence_region

Αν δεν υπάρχει γονίδιο σε αυτή τη θέση μπορείτε να τυπώσετε:

This is an intergenic region.
Upstream closest gene is TP73 upstream in XXX bases.
Downstream closest gene is YYY downstream in ZZZ bases

Αν είναι μετάλλαξη αναφέρεται και το reference, alternative, sequence change και protein change link

Π.χ: "What is the location of the mutations <Μετάλλαξη> ?" ή ""What is the location of <Μετάλλαξη> ?"

chromosome: 11
position: 66328095
reference: C
alternative: T
Type: SNP
Gene: ACTN3
Transcript NM_001104.3, sequence change: c.1729C>T, protein change: p.Ter577Ter
Transcript NM_003793.3, sequence change: c.*3309G>A, protein change: ---

Η πληροφορία για τα transcripts, sequence change και protein change, υπάρχει στη myvariant.info. Παράδειγμα screenshot output από το myvariant.info: https://imgur.com/GOUFskO

To myvariant.info μπορεί να επιστρέψει και πληροροφορίες για μια μετάλλαξη έχοντας μόνο της θέση της. Π.χ: http://myvariant.info/v1/query?q=chr3:8762685-8762685

Επίσης: "What is the reference and alternative of <Μετάλλαξη> ?", "What type of mutation is <Μετάλλαξη> ?"

  1. "What is the name of the gene <Γονίδιο> ?" 2/100 (Χρησιμοποιήστε το mygene.info) link link2

Παράδειγμα για TPMT:

thiopurine methyltransferase

Other names:
S-adenosyl-L-methionine:thiopurine S-methyltransferase
thiopurine S-methyltransferase
  1. "Where is the location of <Γονίδιο, μετάγραφο ή μετάλλαξη> ?" 3/100 link 1 link 2 link 3

Π.χ για γονίδιο:

chr 6
18128311-18155074
6p22.3

Επίσης: "What is the chromosome of <...> ?", "What is the size of <...> ?", "Where is the start of <...> ?", "Where is the end of <...> ?"

  1. "Which are the refseq transcripts of the gene <Γονίδιο> ?". 3/100 Μπορείτε να χρησιμoποιήσετε το ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_29/gencode.v29.metadata.RefSeq.gz όπου υπάρχει αντιστοιχία μεταξύ ENSEMBL και RefSeq transcripts. Εναλλακτικά μπορείτε να χρησιμοποιήστε το mygene.info link

Για παράδειγμα:

Which are the refseq transcripts of the gene TPMT?
[NM_000367, NM_001346817, NM_001346818]
[Also report which is the primary transcript. For example: NM_000367 is the primary]
  1. "How many exons does <Γονίδιο ή Μετάγραφο> have ?". 3/100 Μπορείτε να χρησιμοποιήσετε το GENCODE ή το mygene.info link. Αν είναι γονίδιο πάρτε το primary transcript.
[List the start/end positions for all exons]
Chromosome 9
[18128313, 18130780],
[18132132, 18132177],
[18133803, 18133889],
[18138962, 18139037],
[18139664, 18139717],
[18143595, 18143728],
[18147822, 18147915],
[18148987, 18149171],
[18155032, 18155169]

Επίσης: "What are the locations of the exons of the gene <Γονίδιο> ?"

  1. "Where is the location of the CDS of the <Γονίδιο ή Μετάγραφο> ?". 3/100 Επίσης GENCODE ή mygene.info (ίδιο link με πριν). Αν είναι <Γονίδιο> πάρτε το primary transcript
Chromosome 9
[18149127, 18130667]

Επίσης: "Where is the location of the start codon?", "Where is the location of end codon?", "Where is the location of 3' UTR?", "Where is the location of the 5' UTR?"

  1. "What is the primary transcript of the gene <Γονίδιο> ?" 3/100
Refseq: NM_000367
Ensembl: ENST00000419916
  1. "In which gene does <Μετάγραφο, Μετάλλαξη ή θέση> belong"? 3/100
  1. "In which pathways is the gene <Γονίδιο> involved ?" 2/100 link
According to KEGG:

Thiopurine Pathway, Pharmacokinetics/Pharmacodynamics

According to reactome:
Metabolism...
  1. "Which proteins are transcribed from the <Γονίδιο/Μετάγραφο> ?" 2/100 link
NM_000367.4 --> NP_000358.1 (primary transcript)
NM_001346817.1 --> NP_001333746.1
NM_001346818.1 --> NP_001333747.1 
  1. "What is the function of the gene <Γονίδιο> ?" 2/100 link
This gene TPMT encodes the enzyme that metabolizes thiopurine drugs via S-adenosyl-L-methionine as...

Επίσης: "What is the function of <Γονίδιο> ?"

  1. "Which organisms have a homologous gene to <Γονίδιο> ?" 3/100 link
Mus musculus
Rattus norvegicus
...

Από τα ids που επιστρέφει, μπορείτε να αναφέρετε μόνο αυτούς τους οργανισμούς:

Common name Taxonmy tax_id
human Homo sapiens 9606
mouse Mus musculus 10090
rat Rattus norvegicus 10116
fruitfly Drosophila melanogaster 7227
nematode Caenorhabditis elegans 6239
zebrafish Danio rerio 7955
thale-cress Arabidopsis thaliana 3702
frog Xenopus tropicalis 8364
pig Sus scrofa 9823
  1. "What type is the gene <Γονίδιο> ?" 2/100 link
protein-coding
  1. "What is the sequence in chromosome X between 1000000 and 1000100;" 3/100 Χρησιμοποιήστε το Ensembl Sequence Region link
CTGTAGAAACATTAGCCTGGCTAACAAGGTGAAACCCCATCTCTACTAACAATACAAAATATTGGTTGGGCGTGGTGGCGGGTGCTTGTAATCCCAGCTAC
  1. "What is the allele frequency of <Μετάλλαξη> ?" 3/100
Frequencies in 1000 genome are:
1000g 
af  0.02
afr 0.11
amr 0.003
eur 0.001

Frequency of G: 0.9784
Frequency of A: 0.02157

[Also report gnomAD frequencies]
  1. "With which conditions is the mutation <Μετάλλαξη> associated ? " 3/100 link
According to clinvar:

Tangier disease (TGD)
Familial High Density Lipoprotein Deficiency
  1. "What is the rs-id of <Μετάλλαξη> ?" 3/100 link
rs9282541
  1. "What is the effect of <Μετάλλαξη> ?" 3/100 link

According to:
snpeff: missense_variant
Polyphen: 0.01(benign)
SIFT: 0:0.135, 1:0.134

Ένα άλλο παράδειγμα "What is the effect of chr6:18149300T>A" link 1

According to:
snpeff: missense_variant
Polyphen: 0.144(benign)
SIFT: score: 0.017, pred: "D", converted_rankscore: 0.5116

Optional μπορείτε να πάρετε πληροφορία από το Variant Effect Predictor

sift_prediction: "deleterious"
sift_score:  0.01
polyphen_score:  0.448

Προαιρετικές εργασίες

Αυτά τα βήματα είναι προαιρετικά, αν θέλετε και έχετε όρεξη μπορείτε να τα κάνετε!

Fuzzy string match Βαθμός: +5/100

Προφανώς ο χρήστης μπορεί να κάνει ερωτήσεις που να μην είναι ακριβώς όπως αυτές που περιέγραψα αλλά να ζητάει όμως το ίδιο πράγμα. Επίσης μπορεί να μην είναι καν ερώτηση. Για παράδειγμα αντί να λέει: What is the position of the mutation rs1234567 ? να λέει: rs1234567 location. Θα πρέπει να υλοποιήσετε (ή να κατεβάσετε) συναρτήσεις που υλοποιούν fuzzy string matching. Ένα παράδειγμα είναι η fuzzywuzzy. Σε αυτή τη περίπτωση το πρόγραμμά σας θα πρέπει να βγάζει ένα μήνυμα όπως:

Your question did not match exactly any template.
Best guess question is...
[Απάντηση της best guess question]

intron/exon map with string representation Βαθμός: +10/100

Αντί για το γράφημα με το intron/exon map που σας ζητήθηκε, το πρόγραμμά σας θα πρέπει να βγάζει το ίδιο γράφημα αλλά σε text! Μπορείτε να "πάρετε" χαρακτήρες για τους πίνακες από της σελίδα της wikipedia για box drawing: Δηλαδή μία αναπαράσταση σε κείμενο του γραφήματος που έδωσα στο παράδειγμα είναι:

      Gene: PRXL2B
      Transcript: ENST00000444521.6

      ╔═════════════════════════════╗      ╱╲      ╔══════════════════════════════╗      ╱╲      ╔══════════════╗      ╱╲      ╔════════════════════════════╗
      ║            Exon 1           ║     ╱  ╲     ║            Exon 2            ║     ╱  ╲     ║    Exon 3    ║     ╱  ╲     ║            Exon 4          ║
      ╟──────────────┬──────────────╢    ╱    ╲    ╟──────────────┬───────────────╢    ╱    ╲    ╟──────────────╢    ╱    ╲    ╟──────────────┬─────────────╢
      ║    5'UTR     │    CDS       ║   ╱      ╲   ║              █               ║   ╱      ╲   ║              ║   ╱      ╲   ║     CDS      │    3'UTR    ║
      ╟──────────────┼──────────────╢  ╱        ╲  ║              █               ║  ╱        ╲  ║              ║  ╱        ╲  ╟──────────────┼─────────────╢
      ║              │              ║ ╱          ╲ ║              █               ║ ╱          ╲ ║              ║ ╱          ╲ ║              │             ║
      ║              │              ║╱            ╲║              █               ║╱            ╲║              ║╱            ╲║              │             ║
 123,456,789    123,456,890    123,458,895    123,459,345    123,459,445     123,459,545    123,460,765    123,460,865    123,461,865    123,462,543   123,462,865
                                                               **A>G**

Σημείωση: στο τερματικό μου εμφανίζει κάτι σαν χριστουγεννιάτικα δέντρα, στις συνδέσεις των exons (γραμματοσειρά: Andale Mono), οπότε λόγω των ημερών, είπα να το αφήσω..

Παράδοση Βαθμός: 5/100

  • Το project είναι το 60% του βαθμού.
  • To project θα πρέπει να υλοποιηθεί από ομάδες των 2 ομάδων.
  • Θα πρέπει να στείλετε την υλοποίησή σας μέχρι τις 28 Φεβρουαρίου 2019 στο kantale@ics.forth.gr.
  • Όπως και με τις ασκήσεις, μπορείτε να στείλετε μέρος της υλοποιήσης πριν την τελική ημερομηνία για.. σχολιασμό και βοήθεια. Δεν θα βαθμολογηθούν όμως αυτά. Θα υπάρξει ένας τελικός βαθμός στο τέλος.
  • Μαζί με τη παράδοση θα πρέπει να στείλετε και μία αναφορά (2-3 σελίδες), με τα βασικά στοιχεία της υλοποίησης, αρχιτεκτονική, παρατηρήσεις, αποτελέσματα, γραφήματα. 3/100
  • Επίσης θα γίνει ένα μίνι "συνέδριο" όπου κάθε ομάδα θα έχει 15-20 λεπτά περίπου για να παρουσιάσει την υλοποίησή της. 2/100
  • Όταν σταλθούν όλα τα projects θα στείλω και τη δική μου υλοποίηση.
  • Ίσως το project να φαίνεται δύσκολο επειδή έχει μεγάλη εκφώνηση. Δεν είναι. Η εκφώνηση είναι σαφώς μεγαλύτερη από την υλοποίηση..
@kantale
Copy link
Author

kantale commented Jul 25, 2019

Απορίες 1

Μια από τις οντότητες που πρέπει να αναγνωρίζει το πρόγραμμα είναι η θέση στο γονιδίωμα. Αυτή η θέση πρέπει να είναι μια βάση μόνο (όπως δείχνετε στα παραδείγματα) ή μπορεί να είναι και περιοχή (πχ chromosome 1 from 12345 to 23456);

Μία θέση μόνο.

Επίσης, ένα παράδειγμα θέσης που δίνετε είναι αυτό: <Μετάλλαξη> , η θέση της μετάλλαξης στο γονιδίωμα. Μπορείτε να μας δώσετε ένα πιο συγκεκριμένο παράδειγμα για να το καταλάβουμε καλύτερα;

Στην αρχή που περιγράφω τις οντότητες λέω ακριβώς τι εννόω με το <Μετάλλαξη>

Μετάλλαξη: (σε αυτό το project θα ασχοληθούμε μόνο με Single Nucleotide Polymorphisms)

  • rs12345678 . dbSNP variants
  • chr1:1234567A>G . Δηλαδή στο χρωμόσωμα 1, στη θέση 1234567 το Α γίνεται G.
  • 1:1234567A>G
  • <Γονίδιο>:c.100A>G . Δηλαδή στη 100η coding θέση του γονιδίου το Α, γίνεται G.
  • <Μετάγραφο>:c.100A>G . Στη 100η coding θέση του μετάγραφου το Α, γίνεται G.

Παράδειγμα: "What is the location of the mutations <Μετάλλαξη> ?" ή ""What is the location of <Μετάλλαξη> ?"
δηλαδή: What is the location of the mutation rs12345678?

Οι οντότητες των γονιδίων πρέπει να αναγνωρίζονται από το αρχείο protein-coding_gene.txt, το οποίο σε μας έχει 19218 γονίδια (τα οποία όλα κωδικοποιούν πρωτεινες). Δε θα αναγνωρίζει το πρόγραμμά μας δηλαδή γονίδια που δεν κωδικοποιούν πρωτεινες (πχ tRNA, rRNA);

όχι (εκτός αν θες έξτρα βαθμό..)

Η ερώτηση 1 για παράδειγμα πρέπει να απαντηθεί με βάση το GENCODE , δηλαδή με βάση το αρχείο gencode.v29.annotation.gff3 ; Από αυτό όμως, μας είχατε πει στο μάθημα να απομονώσουμε μόνο τα γονίδια της ENSEMBL και να πετάξουμε της HAVANA, αλλά όλα μαζί είναι 7455. Ο τρόπος που τα απομονώσαμε είναι με gawk:
grep ENSEMBL gencode.v29.annotation.gff3 | awk -F"\t" '$3 == "gene" { print $1, $9 }' | gawk -F";" '{print $1, $4}' | awk '{print substr($0,1,5), $3}' | sed 's\gene_name=\\g' | uniq > ENSEMBL_genes
wc -l ENSEMBL_genes --> 7455
Επομένως, δεν είναι όλα τα γονίδια ίδiα από τα 2 αυτά αρχεία μετά από την παραπάνω επεξεργασία. Εδώ τι θα κάνουμε; Καταλάβαμε μήπως κάτι λάθος;

Ναι, δεν είναι ανάγκη τα δύο αρχεία να έχουν το ίδιο σετ από γονίδια.
Μπορείς να πάρεις μόνο από τη λίστα με τα 7455 γονίδια και τα άλλα να τα αγνοείς.
Αν και εγώ τα μέτρησα 12058..

gunzip -c  gencode.v29.annotation.gff3.gz | grep -v "HAVANA" | egrep -o "gene_name=.*?;" | sort | uniq | wc -l

Επειδή το αρχείο gencode.v29.annotation.gff3 είναι δύσκολα διαχειρίσιμο στο jupyter notebook καθώς κρασάρουν τα λάπτοπ μας, μπορούμε κάποιες εντολές να τις κάνουμε με os.system("gawk ...");

Χμμ..
Καλύτερα αυτό να είναι μέτρο έσχατης ανάγκης.
Αν και η python φημίζεται ως "gluing language" καλύτερα να το αποφύγουμε αυτό.

Σκοπός του project είναι να δούμε και τεχνικές να ανοίγουμε και επεξεργαζόμαστε τεράστια αρχεία χωρίς να "κρασάρει το λαπτοπ μας".

Δλδ αν κάνεις σωστό παρσάρισμα δεν θα έχει πρόβλημα το laptop σου..

Επίσης το os.system θέλει προσοχή.. Προτιμάμε καλύτερα τη subprocess https://docs.python.org/3/library/subprocess.html#module-subprocess

Προσπάθησε να το αποφύγεις, και αν δεν γίνεται κάνε os.system('gawk')...

@kantale
Copy link
Author

kantale commented Jul 25, 2019

Απορίες 2 (follow-up από Απορίες 1)

Δηλαδή, τα 12.000+ γονίδια που βγαίνουν σε σας να τα έχουμε σαν όρισμα για τις οντότητες των γονιδίων (και όχι από το protein-coding_gene.txt όπως λέτε στην εκφώνηση) ;

Ναι, αυτό είναι καλύτερο.
Καλύτερα να παίρνεις μόνο τα γονίδια που υπάρχουν στο gencode αρχείο.
Μπορείς να αγνοήσεις τελείως το protein-coding_gene.txt

Άρα, μόνο για αυτά που θα είναι στο gencode αρχείο θα μπορούμε να φτιάξουμε το intron/exon map όταν ο χρήστης ρωτάει για έγκυρο γονίδιο και μετάγραφο με κωδικό Ensembl;

Ναι

Αν κάποιος ρωτήσει με RefSeq κωδικό (ΝΜ_...) πώς θα βγάζει το γράφημα; Να κάνουμε ID convert από RefSeq σε Ensembl ή να βρούμε κάποιον τρόπο μέσω request;

Το ID conversion δεν είναι και τόσο δύσκολο
Το γράφω και στην εκφώνηση:

Μπορείτε να χρησιμoποιήσετε το ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_29/gencode.v29.metadata.RefSeq.gz όπου υπάρχει αντιστοιχεία μεταξύ ENSEMBL και RefSeq transcripts. Εναλλακτικά μπορείτε να χρησιμοποιήστε το mygene.info link

Για παράδειγμα:

[NM_000367, NM_001346817, NM_001346818]
[Also report which is the primary transcript. For example: NM_000367 is the primary]

Αν σας παίρνει πολύ ώρα (και προσπάθεια αυτό) πείτε!

@kantale
Copy link
Author

kantale commented Jul 29, 2019

Απορίες 3

Η ερώτηση που θα κάνει ο χρήστης (query) πρέπει να'χει max μία οντότητα ή μπορεί και παραπάνω; π.χ. What is the location of the mutations <Μετάλλαξη1>, <Μετάλλαξη2>...<ΜετάλλαξηN> ?, επειδή στα ελάχιστα απαιτούμενα ερωτήματα που ζητούνται μέσα υπάρχει μόνο μία οντότητα.

Όχι, μόνο μία οντότητα είναι αρκετή
(φυσικά υλοποιήσεις περισσότερων δυνατοτήτων πάντα εκτιμούνται θετικά!)

  1. Όσον αφορά το exon/intron mapping σχεδιάγραμμα, έχουμε ένα θέμα: αν κάνουμε αναζήτηση στο gencode_annotation αρχείο (μόνο αυτά που έχουν Ensembl), μας βγάζει κάποια μετάγραφα που έχουν δύο ή παραπάνω 5'UTR regions ή/και δύο ή παραπάνω 3'UTR regions, π.χ.1: αναζήτηση του transcript ID "ENST00000618181.4" δείχνει δύο 5'UTR regions (in
    command line: grep ENST00000618181.4 gencode.v29.annotation.gff3 | less -S), π.χ.2: αναζήτηση του ENST00000544455.5" δείχνει δύο 5'UTR και δύο 3'UTR...

Έχουμε παρατηρήσει ότι όταν συμβαίνει αυτό υπάρχει και κάποιο εξώνιο
με ακριβώς ίδιες συντεταγμένες με τα επιπλέον UTR regions και αν
"πετάξουμε" τα εξώνια αυτά μαζί με τα επιπλέον UTRs, τότε μπορεί να
γίνει το σχεδιάγραμμα. Με αυτόν τον τρόπο, βγαίνουν πιο σωστά η σειρά των 5' UTR, exons και 3' UTR με βάση τις γονιδιακές συντεταγμένες, αλλά χάνονται κάποιες βάσεις του transcript πριν το 5' UTR (και ίσως καμιά φορά μετά το 3' UTR). Τότε μπορούμε να βάλουμε σαν αρχή του transcript την αρχη του 5' UTR και σαν τέλος, την τελευταία βαη του 3' UTR. Ίσως να είναι κάποιο λάθος στο automatic annotation της Ensembl.

Είναι σωστό να το κάνουμε αυτό;

Ναι, υπάρχουν πολλές "κουλές" περιπτώσεις σαν αυτή που περιγράφεις.

Μπορείτε να αγνοείτε τελείως αυτές τις περιπτώσεις γιατί είναι πολλές και χρειάζεται πολύ δουλεία για να τις πάρετε όλες.
Η δουλεία αυτή είναι έξω από τους σκοπούς του project.

Μπορείτε δηλαδή να ασχοληθείται μόνο με τα transcripts που ακολουθούν το "κεντρικό δόγμα" που παρουσιάζεται στην εκφώνηση.
Προαιρετικά μπορείτε να πετάτε ένα μήνυμα λάθους όποτε βρίσκετε αυτές τις περιπτώσεις.

Σε αυτό που λέγαμε για την περίπτωση που το query έχει RefSeq ID αντί για Ensembl ID έχουμε ένα θέμα που είναι ότι κάποια RefSeq IDs αντιστοιχούν σε πολλά Ensembl IDs. Πώς θα βρούμε ποιο από τα Ensembl IDs είναι αυτό που ψάχνουμε; Γιατί αν το ΝΜ_ trancript δεν είναι το κύριο, πρέπει να βρούμε το αντίστοιχο ENST.. που να είναι το ίδιο όσων αφορά το appris.

Όντως πολύ καλή απορία.
Δεδομένου ότι από το appris δεν μπορείς να βγάλεις άκρη.. μπορείτε να αγνοήσετε αυτά τα RefSeq transcripts
Αν θέλετε μπορείτε να βγάλετε ένα μήνυμα λάθους όπως:
"Multiple ENSEMBL transcripts detected for the RefSeq transcript NM_XYZ.. Aborting.."

Για εύρεση των downstram/upstream γονιδίων που λέτε να χρησιμοποιήσουμε το GENCODE, θέλετε το πρόγραμμα να ψάχνει σε όλο το αρχείο (μαζί με τα HAVANA) ή και εκεί μόνο το κομμάτι του που προέρχεται από την Ensembl; Δηλαδή, θα παίρνει σαν όρισμα 1 εκ των 12000+ γονιδίων και τα up/downstream γονίδια που θα βγάζει θα είναι πάλι 1 εκ των 12.000+;

Ναι, μόνο το GENCODE. Μπορείτε να κάνετε ένα

grep -v HAVANA gencode.v29.annotation.gff3

και να.. πετάξετε έξω όλες τις γραμμές που έχουν μέσα το HAVANA

Δηλαδή τα ονόματα να είναι 1 εκ των 12000+

Ομοίως και για την ερώτηση 3 (What is in <θέση>). Αν είναι μέσα σε 1 εκ των 12.000+ γονιδίων θα λέμε ότι βρίσκεται σε γονίδιο, αλλιώς θα λέμε ότι είναι σε intergenic region; Γιατί στην πραγματικότητα μπορεί όντως να βρίσκεται σε γονίδιο αλλά όχι σε αυτά που αναγνωρίζουμε εμείς και να απαντάμε λάθος.

Ναι
εμείς θα παίξουμε μόνο με ENSEMBL (όχι με HAVANA), οπότε αν είναι σε intergenic σύμφωνα με ENSEMBL αλλά σε coding περιοχή σύμφωνα με HAVANA εσείς τυπώνετε intergenic.
Σε αυτό το project αγνοούμε όλη τη πληροφορία που έχει το HAVANA.

@kantale
Copy link
Author

kantale commented Sep 9, 2019

Απορίες 4

1)Στην ερώτηση 6 Which are the refseq transcripts of the gene <Γονίδιο> ?, Γιατί στο output πήρατε υπόψιν μόνο το rna από το TMPT ; Ποιά θεωρούνται RefSeq;

Ναι, η εκφώνηση δεν είναι και τόσο ξεκάθαρη (την ανανέωσα).
Έχω βάλει σαν παράδειγμα το TPMT.
Οπότε στην ερώτηση: " Which are the refseq transcripts of the gene <Γονίδιο> ? "
θα πρέπει να βρει τα refseq transcripts του γονιδίου.

Η RefSeq είναι μία βάση με "REFerences SEQuences", του NCBI. κάπoια reference sequence είναι transcripts γονιδίων. Αυτά ξεκινάν με NM_

Τα ονομάζει rna επειδή επειδή πρόκειται για το αποτέλεσμα του transcription.
Ενώ το αποτέλεσμα του translation είναι τα protein transcripts.
https://www.atdbio.com/content/14/Transcription-Translation-and-Replication

2)Στα ερωτήματα που δοκιμάσαμε με gene.info το primary transcript πώς θα το αναζητήσουμε; Μόνο με appris ; Την appris πρέπει να την κατεβάσουμε κι να τη χειριστούμε σαν αρχείο με fopen; Υπάρχει εναλλακτική εύρεσης το primary transcript της mygene.info;

Μέσω mygene.info δεν ξέρω.

Η εκφώνηση λέει για 2 τρόπους:

Ο πρώτος είναι να συμβουλευτούμε τη βάση δεδομένων appris, η οποία έχει τη πληροφορία "πόσο βασικό" είναι ένα transcript για όλα τα γονίδια. Η appris έχει φτιάξει ένα σύστημα ιεραρχικοποιήσης των transcripts. Ιεραρχικοποιεί τα transcripts με 8 tags: PRINCIPAL:1, PRINCIPAL:2, PRINCIPAL:3, PRINCIPAL:4, PRINCIPAL:5, ALTERNATIVE:1, ALTERNATIVE:2 και MINOR. Τα transcripts τα οποία είναι πιο "πάνω" στην ιεραρχία είναι και τα πιο βασικά. Μπορείτε να κατεβάσετε και όλη τη βάση appris από αυτό το link.

Ο δεύτερος τρόπος είναι να χρησιμοποιήσετε το πεδίo tag, στο αρχείο από το GENCODE. Εκεί θα δείτε να υπάρχει σε κάποια transcripts, η πληροφορία tag=basic,appris_principal_2,CCD το οποίο αντιστιχεί και στη τιμή που έχει δόσει η appris. Αν ένα entry δεν έχει αυτή τη πληροφορία μπορείτε να το αγνοείται.

Ειδικά ο 2ος τρόπος πρέπει να είναι πιο απλός και δεν χρειάζεται να κατεβάσετε τπτ.

3)Τα γονίδια μας είπατε να τα αναγνωρίσουμε με βάση το protein-coding.txt άρα είναι λογικό που στην ερώτηση 15 What type is the gene μας βγαίνει πάντα protein coding μόνο; Έπρεπε να αναμένουμε κάτι επιπρόσθετα;

Όχι, είναι λογικό.
Είναι οκ, να μην βγάζει κάτι διαφορετικό.

4)Στην ερώτηση 16 What is the sequence in chromosome X between 1000000 and 1000100;” εμείς θα πρέπει να αναγνωρίζουμε το Χ,1000000 ,1000100 ; Μπορεί στη θέση του Χ να αναμέναμε chr1 ,Y etc ;

Ακριβώς.
Στη θέση του Χ, μπορεί να είναι:

1-22
Χ
Υ
chr1--chr22
chrX
chrY

Επίσης θα μπορεί να είναι με οποιαδίποτε συνδοιασμό μικρών-κεφαλαίων:

CHR10
Chr10
chr10

κτλ..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment