<?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/710?offset=10</link>
	<atom:link href="https://bioinformaticsonline.com/related/710?offset=10" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/428/five-unique-traits-of-effective-computational-biologist</guid>
	<pubDate>Thu, 11 Jul 2013 13:12:51 -0500</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/428/five-unique-traits-of-effective-computational-biologist</link>
	<title><![CDATA[Five unique traits of effective computational biologist]]></title>
	<description><![CDATA[<p>Bioinformatics research is driven by large set of software, scripts, and tools to analyse gigantic biological data. Being a great biological programmer or bioinformatician involves more than writing code that works. The biological programmers who rise to the top ranks of their profession are not only good programmer but also expert in biological stuff. Moreover, In order to be a good and effective biological programmer, you need to possess a combination of traits that allow your computational as well as biological skill, experience, and knowledge to produce working code. There are some technically skilled biological programmers who will never be effective because they lack the other important traits needed. Here are top five traits that are necessary to become a great biological programmer.</p><p><strong>1. Learn and get updated</strong></p><p>Some of the bad biological programmers only learn new technical or non-technical things when it&rsquo;s absolutely necessary. The good biological programmers learn new technical skills proactively. But great biological programmers not only learn new technical skills on their own but also learn non-technical skills, and have an open mind to sources of knowledge that others may shut out.</p><p>In other concrete term, the bad biological programmer learn Perl's regular expression when they started a project on comparative genomics; the good biological programmer learned it a year before because it looked interesting; and the great biological programmer also read about the BioPerl packages, genomics, DNA string, genomic theories, or some similar course of study so that they could understand the results and explain it biologically.</p><p><strong>2. Not a merely coder!!!</strong></p><p>I often encountered with biological programmer who call themself a hard-core computer programmer and avoid biology. I can almost guarantee that if you are one of them then you are not doing research but merely writing "dry" codes.</p><p>According to my supervisor most of the computational biologist, don't know what they are doing biologically. Even they struggle to explain their own programs output and results. Therefore, It is highly advisable to learn basic of biology which can assist you to explain the result and understand your discovery. Always remember you are a researcher not a coder.</p><p><strong>3. Be Social with biologist</strong></p><p>The computational biologist spends most of the time in from of computers, writing codes. They always think their job is to produce working codes, not technical research perfections. But, they are completely wrong. You should not forget that apart from your computational skills you also need some biologist, other than your supervisor, to explain and make you understand the complex biological mechanism.</p><p>I highly recommend your to interact with biotech researchers and learn how do they explain their one graph (which they generally produce after one year of work) biologically. Remember, the origin of your research project is complex biological phenomenon, which is more complex than that of your limited programming rules.</p><p><strong>4. Do not search, research for answers</strong></p><p>Researching for answers means more than typing several keywords into a search engine or posting a question at Stack Overflow or the BioStars forums. I have entered problems into search engines that generate no results, and every question I posted on Stack Overflow or the BioStars forums never got anything resembling an answer, yet I solved the issues and moved on. I&rsquo;m not a magician &mdash; I just know how to find answers or discover root causes.</p><p>Many problems are situational, and if you depend on search engines and forums, you can waste a lot of time going down a rabbit hole and possibly never getting a solution. Learn to perform root cause analysis, learn enough about the underlying system to look for other clues and solutions, and learn to take a long distance view of an issue before deep diving into it.</p><p><strong>5. Love and defend your research</strong></p><p>You cannot rise to the top in this research profession without loving your work. There are some very good &ldquo;it&rsquo;s just a job&rdquo; biological programmers (I&rsquo;ve been one at times), but if that is your outlook, you won&rsquo;t be willing to do whatever it takes to succeed. This idea gets a lot of folks in a huff, because they feel it is a personal insult. &ldquo;I&rsquo;m a good programmer, but I have other priorities and can&rsquo;t make work my life.&rdquo; I understand completely; I have other priorities too. As much as I hate to say it, when I am passionate about my work, I am willing (though not eager) to abandon my other priorities to finish the job. It is not an insult to say that if you aren&rsquo;t willing to pull out all the stops you can&rsquo;t be the best, it is a fact.</p><p>You must be passionate about more than programming &mdash; you must also be excited about your research, the tools and technology you are using, and so on. I have seen very good and even great biological programmers operating at mediocre levels because something was not a good fit, such as they hated the project or were using a technology they disliked. Therefore, like your research project and get excited about your discoveries. You have not only to discover but also defend your finding with scientific words.</p><p>Thanks to all of you for reading.</p>]]></description>
	<dc:creator>Jitendra Narayan</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/fun/view/2053/perl-poem-parse-it-in-both-perl-and-english</guid>
	<pubDate>Mon, 12 Aug 2013 19:00:55 -0500</pubDate>
	<link>https://bioinformaticsonline.com/fun/view/2053/perl-poem-parse-it-in-both-perl-and-english</link>
	<title><![CDATA[Perl Poem: Parse it in both Perl and English!]]></title>
	<description><![CDATA[<p>Larry's, er, corpus has fortunately been overshadowed by that of the reigning Perl Poet, Sharon Hopkins. She has written quite a few Perl poems, as well as a paper on Perl poetry that she presented at the Usenix Winter 1992 Technical Conference, entitled "Camels and Needles: Computer Poetry Meets the Perl Programming Language". (The paper is available as misc/<a href="http://poetry.ps/" target="_blank">poetry.ps</a>&nbsp;on CPAN.) Besides being the most prolific Perl poet, Sharon is also the most widely published, having had the following poem published in both the Economist and the Guardian:</p><p>#!/usr/bin/perl</p><p>APPEAL:</p><p>listen (please, please);</p><p>open yourself, wide;<br />join (you, me),<br />connect (us,together),</p><p>tell me.</p><p>do something if distressed;</p><p>@dawn, dance;<br />@evening, sing;<br />read (books,$poems,stories) until peaceful;<br />study if able;</p><p>write me if-you-please;</p><p>sort your feelings, reset goals, seek (friends, family, anyone);</p><p>do*not*die (like this)<br />if sin abounds;</p><p>keys (hidden), open (locks, doors), tell secrets;<br />do not, I-beg-you, close them, yet.</p><p>accept (yourself, changes),<br />bind (grief, despair);</p><p>require truth, goodness if-you-will, each moment;</p><p>select (always), length(of-days)</p><p># listen (a perl poem)<br /># Sharon Hopkins<br /># rev. June 19, 1995</p>]]></description>
	<dc:creator>Rahul Agarwal</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/file/view/4882/detect-the-sequence-pattern-and-its-location-in-fasta-file-with-match-and-mismatches-information</guid>
	<pubDate>Thu, 26 Sep 2013 15:02:53 -0500</pubDate>
	<link>https://bioinformaticsonline.com/file/view/4882/detect-the-sequence-pattern-and-its-location-in-fasta-file-with-match-and-mismatches-information</link>
	<title><![CDATA[Detect the sequence pattern and its location in fasta file with match and mismatches information.]]></title>
	<description><![CDATA[<p>This script is one of my old script to detect some centromeric pattern in chromosomes. User can also control the number of mismatches allowed through command line ..</p><p>To run:</p><p>perl centro.pl</p>]]></description>
	<dc:creator>Jit</dc:creator>
	<enclosure url="https://bioinformaticsonline.com/file/download/4882" length="3596" type="text/x-perl" />
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/19792/irishgrid-irish-grid-mapping-system</guid>
	<pubDate>Fri, 26 Dec 2014 07:53:24 -0600</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/19792/irishgrid-irish-grid-mapping-system</link>
	<title><![CDATA[irishgrid: Irish Grid Mapping System]]></title>
	<description><![CDATA[<p>Perl module for creating geographic 10km-square maps using either SVG or PNG (with GD library) output format.</p>
<p>Originally design to map the location of objects in a 10 km map IrishGrid includes:</p>
<ul>
<li>native support of the Irish Grid System (see <a href="http://www.osi.ie/">http://www.osi.ie/</a>)</li>
<li>optimize for speed (there's as less as possible data to conversion)</li>
<li>customized color functions</li>
</ul>
<p>https://code.google.com/p/irishgrid/downloads/detail?name=irishgrid.pl</p><p>Address of the bookmark: <a href="https://code.google.com/p/irishgrid/" rel="nofollow">https://code.google.com/p/irishgrid/</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/pages/view/22567/rosalind-problem-solution-with-perl</guid>
	<pubDate>Tue, 09 Jun 2015 23:35:18 -0500</pubDate>
	<link>https://bioinformaticsonline.com/pages/view/22567/rosalind-problem-solution-with-perl</link>
	<title><![CDATA[Rosalind Problem Solution with Perl]]></title>
	<description><![CDATA[<p>Rosalind is a platform for learning bioinformatics and programming through problem solving. <a href="http://rosalind.info/problems/list-view/?location=bioinformatics-textbook-track">Take a tour</a> to get the hang of how Rosalind works.</p><p>Bioinformatics Textbook Track</p><p>Find more about Rosalind puzzle at http://rosalind.info/problems/list-view/?location=bioinformatics-textbook-track</p><p>I will provide solution of all the Rosalind problem with Perl for community.</p><p>Check out the right sidebar for more links ...</p>]]></description>
	<dc:creator>Jit</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/bookmarks/view/31976/snpgenie</guid>
	<pubDate>Thu, 30 Mar 2017 17:38:02 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/31976/snpgenie</link>
	<title><![CDATA[SNPGenie]]></title>
	<description><![CDATA[<p>SNPGenie is a Perl script for estimating evolutionary parameters, mainly from pooled next-generation sequencing (NGS) single-nucleotide polymorphism (SNP) variant data. SNP reports (acceptable in a variety of formats) much each correspond to a single population, with variants called relative to a single reference sequence (one sequence in one FASTA file). Just run the main script, <strong>snpgenie.pl</strong>, in a directory containing the necessary <a href="https://github.com/hugheslab/snpgenie#snpgenie-input">input files</a>, and we take care of the rest! For the earlier version, see <a href="http://ww2.biol.sc.edu/~austin/">Hughes Lab Bioinformatics Resource</a>.</p><p>Address of the bookmark: <a href="https://github.com/hugheslab/snpgenie" rel="nofollow">https://github.com/hugheslab/snpgenie</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/34812/building-web-uis-with-mojolicious-perl</guid>
	<pubDate>Tue, 26 Dec 2017 18:06:57 -0600</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/34812/building-web-uis-with-mojolicious-perl</link>
	<title><![CDATA[Building Web UIs With Mojolicious Perl]]></title>
	<description><![CDATA[<p>Mojolicious is one of 3 leading web frameworks available in the perl ecosystem (along with Dancer and Catalyst) and by far my favorite.</p>
<p>Mojolicious aims to provide a complete web development experience. It thus has no hard dependencies, comes with a built-in development and production server and many other features one needs to build a web application. It's easy to install, has an applciation generator script and many plugins and extensions.</p>
<p><em>Libraries for developing Web applications</em></p>
<ul>
<li><a href="https://metacpan.org/pod/Amon2">Amon2</a></li>
<li><a href="https://metacpan.org/pod/Catalyst">Catalyst</a>&nbsp;- Overflowing with features. Very popular.</li>
<li><a href="https://metacpan.org/pod/Dancer">Dancer</a>&nbsp;(<a href="http://perldancer.org/">Official site</a>)</li>
<li><a href="https://metacpan.org/pod/Dancer2">Dancer2</a></li>
<li><a href="https://metacpan.org/pod/Gantry">Gantry</a>&nbsp;- Web application framework for mod_perl, cgi, etc.</li>
<li><a href="https://metacpan.org/pod/Kossy">Kossy</a>&nbsp;- A Web framework with simple interface.</li>
<li><a href="https://metacpan.org/pod/Mojolicious">Mojolicious</a>&nbsp;- An all in one framework.</li>
<li><a href="https://metacpan.org/pod/Poet">Poet</a>&nbsp;- a modern Perl web framework for Mason developers</li>
</ul><p>Address of the bookmark: <a href="https://www.ynonperek.com/2017/09/28/perl-mojolicious-web-development/" rel="nofollow">https://www.ynonperek.com/2017/09/28/perl-mojolicious-web-development/</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/pages/view/36185/installing-bioscf-perl-module</guid>
	<pubDate>Mon, 09 Apr 2018 04:04:29 -0500</pubDate>
	<link>https://bioinformaticsonline.com/pages/view/36185/installing-bioscf-perl-module</link>
	<title><![CDATA[Installing Bio::SCF perl module]]></title>
	<description><![CDATA[<p>Most Perl modules are written in Perl, some use&nbsp;<a href="http://perldoc.perl.org/perlxs.html">XS</a>&nbsp;(they are written in&nbsp;<a href="http://en.wikipedia.org/wiki/C_(programming_language)">C</a>) so require a C&nbsp;<a href="http://en.wikipedia.org/wiki/Compiler">compiler</a>&nbsp;(it's easy to get this setup - don't panic), see your OS of choice below to find out how to get the right compiler. Modules may have dependencies on other modules (almost always on&nbsp;<a href="http://www.cpan.org/">CPAN</a>) and cannot be installed without them (or without a specific version of them). Many modules on CPAN require a somewhat recent version of Perl (version 5.8 or above).</p><p>More about the basic perl module installation steps check this&nbsp;http://bioinformaticsonline.com/blog/view/710/how-to-install-perl-modules-manually-using-cpan-command-and-other-quick-ways</p><p>installing Bio::SCF perl module is daunting task, specieally because of it dependencies. Here is the steps, you need to follow to sucessfully install Bio::SCF module</p><p>#sudo apt-get install libbio-scf-perl #trev for visualization of scf file</p><p><strong>1. You will need the zlib library which can be found at http://www.zlib.net/.</strong></p><p>install zlib library first:</p><p>jitendra@jitendra-UNLOCK-INSTALL[zlib-1.2.11] ./configure []<br />Checking for gcc...<br />Checking for shared library support...<br />Building shared library libz.so.1.2.11 with gcc.<br />Checking for size_t... Yes.<br />Checking for off64_t... Yes.<br />Checking for fseeko... Yes.<br />Checking for strerror... Yes.<br />Checking for unistd.h... Yes.<br />Checking for stdarg.h... Yes.<br />Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().<br />Checking for vsnprintf() in stdio.h... Yes.<br />Checking for return value of vsnprintf()... Yes.<br />Checking for attribute(visibility) support... Yes.<br />jitendra@jitendra-UNLOCK-INSTALL[zlib-1.2.11] make []<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o example.o test/example.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o adler32.o adler32.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o crc32.o crc32.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o deflate.o deflate.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o infback.o infback.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o inffast.o inffast.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o inflate.o inflate.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o inftrees.o inftrees.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o trees.o trees.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o zutil.o zutil.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o compress.o compress.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o uncompr.o uncompr.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o gzclose.o gzclose.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o gzlib.o gzlib.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o gzread.o gzread.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o gzwrite.o gzwrite.c<br />ar rc libz.a adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o <br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example example.o -L. libz.a<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o minigzip.o test/minigzip.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip minigzip.o -L. libz.a<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/adler32.o adler32.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/crc32.o crc32.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/deflate.o deflate.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/infback.o infback.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inffast.o inffast.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inflate.o inflate.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inftrees.o inftrees.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/trees.o trees.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/zutil.o zutil.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/compress.o compress.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/uncompr.o uncompr.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzclose.o gzclose.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzlib.o gzlib.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzread.o gzread.c<br />gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzwrite.o gzwrite.c<br />gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o libz.so.1.2.11 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo -lc <br />rm -f libz.so libz.so.1<br />ln -s libz.so.1.2.11 libz.so<br />ln -s libz.so.1.2.11 libz.so.1<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o examplesh example.o -L. libz.so.1.2.11<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzipsh minigzip.o -L. libz.so.1.2.11<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o example64.o test/example.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example64 example64.o -L. libz.a<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o minigzip64.o test/minigzip.c<br />gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip64 minigzip64.o -L. libz.a<br />jitendra@jitendra-UNLOCK-INSTALL[zlib-1.2.11] sudo make install []<br />[sudo] password for jitendra: <br />rm -f /usr/local/lib/libz.a<br />cp libz.a /usr/local/lib<br />chmod 644 /usr/local/lib/libz.a<br />cp libz.so.1.2.11 /usr/local/lib<br />chmod 755 /usr/local/lib/libz.so.1.2.11<br />rm -f /usr/local/share/man/man3/zlib.3<br />cp zlib.3 /usr/local/share/man/man3<br />chmod 644 /usr/local/share/man/man3/zlib.3<br />rm -f /usr/local/lib/pkgconfig/zlib.pc<br />cp zlib.pc /usr/local/lib/pkgconfig<br />chmod 644 /usr/local/lib/pkgconfig/zlib.pc<br />rm -f /usr/local/include/zlib.h /usr/local/include/zconf.h<br />cp zlib.h zconf.h /usr/local/include<br />chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h<br />&nbsp;</p><p><br /><strong>2. Now make io_lib-1.9</strong></p><p>In order to install this perl extension you have to install io-lib version 1.9 or higher from the Staden library (staden.sourceforge.net). This can be downloaded from https://sourceforge.net/project/showfiles.php?group_id=100316&amp;package_id=108243&amp;release_id=340318 confirm that the package installed correctly look for a library named "libread".</p><p>jitendra@jitendra-UNLOCK-INSTALL[io_lib-1.9.0] export CFLAGS="-fPIC" &amp;&amp; ./configure <br />checking for a BSD-compatible install... /usr/bin/install -c<br />checking whether build environment is sane... yes<br />checking for gawk... gawk<br />checking whether make sets $(MAKE)... yes<br />checking for gcc... gcc<br />checking for C compiler default output file name... a.out<br />checking whether the C compiler works... yes<br />checking whether we are cross compiling... no<br />checking for suffix of executables... <br />checking for suffix of object files... o<br />checking whether we are using the GNU C compiler... yes<br />checking whether gcc accepts -g... yes<br />checking for gcc option to accept ANSI C... none needed<br />checking for style of include used by make... GNU<br />checking dependency style of gcc... gcc3<br />checking for a BSD-compatible install... /usr/bin/install -c<br />checking for ranlib... ranlib<br />checking for main in -lz... yes<br />checking how to run the C preprocessor... gcc -E<br />checking for egrep... grep -E<br />checking for ANSI C header files... yes<br />checking for sys/wait.h that is POSIX.1 compatible... yes<br />checking for sys/types.h... yes<br />checking for sys/stat.h... yes<br />checking for stdlib.h... yes<br />checking for string.h... yes<br />checking for memory.h... yes<br />checking for strings.h... yes<br />checking for inttypes.h... yes<br />checking for stdint.h... yes<br />checking for unistd.h... yes<br />checking fcntl.h usability... yes<br />checking fcntl.h presence... yes<br />checking for fcntl.h... yes<br />checking limits.h usability... yes<br />checking limits.h presence... yes<br />checking for limits.h... yes<br />checking for unistd.h... (cached) yes<br />checking zlib.h usability... yes<br />checking zlib.h presence... yes<br />checking for zlib.h... yes<br />checking whether byte ordering is bigendian... no<br />checking for short... yes<br />checking size of short... 2<br />checking for int... yes<br />checking size of int... 4<br />checking for long... yes<br />checking size of long... 8<br />checking for inline... inline<br />checking for mode_t... yes<br />checking build system type... x86_64-unknown-linux-gnu<br />checking host system type... x86_64-unknown-linux-gnu<br />checking for cos in -lm... yes<br />checking for strdup... yes<br />configure: creating ./config.status<br />config.status: creating Makefile<br />config.status: creating read/Makefile<br />config.status: creating progs/Makefile<br />config.status: creating config.h<br />config.status: executing depfiles commands<br />jitendra@jitendra-UNLOCK-INSTALL[io_lib-1.9.0] make []<br />make all-recursive<br />make[1]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0'<br />Making all in read<br />make[2]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0/read'<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT Read.o -MD -MP -MF ".deps/Read.Tpo" -c -o Read.o Read.c; \<br />then mv -f ".deps/Read.Tpo" ".deps/Read.Po"; else rm -f ".deps/Read.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT scf_extras.o -MD -MP -MF ".deps/scf_extras.Tpo" -c -o scf_extras.o scf_extras.c; \<br />then mv -f ".deps/scf_extras.Tpo" ".deps/scf_extras.Po"; else rm -f ".deps/scf_extras.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT translate.o -MD -MP -MF ".deps/translate.Tpo" -c -o translate.o translate.c; \<br />then mv -f ".deps/translate.Tpo" ".deps/translate.Po"; else rm -f ".deps/translate.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT compression.o -MD -MP -MF ".deps/compression.Tpo" -c -o compression.o `test -f '../ztr/compression.c' || echo './'`../ztr/compression.c; \<br />then mv -f ".deps/compression.Tpo" ".deps/compression.Po"; else rm -f ".deps/compression.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT ztr.o -MD -MP -MF ".deps/ztr.Tpo" -c -o ztr.o `test -f '../ztr/ztr.c' || echo './'`../ztr/ztr.c; \<br />then mv -f ".deps/ztr.Tpo" ".deps/ztr.Po"; else rm -f ".deps/ztr.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT ztr_translate.o -MD -MP -MF ".deps/ztr_translate.Tpo" -c -o ztr_translate.o `test -f '../ztr/ztr_translate.c' || echo './'`../ztr/ztr_translate.c; \<br />then mv -f ".deps/ztr_translate.Tpo" ".deps/ztr_translate.Po"; else rm -f ".deps/ztr_translate.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT fpoint.o -MD -MP -MF ".deps/fpoint.Tpo" -c -o fpoint.o `test -f '../abi/fpoint.c' || echo './'`../abi/fpoint.c; \<br />then mv -f ".deps/fpoint.Tpo" ".deps/fpoint.Po"; else rm -f ".deps/fpoint.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT seqIOABI.o -MD -MP -MF ".deps/seqIOABI.Tpo" -c -o seqIOABI.o `test -f '../abi/seqIOABI.c' || echo './'`../abi/seqIOABI.c; \<br />then mv -f ".deps/seqIOABI.Tpo" ".deps/seqIOABI.Po"; else rm -f ".deps/seqIOABI.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT seqIOALF.o -MD -MP -MF ".deps/seqIOALF.Tpo" -c -o seqIOALF.o `test -f '../alf/seqIOALF.c' || echo './'`../alf/seqIOALF.c; \<br />then mv -f ".deps/seqIOALF.Tpo" ".deps/seqIOALF.Po"; else rm -f ".deps/seqIOALF.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT ctfCompress.o -MD -MP -MF ".deps/ctfCompress.Tpo" -c -o ctfCompress.o `test -f '../ctf/ctfCompress.c' || echo './'`../ctf/ctfCompress.c; \<br />then mv -f ".deps/ctfCompress.Tpo" ".deps/ctfCompress.Po"; else rm -f ".deps/ctfCompress.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT seqIOCTF.o -MD -MP -MF ".deps/seqIOCTF.Tpo" -c -o seqIOCTF.o `test -f '../ctf/seqIOCTF.c' || echo './'`../ctf/seqIOCTF.c; \<br />then mv -f ".deps/seqIOCTF.Tpo" ".deps/seqIOCTF.Po"; else rm -f ".deps/seqIOCTF.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT expFileIO.o -MD -MP -MF ".deps/expFileIO.Tpo" -c -o expFileIO.o `test -f '../exp_file/expFileIO.c' || echo './'`../exp_file/expFileIO.c; \<br />then mv -f ".deps/expFileIO.Tpo" ".deps/expFileIO.Po"; else rm -f ".deps/expFileIO.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT seqIOPlain.o -MD -MP -MF ".deps/seqIOPlain.Tpo" -c -o seqIOPlain.o `test -f '../plain/seqIOPlain.c' || echo './'`../plain/seqIOPlain.c; \<br />then mv -f ".deps/seqIOPlain.Tpo" ".deps/seqIOPlain.Po"; else rm -f ".deps/seqIOPlain.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT misc_scf.o -MD -MP -MF ".deps/misc_scf.Tpo" -c -o misc_scf.o `test -f '../scf/misc_scf.c' || echo './'`../scf/misc_scf.c; \<br />then mv -f ".deps/misc_scf.Tpo" ".deps/misc_scf.Po"; else rm -f ".deps/misc_scf.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT read_scf.o -MD -MP -MF ".deps/read_scf.Tpo" -c -o read_scf.o `test -f '../scf/read_scf.c' || echo './'`../scf/read_scf.c; \<br />then mv -f ".deps/read_scf.Tpo" ".deps/read_scf.Po"; else rm -f ".deps/read_scf.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT write_scf.o -MD -MP -MF ".deps/write_scf.Tpo" -c -o write_scf.o `test -f '../scf/write_scf.c' || echo './'`../scf/write_scf.c; \<br />then mv -f ".deps/write_scf.Tpo" ".deps/write_scf.Po"; else rm -f ".deps/write_scf.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT array.o -MD -MP -MF ".deps/array.Tpo" -c -o array.o `test -f '../utils/array.c' || echo './'`../utils/array.c; \<br />then mv -f ".deps/array.Tpo" ".deps/array.Po"; else rm -f ".deps/array.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT compress.o -MD -MP -MF ".deps/compress.Tpo" -c -o compress.o `test -f '../utils/compress.c' || echo './'`../utils/compress.c; \<br />then mv -f ".deps/compress.Tpo" ".deps/compress.Po"; else rm -f ".deps/compress.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT error.o -MD -MP -MF ".deps/error.Tpo" -c -o error.o `test -f '../utils/error.c' || echo './'`../utils/error.c; \<br />then mv -f ".deps/error.Tpo" ".deps/error.Po"; else rm -f ".deps/error.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT files.o -MD -MP -MF ".deps/files.Tpo" -c -o files.o `test -f '../utils/files.c' || echo './'`../utils/files.c; \<br />then mv -f ".deps/files.Tpo" ".deps/files.Po"; else rm -f ".deps/files.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT find.o -MD -MP -MF ".deps/find.Tpo" -c -o find.o `test -f '../utils/find.c' || echo './'`../utils/find.c; \<br />then mv -f ".deps/find.Tpo" ".deps/find.Po"; else rm -f ".deps/find.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT mach-io.o -MD -MP -MF ".deps/mach-io.Tpo" -c -o mach-io.o `test -f '../utils/mach-io.c' || echo './'`../utils/mach-io.c; \<br />then mv -f ".deps/mach-io.Tpo" ".deps/mach-io.Po"; else rm -f ".deps/mach-io.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT open_trace_file.o -MD -MP -MF ".deps/open_trace_file.Tpo" -c -o open_trace_file.o `test -f '../utils/open_trace_file.c' || echo './'`../utils/open_trace_file.c; \<br />then mv -f ".deps/open_trace_file.Tpo" ".deps/open_trace_file.Po"; else rm -f ".deps/open_trace_file.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT read_alloc.o -MD -MP -MF ".deps/read_alloc.Tpo" -c -o read_alloc.o `test -f '../utils/read_alloc.c' || echo './'`../utils/read_alloc.c; \<br />then mv -f ".deps/read_alloc.Tpo" ".deps/read_alloc.Po"; else rm -f ".deps/read_alloc.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT strings.o -MD -MP -MF ".deps/strings.Tpo" -c -o strings.o `test -f '../utils/strings.c' || echo './'`../utils/strings.c; \<br />then mv -f ".deps/strings.Tpo" ".deps/strings.Po"; else rm -f ".deps/strings.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT traceType.o -MD -MP -MF ".deps/traceType.Tpo" -c -o traceType.o `test -f '../utils/traceType.c' || echo './'`../utils/traceType.c; \<br />then mv -f ".deps/traceType.Tpo" ".deps/traceType.Po"; else rm -f ".deps/traceType.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT xalloc.o -MD -MP -MF ".deps/xalloc.Tpo" -c -o xalloc.o `test -f '../utils/xalloc.c' || echo './'`../utils/xalloc.c; \<br />then mv -f ".deps/xalloc.Tpo" ".deps/xalloc.Po"; else rm -f ".deps/xalloc.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT vlen.o -MD -MP -MF ".deps/vlen.Tpo" -c -o vlen.o `test -f '../utils/vlen.c' || echo './'`../utils/vlen.c; \<br />then mv -f ".deps/vlen.Tpo" ".deps/vlen.Po"; else rm -f ".deps/vlen.Tpo"; exit 1; fi<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT hash_table.o -MD -MP -MF ".deps/hash_table.Tpo" -c -o hash_table.o `test -f '../utils/hash_table.c' || echo './'`../utils/hash_table.c; \<br />then mv -f ".deps/hash_table.Tpo" ".deps/hash_table.Po"; else rm -f ".deps/hash_table.Tpo"; exit 1; fi<br />../utils/hash_table.c: In function &lsquo;HashFileOpen&rsquo;:<br />../utils/hash_table.c:920:21: warning: field precision specifier &lsquo;.*&rsquo; expects argument of type &lsquo;int&rsquo;, but argument 3 has type &lsquo;long int&rsquo; [-Wformat=]<br /> sprintf(aname, "%.*s%s", cp-fname+1, fname, hf-&gt;archive);<br /> ^<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT mFILE.o -MD -MP -MF ".deps/mFILE.Tpo" -c -o mFILE.o `test -f '../utils/mFILE.c' || echo './'`../utils/mFILE.c; \<br />then mv -f ".deps/mFILE.Tpo" ".deps/mFILE.Po"; else rm -f ".deps/mFILE.Tpo"; exit 1; fi<br />rm -f libread.a<br />ar cru libread.a Read.o scf_extras.o translate.o compression.o ztr.o ztr_translate.o fpoint.o seqIOABI.o seqIOALF.o ctfCompress.o seqIOCTF.o expFileIO.o seqIOPlain.o misc_scf.o read_scf.o write_scf.o array.o compress.o error.o files.o find.o mach-io.o open_trace_file.o read_alloc.o strings.o traceType.o xalloc.o vlen.o hash_table.o mFILE.o <br />ar: `u' modifier ignored since `D' is the default (see `U')<br />ranlib libread.a<br />make[2]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0/read'<br />Making all in progs<br />make[2]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0/progs'<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT convert_trace.o -MD -MP -MF ".deps/convert_trace.Tpo" -c -o convert_trace.o convert_trace.c; \<br />then mv -f ".deps/convert_trace.Tpo" ".deps/convert_trace.Po"; else rm -f ".deps/convert_trace.Tpo"; exit 1; fi<br />gcc -fPIC -o convert_trace convert_trace.o ../read/libread.a -lz -lm <br />../read/libread.a(open_trace_file.o): In function `find_file_url':<br />open_trace_file.c:(.text+0xaf4): warning: the use of `tempnam' is dangerous, better use `mkstemp'<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT makeSCF.o -MD -MP -MF ".deps/makeSCF.Tpo" -c -o makeSCF.o makeSCF.c; \<br />then mv -f ".deps/makeSCF.Tpo" ".deps/makeSCF.Po"; else rm -f ".deps/makeSCF.Tpo"; exit 1; fi<br />gcc -fPIC -o makeSCF makeSCF.o ../read/libread.a -lz -lm <br />../read/libread.a(open_trace_file.o): In function `find_file_url':<br />open_trace_file.c:(.text+0xaf4): warning: the use of `tempnam' is dangerous, better use `mkstemp'<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT extract_seq.o -MD -MP -MF ".deps/extract_seq.Tpo" -c -o extract_seq.o extract_seq.c; \<br />then mv -f ".deps/extract_seq.Tpo" ".deps/extract_seq.Po"; else rm -f ".deps/extract_seq.Tpo"; exit 1; fi<br />gcc -fPIC -o extract_seq extract_seq.o ../read/libread.a -lz -lm <br />../read/libread.a(open_trace_file.o): In function `find_file_url':<br />open_trace_file.c:(.text+0xaf4): warning: the use of `tempnam' is dangerous, better use `mkstemp'<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT index_tar.o -MD -MP -MF ".deps/index_tar.Tpo" -c -o index_tar.o index_tar.c; \<br />then mv -f ".deps/index_tar.Tpo" ".deps/index_tar.Po"; else rm -f ".deps/index_tar.Tpo"; exit 1; fi<br />gcc -fPIC -o index_tar index_tar.o <br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT scf_dump.o -MD -MP -MF ".deps/scf_dump.Tpo" -c -o scf_dump.o scf_dump.c; \<br />then mv -f ".deps/scf_dump.Tpo" ".deps/scf_dump.Po"; else rm -f ".deps/scf_dump.Tpo"; exit 1; fi<br />gcc -fPIC -o scf_dump scf_dump.o ../read/libread.a -lz -lm <br />../read/libread.a(open_trace_file.o): In function `find_file_url':<br />open_trace_file.c:(.text+0xaf4): warning: the use of `tempnam' is dangerous, better use `mkstemp'<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT scf_info.o -MD -MP -MF ".deps/scf_info.Tpo" -c -o scf_info.o scf_info.c; \<br />then mv -f ".deps/scf_info.Tpo" ".deps/scf_info.Po"; else rm -f ".deps/scf_info.Tpo"; exit 1; fi<br />gcc -fPIC -o scf_info scf_info.o ../read/libread.a -lz -lm <br />../read/libread.a(open_trace_file.o): In function `find_file_url':<br />open_trace_file.c:(.text+0xaf4): warning: the use of `tempnam' is dangerous, better use `mkstemp'<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT scf_update.o -MD -MP -MF ".deps/scf_update.Tpo" -c -o scf_update.o scf_update.c; \<br />then mv -f ".deps/scf_update.Tpo" ".deps/scf_update.Po"; else rm -f ".deps/scf_update.Tpo"; exit 1; fi<br />gcc -fPIC -o scf_update scf_update.o ../read/libread.a -lz -lm <br />../read/libread.a(open_trace_file.o): In function `find_file_url':<br />open_trace_file.c:(.text+0xaf4): warning: the use of `tempnam' is dangerous, better use `mkstemp'<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT get_comment.o -MD -MP -MF ".deps/get_comment.Tpo" -c -o get_comment.o get_comment.c; \<br />then mv -f ".deps/get_comment.Tpo" ".deps/get_comment.Po"; else rm -f ".deps/get_comment.Tpo"; exit 1; fi<br />gcc -fPIC -o get_comment get_comment.o ../read/libread.a -lz -lm <br />../read/libread.a(open_trace_file.o): In function `find_file_url':<br />open_trace_file.c:(.text+0xaf4): warning: the use of `tempnam' is dangerous, better use `mkstemp'<br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT hash_tar.o -MD -MP -MF ".deps/hash_tar.Tpo" -c -o hash_tar.o hash_tar.c; \<br />then mv -f ".deps/hash_tar.Tpo" ".deps/hash_tar.Po"; else rm -f ".deps/hash_tar.Tpo"; exit 1; fi<br />gcc -fPIC -o hash_tar hash_tar.o ../read/libread.a -lz -lm <br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT hash_extract.o -MD -MP -MF ".deps/hash_extract.Tpo" -c -o hash_extract.o hash_extract.c; \<br />then mv -f ".deps/hash_extract.Tpo" ".deps/hash_extract.Po"; else rm -f ".deps/hash_extract.Tpo"; exit 1; fi<br />gcc -fPIC -o hash_extract hash_extract.o ../read/libread.a -lz -lm <br />if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../read -I../alf -I../abi -I../ctf -I../ztr -I../plain -I../scf -I../exp_file -I../utils -I/usr/local/include -fPIC -MT trace_dump.o -MD -MP -MF ".deps/trace_dump.Tpo" -c -o trace_dump.o trace_dump.c; \<br />then mv -f ".deps/trace_dump.Tpo" ".deps/trace_dump.Po"; else rm -f ".deps/trace_dump.Tpo"; exit 1; fi<br />gcc -fPIC -o trace_dump trace_dump.o ../read/libread.a -lz -lm <br />../read/libread.a(open_trace_file.o): In function `find_file_url':<br />open_trace_file.c:(.text+0xaf4): warning: the use of `tempnam' is dangerous, better use `mkstemp'<br />make[2]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0/progs'<br />make[2]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0'<br />make[2]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0'<br />make[1]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0'<br /><br />jitendra@jitendra-UNLOCK-INSTALL[io_lib-1.9.0] sudo make install []<br />[sudo] password for jitendra: <br />Making install in read<br />make[1]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0/read'<br />make[2]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0/read'<br />test -z "/usr/local/lib" || mkdir -p -- "/usr/local/lib"<br /> /usr/bin/install -c -m 644 'libread.a' '/usr/local/lib/libread.a'<br /> ranlib '/usr/local/lib/libread.a'<br />make[2]: Nothing to be done for 'install-data-am'.<br />make[2]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0/read'<br />make[1]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0/read'<br />Making install in progs<br />make[1]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0/progs'<br />make[2]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0/progs'<br />test -z "/usr/local/bin" || mkdir -p -- "/usr/local/bin"<br /> /usr/bin/install -c 'convert_trace' '/usr/local/bin/convert_trace'<br /> /usr/bin/install -c 'makeSCF' '/usr/local/bin/makeSCF'<br /> /usr/bin/install -c 'extract_seq' '/usr/local/bin/extract_seq'<br /> /usr/bin/install -c 'index_tar' '/usr/local/bin/index_tar'<br /> /usr/bin/install -c 'scf_dump' '/usr/local/bin/scf_dump'<br /> /usr/bin/install -c 'scf_info' '/usr/local/bin/scf_info'<br /> /usr/bin/install -c 'scf_update' '/usr/local/bin/scf_update'<br /> /usr/bin/install -c 'get_comment' '/usr/local/bin/get_comment'<br /> /usr/bin/install -c 'hash_tar' '/usr/local/bin/hash_tar'<br /> /usr/bin/install -c 'hash_extract' '/usr/local/bin/hash_extract'<br /> /usr/bin/install -c 'trace_dump' '/usr/local/bin/trace_dump'<br />make[2]: Nothing to be done for 'install-data-am'.<br />make[2]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0/progs'<br />make[1]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0/progs'<br />make[1]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0'<br />make[2]: Entering directory '/home/jitendra/Downloads/io_lib-1.9.0'<br />make[2]: Nothing to be done for 'install-exec-am'.<br />test -z "/usr/local/man/man3" || mkdir -p -- "/usr/local/man/man3"<br /> /usr/bin/install -c -m 644 './man/man3/exp2read.3' '/usr/local/man/man3/exp2read.3'<br /> /usr/bin/install -c -m 644 './man/man3/ExperimentFile.3' '/usr/local/man/man3/ExperimentFile.3'<br /> /usr/bin/install -c -m 644 './man/man3/fread_reading.3' '/usr/local/man/man3/fread_reading.3'<br /> /usr/bin/install -c -m 644 './man/man3/fread_scf.3' '/usr/local/man/man3/fread_scf.3'<br /> /usr/bin/install -c -m 644 './man/man3/fwrite_reading.3' '/usr/local/man/man3/fwrite_reading.3'<br /> /usr/bin/install -c -m 644 './man/man3/fwrite_scf.3' '/usr/local/man/man3/fwrite_scf.3'<br /> /usr/bin/install -c -m 644 './man/man3/read2exp.3' '/usr/local/man/man3/read2exp.3'<br /> /usr/bin/install -c -m 644 './man/man3/read2scf.3' '/usr/local/man/man3/read2scf.3'<br /> /usr/bin/install -c -m 644 './man/man3/read_allocate.3' '/usr/local/man/man3/read_allocate.3'<br /> /usr/bin/install -c -m 644 './man/man3/read_deallocate.3' '/usr/local/man/man3/read_deallocate.3'<br /> /usr/bin/install -c -m 644 './man/man3/read_reading.3' '/usr/local/man/man3/read_reading.3'<br /> /usr/bin/install -c -m 644 './man/man3/read_scf.3' '/usr/local/man/man3/read_scf.3'<br /> /usr/bin/install -c -m 644 './man/man3/read_scf_header.3' '/usr/local/man/man3/read_scf_header.3'<br /> /usr/bin/install -c -m 644 './man/man3/scf2read.3' '/usr/local/man/man3/scf2read.3'<br /> /usr/bin/install -c -m 644 './man/man3/write_reading.3' '/usr/local/man/man3/write_reading.3'<br /> /usr/bin/install -c -m 644 './man/man3/write_scf.3' '/usr/local/man/man3/write_scf.3'<br /> /usr/bin/install -c -m 644 './man/man3/write_scf_header.3' '/usr/local/man/man3/write_scf_header.3'<br />test -z "/usr/local/man/man4" || mkdir -p -- "/usr/local/man/man4"<br /> /usr/bin/install -c -m 644 './man/man4/Read.4' '/usr/local/man/man4/Read.4'<br />test -z "/usr/local/include/io_lib" || mkdir -p -- "/usr/local/include/io_lib"<br /> /usr/bin/install -c -m 644 'read/Read.h' '/usr/local/include/io_lib/Read.h'<br /> /usr/bin/install -c -m 644 'read/scf_extras.h' '/usr/local/include/io_lib/scf_extras.h'<br /> /usr/bin/install -c -m 644 'read/translate.h' '/usr/local/include/io_lib/translate.h'<br /> /usr/bin/install -c -m 644 'abi/abi.h' '/usr/local/include/io_lib/abi.h'<br /> /usr/bin/install -c -m 644 'abi/fpoint.h' '/usr/local/include/io_lib/fpoint.h'<br /> /usr/bin/install -c -m 644 'abi/seqIOABI.h' '/usr/local/include/io_lib/seqIOABI.h'<br /> /usr/bin/install -c -m 644 'alf/alf.h' '/usr/local/include/io_lib/alf.h'<br /> /usr/bin/install -c -m 644 'ctf/seqIOCTF.h' '/usr/local/include/io_lib/seqIOCTF.h'<br /> /usr/bin/install -c -m 644 'exp_file/expFileIO.h' '/usr/local/include/io_lib/expFileIO.h'<br /> /usr/bin/install -c -m 644 'plain/plain.h' '/usr/local/include/io_lib/plain.h'<br /> /usr/bin/install -c -m 644 'scf/scf.h' '/usr/local/include/io_lib/scf.h'<br /> /usr/bin/install -c -m 644 'utils/array.h' '/usr/local/include/io_lib/array.h'<br /> /usr/bin/install -c -m 644 'utils/compress.h' '/usr/local/include/io_lib/compress.h'<br /> /usr/bin/install -c -m 644 'utils/error.h' '/usr/local/include/io_lib/error.h'<br /> /usr/bin/install -c -m 644 'utils/mach-io.h' '/usr/local/include/io_lib/mach-io.h'<br /> /usr/bin/install -c -m 644 'utils/misc.h' '/usr/local/include/io_lib/misc.h'<br /> /usr/bin/install -c -m 644 'utils/open_trace_file.h' '/usr/local/include/io_lib/open_trace_file.h'<br /> /usr/bin/install -c -m 644 'utils/tar_format.h' '/usr/local/include/io_lib/tar_format.h'<br /> /usr/bin/install -c -m 644 'utils/traceType.h' '/usr/local/include/io_lib/traceType.h'<br /> /usr/bin/install -c -m 644 'utils/xalloc.h' '/usr/local/include/io_lib/xalloc.h'<br /> /usr/bin/install -c -m 644 'utils/mFILE.h' '/usr/local/include/io_lib/mFILE.h'<br /> /usr/bin/install -c -m 644 'utils/stdio_hack.h' '/usr/local/include/io_lib/stdio_hack.h'<br /> /usr/bin/install -c -m 644 'utils/vlen.h' '/usr/local/include/io_lib/vlen.h'<br /> /usr/bin/install -c -m 644 'utils/hash_table.h' '/usr/local/include/io_lib/hash_table.h'<br /> /usr/bin/install -c -m 644 'utils/os.h' '/usr/local/include/io_lib/os.h'<br /> /usr/bin/install -c -m 644 'ztr/compression.h' '/usr/local/include/io_lib/compression.h'<br /> /usr/bin/install -c -m 644 'ztr/ztr.h' '/usr/local/include/io_lib/ztr.h'<br />make[2]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0'<br />make[1]: Leaving directory '/home/jitendra/Downloads/io_lib-1.9.0'</p><p><strong>3. Now install Bio::SCF</strong></p><p>Now follows these steps:</p><p>tar zxf Bio::SCF.tar<br />cd Bio::SCF<br />perl Makefile.PL<br />make<br />make test<br />make install</p><p>jitendra@jitendra-UNLOCK-INSTALL[Bio-SCF-1.01] perl Makefile.PL []<br />Checking if your kit is complete...<br />Looks good<br />Generating a Unix-style Makefile<br />Writing Makefile for Bio::SCF<br />Writing MYMETA.yml and MYMETA.json<br />jitendra@jitendra-UNLOCK-INSTALL[Bio-SCF-1.01] make []<br />cp SCF.pm blib/lib/Bio/SCF.pm<br />cp SCF/Arrays.pm blib/lib/Bio/SCF/Arrays.pm<br />Running Mkbootstrap for Bio::SCF ()<br />chmod 644 "SCF.bs"<br />"/usr/bin/perl" "/usr/share/perl/5.22/ExtUtils/xsubpp" -typemap "/usr/share/perl/5.22/ExtUtils/typemap" SCF.xs &gt; SCF.xsc &amp;&amp; mv SCF.xsc SCF.c<br />Please specify prototyping behavior for SCF.xs (see perlxs manual)<br />x86_64-linux-gnu-gcc -c -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -DVERSION=\"1.01\" -DXS_VERSION=\"1.01\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.22/CORE" -DLITTLE_ENDIAN SCF.c<br />In file included from /usr/lib/x86_64-linux-gnu/perl/5.22/CORE/perl.h:5546:0,<br /> from SCF.xs:5:<br />SCF.xs: In function &lsquo;XS_Bio__SCF_get_scf_pointer&rsquo;:<br />SCF.xs:57:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]<br /> ret_val = newSViv((int)scf_data);<br /> ^<br />/usr/lib/x86_64-linux-gnu/perl/5.22/CORE/embed.h:402:40: note: in definition of macro &lsquo;newSViv&rsquo;<br /> #define newSViv(a) Perl_newSViv(aTHX_ a)<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_get_scf_fpointer&rsquo;:<br />SCF.xs:80:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]<br /> ret_val = newSViv((int)scf_data);<br /> ^<br />/usr/lib/x86_64-linux-gnu/perl/5.22/CORE/embed.h:402:40: note: in definition of macro &lsquo;newSViv&rsquo;<br /> #define newSViv(a) Perl_newSViv(aTHX_ a)<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_scf_free&rsquo;:<br />SCF.xs:89:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]<br /> scf_deallocate((Scf *)scf_pointer);<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_get_comments&rsquo;:<br />SCF.xs:95:18: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]<br /> Scf *scf_data = (Scf *)scf_pointer;<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_set_comments&rsquo;:<br />SCF.xs:108:18: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]<br /> Scf *scf_data = (Scf *)scf_pointer;<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_scf_write&rsquo;:<br />SCF.xs:121:18: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]<br /> Scf *scf_data = (Scf *)scf_pointer;<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_scf_fwrite&rsquo;:<br />SCF.xs:137:18: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]<br /> Scf *scf_data = (Scf *)scf_pointer;<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_get_from_header&rsquo;:<br />SCF.xs:159:18: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]<br /> Scf *scf_data = (Scf *)scf_pointer;<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_get_at&rsquo;:<br />SCF.xs:186:18: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]<br /> Scf *scf_data = (Scf *)scf_pointer;<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_set_base_at&rsquo;:<br />SCF.xs:242:18: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]<br /> Scf *scf_data = (Scf *)scf_pointer;<br /> ^<br />SCF.xs: In function &lsquo;XS_Bio__SCF_set_at&rsquo;:<br />SCF.xs:255:18: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]<br /> Scf *scf_data = (Scf *)scf_pointer;<br /> ^<br />rm -f blib/arch/auto/Bio/SCF/SCF.so<br />x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong SCF.o -o blib/arch/auto/Bio/SCF/SCF.so \<br /> -lread -lz \<br /> <br />/usr/local/lib/libread.a(open_trace_file.o): In function `find_file_url':<br />open_trace_file.c:(.text+0xaf4): warning: the use of `tempnam' is dangerous, better use `mkstemp'<br />chmod 755 blib/arch/auto/Bio/SCF/SCF.so<br />"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- SCF.bs blib/arch/auto/Bio/SCF/SCF.bs 644<br />Manifying 1 pod document</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>

</channel>
</rss>