<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
	<title><![CDATA[BOL: Related items]]></title>
	<link>https://bioinformaticsonline.com/related/29479?offset=10</link>
	<atom:link href="https://bioinformaticsonline.com/related/29479?offset=10" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/pages/view/34814/bioinformatics-web-application-development-with-perl</guid>
	<pubDate>Tue, 26 Dec 2017 18:14:11 -0600</pubDate>
	<link>https://bioinformaticsonline.com/pages/view/34814/bioinformatics-web-application-development-with-perl</link>
	<title><![CDATA[Bioinformatics Web Application Development with Perl]]></title>
	<description><![CDATA[<div><p>Perl's second wave of adoption came from the growth of the world wide web. Dynamic web pages&mdash;the precursor to modern web applications&mdash;were easy to create with Perl and CGI. Thanks to Perl's ubiquity as a language for system administrators and its power to manipulate text, it was the default choice for web programming. Its presence everywhere made it popular and, in some ways, the duct tape of the Internet.</p><h4>Web Application Development</h4><p>The old days of CGI programs and the simple development style that represented seem clunky. Web pages have become web applications. Development has moved from generating static HTML to both client and server side programming, with rich client interfaces and powerful backends.</p><p>Perl is still well suited for developing modern web apps. The language grows more powerful and easier to use every year, the available libraries are wonderful and keep getting better, and the inventions and discoveries available in modern Perl are unsurpassed.</p><p>In particular, a modern Perl developer can do amazing things with modern Perl tools. If you still think of Perl web development as a&nbsp;<em>cgi-bin</em>&nbsp;directory full of messy scripts that spew warnings to STDERR, you're a decade out of date. Better yet, you can replace that mess piecemeal, thanks to the new tools and techniques of modern Perl. See, for example, the ever-growing list of technologies&nbsp;<a href="http://www.builtinperl.com/">Built in Perl</a>.</p><h4>Modern Perl Web Frameworks</h4><p>While the old wave of web development may have made the CGI.pm module central, modern Perl web programming follows a stricter separation of business logic, URL and request routing, and output. The days of slinging a string here, an array there, a Perl hash yonder, declaring every variable at the top of the program, and maybe making a subroutine are gone. The Perl world has seen the value of abstraction and ways to mechanize away boilerplate. Perl has dozens of frameworks and toolkits designed to make web development and deployment simpler.</p><p>Any of a dozen of these frameworks will help you do great things, but three in particular stand out. You can build web sites and web applications of tremendous value with all three. These are neither the only good possibilities (think of POE or Jifty or Continuity or...) nor the only mechanisms for web programming with Perl (see Mechanize or LWP or Mojo::UserAgent for more). Yet if you want three good options to choose between, start here.</p><h4>Catalyst</h4><p>The&nbsp;<a href="http://catalystframework.org/">Catalyst</a>&nbsp;framework is a flexible and powerful system for building small to large web apps. It uses the&nbsp;<a href="http://moose.perl.org/">Moose</a>&nbsp;object system to provide great APIs for extension and further development. It's the most mature of the modern top Perl web frameworks, yet it retains its flexibility and vibrancy. In particular, its plugin and extension ecosystem allows it to evolve to provide new and essential features.</p><p>Catalyst has embraced the Plack/PSGI standard for Perl web deployment and recent versions are exploring high-scalability, event-based request handling models.</p><h4>Dancer</h4><p>The&nbsp;<a href="http://perldancer.org/">Dancer</a>&nbsp;framework is deliberately minimal in syntax and scope, but it also has a vibrant plugin ecosystem. Dancer particularly excels for smaller sites and applications, though good programmers can build larger things with it.</p><p>The first version of Dancer was easy to use. Dancer 2 continues that ease while improving the internals and robustness of applications.</p><h4>Mojolicious</h4><p>The&nbsp;<a href="http://mojolicio.us/">Mojolicious</a>&nbsp;(Mojo) framework has a real-time design based on high performance event handling. Its focus is solving new and interesting problems in simple and effective ways, and the project has produced a lot of new code that does old things in better ways.</p><p>In particular, Mojolicious goes to great lengths to support new web standards, such as CSS 3, web sockets, and HTTP 2.</p><p>Where Catalyst embraces the CPAN fully, Mojolicious by design provides most of what an average app might need in a single download. It's still fully compatible with the CPAN, but the intention is to provide good working defaults in a package that's easy to start with. Mojo's fans are quick to praise it as fun to develop.</p><p>A modern Perl web developer should be familiar with at least one of these frameworks.</p><h4>Modern Perl Storage Mechanisms</h4><p>Perl's venerable&nbsp;<a href="http://search.cpan.org/perldoc?DBI">DBI</a>&nbsp;module has been the focal point of database access since its invention. Its design allows it to provide the same interface to huge relational databases and flat files alike through its DBD extension mechanism. Yet the DBI by itself isn't the be-all, end-all of data storage and access in Perl.</p><h4>DBIx::Class</h4><p><a href="http://search.cpan.org/perldoc?DBIx::Class">DBIx::Class</a>&nbsp;sits on top of DBI to provide an API to your database based on the concept of queries and results. This is often sufficient to remove all but the most complicated of SQL from your code, leaving you to manipulate your business models instead of the small details of how a relational database works. The power and maintainability you receive is well the small cost of the learning curve.</p><p>Even better, DBIC can manage (and even generate) your database schema for you.</p><p>Recent versions of DBIC have demonstrated that a well-written ORM can perform much better than even clever hand-written code. Because it builds on the Perl DBI, it scales everywhere from SQLite to PostgreSQL, MySQL, Oracle, and more.</p><h3>Rose::DB</h3><p>The lesser-known but no less powerful&nbsp;<a href="http://search.cpan.org/perldoc?Rose::DB::Object">Rose::DB::Object</a>&nbsp;builds on&nbsp;<a href="http://search.cpan.org/perldoc?Rose::DB">Rose::DB</a>&nbsp;to provide an object-relational mapper for Perl. While its high level features most directly compare to those of DBIx::Class, it's often measurably faster.</p><h4>NoSQL on the CPAN</h4><p>Of course the&nbsp;<a href="http://search.cpan.org/">CPAN</a>&nbsp;has modules for almost any NoSQL database or job queue or persistence mechanism you could name, and several you have never heard of. Everything you need is a quick CPAN or cpanm away!</p><h4>Modern Perl Deployment Strategies</h4><p>In the early days of the web, deploying a Perl web application meant putting one or more&nbsp;<em>.cgi</em>&nbsp;or&nbsp;<em>.pl</em>&nbsp;files in a special directory and hoping that your system administrator had everything configured correctly. The execution model was often slow and cumbersome, and accessing shared resources such as databases was often tricky.</p><p>Modern Perl has better choices. While deployment strategies are the source of many arguments, the return on your investment from learning the modern way is impressive.</p><h4>Plack/PSGI</h4><p>The PSGI specification (as exemplified by&nbsp;<a href="http://plackperl.org/">Plack</a>) describes a strategy for building Perl web apps independent of server and with the possibility to share custom processing behaviors.</p><p>In other words, it's a standard for writing Perl apps to take advantage of the huge ecosystem of Perl development available on the CPAN without tying yourself to a server like Apache, Apache 2, nginx, or anything else.</p><p>Any good modern Perl web framework (including those listed here) supports PSGI. Several deployment mechanisms exist to meet various business needs which also support PSGI. In particular, you can deploy the same application with a local testing server on your own machine as you can to your production server or servers without changing your application at all.</p><h4>mod_perl</h4><p>The older but still viable mod_perl Apache httpd module embeds Perl into the web server. This was the first widespread persistence mechanism for Perl web applications themselves and it's still popular to this day, though PSGI compliance is often the choice for new development. (PSGI handlers to use mod_perl as the backend are available.)</p><p>Modern Perl developers should familiarize themselves with PSGI and the wealth of available Plack middleware.</p><h4>Perl Web Development</h4><p>Of course no discussion of Perl web development would be complete without mentioning the strength of the CPAN. Almost any project will benefit from the wealth of freely available libraries built to solve real problems. These distributions run the gamut from full-blown web frameworks and content management systems to APIs for web services, development tools, testing systems, and interfaces to document formats and external resources.</p><p>For example, if you need to write a web service which accepts JSON data and produces Excel spreadsheets, you can glue together a few CPAN distributions and get the job done early. If you need to consume XML from a remote service and emit a PDF, you're in luck.</p><p>Perl's prowess as a general purpose programming language as well as its flexibility and power in managing text and gluing systems together make it a wonderful fit for web development. The community's adoption of modern Perl standards such as PSGI and Plack only enhance your power.</p><p>Web application development in Perl is still viable, and modern Perl tools and techniques and libraries make it more powerful and pleasant than ever.</p></div>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/news/view/39606/amity-university-bioinformatics-summer-program-kolkata</guid>
	<pubDate>Tue, 11 Jun 2019 21:27:10 -0500</pubDate>
	<link>https://bioinformaticsonline.com/news/view/39606/amity-university-bioinformatics-summer-program-kolkata</link>
	<title><![CDATA[Amity University Bioinformatics Summer Program - Kolkata]]></title>
	<description><![CDATA[<p>Registrations are now open for the 2019 Summer Bioinformatics Training program at Amity University, Kolkata. The program will focus on introductory topics for life science students. We will review important history, topics and challenges bioinformatics can help address in the context of basic research, discovery and industry.</p><p>Read more: https://edu.t-bio.info/amity-university-summer-bioinformatics-program-registrations-are-open/</p>]]></description>
	<dc:creator>eliabrodsky</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/710/how-to-install-perl-modules-manually-using-cpan-command-and-other-quick-ways</guid>
	<pubDate>Fri, 12 Jul 2013 07:20:24 -0500</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/710/how-to-install-perl-modules-manually-using-cpan-command-and-other-quick-ways</link>
	<title><![CDATA[How to install Perl modules manually, using CPAN command, and other quick ways]]></title>
	<description><![CDATA[<p>As a bioinformatics programmer, and crunchy data analyser you need to install several perl modules and dependencies. Installing Perl modules manually by resolving all the dependencies is&nbsp; tedious and annoying process. Some of the packages like GD is the real pain. <br /><br />However, Installing Perl modules using CPAN is a better solution, as it resolves all the dependencies automatically. In this article, let us review how to install Perl modules on Linux ( which is prefereced amonst bioinformatician) using both manual and CPAN method.<br /><br />When a Perl module is not installed, application will display the following error message. In this example, XML::Parser Perl module is missing.</p><p>Can't locate XML/parser.pm in @INC (@INC contains:<br />/usr/lib/perl5/5.10.0/i386-linux-thread-multi<br />/usr/lib/perl5/5.10.0<br />/usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi<br />/usr/local/lib/perl5/site_perl/5.10.0<br />/usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi<br />/usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl<br />/usr/lib/perl5/site_perl/5.10.0 .)</p><p><strong>Manual Method of Perl Module Installation</strong></p><ul>
<li>Install Perl Modules Manually</li>
</ul><p>This manual method is very useful when your computer or server is not connected to the Internet.</p><p>Download Perl module: <br />Go to CPAN Search website and search for the module that you wish to download. In this example, let us search, download and install XML::Parser Perl module. I have downloaded the XML-Parser-2.36.tar.gz to /home/download<br /><br /># cd /home/download<br /># gzip -d XML-Parser-2.36.tar.gz<br /># tar xvf XML-Parser-2.36.tar<br /># cd XML-Parser-2.36<br /><br />Build the perl module: <br />Build by running Makefile.PL, remember the case sensitivity, make and make test.<br /><br /># perl Makefile.PL<br />Checking if your kit is complete...<br />Looks good<br />Writing Makefile for XML::Parser::Expat<br />Writing Makefile for XML::Parser<br /># make<br /># make test<br /><br />Install the perl module:<br />Now your package is ready to install.<br /><br /># make install<br /><br />As a newbie it looks pretty simple, and one go. But, luckily this is a very simple one module with no dependencies. Typically, Perl modules will be dependent on several other modules. Just imagine chasing all these dependencies one-by-one, thinking ... oh ye I got it. That will be very painful and annoying task. I recommend the CPAN method of installation as shown below.</p><p><strong>Install Perl Modules using CPAN automatically</strong></p><p>Logically, you should must have the CPAN perl module installed in your server or computer before you can install any other Perl modules using CPAN. I know you&nbsp; are laughing, "to install a perl module you need another perl module"&nbsp; ;)<br /><br />Lets verify whether CPAN is already installed:<br /><br />To install Perl modules using CPAN, make sure the cpan command is working. Following are the error message when CPAN module is not installed.<br /><br /># cpan<br />-bash: cpan: command not found<br /><br /># perl -MCPAN -e shell<br />Can't locate CPAN.pm in @INC (@INC contains:<br />/usr/lib/perl5/5.10.0/i386-linux-thread-multi<br />/usr/lib/perl5/5.10.0<br />/usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi<br />/usr/local/lib/perl5/site_perl/5.10.0<br />/usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi<br />/usr/lib/perl5/vendor_perl/5.10.0<br />/usr/lib/perl5/vendor_perl /usr/lib/perl5/site_perl/5.10.0 .).<br />BEGIN failed--compilation aborted.<br /><br />Install the CPAN module using yum:<br />If CPAN in not installed in your system, you can use "yum" for the rescue. Dont worry biological data cruncher, this is true we are now dependent all these tiny magicians :). <br /><br /># yum install perl-CPAN<br /><br />Output of yum install perl-CPAN command:</p><p>Loaded plugins: refresh-packagekit<br />updates-newkey&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 2.3 kB&nbsp;&nbsp;&nbsp;&nbsp; 00:00<br />primary.sqlite.bz2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 2.4 MB&nbsp;&nbsp;&nbsp;&nbsp; 00:00<br />Setting up Install Process<br />Parsing package install arguments<br /><br />Resolving Dependencies<br />Transaction Summary<br />=============================================================================<br />Install&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 Package(s)<br />Update&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Package(s)<br />Remove&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Package(s)<br /><br />Total download size: 1.0 M<br />Is this ok [y/N]: y<br />Downloading Packages:<br />(1/5): perl-ExtUtils-ParseXS-2.18-31.fc9.i386.rpm&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 30 kB&nbsp;&nbsp;&nbsp;&nbsp; 00:00<br />(2/5): perl-Test-Harness-2.64-31.fc9.i386.rpm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 70 kB&nbsp;&nbsp;&nbsp;&nbsp; 00:00<br />(3/5): perl-CPAN-1.9205-31.fc9.i386.rpm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 217 kB&nbsp;&nbsp;&nbsp;&nbsp; 00:00<br />(4/5): perl-ExtUtils-MakeMaker-6.36-31.fc9.i386.rpm&nbsp;&nbsp; | 284 kB&nbsp;&nbsp;&nbsp;&nbsp; 00:00<br />(5/5): perl-devel-5.10.0-31.fc9.i386.rpm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 408 kB&nbsp;&nbsp;&nbsp;&nbsp; 00:00<br /><br />Installing&nbsp;&nbsp;&nbsp;&nbsp; : perl-ExtUtils-ParseXS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [1/5]<br />Installing&nbsp;&nbsp;&nbsp;&nbsp; : perl-devel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [2/5]<br />Installing&nbsp;&nbsp;&nbsp;&nbsp; : perl-Test-Harness&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [3/5]<br />Installing&nbsp;&nbsp;&nbsp;&nbsp; : perl-ExtUtils-MakeMaker&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [4/5]<br />Installing&nbsp;&nbsp;&nbsp;&nbsp; : perl-CPAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [5/5]<br /><br /><br />Installed: perl-CPAN.i386 0:1.9205-31.fc9<br />Dependency Installed:<br />&nbsp; perl-ExtUtils-MakeMaker.i386 0:6.36-31.fc9<br />&nbsp; perl-ExtUtils-ParseXS.i386 1:2.18-31.fc9<br />&nbsp; perl-Test-Harness.i386 0:2.64-31.fc9<br />&nbsp; perl-devel.i386 4:5.10.0-31.fc9<br />Complete!<br /><br />Configure cpan the first time:<br />Once the CPAN is installed, you need to configure it by executing cpan, you should set some configuration parameters as shown below. I have shown only the important configuration parameters below. Accept all the default values by pressing enter.<br /><br />Note: Make sure to execute &ldquo;o conf commit&rdquo; in the cpan prompt after the configuration to save the settings.<br /><br /># cpan<br /><br />Sorry, we have to rerun the configuration dialog for CPAN.pm due<br />to some missing parameters...<br /><br />CPAN build and cache directory? [/root/.cpan]<br />Download target directory? [/root/.cpan/sources]<br />Directory where the build process takes place? [/root/.cpan/build]<br /><br />Always commit changes to config variables to disk? [no]<br />Cache size for build directory (in MB)? [100]<br />Let the index expire after how many days? [1]<br /><br />Perform cache scanning (atstart or never)? [atstart]<br />Cache metadata (yes/no)? [yes]<br />Policy on building prerequisites (follow, ask or ignore)? [ask]<br /><br />Parameters for the 'perl Makefile.PL' command? []<br />Parameters for the 'perl Build.PL' command? []<br /><br />Your ftp_proxy? []<br />Your http_proxy? []<br />Your no_proxy? []<br />Is it OK to try to connect to the Internet? [yes]<br /><br />First, pick a nearby continent and country by typing in the number(s)<br />(1) Africa<br />(2) Asia<br />(3) Central America<br />(4) Europe<br />(5) North America<br />(6) Oceania<br />(7) South America<br />Select your continent (or several nearby continents) [] 5<br /><br />(1) Bahamas<br />(2) Canada<br />(3) Mexico<br />(4) United States<br />Select your country (or several nearby countries) [] 4<br /><br />(2) ftp://carroll.cac.psu.edu/pub/CPAN/<br />(3) ftp://cpan-du.viaverio.com/pub/CPAN/<br />(4) ftp://cpan-sj.viaverio.com/pub/CPAN/<br />(5) ftp://cpan.calvin.edu/pub/CPAN<br />(6) ftp://cpan.cs.utah.edu/pub/CPAN/<br />e.g. '1 4 5' or '7 1-4 8' [] 2-16<br /><br />cpan[1]&gt; o conf commit<br />commit: wrote '/usr/lib/perl5/5.10.0/CPAN/Config.pm'<br /><br />cpan[2]&gt; quit<br />No history written (no histfile specified).<br />Lockfile removed.<br /><br /></p><ul>
<li>Install Perl Modules using CPAN</li>
</ul><p>Hey smile please, now you are ready with CPAN and can download modules in one line command. <br /><br />You can use one of the following method to install a Perl module using cpan:<br /><br /># perl -MCPAN -e 'install Bundle::BioPerl'<br /><br />(or)<br /><br /># cpan<br />cpan shell -- CPAN exploration and modules installation (v1.9205)<br />ReadLine support available (maybe install Bundle::CPAN or Bundle::CPANxxl?)<br /><br />cpan[1]&gt; install "Bundle::BioPerl"<br /><br />In the example above, CPAN will check for&nbsp;Bundle::BioPerl dependencies and automatically resolves and installs&nbsp;Bundle::BioPerl with all the dependent Perl modules.</p><ul>
<li>Quick Ways</li>
</ul><p>Oh, look at your face.. smily hmm :). This is what your are looking for, a quick and best way to install Perl modules, Bioperl. Following are the the steps to download BioPerl in your server/computer.</p><p># sudo apt-cache search perl BioPerl</p><p>Output will be like as follows:</p><p>bioperl - Perl tools for computational molecular biology<br />bioperl-run - BioPerl wrappers: scripts<br />libbio-perl-perl - BioPerl core perl modules<br />libbio-perl-run-perl - BioPerl wrappers: modules<br />libbio-samtools-perl - Perl interface to SamTools library for DNA sequencing<br />libbiojava-java - Java API to biological data and applications (default version)<br />libbiojava3-java - Java API to biological data and applications (default version)<br />python-biopython-sql - Biopython support for the BioSQL database schema<br />libbtlib-perl - library for basic sequence manipulation<br /><br /></p><p># sudo apt-get install bioperl</p><p>If it is installed then flash the following message:</p><p>Reading package lists... Done<br />Building dependency tree&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />Reading state information... Done<br />bioperl is already the newest version.<br />0 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.</p><p>In it is found not installed in your server or system them install all with dependencies.</p><p>You can use the same approach to install all the modules, and packages if required.</p><p>Thanks for reading. Best of luck for your research.</p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/1182/installing-perl-gd-module</guid>
	<pubDate>Mon, 22 Jul 2013 14:02:01 -0500</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/1182/installing-perl-gd-module</link>
	<title><![CDATA[Installing Perl GD Module]]></title>
	<description><![CDATA[<div><p>In comparative genome analysis work, we usually compare more than two genomes and looks for syntenic regions amongst them. In my research I used Evolution Highway (RH) <a href="http://eh-demo.ncsa.uiuc.edu/">http://eh-demo.ncsa.uiuc.edu/</a>, which is a collaborative project designed to provide a visual means for simultaneously comparing genomes of multiple amniote species. The tool removes the burden of manually aligning these maps and allows cognitive skills to be used toward something more valuable than preparation and transformation of data. In addition to EH, attractive Circos (<a href="http://circos.ca/">http://circos.ca/</a>) is also very popular for this kind of analysis.</p><p>The EH is available online, and can be easily access and use, whereas Circos installation is not entirely straightforward. One of the most difficult parts of the installation involves installing the GD library. Since there weren't good instructions for installing this library on the internet I decided to post instructions here in case they are useful to anyone else.</p><p><strong>Following are the steps to install GD modules in Mac OS</strong><br /><br />1. Setup<br /><br />Create a folder for the files:<br /><br />$ mkdir -p /SourceCache<br />$ cd /SourceCache<br /><br />Get and unpack the required Jpeg-6b and GD libraries:<br />Download Jpeg-6b (<a href="http://code.google.com/p/google-desktop-for-linux-mirror/downloads/detail?name=jpeg-6b.tar.gz&amp;can=2&amp;q">http://code.google.com/p/google-desktop-for-linux-mirror/downloads/detail?name=jpeg-6b.tar.gz&amp;can=2&amp;q</a>)<br />Download GD (<a href="http://search.cpan.org/%7Elds/GD-2.46/">http://search.cpan.org/~lds/GD-2.46/</a>)<br /><br />Place the "tar.gz" files in "/SourceCache" and double click to unpack.<br /><br />2. Install libjpeg<br /><br />Copy the "config.sub" and "config.guess" files to "/SourceCache". Note that your "config.sub" and ""config.guess" files may be in a slightly different location. The commands below show where they were on my machine:<br /><br />$ cd /SourceCache/jpeg-6b/src<br />$ cp /usr/share/libtool/config/config.sub .<br />$ cp /usr/share/libtool/config/config.guess .<br /><br />Configure libjpeg as follows. Note that this was installed on a 64 bit machine. However, this method may configure it in a 32 bit format. This may not be the best way to configure the installation but it works.<br /><br />$ .configure --enable-shared<br />$ make<br /><br />Check to see if the following directories exist on your machine. Create the missing directories in the following manner:<br /><br />$ mkdir -p /usr/local/include<br />$ mkdir -p /usr/local/bin<br />$ mkdir -p /usr/local/lib<br />$ mkdir -p /usr/local/man/man1<br /><br />Finish making and installing libjpeg:<br /><br />$ make install<br /><br />3. Install GD<br /><br />$ cd /SourceCache/GD-2.46/GD/<br />$ perl Makefile.PL<br />$ make<br />$ make test (optional)<br />$ make html (optional)<br />$ make install</p><p><strong>Other way for Mac OS</strong><br />The easiest way to get a lot of these is with a program called Fink, which is similar in nature to the CPAN installer, but installs common GNU utilities. Fink is available from &lt;<a href="http://sourceforge.net/projects/fink/%3E">http://sourceforge.net/projects/fink/&gt;</a>.<br /><br />Follow the instructions for setting up Fink. Once it's installed, you'll want to run the following as root: fink install gd<br /><br />It will prompt you for a number of dependencies, type 'y' and hit enter to install all of the dependencies. Then watch it work.<br /><br />To prevent creating conflicts with the software that Apple installs by default, Fink creates its own directory tree at /sw where it installs most of the software that it installs. This means your libraries and headers for libgd will be at /sw/lib and /sw/include instead of /usr/lib and /usr/local/include. Because of these changed locations for the libraries, the Perl GD module will not install directly via CPAN, because it looks for the specific paths instead of getting them from your environment. But there's a way around that :-)<br /><br />Instead of typing "install GD" at the cpan&gt; prompt, type look GD. This should go through the motions of downloading the latest version of the GD module, then it will open a shell and drop you into the build directory. Apply below patch to the Makefile.PL file (save the patch into a file and use the command patch &lt; patchfile.)<br /><br />Then, run these commands to finish the installation of the GD module:<br /><br />perl Makefile.PL<br />make<br />make test<br />make install<br />And don't forget to run exit to get back to CPAN.</p><p>&nbsp;</p><p><strong>Install on MS Window, using PPM</strong></p><p>C:\Documents and Settings\Owner&gt;ppm<br />PPM interactive shell (2.2.0) - type 'help' for available commands.<br />PPM&gt; install GD<br />Install package 'GD?' (y/N): y<br />Installing package 'GD'...<br />Downloading <a href="http://ppm.ActiveState.com/PPMPackages/5.6plus/MSW">http://ppm.ActiveState.com/PPMPackages/5.6plus/MSW</a>. ...<br />Installing C:\Perl\site\lib\auto\GD\GD.bs<br />Installing C:\Perl\site\lib\auto\GD\GD.dll<br />Installing C:\Perl\site\lib\auto\GD\GD.exp<br />Installing C:\Perl\site\lib\auto\GD\GD.lib<br />Installing C:\Perl\html\site\lib\GD.html<br />Installing C:\Perl\site\lib\GD.pm<br />Installing C:\Perl\site\lib\qd.pl<br />Installing C:\Perl\site\lib\auto\GD\autosplit.ix<br />PPM&gt;<br /><br /><br />If you can't install it from ppm. You can download it:<br /><a href="http://ppm.ActiveState.com/PPMPackages/5.6plus/MSW">http://ppm.ActiveState.com/PPMPackages/5.6plus/MSW</a>.<br /><br /><br />BTW,All Perl 5.6.1 Modules are located at:<br /><br /><a href="http://ppm.ActiveState.com/PPMPackages/5.6plus/MSW">http://ppm.ActiveState.com/PPMPackages/5.6plus/MSW</a>.</p><p>&nbsp;</p><p><strong>Install the Perl GD Module on Linux</strong><br /><br />$ sudo perl -MCPAN -e shell<br /><br />Since it was the first time I had run this command on this particular machine I had to answer a lot of questions but simply selected the defaults for everything as this usually works for me. Once in the CPAN shell I entered<br /><br />$ install Bundle::CPAN<br /><br />and selected all of the defaults again. Once the CPAN bundle had finished installing I tried to install GD::Graph by typing<br /><br />$ install GD::Graph<br /><br />but it failed with hundreds of errors &ndash; the first of which was<br /><br />GD.xs:7:16: error: gd.h: No such file or directory<br /><br />This was fixed with the following apt-get command (in the bash shell)<br /><br />$ sudo apt-get install libgd2-xpm-dev<br /><br />back in the CPAN shell I still couldn&rsquo;t get GD::Graph to build and I guessed this was because of some left over files from the failed build. I don&rsquo;t know the command to clean things up inside the CPAN shell and am too lazy to read the docs so I simply went into the .cpan/build directory in my home directory and deleted anything that started with GD &ndash; eg<br /><br />$ rm -rf GD-2.35-HC_vkB<br /><br />$ rm -rf GDGraph-1.44-Evfibe<br /><br />and so on. Those strings at the end (VkB and so on) look random so they might be different on your machine. Then I went back into the CPAN shell and ran<br /><br />$ install GD::Graph<br /><br />There were a few dependencies which the script fetched and installed for me but everything worked smoothly.</p><p>Manual and other Perl Module instalation are mentioned in my previous blog @ <a href="http://bioinformaticsonline.com/blog/view/710/how-to-install-perl-modules-manually-using-cpan-command-and-other-quick-ways">http://bioinformaticsonline.com/blog/view/710/how-to-install-perl-modules-manually-using-cpan-command-and-other-quick-ways</a></p></div>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/pages/view/11181/perl-one-liner-for-bioinformatician</guid>
	<pubDate>Fri, 30 May 2014 05:49:07 -0500</pubDate>
	<link>https://bioinformaticsonline.com/pages/view/11181/perl-one-liner-for-bioinformatician</link>
	<title><![CDATA[Perl one-liner for bioinformatician !!!]]></title>
	<description><![CDATA[<p>With the emergence of NGS technologies, and sequencing data most of the bioinformaticians mung and wrangle around massive amounts of genomics text. There are several "standardized" file formats (FASTQ, SAM, VCF, etc.) and some tools for manipulating them (fastx toolkit, samtools, vcftools, etc.), there are still times where knowing a little bit of Perl onliner is extremely helpful.</p><p>Perl one-liners are small and awesome Perl programs that fit in a single line of code and they do one thing really well. These things include changing line spacing, numbering lines, doing calculations, converting and substituting text, deleting and printing certain lines, parsing logs, editing files in-place, doing statistics, carrying out system administration tasks, updating a bunch of files at once, and many more. Perl one-liners will make you the shell warrior. Anything that took you minutes to solve, will now take you seconds!<br /><br />perl -pe '$\="\n"'&nbsp; &nbsp;<br />#double space a file<br /><br />perl -pe '$_ .= "\n" unless /^$/' <br />#double space a file except blank lines<br /><br />perl -pe '$_.="\n"x7' <br />#7 space in a line.<br /><br />perl -ne 'print unless /^$/' <br />#remove all blank lines<br /><br />perl -lne 'print if length($_) &lt; 20' <br />#print all lines with length less than 20.<br /><br />perl -00 -pe '' <br />#If there are multiple spaces, delete all leaving one(make the file a single spaced file).<br /><br />perl -00 -pe '$_.="\n"x4' <br />#Expand single blank lines into 4 consecutive blank lines<br /><br />perl -pe '$_ = "$. $_"'<br />#Number all lines in a file<br /><br />perl -pe '$_ = ++$a." $_" if /./' <br />#Number only non-empty lines in a file<br /><br />perl -ne 'print ++$a." $_" if /./' <br />#Number and print only non-empty lines in a file<br /><br />perl -pe '$_ = ++$a." $_" if /regex/' <br />#Number only lines that match a pattern<br /><br />perl -ne 'print ++$a." $_" if /regex/' <br />#Number and print only lines that match a pattern<br /><br />perl -ne 'printf "%-5d %s", $., $_ if /regex/' <br />#Left align lines with 5 white spaces if matches a pattern (perl -ne 'printf "%-5d %s", $., $_' : for all the lines)<br /><br />perl -le 'print scalar(grep{/./}&lt;&gt;)' <br />#prints the total number of non-empty lines in a file<br /><br />perl -lne '$a++ if /regex/; END {print $a+0}' <br />#print the total number of lines that matches the pattern<br /><br />perl -alne 'print scalar @F' <br />#print the total number fields(words) in each line.<br /><br />perl -alne '$t += @F; END { print $t}' <br />#Find total number of words in the file<br /><br />perl -alne 'map { /regex/ &amp;&amp; $t++ } @F; END { print $t }' <br />#find total number of fields that match the pattern<br /><br />perl -lne '/regex/ &amp;&amp; $t++; END { print $t }' <br />#Find total number of lines that match a pattern<br /><br />perl -le '$n = 20; $m = 35; ($m,$n) = ($n,$m%$n) while $n; print $m' <br />#will calculate the GCD of two numbers.<br /><br />perl -le '$a = $n = 20; $b = $m = 35; ($m,$n) = ($n,$m%$n) while $n; print $a*$b/$m' <br />#will calculate lcd of 20 and 35.<br /><br />perl -le '$n=10; $min=5; $max=15; $, = " "; print map { int(rand($max-$min))+$min } 1..$n' <br />#Generates 10 random numbers between 5 and 15.<br /><br />perl -le 'print map { ("a".."z",&rdquo;0&rdquo;..&rdquo;9&rdquo;)[rand 36] } 1..8'<br />#Generates a 8 character password from a to z and number 0 &ndash; 9.<br /><br />perl -le 'print map { ("a",&rdquo;t&rdquo;,&rdquo;g&rdquo;,&rdquo;c&rdquo;)[rand 4] } 1..20'<br />#Generates a 20 nucleotide long random residue.<br /><br />perl -le 'print "a"x50'<br />#generate a string of &lsquo;x&rsquo; 50 character long<br /><br />perl -le 'print join ", ", map { ord } split //, "hello world"'<br />#Will print the ascii value of the string hello world.<br /><br />perl -le '@ascii = (99, 111, 100, 105, 110, 103); print pack("C*", @ascii)'<br />#converts ascii values into character strings.<br /><br />perl -le '@odd = grep {$_ % 2 == 1} 1..100; print "@odd"'<br />#Generates an array of odd numbers.<br /><br />perl -le '@even = grep {$_ % 2 == 0} 1..100; print "@even"'<br />#Generate an array of even numbers<br /><br />perl -lpe 'y/A-Za-z/N-ZA-Mn-za-m/' file <br />#Convert the entire file into 13 characters offset(ROT13)<br /><br />perl -nle 'print uc' <br />#Convert all text to uppercase:<br /><br />perl -nle 'print lc' <br />#Convert text to lowercase:<br /><br />perl -nle 'print ucfirst lc' <br />#Convert only first letter of first word to uppercas<br /><br />perl -ple 'y/A-Za-z/a-zA-Z/' <br />#Convert upper case to lower case and vice versa<br /><br />perl -ple 's/(\w+)/\u$1/g' <br />#Camel Casing<br /><br />perl -pe 's|\n|\r\n|' <br />#Convert unix new lines into DOS new lines:<br /><br />perl -pe 's|\r\n|\n|' <br />#Convert DOS newlines into unix new line<br /><br />perl -pe 's|\n|\r|' <br />#Convert unix newlines into MAC newlines:<br /><br />perl -pe '/regexp/ &amp;&amp; s/foo/bar/' <br />#Substitute a foo with a bar in a line with a regexp.</p><p>Reference/Sources:</p><p>http://genomics-array.blogspot.in/2010/11/some-unixperl-oneliners-for.html</p><p><a href="http://genomespot.blogspot.com/2013/08/a-selection-of-useful-bash-one-liners.html">http://genomespot.blogspot.com/2013/08/a-selection-of-useful-bash-one-liners.html</a></p><p><a href="http://biowize.wordpress.com/2012/06/15/command-line-magic-for-your-gene-annotations/">http://biowize.wordpress.com/2012/06/15/command-line-magic-for-your-gene-annotations/</a></p><p><a href="http://genomics-array.blogspot.com/2010/11/some-unixperl-oneliners-for.html">http://genomics-array.blogspot.com/2010/11/some-unixperl-oneliners-for.html</a></p><p><a href="http://bioexpressblog.wordpress.com/2013/04/05/split-multi-fasta-sequence-file/">http://bioexpressblog.wordpress.com/2013/04/05/split-multi-fasta-sequence-file/</a></p>]]></description>
	<dc:creator>Abhimanyu Singh</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/pages/view/22571/pattern-matching-problem-solution-with-perl</guid>
	<pubDate>Tue, 09 Jun 2015 23:58:45 -0500</pubDate>
	<link>https://bioinformaticsonline.com/pages/view/22571/pattern-matching-problem-solution-with-perl</link>
	<title><![CDATA[Pattern Matching Problem Solution with Perl]]></title>
	<description><![CDATA[<p>Problem at http://rosalind.info/problems/1c/</p><p>#Find all occurrences of a pattern in a string.<br />#Given: Strings Pattern and Genome.<br />#Return: All starting positions in Genome where Pattern appears as a substring. Use 0-based indexing.<br /><br />use strict;<br />use warnings;<br /><br />my $string="GATATATGCATATACTT";<br />my $subStr="ATAT";<br />my $kmer=length($subStr);<br /><br />kmerMatch ($string, $subStr, $kmer);<br /><br />sub kmerMatch { #Check the exact matching kmers with sliding window<br />my ($string, $myStr, $kmer)=@_;<br />for (my $aa=0; $aa&lt;=(length($string)-$kmer); $aa++) {<br />&nbsp;&nbsp;&nbsp; my $myWin=substr&nbsp; $string, $aa,$kmer;<br />&nbsp;&nbsp;&nbsp; if ($myWin eq $myStr) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #print "$myWin eq $myStr\n";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print $aa;<br />&nbsp;&nbsp;&nbsp; }<br />}<br />}</p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/22961/bioscripts</guid>
	<pubDate>Sun, 28 Jun 2015 07:46:14 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/22961/bioscripts</link>
	<title><![CDATA[BioScripts]]></title>
	<description><![CDATA[<p>You are requested to please bookmark collection of bioinformatics tools, scripts, codes that can be pieced together in a very easy and flexible manner to perform both simple and complex bioinformatics tasks.</p>
<p>The next-generation sequencing included whole genome sequencing(WGS), transcriptome sequencing (whole cDNA sequencing, RNA-seq), digital gene expression sequencing (Tag-Seq), ChIP-Seq, and so on. And there are many sequencing platform to generate sequece, as well know Sanger/ABi(the frist generation), Solexa/illumina, SOLiD/ABi, 454/Roche. But thier sequence format is different, also they have different error type. High quality data is very important for further analysis or data mining. There are many pipeline for raw sequence quality analysis and control with few of process for reporting reads quality statistical details, trimming, filtering, and error correction. Please bookmarks them for the benefits of bioinformatics community.</p>
<p>https://code.google.com/p/biowiki/</p>
<p>https://code.google.com/p/ngs-pipeline/source/browse/#svn%2Ftrunk</p>
<p>NGSand Perl scripts https://code.google.com/hosting/search?q=NGS+perl&amp;projectsearch=Search+projects</p>
<p>NGS and Python scripts https://code.google.com/hosting/search?q=NGS+Python&amp;projectsearch=Search+projects</p><p>Address of the bookmark: <a href="https://code.google.com/hosting/search?q=bioinformatics&amp;sa=Search" rel="nofollow">https://code.google.com/hosting/search?q=bioinformatics&amp;sa=Search</a></p>]]></description>
	<dc:creator>Rahul Nayak</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/26424/biotoolbox</guid>
	<pubDate>Fri, 19 Feb 2016 09:14:44 -0600</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/26424/biotoolbox</link>
	<title><![CDATA[BioToolbox]]></title>
	<description><![CDATA[<p>This is a collection of libraries and high-quality end-user scripts for bioinformatic analysis, including working with gene annotation, collecting data scores from a variety of modern file formats, and conversion between file formats. The Bio::ToolBox libraries provide a unified, abstracted interface to multiple common gene annotation formats and the collection of data from multiple data files. They rely on BioPerl SeqFeature libraries and related adaptors to access binary file formats including Bam, BigWig, BigBed, and USeq. The Bio::ToolBox package includes scripts for setting up databases of annotation, collecting annotated features, collecting genomic data relative to features, manipulating and analyzing data, and data format conversion.</p>
<p>More at http://cpansearch.perl.org/src/TJPARNELL/</p><p>Address of the bookmark: <a href="http://cpansearch.perl.org/src/TJPARNELL/" rel="nofollow">http://cpansearch.perl.org/src/TJPARNELL/</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/pages/view/37590/parallel-processing-with-perl</guid>
	<pubDate>Sat, 25 Aug 2018 11:32:40 -0500</pubDate>
	<link>https://bioinformaticsonline.com/pages/view/37590/parallel-processing-with-perl</link>
	<title><![CDATA[Parallel Processing with Perl !]]></title>
	<description><![CDATA[<p>Here is a small tutorial on how to make best use of multiple processors for bioinformatics analysis. One best way is using perl threads and forks. Knowing how these threads and forks work is very important before implementing them. Getting to know how these work would be really useful before reading this tutorial.</p><p>Many times in bioinformatics we need to deal with huge datasets which&nbsp; are more than 100GB size. The traditional way to analysis a file is using the while loop</p><p>while (FILE){</p><p>Do something;</p><p>}</p><p>This is very slow(since we are using only one processor) and if we have 500 million lines in the dataset it takes more than a day to iterate through the whole dataset. So how do we make best use of all our processors and get the work done quickly?</p><p>Here is a very simple and efficient technique with perl which i have been using. I am&nbsp; more inclined towards using perl fork than perl threads.</p><p>One of the oldest way to fork is</p><blockquote><p>my $fork = fork();<br />if($fork){&nbsp;&nbsp;&nbsp;<br />push (@childs,$fork);&nbsp;<br />}<br />elseif($fork==0){<br /><strong>your code here;</strong><br />exit(0);<br />}<br />else{die &ldquo;Couldnt fork : $!&rdquo;;}</p><p>## wait for the child process to finish<br />foreach(@childs){<br />my $tmp=waitid($_,0);<br />}</p></blockquote><p>what a fork does is it creates a child process and takes the variables and code with it to analyze it separately (detached from the parent process) and thus a separate process is created( which usually runs on a separate processor). Thats it!! One big disadvantage of forking is its very difficult to share variables among the different processes. I will show you how to do it easily but still it has its own drawbacks.</p><blockquote><p>Okie, now if you really do not want to use fork in your code, that&rsquo;s okie too..There are many useful modules which do it for you very efficiently. One really useful module is Parallel::ForkManager. You can use Parallel::ForkManager to manage the number of forks you want to generate (number of processors you want to use).</p><p><strong>Simple usage:</strong><br />use Parallel::ForkManager;<br />my $max_processors=8;<br />my $fork= new Parallel::ForkManager($max_processors);<br />foreach (@dna) {<br />$fork-&gt;start and next; # do the fork<br /><strong>you code here;</strong><br />$fork-&gt;finish; # do the exit in the child process<br />}<br />$pm-&gt;wait_all_children;</p></blockquote><p>so you will be generating 8 forks which do the same thing for your each element of array. when one child finishes, Parallel::ForkManager generates a new one and thus you will be using all your processors to analyze the data. Now, if you have generated 8 child processes and want to write the data to one file. You need to lock the file to do this, because you will have problems with the buffering. You can lock the file using flock command.</p><blockquote><p>open (my $QUAL, &ldquo;myfile.txt&rdquo;);<br />flock $QUAL, LOCK_EX or die &ldquo;cant lock file $!&rdquo;;<br />print $QUAL &ldquo;$output&rdquo;;<br />flock $QUAL, LOCK_UN or die &ldquo;$!&rdquo;;<br />close $QUAL;</p></blockquote><p>I would not suggest using flock when dealing with multiple processes because it will decrease the processing efficiency( each child process must wait for the lock to be released by the other child process). Instead, I would suggest each fork writing to a separate file and after the processing just concatenating them.</p><p><strong>Putting it all together, If you have 100GB data you can do this</strong></p><blockquote><p><strong>step 1</strong>&nbsp;: split the dataset equally according to number of processors you have. this may take a few hours(about 2-3 hrs for 100GB file)<br />You can use unix &ldquo;split&rdquo; command for this<br />for example:<br />my $number_split=int($number_of_entries_in_your_dataset/$max_processors);<br />my $split_Files=`split -l $number_split &ldquo;your_file.fasta&rdquo; &ldquo;file_name&rdquo;`;</p><p><strong>step2</strong>: open you directory comtaining you split files and start Parallel::ForkManager.<br /><strong>For example:</strong><br />opendir(DIRECTORY, $split_files_directory) or die $!; ### open the directory<br />my $fork= new Parallel::ForkManager($max_processors);<br />while (my $file = readdir(DIRECTORY)) { ### read the directory<br />if($file=~/^\./){next;}<br />print $file,&rdquo;\n&rdquo;;<br />########## Start fork ##########<br />my $pid= $super_fork-&gt;start and next;<br /><strong>Whatever you want to do with the split file ;</strong><br /><strong>analyze my piece of $file;</strong><br />######### end fork ###############<br />$super_fork-&gt;finish;<br />}<br />$super_fork-&gt;wait_all_children;</p></blockquote><p>So basically each processor will be active with its piece of data (split file) and thus you have created 8 processes at one time which run without interfering with the other process. I again will not suggest writing output from each child process to one file(for reasons above). Write output from each fork to a separate file and finally concatenate them. Thats it, you have just increased your program speed by 8 times!! Isnt it easy?</p><p><strong>Note:</strong><br />You may worry about concatenation of the output each child generates, since it does take some time(remember 100GB). I think now you can use a mysql database LOAD DATA LOCAL INFILE command to load all the files into a single table(Should take about 3hrs for 100Gb dataset) and then export the whole table into one file. This should be faster than just concatenating them using &ldquo;cat&rdquo; command.(correct me if I am wrong)</p><p>Or much simpler way is to use pipes</p><p>cat output_dir/* | my_pipe or my_pipe &lt;(file1) final_file;</p><p>Thats it guys!! Enjoy programming and please do comment. I am not a computer scientist so forgive me for any mistakes and if any please report them. Thank you.</p>]]></description>
	<dc:creator>Rahul Nayak</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/videolist/watch/4193/bioinformatics-101-running-blast</guid>
	<pubDate>Tue, 03 Sep 2013 14:59:50 -0500</pubDate>
	<link>https://bioinformaticsonline.com/videolist/watch/4193/bioinformatics-101-running-blast</link>
	<title><![CDATA[Bioinformatics 101 -  Running BLAST]]></title>
	<description><![CDATA[<iframe width="" height="" src="https://www.youtube-nocookie.com/embed/CYnjROfGXv8" frameborder="0" allowfullscreen></iframe>How to format the database for BLAST, run the command, view the output file, and use BioPerl and Perl to parse the output. By David Francis, Ohio State University. Delivered live at the Tomato Disease Workshop 2010. For more information, please visit http://www.extension.org/pages/32521/bioinformatics-101-video.]]></description>
	
</item>

</channel>
</rss>