These materials were developed with funding from the US National Institutes of Health grant #2T36 GM008789 to the Pittsburgh Supercomputing Center 1 

Slides:



Advertisements
Similar presentations
Introduction to perl programming: the minimum to know! Bioinformatic and Comparative Genome Analysis Course HKU-Pasteur Research Centre - Hong Kong, China.
Advertisements

The genetic code.
Center for Biological Sequence Analysis Prokaryotic gene finding Marie Skovgaard Ph.D. student
MARC: Developing Bioinformatics Programs July 2009 Alex Ropelewski PSC-NRBSC Bienvenido Vélez UPR Mayaguez Essential Computing for Bioinformatics 1 Lecture.
 -GLOBIN MUTATIONS AND SICKLE CELL DISORDER (SCD) - RESTRICTION FRAGMENT LENGTH POLYMORPHISMS (RFLP)
ATG GAG GAA GAA GAT GAA GAG ATC TTA TCG TCT TCC GAT TGC GAC GAT TCC AGC GAT AGT TAC AAG GAT GAT TCT CAA GAT TCT GAA GGA GAA AAC GAT AAC CCT GAG TGC GAA.
Supplementary Fig.1: oligonucleotide primer sequences.
Gene Mutations Worksheet
Crick’s early Hypothesis Revisited. Or The Existence of a Universal Coding Frame Axel Bernal UPenn Center for Bioinformatics Jean-Louis Lassez Coastal.
1 Essential Computing for Bioinformatics Bienvenido Vélez UPR Mayaguez Lecture 5 High-level Programming with Python Part II: Container Objects Reference:
Today… Genome 351, 8 April 2013, Lecture 3 The information in DNA is converted to protein through an RNA intermediate (transcription) The information in.
Dictionaries.
GENE MUTATIONS aka point mutations. DNA sequence ↓ mRNA sequence ↓ Polypeptide Gene mutations which affect only one gene Transcription Translation © 2010.
IGEM Arsenic Bioremediation Possibly finished biobrick for ArsR by adding a RBS and terminator. Will send for sequencing today or Monday.
MARC: Developing Bioinformatics Programs July 2009 Alex Ropelewski PSC-NRBSC Bienvenido Vélez UPR Mayaguez Reference: How to Think Like a Computer Scientist:
 The following material is the result of a curriculum development effort to provide a set of courses to support bioinformatics efforts involving students.
