1 / 14

Dynamic Arrays

Dynamic Arrays. Lecture 4. Arrays. In many languages the size of the array is fixed however in perl an array is considered to be dynamic: its size can be increase/ decrease while the program is being executed. Each element is a scalar variable An array in perl is declared as follows :

nedaa
Download Presentation

Dynamic Arrays

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dynamic Arrays Lecture 4

  2. Arrays • In many languages the size of the array is fixed however in perl an array is considered to be dynamic: its size can be increase/ decrease while the program is being executed. • Each element is a scalar variable • An array in perlis declared as follows: • @array_name

  3. Print Array contents • Declaration of an array in perl • @sequences ; empty array • efine(declare and assign values) an array • @sequences = (‘ATC’, ‘GTC’, ‘AAT’); • This Array contains 3 strings (set of 3 letters: codons!!! • Print the values of a non-empty array • Using “For” loops 3 possible ways: • If know number of elements of array: standard for-loop • If we do not know the number of elements we can: • Get length of array and use it with a for loop • Foreach - loop

  4. 3 ways to access elements of array • PrintArray.pl example Sample Code: • my @sequences = ( 'TTATTATGTT', 'GCTCAGTTCT', 'GACCTCTTAA', 'CTATGCGGTA', 'ATCTGACCTC' ); • #print values using standard for loop • for (my $index = 0; $index < 5; $index++) • { print "$sequences[$index]\n"; • } • for (my $index = 0; $index < scalar(@sequences) ; $index++) • foreach my $value(@sequences ) • { print "$value\n"; • }

  5. Input (add) elements to array • Perl uses dynamic array which means you can add/remove elements when the program is running. This is a very useful attribute of Perl • The elements can be added to the beginning or end of the array. • Step 1: • Create an array: @sequences; can be empty or contain data • Step 2 • Add elements to the array using the: • Push function : adds to end of an array : • push @seq, $sequence; • Unshift function: adds to the beginning of an array: • unshift@seq, $sequence; • See ExamplePushUnshift.pl • This adds elements enter by the user to the end/beginning of the array.

  6. Remove elements from an array • To remove an element from an array you can use two functions (reserved words). • Pop removes last element of array and assigns it (returns) to a variable • $last = pop @sequences; • Shift: removes and returns the first element of an array. • $first = shift @sequences; • Refer toPopShift.pl

  7. Remove Elements: splice and slice • To “assigning and remove” element(s) from anywhere in the array: • @removed = splice @seq, 1, 2 • The first value is where the splice begins and the second is how many elements are to be removed • @removed = splice @seq, [1 .. 3] • If @seq= (‘a’, ‘t’, ’g’ ,’c’) • What is the value of @removed and @seq after splice • slicing (assigning without removal): • @slice = @seq[1,2]; • @seq = (‘a’, ‘t’, ’g’ ,’c’) • What is the value of @slice and @seq • Refer: splice_slice.pl

  8. Dynamic Arrays • Other Array operations (refer to : splice_slice.pl) • $one_seq = @sequences[2] {zero based array} • The 3rd element of the array is assigned to scalar variable • @seq = @sequences; • All the elements of one array are assigned to the other • @combined = (@seq, @seq2)

  9. Arrays and Files • Theadvantage of using perl’s dynamic arrays is when you need to read the contents of a file of different lengths. • Use a while loop • while<MYFILE>{ • chomp; • push(@arr,$_);} • An approach is “slurping”: (slurping will not remove the carriage return) • @arr = <MYFILE>;

  10. Arrays: two more functions • Sort Function (sorts in alphabetical order) • Be aware of Capital letters as ‘A’ is not considered the same as ‘a’ • Can use uc (converts to upper case) or lc (convert to lower case) • @seq = sort(@sequences); • Reverse Function: reverses the elements (does not reverse the contents of the elements) • @sequences = reverse(@sequences) • The reverse function can also be used with scalar variables: • $reverse = reverse $string; • Sort_Reverse.pl

  11. Array and Lists • Lists are setsof constants or variables. • Values of a list assigned to any array • @clones = (’192a8’,’18c10’,’327h1’,’201e4’); • Values in an array assigned to a list of variables • ($first,$second,$third) = @clones; • The can be used like arrays but you refer to them by variable name as opposed to element number

  12. Exercise 1 • #! /usr/bin/perl • # The 'pushpop' program - pushing, popping, shifting and unshifting. • @sequences = ( 'TTATTATGTT', 'GCTCAGTTCT', 'GACCTCTTAA', • 'CTATGCGGTA', 'ATCTGACCTC' ); • print "@sequences\n"; • $last = pop @sequences; • print "@sequences\n"; • $first = shift @sequences; • print "@sequences\n"; • unshift @sequences, $last; • print "@sequences\n"; • push @sequences, ( $first, $last ); • print "@sequences\n"; • @combine = (@sequences, @sequences); • What is the expected output (run code to confirm)

  13. Exercise 2 • Read the contents of a 2 FASTA Files into an 2 arrays via while loop and slurping. • Print the contents of each • Remove the first element (line) of each array. • Reverse the second array • Print the contents of the second array. • Combined both arrays and print the contents to a third file which you will call file3.fasts

  14. Exercise 3 • Prompt the user for the name of 2fasta files and read their contents into 1 array. • splice the descriptor line (the first line) of each file from the array and print the contents to confirm they have been removed. • Ask the user to add three new sequences to the end of the array • Sort the array in reverse order • Ask the user to input a descriptor line stating their name and place of work ; e.g. “Denis Manley D.I.T. Kevin Street” • Add this descriptor line to the beginning of the array. • Print the contents the array to a file and print a report to the screen stating how many characters and lines were written to the file.

More Related