<?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/30018?offset=20</link>
	<atom:link href="https://bioinformaticsonline.com/related/30018?offset=20" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<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/bookmarks/view/3013/python-and-biopython-tutorial</guid>
	<pubDate>Fri, 23 Aug 2013 06:47:40 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/3013/python-and-biopython-tutorial</link>
	<title><![CDATA[Python and BioPython Tutorial]]></title>
	<description><![CDATA[<p>A quickstart tutorial that allows to become familiar with the Python language. The exercises expect knowledge of basic concepts of programming. A group of 2nd year computer science students with no previous Python knowledge required 60'-90' to complete the exercises. With about 3 hours time, the exercise is suitable for non-programmers as well.</p><p>Address of the bookmark: <a href="http://www.biotnet.org/training-materials/python-programmers" rel="nofollow">http://www.biotnet.org/training-materials/python-programmers</a></p>]]></description>
	<dc:creator>Manshi Raghubanshi</dc:creator>
</item>

<item>
  <guid isPermaLink='true'>https://bioinformaticsonline.com/opportunity/view/41905/research-associate-bioinformatics-in-iisc-recruitment-2020</guid>
  <pubDate>Tue, 23 Jun 2020 21:53:34 -0500</pubDate>
  <link></link>
  <title><![CDATA[Research Associate Bioinformatics in IISc Recruitment 2020]]></title>
  <description><![CDATA[
<p>Research Associate Bioinformatics in IISc Recruitment 2020</p>

<p>Essential Qualifications: Ph.D. (Bioinformatics/ Biophysics/ Biotechnology or any other stream of biological/ physical sciences) with a minimum of two publications in reputed peer reviewed journals in the area of structural bioinformatics or biophysics or biomolecular modeling/ simulation.</p>

<p>Job description: Development of bioinformatics tools and algorithms/software for structure based analysis of biomolecular systems. Programmatic access to major biomolecular databases using APIs Knowledge based prediction and analysis of biomolecular structure, function and interactions. Docking/simulations for inhibitor design.</p>

<p>Desirable Qualifications (Research Associate/s): i)  Strong computer programming skills (in Python/PERL/PHP or C++ or object oriented database management systems like MySQL etc or scripting languages under LINUX/UNIX environment). </p>

<p>ii) Extensive experience in computational analysis of biomolecular structure/interactions and usage of advanced biomolecular simulation softwares. iii) Adequate knowledge of major databases, webservers and softwares in the area of biomolecular structure/function and drug design. iv)  Familiarity with Parallel Programming environments and experience in usage of high-end HPC clusters.</p>

<p>The candidates must highlight their experience in above mentioned fields/topics in their CV. Initial appointment will be for a period of 1 year, subject to extension after review of performance.</p>

<p>Emoluments: As per DST, GOI norms and commensurate with experience.</p>