Nature and Action of the Gene
Biological Dynamics Group Central Dogma: DNA->RNA->Protein.
1 Perl: subroutines (for sorting). 2 Good Programming Strategies for Subroutines #!/usr/bin/perl # example why globals are bad $one = ; $two = ; $max.
Introduction to Python for Biologists Lecture 2 This Lecture Stuart Brown Associate Professor NYU School of Medicine.
Math 15 Introduction to Scientific Data Analysis Lecture 10 Python Programming – Part 4 University of California, Merced Today – We have A Quiz!
More on translation. How DNA codes proteins The primary structure of each protein (the sequence of amino acids in the polypeptide chains that make up.
 The following material is the result of a curriculum development effort to provide a set of courses to support bioinformatics efforts involving students.
Undifferentiated Differentiated (4 d) Supplemental Figure S1.
MARC: Developing Bioinformatics Programs July 2009 Alex Ropelewski PSC-NRBSC Bienvenido Vélez UPR Mayaguez Reference: How to Think Like a Computer Scientist:
Supplemental Table S1 For Site Directed Mutagenesis and cloning of constructs P9GF:5’ GAC GCT ACT TCA CTA TAG ATA GGA AGT TCA TTT C 3’ P9GR:5’ GAA ATG.
Lecture 10, CS5671 Neural Network Applications Problems Input transformation Network Architectures Assessing Performance.
Fig. S1 siControl E2 G1: 45.7% S: 26.9% G2-M: 27.4% siER  E2 G1: 70.9% S: 9.9% G2-M: 19.2% G1: 57.1% S: 12.0% G2-M: 30.9% siRNF31 E2 A B siRNF31 siControl.
PART 1 - DNA REPLICATION PART 2 - TRANSCRIPTION AND TRANSLATION.
TRANSLATION: information transfer from RNA to protein the nucleotide sequence of the mRNA strand is translated into an amino acid sequence. This is accomplished.
 The following material is the result of a curriculum development effort to provide a set of courses to support bioinformatics efforts involving students.
Prodigiosin Production in E. Coli Brian Hovey and Stephanie Vondrak.
Passing Genetic Notes in Class CC106 / Discussion D by John R. Finnerty.
Supplementary materials
Dictionaries. A “Good morning” dictionary English: Good morning Spanish: Buenas días Swedish: God morgon German: Guten morgen Venda: Ndi matscheloni Afrikaans:
Suppl. Figure 1 APP23 + X Terc +/- Terc +/-, APP23 + X Terc +/- G1Terc -/-, APP23 + X G1Terc -/- G2Terc -/-, APP23 + X G2Terc -/- G3Terc -/-, APP23 + and.
Structure and Function of DNA DNA Replication and Protein Synthesis.
Bienvenido Vélez UPR Mayaguez Reference: How to Think Like a Computer Scientist: Learning with Python 1 Introduction to Python programming for Bioinformatics.
Alex Ropelewski Pittsburgh Supercomputing Center National Resource for Biomedical Supercomputing Bienvenido Vélez
MARC: Developing Bioinformatics Programs Alex Ropelewski PSC-NRBSC Bienvenido Vélez UPR Mayaguez Reference: How to Think Like a Computer Scientist: Learning.
MARC: Developing Bioinformatics Programs June 2012 Alex Ropelewski PSC-NRBSC Bienvenido Vélez UPR Mayaguez Reference: How to Think Like a Computer Scientist:
RA(4kb)- Atggagtccgaaatgctgcaatcgcctcttctgggcctgggggaggaagatgaggc……………………………………………….. ……………………………………………. ……………………….,……. …tactacatctccgtgtactcggtggagaagcgtgtcagatag.
Alex Ropelewski PSC-NRBSC Bienvenido Vélez UPR Mayaguez Using Molecular Biology to Teach Computer Science High-level Programming with Python Finding Patterns.
Example 1 DNA Triplet mRNA Codon tRNA anticodon A U A T A U G C G
High-level Programming with Python Expressions and Variables Alex Ropelewski PSC-NRBSC Bienvenido Vélez UPR Mayaguez Reference: How to Think Like a Computer.
MARC: Developing Bioinformatics Programs Alex Ropelewski PSC-NRBSC Bienvenido Vélez UPR Mayaguez Reference: How to Think Like a Computer Scientist: Learning.
Name of presentation Month 2009 SPARQ-ed PROJECT Mutations in the tumor suppressor gene p53 Pulari Thangavelu (PhD student) April Chromosome Instability.
DNA, RNA and Protein.
Bienvenido Vélez UPR Mayaguez Using Molecular Biology to Teach Computer Science 1 These materials were developed with funding from the US National Institutes.
1 A Short Introduction to Analyzing Biological Data Using Relational Databases Part II: Creating a Relational Database to Model Biological Data Alex Ropelewski.
MARC: Developing Bioinformatics Programs June 2012 Alex Ropelewski PSC-NRBSC Bienvenido Vélez UPR Mayaguez Reference: How to Think Like a Computer Scientist:
Using Molecular Biology to Teach Computer Science
Modelling Proteomes.
Essential Computing for Bioinformatics
Supplementary information Table-S1 (Xiao)
Sequence – 5’ to 3’ Tm ˚C Genome Position HV68 TMER7 Δ mt. Forward
Python.
Supplemental Table 3. Oligonucleotides for qPCR
GENE MUTATIONS aka point mutations © 2016 Paul Billiet ODWS.
Supplementary Figure 1 – cDNA analysis reveals that three splice site alterations generate multiple RNA isoforms. (A) c.430-1G>C (IVS 6) results in 3.
Huntington Disease (HD)
DNA By: Mr. Kauffman.
Gene architecture and sequence annotation
More on translation.
Molecular engineering of photoresponsive three-dimensional DNA
Fundamentals of Protein Structure
Python.
Station 2 Protein Synethsis.
Shailaja Gantla, Conny T. M. Bakker, Bishram Deocharan, Narsing R
Presentation transcript:

These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center 1  The following material is the result of a curriculum development effort to provide a set of courses to support bioinformatics efforts involving students from the biological sciences, computer science, and mathematics departments. They have been developed as a part of the NIH funded project “Assisting Bioinformatics Efforts at Minority Schools” (2T36 GM008789). The people involved with the curriculum development effort include:  Dr. Hugh B. Nicholas, Dr. Troy Wymore, Mr. Alexander Ropelewski and Dr. David Deerfield II, National Resource for Biomedical Supercomputing, Pittsburgh Supercomputing Center, Carnegie Mellon University.  Dr. Ricardo Gonzalez-Mendez, University of Puerto Rico Medical Sciences Campus.  Dr. Alade Tokuta, North Carolina Central University.  Dr. Jaime Seguel and Dr. Bienvenido Velez, University of Puerto Rico at Mayaguez.  Dr. Satish Bhalla, Johnson C. Smith University.  Unless otherwise specified, all the information contained within is Copyrighted © by Carnegie Mellon University. Permission is granted for use, modify, and reproduce these materials for teaching purposes.

These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center 2  This material is targeted towards students with a general background in Biology. It was developed to introduce biology students to the computational mathematical and biological issues surrounding bioinformatics. This specific lesson deals with the following fundamental topics:  Computing for biologists  High level programming with Python  Computer science track  This material has been developed by: Dr. Hugh B. Nicholas, Jr. National Center for Biomedical Supercomputing Pittsburgh Supercomputing Center Carnegie Mellon University

Essential Computing for Bioinformatics Bienvenido Vélez UPR Mayaguez Lecture 3 High-level Programming with Python Part II: Container Objects Reference: How to Think Like a Computer Scientist: Learning with Python (Ch 10-11)

Outline  Lecture 2 Homework  Lists and Other Sequences  Dictionaries and Sequence Translation  Finding ORF’s in sequences 4 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Lecture 2 Homework: Finding Patterns Within Sequences from string import * def searchPattern(dna, pattern): 'print all start positions of a pattern string inside a target string’ site = findDNAPattern (dna, pattern) while site != -1: print ’pattern %s found at position %d' % (pattern, site) site = findDNApattern (dna, pattern, site + 1) Example from Pasteur Institute Bioinformatics Using Python >>> searchPattern("acgctaggct","gc") pattern gc at position 2 pattern gc at position 7 >>> 5 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center What if DNA may contain unknown nucleotides ‘X’?

Lecture 2 Homework: One Approach def findDNAPattern(dna, pattern,startPosition, endPosition): 'Finds the index of the first ocurrence of DNA pattern within DNA sequence' dna = dna.lower() # Force sequence and pattern to lower case pattern = pattern.lower() for i in xrange(startPosition, endPosition): # Attempt to match patter starting at position i if (matchDNAPattern(dna[i:],pattern)): return i return -1 Write your own find function: Top-Down Design: From BIG functions to small helper functions

Lecture 2 Homework: One Approach def matchDNAPattern(sequence, pattern): 'Determines if DNA pattern is a prefix of DNA sequence' i = 0 while ((i < len(pattern)) and (i < len(sequence))): if (not matchDNANucleotides(sequence[i], pattern[i])): return False i = i + 1 return (i == len(pattern)) Write your own find function:

Lecture 2 Homework: One Approach def matchDNANucleotides(base1, base2): 'Returns True is nucleotide bases are equal or one of them is unknown' return (base1 == 'x' or base2 == 'x' or (isDNANucleotide(base1) and (base1 == base2))) Write your own find function:

Lecture 2 Homework: One Approach def findDNAPattern(dna, pattern,startPosition=0, endPosition=None): 'Finds the index of the first ocurrence of DNA pattern within DNA sequence’ if (endPosition == None): endPosition = len(dna) dna = dna.lower() # Force sequence and pattern to lower case pattern = pattern.lower() for i in xrange(startPosition, endPosition): # Attempt to match patter starting at position i if (matchDNAPattern(dna[i:],pattern)): return i return -1 Using default parameters:

Top Down Design: A Recursive Process  Start with a high level problem  Design a high-level function assuming existence of ideal lower level functions that it needs  Recursively design each lower level function top-down

List Values [10, 20, 30, 40] ['spam', 'bungee', 'swallow'] ['hello', 2.0, 5, [10, 20]] [] Lists can be heterogeneous and nested The empty list 11 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Generating Integer Lists >>> range(1,5) [1, 2, 3, 4] >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 10, 2) [1, 3, 5, 7, 9] In General range(first,last+1,step) 12 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Accessing List Elements >> words=['hello', 'my', 'friend'] >> words[1] 'my' >> words[1:3] ['my', 'friend'] >> words[-1] 'friend' >> 'friend' in words True >> words[0] = 'goodbye' >> print words ['goodbye', 'my', 'friend'] slices single element negative index Testing List membership Lists are mutable 13 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

