Introduction to UNIX and R Microarray Analysis in a Multi-User Environment

Total Page:16

File Type:pdf, Size:1020Kb

Introduction to UNIX and R Microarray Analysis in a Multi-User Environment Introduction to UNIX and R Microarray analysis in a multi-user environment Course web page http://www.cbs.dtu.dk/dtucourse/data.php Course program Lecture Slides Exercises Project Data Sets Link to the GenePublisher tool What do you need to know? • This is not a course on computers • But you will need some UNIX for the exercises, and for your final project • You will also need to know some R to handle the exercises • But GenePublisher will handle R for you during the projects Microarray Processing Pipeline Question/Experimental Design Array Design/Probe Design Buy Chip or Array Sample Preparation/Hybridization Image Analysis Normalization (Scaling) Expression Index Calculation Comparable Gene Expression Data Statistical Analysis Advanced Data Analysis: Clustering PCA Classification Promoter Analysis Regulatory Network What is UNIX? • UNIX is not just one operating system, but a collection of many different systems sharing a common interface • It has evolved alongside the internet and is geared toward multi-user environments, and big multi- processors like our servers • At it’s heart, UNIX is a text-based operating system – that means a little typing is required • UNIX Lives! (Particularly Linux!) The R Project for Statistical Computing R is an interpreted computer language random <- sample(c(9:16)) sample.name <- c(rep("+",4),rep("-",4)) fold.m <- Norm.Int.m[,9:12]/Norm.Int.m[,13:16] fold.mean.m <- apply(fold.m,1,function(x){mean(x,na.rm=TRU E)}) log.fold.mean.m <- log2(fold.mean.m) permuted.m <- Norm.Int.m[,c(1:8,random)] pVal.permuted.TF <- get.pval.ttest(permuted.m,9:12,13:16) fold.permuted.m <- permuted.m[,9:12]/permuted.m[,13:16] log.fold.permuted.mean.m <- log2(apply(fold.permuted.m,1,function(x){me an(x,na.rm=TRUE)})) plot(log.fold.mean.m,pVal.TF, main="Volcano Plot", log="y",xlab="M (log2 fold change)", ylab="P-value", pch="*", col="blue") Student Accounts Group Account Rune, Louise, Birgitte, David msc36 Iben, Shzeena, Lizette msc37 Line, Luise, Anna, Kristine msc38 Nina, Allan, Marianne, Ole msc39 Christian msc40 Password: Logging on – Windows users • Start the program ssh, it should be on your desktop •Click on “Quick Connect” • Enter the following: – Host name: genome.cbs.dtu.dk – User Name: mscXX (XX=Your account number) – Port Number: 22 – Authentication Method: <Profile Settings> • You will then be prompted for your password Navigating Directories Key commands: – ls #lists the files in the current directory – cd dir #changes working directory to ‘dir’ – mkdir dir #makes a new directory called ‘dir’ Nice tricks: – The shorthand ‘ll’ is short for ls –l – The asterisk ‘*’ is a wildcard – ‘ls *.txt’ will list all files ending with ‘.txt’ –‘cd ..’ takes you back one directory –plain ‘cd’ (no arguments) takes you to your home Starting with R Just type ‘ ’ on the command line R How to get help: > help.start() #Opens browser > help() #For more on using help > help(..) #For help on .. > help.search(“..”) #To search for .. How to leave again: > q() #Image can be saved to .RData Basic R commands Most arithmetic operators work like you would expect in R: > 4 + 2 #Prints ‘6’ > 3 * 4 #Prints ‘12’ as known from Operators have precedence basic algebra: > 1 + 2 * 4 #Prints ‘9’, while > (1 + 2) * 4 #Prints ‘12’ Functions A function call in R looks like this: – function_name(arguments) – Examples: > cos(pi/3) #Prints ‘0.5’ > exp(1) #Prints ‘2.718282’ A function is identified in R by the parentheses – That’s why it’s: , and not: help() help Variables (Objects) in R To assign a value to a variable (object): > x <- 4 #Assigns 4 to x > x = 4 #Assigns 4 to x (new) > x #Prints ‘4’ > y <- x + 2 #Assigns 6 to y Functions for managing variables: or lists all existing objects –ls() objects() tells the structure (type) of object ‘x’ – str(x) removes (deletes) the object ‘x’ – rm(x) Vectors in R A vector functions in R like a sequence of elements of the same mode. > x <- 1:10 #Creates a vector > y <- c(“a”,“b”,“c”) #So does this Handy functions for vectors: – Concatenates arguments into a vector –c() – Returns the smallest value in vector – min() – Returns the largest value in vector – max() – Returns the mean of the vector – mean() More on Vectors Elements in a vector can be accessed individually: > x[1] #Prints first element > x[1:10] #Prints first 10 elements > x[c(1,3)] #Prints element 1 and 3 Most functions expect one vector as argument, rather than individual numbers > mean(1,2,3) #Replies ‘1’ > mean(c(1,2,3)) #Replies ‘2’ Graphics and Visualization Visualization is one of R’s strong points. R has many functions for drawing graphs, including: – Draws a basic xy plot of x against y – plot(x,y) – Draws a histogram of values in x – hist(x) Adding stuff to plots – Add point (x,y) to existing graph. – points(x,y) – Connect points with line. – lines(x,y) – Writes string at (x,y). – text(x,y,str) Graphical Devices in R A graphical device is what ‘displays’ the graph. It can be a window, it can be the printer. Functions for plotting “Devices”: – This function allows you to change the – X11() size and composition of the plotting window. – Splits a plotting device – par(mfrow=c(x,y)) into x rows and y columns. – dev.print(postscript, file=“???.ps”) – Use this device to save the plot to a file. .
Recommended publications
  • Introduction to Unix
    Introduction to Unix Rob Funk <[email protected]> University Technology Services Workstation Support http://wks.uts.ohio-state.edu/ University Technology Services Course Objectives • basic background in Unix structure • knowledge of getting started • directory navigation and control • file maintenance and display commands • shells • Unix features • text processing University Technology Services Course Objectives Useful commands • working with files • system resources • printing • vi editor University Technology Services In the Introduction to UNIX document 3 • shell programming • Unix command summary tables • short Unix bibliography (also see web site) We will not, however, be covering these topics in the lecture. Numbers on slides indicate page number in book. University Technology Services History of Unix 7–8 1960s multics project (MIT, GE, AT&T) 1970s AT&T Bell Labs 1970s/80s UC Berkeley 1980s DOS imitated many Unix ideas Commercial Unix fragmentation GNU Project 1990s Linux now Unix is widespread and available from many sources, both free and commercial University Technology Services Unix Systems 7–8 SunOS/Solaris Sun Microsystems Digital Unix (Tru64) Digital/Compaq HP-UX Hewlett Packard Irix SGI UNICOS Cray NetBSD, FreeBSD UC Berkeley / the Net Linux Linus Torvalds / the Net University Technology Services Unix Philosophy • Multiuser / Multitasking • Toolbox approach • Flexibility / Freedom • Conciseness • Everything is a file • File system has places, processes have life • Designed by programmers for programmers University Technology Services
    [Show full text]
  • Bedtools Documentation Release 2.30.0
    Bedtools Documentation Release 2.30.0 Quinlan lab @ Univ. of Utah Jan 23, 2021 Contents 1 Tutorial 3 2 Important notes 5 3 Interesting Usage Examples 7 4 Table of contents 9 5 Performance 169 6 Brief example 173 7 License 175 8 Acknowledgments 177 9 Mailing list 179 i ii Bedtools Documentation, Release 2.30.0 Collectively, the bedtools utilities are a swiss-army knife of tools for a wide-range of genomics analysis tasks. The most widely-used tools enable genome arithmetic: that is, set theory on the genome. For example, bedtools allows one to intersect, merge, count, complement, and shuffle genomic intervals from multiple files in widely-used genomic file formats such as BAM, BED, GFF/GTF, VCF. While each individual tool is designed to do a relatively simple task (e.g., intersect two interval files), quite sophisticated analyses can be conducted by combining multiple bedtools operations on the UNIX command line. bedtools is developed in the Quinlan laboratory at the University of Utah and benefits from fantastic contributions made by scientists worldwide. Contents 1 Bedtools Documentation, Release 2.30.0 2 Contents CHAPTER 1 Tutorial We have developed a fairly comprehensive tutorial that demonstrates both the basics, as well as some more advanced examples of how bedtools can help you in your research. Please have a look. 3 Bedtools Documentation, Release 2.30.0 4 Chapter 1. Tutorial CHAPTER 2 Important notes • As of version 2.28.0, bedtools now supports the CRAM format via the use of htslib. Specify the reference genome associated with your CRAM file via the CRAM_REFERENCE environment variable.
    [Show full text]
  • 07 07 Unixintropart2 Lucio Week 3
    Unix Basics Command line tools Daniel Lucio Overview • Where to use it? • Command syntax • What are commands? • Where to get help? • Standard streams(stdin, stdout, stderr) • Pipelines (Power of combining commands) • Redirection • More Information Introduction to Unix Where to use it? • Login to a Unix system like ’kraken’ or any other NICS/ UT/XSEDE resource. • Download and boot from a Linux LiveCD either from a CD/DVD or USB drive. • http://www.puppylinux.com/ • http://www.knopper.net/knoppix/index-en.html • http://www.ubuntu.com/ Introduction to Unix Where to use it? • Install Cygwin: a collection of tools which provide a Linux look and feel environment for Windows. • http://cygwin.com/index.html • https://newton.utk.edu/bin/view/Main/Workshop0InstallingCygwin • Online terminal emulator • http://bellard.org/jslinux/ • http://cb.vu/ • http://simpleshell.com/ Introduction to Unix Command syntax $ command [<options>] [<file> | <argument> ...] Example: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file Introduction to Unix What are commands? • An executable program (date) • A command built into the shell itself (cd) • A shell program/function • An alias Introduction to Unix Bash commands (Linux) alias! crontab! false! if! mknod! ram! strace! unshar! apropos! csplit! fdformat! ifconfig! more! rcp! su! until! apt-get! cut! fdisk! ifdown! mount! read! sudo! uptime! aptitude! date! fg! ifup! mtools! readarray! sum! useradd! aspell! dc! fgrep! import! mtr! readonly! suspend! userdel! awk! dd! file! install! mv! reboot! symlink!
    [Show full text]
  • Roof Rail Airbag Folding Technique in LS-Prepost ® Using Dynfold Option
    14th International LS-DYNA Users Conference Session: Modeling Roof Rail Airbag Folding Technique in LS-PrePost® Using DynFold Option Vijay Chidamber Deshpande GM India – Tech Center Wenyu Lian General Motors Company, Warren Tech Center Amit Nair Livermore Software Technology Corporation Abstract A requirement to reduce vehicle development timelines is making engineers strive to limit lead times in analytical simulations. Airbags play a crucial role in the passive safety crash analysis. Hence they need to be designed, developed and folded for CAE applications within a short span of time. Therefore a method/procedure to fold the airbag efficiently is of utmost importance. In this study the RRAB (Roof Rail AirBag) folding is carried out in LS-PrePost® by DynFold option. It is purely a simulation based folding technique, which can be solved in LS-DYNA®. In this paper we discuss in detail the RRAB folding process and tools/methods to make this effective. The objective here is to fold the RRAB to include modifications in the RRAB, efficiently and realistically using common analysis tools ( LS-DYNA & LS-PrePost), without exploring a third party tool , thus reducing the turnaround time. Introduction To meet the regulatory and consumer metrics requirements, multiple design iterations are required using advanced CAE simulation models for the various safety load cases. One of the components that requires frequent changes is the roof rail airbag (RRAB). After any changes to the geometry or pattern in the airbag have been made, the airbag needs to be folded back to its design position. Airbag folding is available in a few pre-processors; however, there are some folding patterns that are difficult to be folded using the pre-processor folding modules.
    [Show full text]
  • Unix Programmer's Manual
    There is no warranty of merchantability nor any warranty of fitness for a particu!ar purpose nor any other warranty, either expressed or imp!ied, a’s to the accuracy of the enclosed m~=:crials or a~ Io ~helr ,~.ui~::~::.j!it’/ for ~ny p~rficu~ar pur~.~o~e. ~".-~--, ....-.re: " n~ I T~ ~hone Laaorator es 8ssumg$ no rO, p::::nS,-,,.:~:y ~or their use by the recipient. Furln=,, [: ’ La:::.c:,:e?o:,os ~:’urnes no ob~ja~tjon ~o furnish 6ny a~o,~,,..n~e at ~ny k:nd v,,hetsoever, or to furnish any additional jnformstjcn or documenta’tjon. UNIX PROGRAMMER’S MANUAL F~ifth ~ K. Thompson D. M. Ritchie June, 1974 Copyright:.©d972, 1973, 1974 Bell Telephone:Laboratories, Incorporated Copyright © 1972, 1973, 1974 Bell Telephone Laboratories, Incorporated This manual was set by a Graphic Systems photo- typesetter driven by the troff formatting program operating under the UNIX system. The text of the manual was prepared using the ed text editor. PREFACE to the Fifth Edition . The number of UNIX installations is now above 50, and many more are expected. None of these has exactly the same complement of hardware or software. Therefore, at any particular installa- tion, it is quite possible that this manual will give inappropriate information. The authors are grateful to L. L. Cherry, L. A. Dimino, R. C. Haight, S. C. Johnson, B. W. Ker- nighan, M. E. Lesk, and E. N. Pinson for their contributions to the system software, and to L. E. McMahon for software and for his contributions to this manual.
    [Show full text]
  • Counting Mountain-Valley Assignments for Flat Folds
    Counting Mountain-Valley Assignments for Flat Folds∗ Thomas Hull Department of Mathematics Merrimack College North Andover, MA 01845 Abstract We develop a combinatorial model of paperfolding for the pur- poses of enumeration. A planar embedding of a graph is called a crease pattern if it represents the crease lines needed to fold a piece of paper into something. A flat fold is a crease pattern which lies flat when folded, i.e. can be pressed in a book without crumpling. Given a crease pattern C =(V,E), a mountain-valley (MV) assignment is a function f : E → {M,V} which indicates which crease lines are con- vex and which are concave, respectively. A MV assignment is valid if it doesn’t force the paper to self-intersect when folded. We examine the problem of counting the number of valid MV assignments for a given crease pattern. In particular we develop recursive functions that count the number of valid MV assignments for flat vertex folds, crease patterns with only one vertex in the interior of the paper. We also provide examples, especially those of Justin, that illustrate the difficulty of the general multivertex case. 1 Introduction The study of origami, the art and process of paperfolding, includes many arXiv:1410.5022v1 [math.CO] 19 Oct 2014 interesting geometric and combinatorial problems. (See [3] and [6] for more background.) In origami mathematics, a fold refers to any folded paper object, independent of the number of folds done in sequence. The crease pattern of a fold is a planar embedding of a graph which represents the creases that are used in the final folded object.
    [Show full text]
  • Produktinformation LS 373, LS
    Product Information LS 373 LS 383 Incremental Linear Encoders 04/2021 LS 300 series (46) 88 K 1±0.3 80 CL 3 74 32 13 5.3 5 0.05/13 A A K 12 18 18 ±5 P M4 4 P ±5 0.3 5.5 3 5.5 ± 0.1/80 F K 0 0.1 F K K 1) 2) 0.03 Specifications LS 383 LS 373 Measuring standard Glass scale –6 –1 ML+105 Coefficient of linear expansion Þtherm 8 · 10 K 5.5 (ML+94) ±0.4 K Accuracy grade ±5 µm 40±20 0.1 F K 65±20 P P 6 Measuring length ML* 70 120 170 220 270 320 370 420 470 520 570 620 670 720 in mm 770 820 870 920 970 1020 1140 1240 16.3 (26.3) Reference marks LS 3x3: 1 reference mark in the middle 4.8 LS 3x3 C: distance-coded SW8 4 0.1/80 F 4 0±2 4.5 K The LS 477 and LS 487 are available as 4.3 SW8 12 56 Interface C replacement devices on short notice. 1 VPP TTL ML Signal period 20 µm Cable with metal armor: LS 383, LS 373 PUR cable: LS 477, LS 487 Integrated interpolation – 1-fold 5-fold 10-fold 20-fold Measuring step – 5 µm 1 µm 0.5 µm 0.25 µm 4 8.5 12 56 7.3 Supply voltage 5 V ±0.25 V/< 150 mA F = Machine guideway 88 CL 97.5 Without load ML = Measuring length 115 P = Measuring point for mounting = 0 to ML Electrical connection PUR cable and PUR cable with metal armor; cable outlet to the right on the mounting block C = Cable CL = Cable length 127 Cable length 3 m, 6 m K = Required mating dimensions PUR cable with metal armor: LS 477, LS 487 Connecting element 15-pin D-sub connector (male) 15-pin D-sub connector (male) 15-pin D-sub connector (female) 9-pin D-sub connector (male) 12-pin M23 connector (male) 12-pin M23 connector (male) Traversing speed 60 m/min Required moving force 5 N Vibration 55 Hz to 2000 Hz 100 m/s2 Shock 6 ms 200 m/s2 Operating temperature 0 °C to 50 °C Protection IEC 60529 IP53 Mass without cable 0.3 kg + 0.57 kg/m of measuring length * Please select when ordering 1) The LS 487 is also available through the HEIDENHAIN Service department on short notice.
    [Show full text]
  • Gnu Coreutils Core GNU Utilities for Version 6.9, 22 March 2007
    gnu Coreutils Core GNU utilities for version 6.9, 22 March 2007 David MacKenzie et al. This manual documents version 6.9 of the gnu core utilities, including the standard pro- grams for text and file manipulation. Copyright c 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License". Chapter 1: Introduction 1 1 Introduction This manual is a work in progress: many sections make no attempt to explain basic concepts in a way suitable for novices. Thus, if you are interested, please get involved in improving this manual. The entire gnu community will benefit. The gnu utilities documented here are mostly compatible with the POSIX standard. Please report bugs to [email protected]. Remember to include the version number, machine architecture, input files, and any other information needed to reproduce the bug: your input, what you expected, what you got, and why it is wrong. Diffs are welcome, but please include a description of the problem as well, since this is sometimes difficult to infer. See section \Bugs" in Using and Porting GNU CC. This manual was originally derived from the Unix man pages in the distributions, which were written by David MacKenzie and updated by Jim Meyering.
    [Show full text]
  • The Incomplete Scheme 48 Reference Manual for Release 1.8
    The Incomplete Scheme 48 Reference Manual for release 1.8 Richard Kelsey Jonathan Rees Mike Sperber A line may take us hours, yet if it does not seem a moment’s thought All our stitching and unstitching has been as nought. Yeats Adam’s Curse ii Acknowledgements Thanks to Scheme 48’s users for their suggestions, bug reports, and forbearance. Thanks also to Deborah Tatar for providing the Yeats quotation. iii Contents Contents iv 1 Introduction 1 2 User’s guide 2 2.1 Command line arguments . 2 2.2 Command processor . 3 2.3 Editing . 3 2.4 Performance . 3 2.5 Disassembler . 4 2.6 Module system . 4 2.7 Library . 6 3 Command processor 7 3.1 Current focus value and ## ..................... 7 3.2 Command levels . 8 3.3 Logistical commands . 9 3.4 Module commands . 9 3.5 Debugging commands . 9 3.6 Settings . 11 3.7 Inspection mode . 13 3.8 Command programs . 14 3.9 Building images . 15 3.10 Resource query and control . 15 3.11 Threads . 16 3.12 Quite obscure . 17 4 Module system 18 4.1 Introduction . 18 4.2 The configuration language . 19 4.3 Interfaces . 21 4.4 Macros . 22 4.5 Higher-order modules . 23 4.6 Compiling and linking . 23 iv 4.7 Semantics of configuration mutation . 23 4.8 Command processor support . 24 4.9 Configuration packages . 27 4.10 Discussion . 28 5 Libraries 30 5.1 General utilities . 30 5.2 Pretty-printing . 32 5.3 Bitwise integer operations . 32 5.4 Byte vectors .
    [Show full text]
  • Processing and Analyzing Equine Histone Chip-Seq
    Processing and analyzing equine histone ChIP-Seq Equine FAANG Group University of California, Davis (UCD) N. B. Kingsley, Colin Kern, Huaijun Zhou, Jessica Petersen, Carrie Finno, and Rebecca Bellone Notes: I. This bioinformatic workflow is based largely on a more extensive analysis pipeline by Colin Kern, which can be found at https://github.com/kernco/functional-annotation. II. All sample fastq files were named with the following format: ${MARK}_${TISSUE}_${REPLICATE}.fq.gz a. For example: H3K27me3_Ovary_B.fq.gz III. All input fastq files were named with the following format: INPUT_${TISSUE}_${REPLICATE}.fq.gz a. For example: Input_Ovary_B.fq.gz IV. All fastq files were stored in a directory named Raw_Reads. The following additional directories were also created: Trimmed_Reads, BWA_Output (with several subdirectories), and Peak_Calls. V. The reference genomes used for alignment were as follows: (1) EquCab2.0 (Equus_caballus.EquCab2.dna_sm.toplevel.fa.gz from ENSEMBL Release 90) and (2) EquCab3.0 (EquCab3.0_Genbank_Build.nowrap.fasta from NCBI) a. Depending on which alignment was being used, the path to one of these genomes was saved to a variable called genome. For example: genome=~/path/to/EquCab3.0_Genbank_Build.nowrap.fasta VI. Genome size and genome fraction were determined computationally (Step 9), however, using a known measure such as golden path length is also common. a. EquCab2.0 genome size: genome_size=22269963111 genome_fraction=0.90 b. EquCab3.0 genome size: genome_size=2409143234 genome_fraction=0.63 1 VII. All commands were run on the bash command-line. When processing numerous fastq files, one should consider utilizing a compute cluster with task array assignments to more efficiently process the data.
    [Show full text]
  • PWD Collects Water from Palmdale Public Schools for Lead Testing
    Summer 2018 Palmdale Water District Volume 4 Issue 2 2018 Water-Wise Landscape NEW Water Board of Directors Conversion Program Ambassadors Academy Now Accepting Applications for Robert E. Alvarado, Division 1 PWD is offering property owners cash Fall 2018! Joe Estes, Division 2 rebates to remove any grass and/or convert their front yards to a water-wise, Palmdale Water District is launching a Marco Henriquez, Division 3 drought friendly, xeriscape landscape. Water Ambassadors Academy to give interested community members the opportunity to learn in-depth about Kathy Mac Laren, Division 4 Funding is limited, and applications PWD’s history, infrastructure, facilities, Vincent Dino, Division 5 will be processed in the order they are water sources, and future projects. received. For more information, please call 661-456-1001. The goal of this new program is to engage and educate a diverse network of individuals in the PWD service area, 100TH ANNIVERSARY EVENT: 100th Anniversary Student who will become water ambassadors in PWD Collects Water from Palmdale Executive Team their communities so that more people Grand Celebration Contests become familiar with PWD. Public Schools for Lead Testing Sunday, July 22, 2018 Dennis D. LaMoreaux 1 p.m. - 4 p.m. The four-session academy is scheduled General Manager, CEO PWD for 5:30-730 p.m. on Wednesdays, Sept. Drinking water samples from nearly 30 Palmdale public schools 2029 E. Avenue Q, Palmdale 19, Sept. 26 and Oct. 3; and at 9 a.m.- Join us for free tacos, ice cream (while supplies last) Michael Williams 1 p.m. Saturday, Oct.
    [Show full text]
  • Download Vim Tutorial (PDF Version)
    Vim About the Tutorial Vi IMproved (henceforth referred to as Vim) editor is one of the popular text editors. It is clone of Vi editor and written by Bram Moolenaar. It is cross platform editor and available on most popular platforms like Windows, Linux, Mac and other UNIX variants. It is command-centric editor, so beginners might find it difficult to work with it. But once you master it, you can solve many complex text-related tasks with few Vim commands. After completing this tutorial, readers should be able to use Vim fluently. Audience This tutorial is targeted for both beginners and intermediate users. After completing this tutorial, beginners will be able to use Vim effectively whereas intermediate users will take their knowledge to the next level. Prerequisites This tutorial assumes that reader has basic knowledge of computer system. Additionally, reader should be able to install, uninstall and configure software packages on given system. Conventions Following conventions are followed in entire tutorial: $ command execute this command in terminal as a non-root user 10j execute this command in Vim’s command mode :set nu execute this command in Vim’s command line mode Copyright & Disclaimer Copyright 2018 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors.
    [Show full text]