<p>More at https://www.iisc.ac.in/positions-open/</p>
]]></description>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/20471/bioinformatics-scripts</guid>
	<pubDate>Thu, 22 Jan 2015 22:29:39 -0600</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/20471/bioinformatics-scripts</link>
	<title><![CDATA[Bioinformatics Scripts]]></title>
	<description><![CDATA[<p>Some of the useful bioinformatics scripts.</p>
<p>For example ... contig-stats.pl is a Perl script that will automatically describe features of a sequence assembly.</p>
<p>http://milkweedgenome.org/?q=scripts</p><p>Address of the bookmark: <a href="http://milkweedgenome.org/?q=scripts" rel="nofollow">http://milkweedgenome.org/?q=scripts</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/21703/coding-ground</guid>
	<pubDate>Tue, 17 Mar 2015 00:47:20 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/21703/coding-ground</link>
	<title><![CDATA[Coding Ground]]></title>
	<description><![CDATA[<p>Online coding group for most of the programming languages.</p>
<p>Code in almost all popular languages using Coding Ground.&nbsp;Edit, compile, execute and share your projects, 100% cloud.</p>
<p>http://www.tutorialspoint.com/codingground.htm</p><p>Address of the bookmark: <a href="http://www.tutorialspoint.com/codingground.htm" rel="nofollow">http://www.tutorialspoint.com/codingground.htm</a></p>]]></description>
	<dc:creator>Jitendra Narayan</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/30696/many-core-engine-mce-for-perl-example</guid>
	<pubDate>Tue, 31 Jan 2017 05:37:50 -0600</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/30696/many-core-engine-mce-for-perl-example</link>
	<title><![CDATA[Many-Core Engine (MCE) for Perl example]]></title>
	<description><![CDATA[<p><span>MCE spawns a pool of workers and therefore does not fork a new process per each element of data. Instead, MCE follows a bank queuing model. Imagine the line being the data and bank-tellers the parallel workers. MCE enhances that model by adding the ability to chunk the next n elements from the input stream to the next available worker.</span></p>
<p>CORE MODULES</p>
<p>Three modules make up the core engine for MCE.</p>
<dl><dt id="MCE::Core"><a href="https://metacpan.org/pod/MCE#MCE::Core"><span></span></a><a></a><a href="https://metacpan.org/pod/distribution/MCE/lib/MCE/Core.pod">MCE::Core</a></dt><dd>
<p>Provides the Core API for Many-Core Engine. The various MCE options are described here.</p>
</dd><dt id="MCE::Signal"><a href="https://metacpan.org/pod/MCE#MCE::Signal"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Signal">MCE::Signal</a></dt><dd>
<p>Temporary directory creation, cleanup, and signal handling.</p>
</dd><dt id="MCE::Util"><a href="https://metacpan.org/pod/MCE#MCE::Util"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Util">MCE::Util</a></dt><dd>
<p>Utility functions for Many-Core Engine.</p>
</dd></dl>
<p><a href="https://metacpan.org/pod/MCE#MCE-EXTRAS"><span></span></a><a></a>MCE EXTRAS</p>
<p>There are 4 add-on modules for use with MCE.</p>
<dl><dt id="MCE::Candy"><a href="https://metacpan.org/pod/MCE#MCE::Candy"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Candy">MCE::Candy</a></dt><dd>
<p>Provides a collection of sugar methods and output iterators for preserving output order.</p>
</dd><dt id="MCE::Mutex"><a href="https://metacpan.org/pod/MCE#MCE::Mutex"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Mutex">MCE::Mutex</a></dt><dd>
<p>Provides a simple semaphore implementation supporting threads and processes.</p>
</dd><dt id="MCE::Queue"><a href="https://metacpan.org/pod/MCE#MCE::Queue"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Queue">MCE::Queue</a></dt><dd>
<p>Provides a hybrid queuing implementation for MCE supporting normal queues and priority queues from a single module. MCE::Queue exchanges data via the core engine to enable queuing to work for both children (spawned from fork) and threads.</p>
</dd><dt id="MCE::Relay"><a href="https://metacpan.org/pod/MCE#MCE::Relay"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Relay">MCE::Relay</a></dt><dd>
<p>Enables workers to receive and pass on information orderly with zero involvement by the manager process while running.</p>
</dd></dl>
<p><a href="https://metacpan.org/pod/MCE#MCE-MODELS"><span></span></a><a></a>MCE MODELS</p>
<p>The models take Many-Core Engine to a new level for ease of use. Two options (chunk_size and max_workers) are configured automatically as well as spawning and shutdown.</p>
<dl><dt id="MCE::Loop"><a href="https://metacpan.org/pod/MCE#MCE::Loop"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Loop">MCE::Loop</a></dt><dd>
<p>Provides a parallel loop utilizing MCE for building creative loops.</p>
</dd><dt id="MCE::Flow"><a href="https://metacpan.org/pod/MCE#MCE::Flow"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Flow">MCE::Flow</a></dt><dd>
<p>A parallel flow model for building creative applications. This makes use of user_tasks in MCE. The author has full control when utilizing this model. MCE::Flow is similar to MCE::Loop, but allows for multiple code blocks to run in parallel with a slight change to syntax.</p>
</dd><dt id="MCE::Grep"><a href="https://metacpan.org/pod/MCE#MCE::Grep"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Grep">MCE::Grep</a></dt><dd>
<p>Provides a parallel grep implementation similar to the native grep function.</p>
</dd><dt id="MCE::Map"><a href="https://metacpan.org/pod/MCE#MCE::Map"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Map">MCE::Map</a></dt><dd>
<p>Provides a parallel map model similar to the native map function.</p>
</dd><dt id="MCE::Step"><a href="https://metacpan.org/pod/MCE#MCE::Step"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Step">MCE::Step</a></dt><dd>
<p>Provides a parallel step implementation utilizing MCE::Queue between user tasks. MCE::Step is a spin off from MCE::Flow with a touch of MCE::Stream. This model, introduced in 1.506, allows one to pass data from one sub-task into the next transparently.</p>
</dd><dt id="MCE::Stream"><a href="https://metacpan.org/pod/MCE#MCE::Stream"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Stream">MCE::Stream</a></dt><dd>
<p>Provides an efficient parallel implementation for chaining multiple maps and greps together through user_tasks and MCE::Queue. Like with MCE::Flow, MCE::Stream can run multiple code blocks in parallel with a slight change to syntax from MCE::Map and MCE::Grep.</p>
</dd></dl>
<p><a href="https://metacpan.org/pod/MCE#MISCELLANEOUS"><span></span></a>MISCELLANEOUS</p>
<p>Miscellaneous additions included with the distribution.</p>
<dl><dt id="MCE::Examples"><a href="https://metacpan.org/pod/MCE#MCE::Examples"><span></span></a><a></a><a href="https://metacpan.org/pod/distribution/MCE/lib/MCE/Examples.pod">MCE::Examples</a></dt><dd>
<p>Describes various demonstrations for MCE including a Monte Carlo simulation.</p>
</dd><dt id="MCE::Subs"><a href="https://metacpan.org/pod/MCE#MCE::Subs"><span></span></a><a></a><a href="https://metacpan.org/pod/MCE::Subs">MCE::Subs</a></dt><dd>
<p>Exports functions mapped directly to MCE methods; e.g. mce_wid. The module allows 3 options; :manager, :worker, and :getter.</p>
</dd></dl>
<p><a href="https://metacpan.org/pod/MCE#REQUIREMENTS"><span></span></a>REQUIREMENTS</p>
<p>Perl 5.8.0 or later. PDL::IO::Storable is required in scripts running PDL.</p>
<p><a href="https://metacpan.org/pod/MCE#SOURCE-AND-FURTHER-READING"><span></span></a><a></a>SOURCE AND FURTHER READING</p>
<p>The source, cookbook, and examples are hosted at GitHub.</p>
<ul>
<li>
<p><a href="https://github.com/marioroy/mce-perl">https://github.com/marioroy/mce-perl</a></p>
</li>
<li>
<p><a href="https://github.com/marioroy/mce-cookbook">https://github.com/marioroy/mce-cookbook</a></p>
</li>
<li>
<p><a href="https://github.com/marioroy/mce-examples">https://github.com/marioroy/mce-examples</a></p>
</li>
</ul>
<p><a href="https://metacpan.org/pod/MCE#SEE-ALSO"><span></span></a><a></a>SEE ALSO</p>
<p><code>MCE::Shared</code>&nbsp;provides data sharing capabilities for&nbsp;<code>MCE</code>. It includes&nbsp;<code>MCE::Hobo</code>&nbsp;for running code asynchronously.</p>
<ul>
<li>
<p><a href="https://metacpan.org/pod/MCE::Shared">MCE::Shared</a></p>
</li>
<li>
<p><a href="https://metacpan.org/pod/MCE::Hobo">MCE::Hobo</a></p>
</li>
</ul><p>Address of the bookmark: <a href="https://github.com/marioroy/mce-examples" rel="nofollow">https://github.com/marioroy/mce-examples</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/view/459</guid>
	<pubDate>Thu, 11 Jul 2013 14:39:19 -0500</pubDate>
	<link>https://bioinformaticsonline.com/view/459</link>
	<title><![CDATA[Python vs Perl]]></title>
	<description><![CDATA[<p>Why bioinformatician still using Perl when Python is easy to code, good in ReXp and faster than perl?</p>]]></description>
	<dc:creator>Rahul Agarwal</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/news/view/1467/biopython-cookbook</guid>
	<pubDate>Thu, 08 Aug 2013 06:43:02 -0500</pubDate>
	<link>https://bioinformaticsonline.com/news/view/1467/biopython-cookbook</link>
	<title><![CDATA[BioPython Cookbook]]></title>
	<description><![CDATA[<p>If you are planning to start learning BioPython ( it does not bite but&nbsp;swallow :P just kidding) then this online cookbook will be really helpful for you.</p><p>http://biopython.org/DIST/docs/tutorial/Tutorial.html</p>]]></description>
	<dc:creator>Jitendra Narayan</dc:creator>
</item>

<item>
  <guid isPermaLink='true'>https://bioinformaticsonline.com/opportunity/view/41041/post-doc-computational-biology-bioinformatics-network-biology-data-science-ngs-mfd</guid>
  <pubDate>Sat, 15 Feb 2020 06:13:35 -0600</pubDate>
  <link></link>
  <title><![CDATA[Post Doc Computational Biology, Bioinformatics - Network Biology &amp; Data Science, NGS (m/f/d)]]></title>
  <description><![CDATA[
<p>https://www.jobvector.de/jobs-stellenangebote/biologie-life-sciences/forschung-entwicklung/post-doc-computational-biology-bioinformatics-network-biology-data-science-ngs-129867.html?suid=e522e9793b41817e52ac58d6963b94e2519920df</p>

<p>Requirements<br />Doctoral degree in Bioinformatics, Computational Biology, (Bio)physics/-mathematics, Biochemistry/Biology or similar with strong quantitative and numeric focus<br />Ability to numerically process complex and large data sets<br />Good programming skills (R/Bioconductor and/or Python preferred, Linux is a plus)<br />Experience in analyzing next-generation sequencing data sets using network biology<br />Scientific publication record in applied bioinformatics<br />Familiarity with single cell NGS analyses and other –omics techniques is a plus, but not essential</p>
]]></description>
</item>

<item>
  <guid isPermaLink='true'>https://bioinformaticsonline.com/opportunity/view/43272/bioinformatics-head-bioinformatics-manager-iii-cancer-genomics-research-laboratory-at-frederick-national-laboratory</guid>
  <pubDate>Wed, 18 Aug 2021 00:19:48 -0500</pubDate>
  <link></link>
  <title><![CDATA[Bioinformatics Head (Bioinformatics Manager III), Cancer Genomics Research Laboratory at  Frederick National Laboratory]]></title>
  <description><![CDATA[
<p>Frederick National Laboratory seeking an enthusiastic, creative, and seasoned bioinformatics professional to join our leadership team and direct the exceptional Bioinformatics Group at the Cancer Genomics Research Laboratory (CGR).  CGR has a diverse team of bioinformatics and computational scientists that support all areas of bioinformatics and data analysis (infrastructure, data QC, pipeline development and maintenance, data curation and sharing, methodology development, statistical analyses, machine learning approaches, and scientific interpretation).</p>

<p>More at https://leidosbiomed.csod.com/ats/careersite/jobdetails.aspx?site=4&amp;c=leidosbiomed&amp;id=2040</p>
]]></description>
</item>

</channel>
</rss>