More List Slices Slicing operator always returns a NEW list >> numbers = range(1,5) >> numbers[1:] [1, 2, 3, 4] >> numbers[:3] [1, 2] >> numbers[:] [1, 2, 3, 4] 14 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Modifying Slices of Lists >>> list = ['a', 'b', 'c', 'd', 'e', 'f'] >>> list[1:3] = ['x', 'y'] >>> print list ['a', 'x', 'y', 'd', 'e', 'f'] >>> list[1:3] = [] >>> print list ['a', 'd', 'e', 'f'] >>> list = ['a', 'd', 'f'] >>> list[1:1] = ['b', 'c'] >>> print list ['a', 'b', 'c', 'd', 'f'] >>> list[4:4] = ['e'] >>> print list ['a', 'b', 'c', 'd', 'e', 'f'] Inserting slices Deleting slices Replacing slices 15 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Traversing Lists ( 2 WAYS) for codon in codons: print codon i = 0 while (i < len(codons)): codon = codons[i] print codon i = i + 1 Which one do you prefer? Why? Why does Python provide both for and while ? 16 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center codons = [ ' cac ', ' caa ', ' ggg ' ]

def stringToList(theString): 'Returns the input string as a list of characters' result = [] for element in theString: result = result + [element] return result def listToString(theList): 'Returns the input list of characters as a string' result = "" for element in theList: result = result + element return result String  List Conversion 17 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Complementing Sequences: Utilities DNANucleotides='acgt' DNAComplements='tgca' def isDNANucleotide(nucleotide): 'Returns True when n is a DNA nucleotide' return (type(nucleotide) == type("") and len(nucleotide)==1 and nucleotide.lower() in DNANucleotides) def isDNASequence(sequence): 'Returns True when sequence is a DNA sequence' if type(sequence) != type(""): return False; for base in sequence: if (not isDNANucleotide(base.lower())): return False return True

