diff --git a/source/Collection_Data_Types.rst b/source/Collection_Data_Types.rst index a73ea4b2d4ee72cf555eebedba71a4fff3df67f7..9170f1492ba83c7df6946df865e6f061a7e579f6 100644 --- a/source/Collection_Data_Types.rst +++ b/source/Collection_Data_Types.rst @@ -8,10 +8,10 @@ Collection Data Types ********************* -Exercices +Exercises ========= -Exercice +Exercise -------- | Draw the representation in memory of the following expressions. @@ -29,8 +29,38 @@ Exercice :alt: set :figclass: align-center +:: + + x = [1, 2, 3, 4] + x += [5, 6] + +.. figure:: _static/figs/augmented_assignment_list.png + :width: 400px + :alt: set + :figclass: align-center + +:: + + >>> x = [1, 2, 3, 4] + >>> id(x) + 139950507563632 + >>> x += [5,6] + >>> id(x) + 139950507563632 + -Exercice +compare with the exercise on string and integers: + +Since list are mutable, when ``+=`` is used the original list object is modified, so no rebinding of *x* is necessary. +We can observe this using *id()* which give the memory adress of an object. This adress does not change after the +``+=`` operation. + +.. note:: + even the results is the same ther is a subtelty to use augmented operator. + in ``a operator= b`` python looks up ``a`` ’s value only once, so it is potentially faster + than the ``a = a operator b``. + +Exercise -------- wihout using python shell, what is the results of the following statements: @@ -51,14 +81,14 @@ all the digits after the periods are discarded. In python3 we will obtain the expected result (see :ref:``) -Exercice +Exercise -------- How to compute safely the average of a list? :: float(sum(l)) / float(len(l)) -exercise +Exercise -------- Draw the representation in memory of the following expressions. :: @@ -98,20 +128,30 @@ Draw the representation in memory of the following expressions. :: x = [1, ['a','b','z'], 3, 4] +Exercise +-------- + +from the list l = [1, 2, 3, 4, 5, 6, 7, 8, 9] generate 2 lists l1 containing all odd values, and l2 all even values.:: + + l = [1, 2, 3, 4, 5, 6, 7, 8, 9] + l1 = l[::2] + l2 = l[1::2] + -exercise +Exercise -------- generate a list containing all codons. :: - + + bases = 'acgt' codons = [] - for a in 'acgt': - for b in 'acgt': - for c in 'acgt': + for a in bases: + for b in bases: + for c in bases: codon = a + b + c codons.append(codon) -exercice +Exercise -------- From a list return a new list without any duplicate, regardless of the order of items. @@ -127,7 +167,7 @@ solution :: -exercice +Exercise -------- let the following enzymes collection: :: @@ -221,7 +261,7 @@ If we want also the position, for instance to compute the fragments of dna. :: -exercice +Exercise -------- From a list return a new list without any duplicate, but keeping the order of items. For example: :: @@ -242,7 +282,7 @@ solution :: >>> uniq_items = set() >>> l_uniq = [x for x in l if x not in uniq_items and not uniq_items.add(x)] -exercice +Exercise -------- list and count occurences of every 3mers in the following sequence :: @@ -301,7 +341,7 @@ solution bonus :: print kmer, " = ", occurence -exercice +Exercise -------- given the following dict : :: diff --git a/source/Data_Types.rst b/source/Data_Types.rst index 0ac0e094fd9b2a5c3d1163574210d20fb2df2a7d..23cdd154c74c58f65402ea5b3f587f30a4442b68 100644 --- a/source/Data_Types.rst +++ b/source/Data_Types.rst @@ -6,3 +6,305 @@ ********** Data Types ********** + +Exercices +========= + +Exercise +-------- + +Assume that we execute the following assignment statements: :: + + width = 17 + height = 12.0 + delimiter ='.' + +For each of the following expressions, write the value of the expression and the type (of the value of +the expression) and explain. :: + + 1. width / 2 + 2. width / 2.0 + 3. height / 3 + 4. 1 + 2 * 5 + +Use the Python interpreter to check your answers. :: + + >>> width = 17 + >>> height = 12.0 + >>> delimiter ='.' + >>> + >>> width / 2 + 8 + >>> # both operands are integer so python done an euclidian division and threw out the remainder + >>> width / 2.0 + 8.5 + >>> height / 3 + 4.0 + >>> # one of the operand is a float (2.0 or height) then python pyhton perform afloat division but keep in mind that float numbers are aproximation. + >>> # if you need precision you need to use Decimal. But operations on Decimal are slow and float offer quite enought precision + >>> # so we use decimal only if wee need great precision + >>> # Euclidian division + >>> 2 / 3 + 0 + >>> # float division + >>> float(2)/float(3) + 0.6666666666666666 + >>> # decimal division + >>> from decimal import Decimal + >>> a = Decimal(2) + >>> b = Decimal(3) + >>> a / b + Decimal('0.6666666666666666666666666667') + >>> 1 + 2 * 5 + 11 + + +Exercise +-------- + +Practice using the Python interpreter as a calculator: + +| The volume of a sphere with radius r is 4/3 πr\ :sup:`3`. What is the volume of a sphere with radius 5? +| Hint: π is in math module, so to access it you need to import the math module :: + + >>> import math + >>> math.pi + + Hint: 392.7 is wrong! :: + + >>> import math + >>> float(4)/float(3) * float(math.pi) * pow(5, 3) + + +Exercise +-------- + +Draw what happen in memory when the following statements are executed: :: + + i = 12 + i += 2 + +.. figure:: _static/figs/augmented_assignment_int.png + :width: 400px + :alt: set + :figclass: align-center + +:: + + >>> i = 12 + >>> id(i) + 33157200 + >>> i += 2 + >>> id(i) + 33157152 + + +and :: + + s = 'gaa' + s = s + 'ttc' + +.. figure:: _static/figs/augmented_assignment_string.png + :width: 400px + :alt: set + :figclass: align-center + +:: + + >>> s = 'gaa' + >>> id(s) + 139950507582368 + >>> s = s+ 'ttc' + >>> s + 'gaattc' + >>> id(s) + 139950571818896 + +when an augmented assignment operator is used on an immutable object is that + +#. the operation is performed, +#. and an object holding the result is created +#. and then the target object reference is re-bound to refer to the + result object rather than the object it referred to before. + +So, in the preceding case when the statement ``i += 2`` is encountered, Python computes 1 + 2 , stores +the result in a new int object, and then rebinds ``i`` to refer to this new int . And +if the original object a was referring to has no more object references referring +to it, it will be scheduled for garbage collection. The same mechanism is done with all immutable object included strings. + +Exercise +-------- + +how to obtain a new sequence which is the 10 times repetition of the this motif : "AGGTCGACCAGATTANTCCG":: + >>> s = "AGGTCGACCAGATTANTCCG" + >>> s10 = s * 10 + +Exercise +-------- + +create a representation in fasta format of following sequence : + +.. note:: + A sequence in FASTA format begins with a single-line description, followed by lines of sequence data. + The description line is distinguished from the sequence data by a greater-than (">") symbol in the first column. + The word following the ">" symbol is the identifier of the sequence, and the rest of the line is the description (optional). + There should be no space between the ">" and the first letter of the identifier. + The sequence ends if another line starting with a ">" appears; this indicates the start of another sequence. + +:: + + id = "sp|P60568|IL2_HUMAN" + + comment = "Interleukin-2 OS=Homo sapiens GN=IL2 PE=1 SV=1" + + sequence = """MYRMQLLSCIALSLALVTNSAPTSSSTKKTQLQLEHLLLDLQMILNGINNYKNPKLTRML + TFKFYMPKKATELKHLQCLEEELKPLEEVLNLAQSKNFHLRPRDLISNINVIVLELKGSE + TTFMCEYADETATIVEFLNRWITFCQSIISTLT""" + + >>> s = id + comment + '\n' + sequence + or + >>> s = "{id} {comment} \n{sequence}".format(id= id, comment = comment, sequence = sequence) + + +Exercise +-------- + +For the following exercise use the python file :download:`sv40 in fasta <_static/code/sv40.py>` which is a python file with the sequence of sv40 in fasta format +already embeded, and use python -i sv40.py to work. + +how long is the sv40 in bp? +Hint : the fasta header is 61bp long. +(http://www.ncbi.nlm.nih.gov/nuccore/J02400.1) + +:: + + >>> # remove the header + >>> sv40_sequence = sv40[61:] + >>> # remove the carriagge return character \n + >>> sv40_sequence = sv40_sequence.replace('\n' , '') + >>> # then compute the lenght + >>> len(sv40_sequence) + 5243 + +Is that the following enzymes: +* BamHI (ggatcc), +* EcorI (gaattc), +* HindIII (aagctt), +* SmaI (cccggg) +have recogition sites in sv40? :: + + >>> "ggatcc".upper() in sv40_sequence + True + >>> "gaattc".upper() in sv40_sequence + True + >>> "aagctt".upper() in sv40_sequence + True + >>> "cccggg".upper() in sv40_sequence + False + +for the enzymes which have a recognition site can you give their positions? :: + + >>> sv40_sequence = sv40_sequence.lower() + >>> sv40_sequence.find("ggatcc") + 2532 + >>> # remind the string are numbered from 0 + >>> 2532 + 1 = 2533 + >>> # the recognition motif of BamHI start at 2533 + >>> sv40_sequence.find("gaattc") + 1781 + >>> # EcorI -> 1782 + >>> sv40_sequence.find("aagctt") + 1045 + >>> # HindIII -> 1046 + +is there only one site in sv40 per enzyme? + +The ``find`` method give the index of the first occurence or -1 if the substring is not found. +So we can not determine the occurence of a site only with the find method. +We will see how to do that when we learn looping and conditions. + + +Exercise +-------- + +We want to perform a PCR on sv40, can you give the length and the sequence of the amplicon? +to simplify the 2 primers are given in 5'3' +| CGGGACTATGGTTGCTGACT +| TCTTTCCGCCTCAGAAGGTA +(write the peudocode before coding) + +| find the position of the first primer in sv40 +| find the position of the 2nd primer in sv40 +| # the position of primer are position of the begining of the primer +| lenght of amplicon = position 2nd primer + len(2nd primer) - position 1rst primer + +:: + + first_primer = "CGGGACTATGGTTGCTGACT".lower() + second_primer = "TCTTTCCGCCTCAGAAGGTA".lower() + pos_1 = sv40_sequence.find(first_primer) + pos_2 = sv40_sequence.find(second_primer) + amplicon_len = pos_2 + len(second_primer) - pos_1 + print amplicon_len + 199 + +Exercise +-------- + +reverse the following sequence "TACCTTCTGAGGCGGAAAGA" (don't compute the complement): :: + + >>> "TACCTTCTGAGGCGGAAAGA"[::-1] + or + >>> s = "TACCTTCTGAGGCGGAAAGA" + >>> l = list(s) + # take care reverse() reverse a list in place (the method do a side effect and return None ) + # so if you don't have a obect reference on the list you cannot get the reversed list! + >>> l.reverse() + >>> print l + >>> ''.join(l) + or + >>> rev_s = reversed(s) + ''.join(rev_s) + + The most efficient way to reverse a string or a list is the way using the slice. + +Exercise +-------- + +| il2_human = 'MYRMQLLSCIALSLALVTNSAPTSSSTKKTQLQLEHLLLDLQMILNGINNYKNPKLTRMLTFKFYMPKKATELKHLQCLEEELKPLEEVLNLAQSKNFHLRPRDLISNINVIVLELKGSETTFMCEYADETATIVEFLNRWITFCQSIISTLT' +| The il2_human contains 4 cysteins (C) in positions 9, 78, 125, 145. We want to generate the sequence of a mutatnt were the cysteins 78 and 125 are replaced by serins (S) +| write the pseudo code, before to propose an implementation: + +take care of the string numbered vs sequence numbered: + +| C in seq -> in string +| 9 -> 8 +| 78 -> 77 +| 125 -> 124 +| 145 -> 144 + +| generate 3 slices from the il2_human +| head : from the begining and cut between the first cytein and the second +| body include the 2nd and 3rd cystein +| tail cut after the 3rd cystein until the end +| replace body cystein by serin +| make new sequence with head body_mutate tail + +:: + + head = il2_human[:77] + body = il2_human[77:125] + tail = il2_human[126:] + body_mutate = body.replace('C', 'S') + il2_mutate = head + body_mutate + tail + +Exercise +-------- + +# use again the sv40 sequence and compute the gc% +# generate a "micro" report like this 'the sv40 is 5243 bp lenght and have 40.80% gc' + +:: + + gc_pc = float(sv40_sequence.count('g') + sv40_sequence.count('c')) / float(len(sv40_sequence)) + "the sv40 is {0} bp lenght and have {1:.2%} gc".format(len(sv40), gc_pc) \ No newline at end of file diff --git a/source/Variables.rst b/source/Variables.rst index 7c7ab3eff342e962d0de68a103193592ad0f191a..d4037b7019f545bc8af484766b7ca455a729684d 100644 --- a/source/Variables.rst +++ b/source/Variables.rst @@ -8,9 +8,9 @@ Variables, Expression and statements ************************************ -Exercices +Exercises ========= -exercice +Exercise -------- blabla \ No newline at end of file diff --git a/source/_static/code/sv40.py b/source/_static/code/sv40.py new file mode 100644 index 0000000000000000000000000000000000000000..c20535d15121890063fc76d6a9e351ac73a211c2 --- /dev/null +++ b/source/_static/code/sv40.py @@ -0,0 +1,78 @@ + +sv40 = """>gi|965480|gb|J02400.1|SV4CG Simian virus 40 complete genome +GCCTCGGCCTCTGCATAAATAAAAAAAATTAGTCAGCCATGGGGCGGAGAATGGGCGGAACTGGGCGGAG +TTAGGGGCGGGATGGGCGGAGTTAGGGGCGGGACTATGGTTGCTGACTAATTGAGATGCATGCTTTGCAT +ACTTCTGCCTGCTGGGGAGCCTGGGGACTTTCCACACCTGGTTGCTGACTAATTGAGATGCATGCTTTGC +ATACTTCTGCCTGCTGGGGAGCCTGGGGACTTTCCACACCCTAACTGACACACATTCCACAGCTGGTTCT +TTCCGCCTCAGAAGGTACCTAACCAAGTTCCTCTTTCAGAGGTTATTTCAGGCCATGGTGCTGCGCCGGC +TGTCACGCCAGGCCTCCGTTAAGGTTCGTAGGTCATGGACTGAAAGTAAAAAAACAGCTCAACGCCTTTT +TGTGTTTGTTTTAGAGCTTTTGCTGCAATTTTGTGAAGGGGAAGATACTGTTGACGGGAAACGCAAAAAA +CCAGAAAGGTTAACTGAAAAACCAGAAAGTTAACTGGTAAGTTTAGTCTTTTTGTCTTTTATTTCAGGTC +CATGGGTGCTGCTTTAACACTGTTGGGGGACCTAATTGCTACTGTGTCTGAAGCTGCTGCTGCTACTGGA +TTTTCAGTAGCTGAAATTGCTGCTGGAGAGGCCGCTGCTGCAATTGAAGTGCAACTTGCATCTGTTGCTA +CTGTTGAAGGCCTAACAACCTCTGAGGCAATTGCTGCTATAGGCCTCACTCCACAGGCCTATGCTGTGAT +ATCTGGGGCTCCTGCTGCTATAGCTGGATTTGCAGCTTTACTGCAAACTGTGACTGGTGTGAGCGCTGTT +GCTCAAGTGGGGTATAGATTTTTTAGTGACTGGGATCACAAAGTTTCTACTGTTGGTTTATATCAACAAC +CAGGAATGGCTGTAGATTTGTATAGGCCAGATGATTACTATGATATTTTATTTCCTGGAGTACAAACCTT +TGTTCACAGTGTTCAGTATCTTGACCCCAGACATTGGGGTCCAACACTTTTTAATGCCATTTCTCAAGCT +TTTTGGCGTGTAATACAAAATGACATTCCTAGGCTCACCTCACAGGAGCTTGAAAGAAGAACCCAAAGAT +ATTTAAGGGACAGTTTGGCAAGGTTTTTAGAGGAAACTACTTGGACAGTAATTAATGCTCCTGTTAATTG +GTATAACTCTTTACAAGATTACTACTCTACTTTGTCTCCCATTAGGCCTACAATGGTGAGACAAGTAGCC +AACAGGGAAGGGTTGCAAATATCATTTGGGCACACCTATGATAATATTGATGAAGCAGACAGTATTCAGC +AAGTAACTGAGAGGTGGGAAGCTCAAAGCCAAAGTCCTAATGTGCAGTCAGGTGAATTTATTGAAAAATT +TGAGGCTCCTGGTGGTGCAAATCAAAGAACTGCTCCTCAGTGGATGTTGCCTTTACTTCTAGGCCTGTAC +GGAAGTGTTACTTCTGCTCTAAAAGCTTATGAAGATGGCCCCAACAAAAAGAAAAGGAAGTTGTCCAGGG +GCAGCTCCCAAAAAACCAAAGGAACCAGTGCAAGTGCCAAAGCTCGTCATAAAAGGAGGAATAGAAGTTC +TAGGAGTTAAAACTGGAGTAGACAGCTTCACTGAGGTGGAGTGCTTTTTAAATCCTCAAATGGGCAATCC +TGATGAACATCAAAAAGGCTTAAGTAAAAGCTTAGCAGCTGAAAAACAGTTTACAGATGACTCTCCAGAC +AAAGAACAACTGCCTTGCTACAGTGTGGCTAGAATTCCTTTGCCTAATTTAAATGAGGACTTAACCTGTG +GAAATATTTTGATGTGGGAAGCTGTTACTGTTAAAACTGAGGTTATTGGGGTAACTGCTATGTTAAACTT +GCATTCAGGGACACAAAAAACTCATGAAAATGGTGCTGGAAAACCCATTCAAGGGTCAAATTTTCATTTT +TTTGCTGTTGGTGGGGAACCTTTGGAGCTGCAGGGTGTGTTAGCAAACTACAGGACCAAATATCCTGCTC +AAACTGTAACCCCAAAAAATGCTACAGTTGACAGTCAGCAGATGAACACTGACCACAAGGCTGTTTTGGA +TAAGGATAATGCTTATCCAGTGGAGTGCTGGGTTCCTGATCCAAGTAAAAATGAAAACACTAGATATTTT +GGAACCTACACAGGTGGGGAAAATGTGCCTCCTGTTTTGCACATTACTAACACAGCAACCACAGTGCTTC +TTGATGAGCAGGGTGTTGGGCCCTTGTGCAAAGCTGACAGCTTGTATGTTTCTGCTGTTGACATTTGTGG +GCTGTTTACCAACACTTCTGGAACACAGCAGTGGAAGGGACTTCCCAGATATTTTAAAATTACCCTTAGA +AAGCGGTCTGTGAAAAACCCCTACCCAATTTCCTTTTTGTTAAGTGACCTAATTAACAGGAGGACACAGA +GGGTGGATGGGCAGCCTATGATTGGAATGTCCTCTCAAGTAGAGGAGGTTAGGGTTTATGAGGACACAGA +GGAGCTTCCTGGGGATCCAGACATGATAAGATACATTGATGAGTTTGGACAAACCACAACTAGAATGCAG +TGAAAAAAATGCTTTATTTGTGAAATTTGTGATGCTATTGCTTTATTTGTAACCATTATAAGCTGCAATA +AACAAGTTAACAACAACAATTGCATTCATTTTATGTTTCAGGTTCAGGGGGAGGTGTGGGAGGTTTTTTA +AAGCAAGTAAAACCTCTACAAATGTGGTATGGCTGATTATGATCATGAACAGACTGTGAGGACTGAGGGG +CCTGAAATGAGCCTTGGGACTGTGAATCAATGCCTGTTTCATGCCCTGAGTCTTCCATGTTCTTCTCCCC +ACCATCTTCATTTTTATCAGCATTTTCCTGGCTGTCTTCATCATCATCATCACTGTTTCTTAGCCAATCT +AAAACTCCAATTCCCATAGCCACATTAAACTTCATTTTTTGATACACTGACAAACTAAACTCTTTGTCCA +ATCTCTCTTTCCACTCCACAATTCTGCTCTGAATACTTTGAGCAAACTCAGCCACAGGTCTGTACCAAAT +TAACATAAGAAGCAAAGCAATGCCACTTTGAATTATTCTCTTTTCTAACAAAAACTCACTGCGTTCCAGG +CAATGCTTTAAATAATCTTTGGGCCTAAAATCTATTTGTTTTACAAATCTGGCCTGCAGTGTTTTAGGCA +CACTGTACTCATTCATGGTGACTATTCCAGGGGGAAATATTTGAGTTCTTTTATTTAGGTGTTTCTTTTC +TAAGTTTACCTTAACACTGCCATCCAAATAATCCCTTAAATTGTCCAGGTTATTAATTCCCTGACCTGAA +GGCAAATCTCTGGACTCCCCTCCAGTGCCCTTTACATCCTCAAAAACTACTAAAAACTGGTCAATAGCTA +CTCCTAGCTCAAAGTTCAGCCTGTCCAAGGGCAAATTAACATTTAAAGCTTTCCCCCCACATAATTCAAG +CAAAGCAGCTGCTAATGTAGTTTTACCACTATCAATTGGTCCTTTAAACAGCCAGTATCTTTTTTTAGGA +ATGTTGTACACCATGCATTTTAAAAAGTCATACACCACTGAATCCATTTTGGGCAACAAACAGTGTAGCC +AAGCAACTCCAGCCATCCATTCTTCTATGTCAGCAGAGCCTGTAGAACCAAACATTATATCCATCCTATC +CAAAAGATCATTAAATCTGTTTGTTAACATTTGTTCTCTAGTTAATTGTAGGCTATCAACCCGCTTTTTA +GCTAAAACAGTATCAACAGCCTGTTGGCATATGGTTTTTTGGTTTTTGCTGTCAGCAAATATAGCAGCAT +TTGCATAATGCTTTTCATGGTACTTATAGTGGCTGGGCTGTTCTTTTTTAATACATTTTAAACACATTTC +AAAACTGTACTGAAATTCCAAGTACATCCCAAGCAATAACAACACATCATCACATTTTGTTTCCATTGCA +TACTCTGTTACAAGCTTCCAGGACACTTGTTTAGTTTCCTCTGCTTCTTCTGGATTAAAATCATGCTCCT +TTAACCCACCTGGCAAACTTTCCTCAATAACAGAAAATGGATCTCTAGTCAAGGCACTATACATCAAATA +TTCCTTATTAACCCCTTTACAAATTAAAAAGCTAAAGGTACACAATTTTTGAGCATAGTTATTAATAGCA +GACACTCTATGCCTGTGTGGAGTAAGAAAAAACAGTATGTTATGATTATAACTGTTATGCCTACTTATAA +AGGTTACAGAATATTTTTCCATAATTTTCTTGTATAGCAGTGCAGCTTTTTCCTTTGTGGTGTAAATAGC +AAAGCAAGCAAGAGTTCTATTACTAAACACAGCATGACTCAAAAAACTTAGCAATTCTGAAGGAAAGTCC +TTGGGGTCTTCTACCTTTCTCTTCTTTTTTGGAGGAGTAGAATGTTGAGAGTCAGCAGTAGCCTCATCAT +CACTAGATGGCATTTCTTCTGAGCAAAACAGGTTTTCCTCATTAAAGGCATTCCACCACTGCTCCCATTC +ATCAGTTCCATAGGTTGGAATCTAAAATACACAAACAATTAGAATCAGTAGTTTAACACATTATACACTT +AAAAATTTTATATTTACCTTAGAGCTTTAAATCTCTGTAGGTAGTTTGTCCAATTATGTCACACCACAGA +AGTAAGGTTCCTTCACAAAGATCAAGTCCAAACCACATTCTAAAGCAATCGAAGCAGTAGCAATCAACCC +ACACAAGTGGATCTTTCCTGTATAATTTTCTATTTTCATGCTTCATCCTCAGTAAGCACAGCAAGCATAT +GCAGTTAGCAGACATTTTCTTTGCACACTCAGGCCATTGTTTGCAGTACATTGCATCAACACCAGGATTT +AAGGAAGAAGCAAATACCTCAGTTGCATCCCAGAAGCCTCCAAAGTCAGGTTGATGAGCATATTTTACTC +CATCTTCCATTTTCTTGTACAGAGTATTCATTTTCTTCATTTTTTCTTCATCTCCTCCTTTATCAGGATG +AAACTCCTTGCATTTTTTTAAATATGCCTTTCTCATCAGAGGAATATTCCCCCAGGCACTCCTTTCAAGA +CCTAGAAGGTCCATTAGCTGCAAAGATTCCTCTCTGTTTAAAACTTTATCCATCTTTGCAAAGCTTTTTG +CAAAAGCCTAGGCCTCCAAAAAAGCCTCCTCACTACTTCTGGAATAGCTCAGAGGCCGAGGCG""" + diff --git a/source/_static/figs/augmented_assignment_int.png b/source/_static/figs/augmented_assignment_int.png new file mode 100644 index 0000000000000000000000000000000000000000..7f74bfd65a85979a437194362fdafac4441e69d8 Binary files /dev/null and b/source/_static/figs/augmented_assignment_int.png differ diff --git a/source/_static/figs/augmented_assignment_list.png b/source/_static/figs/augmented_assignment_list.png new file mode 100644 index 0000000000000000000000000000000000000000..f7def4cf97c227fcd77efabf71039fb1d62096fc Binary files /dev/null and b/source/_static/figs/augmented_assignment_list.png differ diff --git a/source/_static/figs/augmented_assignment_string.png b/source/_static/figs/augmented_assignment_string.png new file mode 100644 index 0000000000000000000000000000000000000000..f00309135d780610a8de8c8607eefa0c8661ebb4 Binary files /dev/null and b/source/_static/figs/augmented_assignment_string.png differ