Complementing Sequences def getComplementDNANucleotide(n): 'Returns the DNA Nucleotide complement of n' if (isDNANucleotide(n)): return(DNAComplements[find(DNANucleotides,n.lower())]) else: raise Exception ("getComplementDNANucleotide: Invalid DNA sequence: " + n) def getComplementDNASequence(sequence): 'Returns the complementary DNA sequence' if (not isDNASequence(sequence)): raise Exception("getComplementRNASequence: Invalid DNA sequence: " + sequence) result = "" for base in sequence: result = result + getComplementDNANucleotide(base) return result

Complementing a List of Sequences def getComplementDNASequences(sequences): 'Returns a list of the complements of list of DNA sequences' result = [] for sequence in sequences: result = result + [getComplementDNASequence(sequence)] return result >>> getComplementDNASequences(['acg', 'ggg']) ['tgc', 'ccc'] >>>

Python Sequence Types Type Description Elements Mutable StringType Character string Characters only no UnicodeType Unicode character string Unicode characters only no ListType List Arbitrary objects yes TupleType Immutable List Arbitrary objects no XRangeType return by xrange() Integers no BufferType Bufferreturn by buffer()arbitrary objects of one typeyes/no 10 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Operations on Sequences Operator/Function Action Action on Numbers [ ], ( ), ' 'creation s + t concatenation addition s * n repetition n times multiplication s[i] indexation s[i:k] slice x in s membership x not in sabsence for a in s traversal len(s) length min(s) return smallest element max(s) return greatest element 22 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Exercises  Return the list of codons in a DNA sequence for a given reading frame  Return the lists of restriction sites for an enzyme in a DNA sequence  Return the list of restriction sites for a list of enzymes in a DNA sequence  Find all the ORF’s of length >= n in a sequence Design and implement Python functions to satisfy the following contracts: 23 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Dictionaries Dictionaries are mutable unordered collections which may contain objects of different sorts. The objects can be accessed using a key. 24 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

Genetic Code as a Python Dictionary GeneticCode = { ’ttt’: ’F’, ’tct’: ’S’, ’tat’: ’Y’, ’tgt’: ’C’, ’ttc’: ’F’, ’tcc’: ’S’, ’tac’: ’Y’, ’tgc’: ’C’, ’tta’: ’L’, ’tca’: ’S’, ’taa’: ’*’, ’tga’: ’*’, ’ttg’: ’L’, ’tcg’: ’S’, ’tag’: ’*’, ’tgg’: ’W’, ’ctt’: ’L’, ’cct’: ’P’, ’cat’: ’H’, ’cgt’: ’R’, ’ctc’: ’L’, ’ccc’: ’P’, ’cac’: ’H’, ’cgc’: ’R’, ’cta’: ’L’, ’cca’: ’P’, ’caa’: ’Q’, ’cga’: ’R’, ’ctg’: ’L’, ’ccg’: ’P’, ’cag’: ’Q’, ’cgg’: ’R’, ’att’: ’I’, ’act’: ’T’, ’aat’: ’N’, ’agt’: ’S’, ’atc’: ’I’, ’acc’: ’T’, ’aac’: ’N’, ’agc’: ’S’, ’ata’: ’I’, ’aca’: ’T’, ’aaa’: ’K’, ’aga’: ’R’, ’atg’: ’M’, ’acg’: ’T’, ’aag’: ’K’, ’agg’: ’R’, ’gtt’: ’V’, ’gct’: ’A’, ’gat’: ’D’, ’ggt’: ’G’, ’gtc’: ’V’, ’gcc’: ’A’, ’gac’: ’D’, ’ggc’: ’G’, ’gta’: ’V’, ’gca’: ’A’, ’gaa’: ’E’, ’gga’: ’G’, ’gtg’: ’V’, ’gcg’: ’A’, ’gag’: ’E’, ’ggg’: ’G’ } 25 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

A Test DNA Sequence cds ='''atgagtgaacgtctgagcattaccccgctggggccgtatatcggcgcacaaa tttcgggtgccgacctgacgcgcccgttaagcgataatcagtttgaacagctttaccatgcggtg ctgcgccatcaggtggtgtttctacgcgatcaagctattacgccgcagcagcaacgcgcgctggc ccagcgttttggcgaattgcatattcaccctgtttacccgcatgccgaaggggttgacgagatca tcgtgctggatacccataacgataatccgccagataacgacaactggcataccgatgtgacattt attgaaacgccacccgcaggggcgattctggcagctaaagagttaccttcgaccggcggtgatac gctctggaccagcggtattgcggcctatgaggcgctctctgttcccttccgccagctgctgagtg ggctgcgtgcggagcatgatttccgtaaatcgttcccggaatacaaataccgcaaaaccgaggag gaacatcaacgctggcgcgaggcggtcgcgaaaaacccgccgttgctacatccggtggtgcgaac gcatccggtgagcggtaaacaggcgctgtttgtgaatgaaggctttactacgcgaattgttgatg tgagcgagaaagagagcgaagccttgttaagttttttgtttgcccatatcaccaaaccggagttt caggtgcgctggcgctggcaaccaaatgatattgcgatttgggataaccgcgtgacccagcacta tgccaatgccgattacctgccacagcgacggataatgcatcgggcgacgatccttggggataaac cgttttatcgggcggggtaa'''.replace('\n','').lower() 26 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center

CDS Sequence -> Protein Sequence def translateDNASequence(dna): if (not isDNASequence(dna)): raise Exception('translateDNASequence: Invalid DNA sequence') prot = "" for i in range(0,len(dna),3): codon = dna[i:i+3] prot = prot + GeneticCode[codon] return prot 27 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center >>> translateDNASequence(cds) 'MSERLSITPLGPYIGAQISGADLTRPLSDNQFEQLYHAVLRHQVVFLRDQAITPQQQ RALAQRFGELHIHPVYPHAEGVDEIIVLDTHNDNPPDNDNWHTDVTFIETPPAGAILA AKELPSTGGDTLWTSGIAAYEALSVPFRQLLSGLRAEHDFRKSFPEYKYRKTEEEHQR WREAVAKNPPLLHPVVRTHPVSGKQALFVNEGFTTRIVDVSEKESEALLSFLFAHITK PEFQVRWRWQPNDIAIWDNRVTQHYANADYLPQRRIMHRATILGDKPFYRAG*' >>>

Dictionary Methods and Operations 28 These materials were developed with funding from the US National Institutes of Health grant #2T36 GM to the Pittsburgh Supercomputing Center Method or OperationAction d[key]Get the value of the entry with key key in d d[key] = valSet the value of entry with key key to val del d[key]Delete entry with key key d.clear()Removes all entries len(d)Number of items d.copy()Makes a shallow copya d.has_key(key)Returns 1 if key exists, 0 otherwise d.keys()Gives a list of all keys d.values()Gives a list of all values d.items()Returns a list of all items as tuples (key, value) d.update(new)Adds all entries of dictionary new to d d.get(key[, otherwise])Returns value of the entry with key key if it exists Otherwise returns to otherwise d.setdefaults(key [, val])Same as d.get(key), but if key does not exist, sets d[key] to val d.popitem()Removes a random item and returns it as tuple

Finding ORF’s def findDNAORFPos(sequence, minLen, startCodon, stopCodon, startPos, endPos): 'Finds the postion and length of the first ORF in sequence' while (startPos < endPos): startCodonPos = find(sequence, startCodon, startPos, endPos) if (startCodonPos >= 0): stopCodonPos = find(sequence, stopCodon, startCodonPos, endPos) if (stopCodonPos >= 0): if ((stopCodonPos - startCodonPos) > minLen): return [startCodonPos + 3, (stopCodonPos - startCodonPos) - 3] else: startPos = startPos + 3 else: return [-1,0] # Finished the sequence without finding stop codon else: return [-1,0] # Could not find any more start codons

Extracting the ORF def extractDNAORF(sequence, minLen, startCodon, stopCodon, startPos, endPos): 'Returns the first ORF of length >= minLen found in sequence' ORFPos = findDNAORFPos(sequence, minLen, startCodon, stopCodon, startPos, endPos) startPosORF = ORFPos[0] endPosORF = startPosORF + ORFPos[1] if (startPosORF >= 0): return sequence[ORFPos[0]: ORFPos[0]+ORFPos[1]] else: return ""

Homework  Desing an ORF extractor to return the list of all ORF’s within a sequence together with their positions

Next Time  Handling files containing sequences and alignments