<?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: All site blogs]]></title>
	<link>https://bioinformaticsonline.com/blog/all?offset=100</link>
	<atom:link href="https://bioinformaticsonline.com/blog/all?offset=100" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/40736/list-of-perl-special-symbols</guid>
	<pubDate>Tue, 28 Jan 2020 06:44:27 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/40736/list-of-perl-special-symbols</link>
	<title><![CDATA[List of perl special symbols !]]></title>
	<description><![CDATA[<p><span>There are some variables which have a predefined and special meaning in Perl. They are the variables that use punctuation characters after the usual variable indicator ($, @, or %), such as $_ ( explained below ).</span></p><p>Special Symbols &ndash; File handlers</p><blockquote><p>$@ Perl error string</p><p>$! Error number from C, &lsquo;errno&rsquo;</p><p>$^E Extended OS error info, such as &lsquo;CDROM tray not closed&rsquo;</p><p>$? Exit status from last process</p><p>$AGRV &ndash; name of current file</p><p>@ARGV &ndash; command line arguments</p><p>$ARGV &ndash; special file handle for command line filenames</p><p>$. &ndash; current line number</p><p>$/ - input line delimiter</p><p>$\ - output line delimiter</p><p>$% - current page number</p><p>$&amp;/${^MATCH} &ndash; last successful matching string</p><p>$`/${^PREMATCH} &ndash; the string preceding the last matching string</p><p>$&rsquo;/${^POSTMATCH} &ndash; the string following the last matching string</p><p>$1, $2, &hellip; - matching groups in the parentheses in pattern</p></blockquote><p>More at&nbsp;<a href="https://www.tutorialspoint.com/perl/perl_special_variables.htm">https://www.tutorialspoint.com/perl/perl_special_variables.htm</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/40534/understand-social-media-importance-for-researchers-with-benefits-to-the-strategy</guid>
	<pubDate>Tue, 14 Jan 2020 23:21:11 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/40534/understand-social-media-importance-for-researchers-with-benefits-to-the-strategy</link>
	<title><![CDATA[Understand Social Media Importance for Researchers With Benefits to the Strategy !]]></title>
	<description><![CDATA[<p>Why have so many researchers embraced Facebook or Instagram pages? They understand the importance of social media and how it adds value. Now that consumers often experience interactions with companies that are not face-to-face, shifting to social media has become an ideal way to actively engage with researchers.<br /><br />With social media, you have the opportunity to highlight all the best aspects of your research with one click. What information would be most useful for your potential and current research lab to have easy access to?<br /><br />Don&rsquo;t leave this vital question unanswered! Social media&rsquo;s importance is seen when you realize your social pages become a hub for users to easily find out more about your research and what you care about, without clicking away from the app or website they&rsquo;re already browsing.<br /><br />You can use social media as a platform to distinguish your research from competing labs, too. Showing researchers that your research personality is clearly defined and consistent is valuable, but you also want to make sure you are also wrapping your research identity in with common trends on the internet (as appropriate) to show your alike researchers that you are up-to-date on the world around you.<br /><br />Remember, you don&rsquo;t want to sound inauthentic! Understanding the importance of social media and investing in it gives you the ability to show that you can connect on a personal level with your alike researchers.<br /><br />The importance of social media is seen in that it provides value while also creating a low-cost way to market your research. Plus, social media allows you to have direct control over the messages you share with the world.<br /><br />Although increasing and maintaining your presence effectively on social media is important, it is essential to be realistic about the amount of energy and time you might need to invest in reaching larger audiences.</p><p>These days, if you don&rsquo;t have an online presence it affects which opportunities will come your way. I showed an example of someone looking for ECR conference speakers on Twitter and all suggestions in response to this were for ECRs who were on Twitter.<br /><br />When someone Googles your name, what do they get? What do you want them to see? I gave my opinion on some profiles:<br /><br /></p><ul>
<li>Google Scholar &ndash; essential. Sign up, and once you have a publication, make your profile public. Website &ndash; essential. As a minimum we add each person to the lab website with links to their professional profiles.<br /><br /></li>
<li>ORCiD &ndash; required. All lab members need an ORCiD for our publications. Easy to set up a profile and link to services that will auto-update it for you, e.g. when you publish a paper.<br /><br /></li>
<li>Twitter &ndash; important. Possibly essential these days. Many scientists are on Twitter and there are a lot of benefits to joining. It is somehow more professional than other social networks. Twitter handles can even be included on papers. Great for networking with other scientists and for following meetings. This a great guide to getting started.<br /><br /></li>
<li>LinkedIn &ndash; important outside of academia. I personally dislike LinkedIn, but it is essential if you are job-hunting outside of academic circles.<br /><br /></li>
<li>ImpactStory &ndash; not essential but fun. You can make a profile based on your ORCiD. It&rsquo;s a good way to keep track of the attention that your work gets online.<br /><br /></li>
<li>Publons &ndash; might become important. This is a way to log your review activity.</li>
</ul><p>Many places to set up an author profile, e.g. researcherid. Most are not worth bothering with if you have ORCiD and/or Google Scholar page.</p><ul>
<li>ResearchGate &ndash; not important. It&rsquo;s incredibly popular but I have never needed it and dislike it for similar reasons to LinkedIn.</li>
</ul><p>How active you are on these platforms determines what you will get out of them, but as a minimum, try and keep them active and up-to-date.<br /><br />I left it to the people in the lab to setup whatever accounts they like. A possibility is to get people to sign up right there in the session, but I think it&rsquo;s important for everyone to make a choice about what profile(s) they want to create. The only one I require people in the lab to setup is ORCiD.</p>]]></description>
	<dc:creator>Rahul Nayak</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/40413/50-iisc-raman-post-doctoral-fellowships</guid>
	<pubDate>Thu, 19 Dec 2019 09:59:12 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/40413/50-iisc-raman-post-doctoral-fellowships</link>
	<title><![CDATA[50 IISC Raman Post Doctoral Fellowships]]></title>
	<description><![CDATA[<p><span>IISC Bangalore has launched Raman Post-Doc Program. Apply For Raman Post Doctoral Fellowship at IISC Bangalore. Bioscience &amp; Chemical Science researchers are eligible to apply for&nbsp;IISC Raman Post Doctoral Fellowships. 50&nbsp;IISC Raman Post Doctoral Fellowships are available.</span></p><p>The Indian Institute of Science (IISc) has been recognised as an Institution of Eminence (IoE) by the Government of India. As a part of the IoE initiative, IISc has created the Raman Post-Doc Program, a highly selective Post-Doc program with 50 positions. The Institute invites applications for intensely motivated individuals with an established record of&nbsp;high quality&nbsp;research, for the positions of Raman Post-Docs. Overseas Citizens of India (OCI), Persons of Indian Origin (PIO), and foreign nationals are also eligible to apply.</p><p><span>The information below specifically pertains to applicants intending to work with Faculty in the Biological Sciences Division.</span></p><p>This is a rolling advertisement and candidates can apply any time during the year. The applications will be reviewed every four months around the following dates:&nbsp;<span>April 30,&nbsp;August 31, December 31</span>.</p><p><span>Further details about the various departments and interdisciplinary centres, faculty profiles, academic programs, and areas of research are available at the departmental websites </span></p><p><span>and also at&nbsp;</span><a href="http://www.iisc.ac.in/" target="_blank">www.iisc.ac.in</a></p><p>Note:&nbsp;<span>Candidates should preferably be less than 32 years of age at the time of applying.</span></p>]]></description>
	<dc:creator>Shruti Paniwala</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/40404/exchange-programme-for-indian-scientist</guid>
	<pubDate>Wed, 18 Dec 2019 21:11:22 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/40404/exchange-programme-for-indian-scientist</link>
	<title><![CDATA[Exchange Programme for Indian scientist !!]]></title>
	<description><![CDATA[<p>The Indian National Science Academy (INSA) is a premier scientific learned body (established in 1935) representing all branches of science &ndash;Physical and Biological Sciences including Engineering, Medicine and Agricultural Sciences. The Academy has been promoting scientific cooperation with Academies/Organisations of several countries the world over. The Academy has links with the Academies and Organisations in Asia, Europe<br />and South America. These programmes provide opportunities to scientists working in various scientific institutions and organizations in the country for exchange of ideas, knowledge, establish new links, strengthen old links and undertake joint projects with their research partners in leading laboratories and institutions abroad.</p><p>The Academy has an International Exchange Programme with Academies/Organizations in the countries:&nbsp;<span>Brazil, China, France, Hungary, Iran, Israel, Nepal, Philippines, Poland, Scotland, Slovak Republic, Republic of Slovenia, Sudan and Taiwan.</span></p><p>Applications are invited from Indian Nationals for consideration by the Academy for the next calendar year.</p><ul>
<li>The applicant should be a scientist holding a regular (<span>permanent</span>) position in a recognized S &amp; T Institution/University and actively engaged in research work in frontline areas.</li>
<li>He/She should not have been abroad during the last 3 years under any INSA Programme.</li>
<li>The scientist should have been accepted to work in an Institute/Laboratory in the country to be visited and this should be supported by a&nbsp;<span>letter of invitation</span>&nbsp;from the host abroad.</li>
<li>Those who wish to visit abroad for three months should submit a detailed programme of their collaborative research work to be conducted.</li>
</ul><p>All applications duly completed should be forwarded to the academy through proper channel by the employer/head of the Institute.</p><ul>
<li>Scientists selected for deputation abroad would be provided&nbsp;<span>100% travel support (by only Air India excursion class airfare, through shortest route from the place of duty in India to the nearest airport of host Institute and back)</span>&nbsp;by INSA.</li>
<li>Medical Insurance purchased in India.</li>
<li>Visa fee (if any).</li>
<li>The receiving Academy/Organization would provide local hospitality including internal travel abroad.</li>
</ul><p>Contact for detail at&nbsp;</p><p><a href="http://www.insaindia.res.in/" target="_blank"><span>www.insaindia.res.in</span></a></p><p><span>INDIAN NATIONAL SCIENCE ACADEMY</span><br /><span>Bahadur Shah Zafar Marg, New Delhi &ndash; 110 002.</span><br /><span>Telephone: 91-11-23221931 &ndash; 23221950 (EPABX),</span><br /><span>Fax: 91-11- 23235648, 23231095</span></p>]]></description>
	<dc:creator>Shruti Paniwala</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/39469/introduction-to-bioinformatics</guid>
	<pubDate>Wed, 05 Jun 2019 14:58:11 -0500</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/39469/introduction-to-bioinformatics</link>
	<title><![CDATA[Introduction to Bioinformatics]]></title>
	<description><![CDATA[<p><img src="https://edu.t-bio.info/wp-content/uploads/2017/07/Introduction-Course-Title-11.jpg" alt="Introduction to Bioinformatics Course" width="600" height="315.6" style="vertical-align: top; border: 0px; border: 0px;"></p><p>Introduction to bioinformatics is a course for biologists and clinicians that would like to learn more about the way bioinformatics is used in healthcare, biotech and pharmaceuitcal industry as well as basic research. The course covers many of the topics transformed by the emergence of big data and computational technologies. To learn more about the course, visit:&nbsp;<a href="https://edu.t-bio.info/course/introduction-bioinformatics/">https://edu.t-bio.info/course/introduction-bioinformatics/</a></p>]]></description>
	<dc:creator>eliabrodsky</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/39307/awk-for-beginners</guid>
	<pubDate>Fri, 26 Apr 2019 16:19:41 -0500</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/39307/awk-for-beginners</link>
	<title><![CDATA[AWK for beginners !]]></title>
	<description><![CDATA[<p>AWK is a standard tool on every POSIX-compliant UNIX system. It&rsquo;s like flex/lex, from the command-line, perfect for text-processing tasks and other scripting needs. It has a C-like syntax, but without mandatory semicolons (although, you should use them anyway, because they are required when you&rsquo;re writing one-liners, something AWK excels at), manual memory management, or static typing. It excels at text processing. You can call to it from a shell script, or you can use it as a stand-alone scripting language.</p><p>Why use AWK instead of Perl? Readability. AWK is easier to read than Perl. For simple text-processing scripts, particularly ones that read files line by line and split on delimiters, AWK is probably the right tool for the job.</p><div><pre><span>#!/usr/bin/awk -f</span>

<span># Comments are like this</span>


<span># AWK programs consist of a collection of patterns and actions.</span>
<span>pattern1</span> <span>{</span> <span>action</span><span>;</span> <span>}</span> <span># just like lex</span>
<span>pattern2</span> <span>{</span> <span>action</span><span>;</span> <span>}</span>

<span># There is an implied loop and AWK automatically reads and parses each</span>
<span># record of each file supplied. Each record is split by the FS delimiter,</span>
<span># which defaults to white-space (multiple spaces,tabs count as one)</span>
<span># You can assign FS either on the command line (-F C) or in your BEGIN</span>
<span># pattern</span>

<span># One of the special patterns is BEGIN. The BEGIN pattern is true</span>
<span># BEFORE any of the files are read. The END pattern is true after</span>
<span># an End-of-file from the last file (or standard-in if no files specified)</span>
<span># There is also an output field separator (OFS) that you can assign, which</span>
<span># defaults to a single space</span>

<span>BEGIN</span> <span>{</span>

    <span># BEGIN will run at the beginning of the program. It's where you put all</span>
    <span># the preliminary set-up code, before you process any text files. If you</span>
    <span># have no text files, then think of BEGIN as the main entry point.</span>

    <span># Variables are global. Just set them or use them, no need to declare..</span>
    <span>count</span> <span>=</span> <span>0</span><span>;</span>

    <span># Operators just like in C and friends</span>
    <span>a</span> <span>=</span> <span>count</span> <span>+</span> <span>1</span><span>;</span>
    <span>b</span> <span>=</span> <span>count</span> <span>-</span> <span>1</span><span>;</span>
    <span>c</span> <span>=</span> <span>count</span> <span>*</span> <span>1</span><span>;</span>
    <span>d</span> <span>=</span> <span>count</span> <span>/</span> <span>1</span><span>;</span> <span># integer division</span>
    <span>e</span> <span>=</span> <span>count</span> <span>%</span> <span>1</span><span>;</span> <span># modulus</span>
    <span>f</span> <span>=</span> <span>count</span> <span>^</span> <span>1</span><span>;</span> <span># exponentiation</span>

    <span>a</span> <span>+=</span> <span>1</span><span>;</span>
    <span>b</span> <span>-=</span> <span>1</span><span>;</span>
    <span>c</span> <span>*=</span> <span>1</span><span>;</span>
    <span>d</span> <span>/=</span> <span>1</span><span>;</span>
    <span>e</span> <span>%=</span> <span>1</span><span>;</span>
    <span>f</span> <span>^=</span> <span>1</span><span>;</span>

    <span># Incrementing and decrementing by one</span>
    <span>a</span><span>++</span><span>;</span>
    <span>b</span><span>--</span><span>;</span>

    <span># As a prefix operator, it returns the incremented value</span>
    <span>++</span><span>a</span><span>;</span>
    <span>--</span><span>b</span><span>;</span>

    <span># Notice, also, no punctuation such as semicolons to terminate statements</span>

    <span># Control statements</span>
    <span>if</span> <span>(</span><span>count</span> <span>==</span> <span>0</span><span>)</span>
        <span>print</span> <span>"Starting with count of 0"</span><span>;</span>
    <span>else</span>
        <span>print</span> <span>"Huh?"</span><span>;</span>

    <span># Or you could use the ternary operator</span>
    <span>print</span> <span>(</span><span>count</span> <span>==</span> <span>0</span><span>)</span> <span>?</span> <span>"Starting with count of 0"</span> <span>:</span> <span>"Huh?"</span><span>;</span>

    <span># Blocks consisting of multiple lines use braces</span>
    <span>while</span> <span>(</span><span>a</span> <span>&lt;</span> <span>10</span><span>)</span> <span>{</span>
        <span>print</span> <span>"String concatenation is done"</span> <span>" with a series"</span> <span>" of"</span>
            <span>" space-separated strings"</span><span>;</span>
        <span>print</span> <span>a</span><span>;</span>

        <span>a</span><span>++</span><span>;</span>
    <span>}</span>

    <span>for</span> <span>(</span><span>i</span> <span>=</span> <span>0</span><span>;</span> <span>i</span> <span>&lt;</span> <span>10</span><span>;</span> <span>i</span><span>++</span><span>)</span>
        <span>print</span> <span>"Good ol' for loop"</span><span>;</span>

    <span># As for comparisons, they're the standards:</span>
    <span># a &lt; b   # Less than</span>
    <span># a &lt;= b  # Less than or equal</span>
    <span># a != b  # Not equal</span>
    <span># a == b  # Equal</span>
    <span># a &gt; b   # Greater than</span>
    <span># a &gt;= b  # Greater than or equal</span>

    <span># Logical operators as well</span>
    <span># a &amp;&amp; b  # AND</span>
    <span># a || b  # OR</span>

    <span># In addition, there's the super useful regular expression match</span>
    <span>if</span> <span>(</span><span>"foo"</span> <span>~</span> <span>"^fo+$"</span><span>)</span>
        <span>print</span> <span>"Fooey!"</span><span>;</span>
    <span>if</span> <span>(</span><span>"boo"</span> <span>!~</span> <span>"^fo+$"</span><span>)</span>
        <span>print</span> <span>"Boo!"</span><span>;</span>

    <span># Arrays</span>
    <span>arr</span><span>[</span><span>0</span><span>]</span> <span>=</span> <span>"foo"</span><span>;</span>
    <span>arr</span><span>[</span><span>1</span><span>]</span> <span>=</span> <span>"bar"</span><span>;</span>

    <span># You can also initialize an array with the built-in function split()</span>

    <span>n</span> <span>=</span> <span>split</span><span>(</span><span>"foo:bar:baz"</span><span>,</span> <span>arr</span><span>,</span> <span>":"</span><span>);</span>

    <span># You also have associative arrays (actually, they're all associative arrays)</span>
    <span>assoc</span><span>[</span><span>"foo"</span><span>]</span> <span>=</span> <span>"bar"</span><span>;</span>
    <span>assoc</span><span>[</span><span>"bar"</span><span>]</span> <span>=</span> <span>"baz"</span><span>;</span>

    <span># And multi-dimensional arrays, with some limitations I won't mention here</span>
    <span>multidim</span><span>[</span><span>0</span><span>,</span><span>0</span><span>]</span> <span>=</span> <span>"foo"</span><span>;</span>
    <span>multidim</span><span>[</span><span>0</span><span>,</span><span>1</span><span>]</span> <span>=</span> <span>"bar"</span><span>;</span>
    <span>multidim</span><span>[</span><span>1</span><span>,</span><span>0</span><span>]</span> <span>=</span> <span>"baz"</span><span>;</span>
    <span>multidim</span><span>[</span><span>1</span><span>,</span><span>1</span><span>]</span> <span>=</span> <span>"boo"</span><span>;</span>

    <span># You can test for array membership</span>
    <span>if</span> <span>(</span><span>"foo"</span> <span>in</span> <span>assoc</span><span>)</span>
        <span>print</span> <span>"Fooey!"</span><span>;</span>

    <span># You can also use the 'in' operator to traverse the keys of an array</span>
    <span>for</span> <span>(</span><span>key</span> <span>in</span> <span>assoc</span><span>)</span>
        <span>print</span> <span>assoc</span><span>[</span><span>key</span><span>];</span>

    <span># The command line is in a special array called ARGV</span>
    <span>for</span> <span>(</span><span>argnum</span> <span>in</span> <span>ARGV</span><span>)</span>
        <span>print</span> <span>ARGV</span><span>[</span><span>argnum</span><span>];</span>

    <span># You can remove elements of an array</span>
    <span># This is particularly useful to prevent AWK from assuming the arguments</span>
    <span># are files for it to process</span>
    <span>delete</span> <span>ARGV</span><span>[</span><span>1</span><span>];</span>

    <span># The number of command line arguments is in a variable called ARGC</span>
    <span>print</span> <span>ARGC</span><span>;</span>

    <span># AWK has several built-in functions. They fall into three categories. I'll</span>
    <span># demonstrate each of them in their own functions, defined later.</span>

    <span>return_value</span> <span>=</span> <span>arithmetic_functions</span><span>(</span><span>a</span><span>,</span> <span>b</span><span>,</span> <span>c</span><span>);</span>
    <span>string_functions</span><span>();</span>
    <span>io_functions</span><span>();</span>
<span>}</span>

<span># Here's how you define a function</span>
<span>function</span> <span>arithmetic_functions</span><span>(</span><span>a</span><span>,</span> <span>b</span><span>,</span> <span>c</span><span>,</span>     <span>d</span><span>)</span> <span>{</span>

    <span># Probably the most annoying part of AWK is that there are no local</span>
    <span># variables. Everything is global. For short scripts, this is fine, even</span>
    <span># useful, but for longer scripts, this can be a problem.</span>

    <span># There is a work-around (ahem, hack). Function arguments are local to the</span>
    <span># function, and AWK allows you to define more function arguments than it</span>
    <span># needs. So just stick local variable in the function declaration, like I</span>
    <span># did above. As a convention, stick in some extra whitespace to distinguish</span>
    <span># between actual function parameters and local variables. In this example,</span>
    <span># a, b, and c are actual parameters, while d is merely a local variable.</span>

    <span># Now, to demonstrate the arithmetic functions</span>

    <span># Most AWK implementations have some standard trig functions</span>
    <span>localvar</span> <span>=</span> <span>sin</span><span>(</span><span>a</span><span>);</span>
    <span>localvar</span> <span>=</span> <span>cos</span><span>(</span><span>a</span><span>);</span>
    <span>localvar</span> <span>=</span> <span>atan2</span><span>(</span><span>b</span><span>,</span> <span>a</span><span>);</span> <span># arc tangent of b / a</span>

    <span># And logarithmic stuff</span>
    <span>localvar</span> <span>=</span> <span>exp</span><span>(</span><span>a</span><span>);</span>
    <span>localvar</span> <span>=</span> <span>log</span><span>(</span><span>a</span><span>);</span>

    <span># Square root</span>
    <span>localvar</span> <span>=</span> <span>sqrt</span><span>(</span><span>a</span><span>);</span>

    <span># Truncate floating point to integer</span>
    <span>localvar</span> <span>=</span> <span>int</span><span>(</span><span>5.34</span><span>);</span> <span># localvar =&gt; 5</span>

    <span># Random numbers</span>
    <span>srand</span><span>();</span> <span># Supply a seed as an argument. By default, it uses the time of day</span>
    <span>localvar</span> <span>=</span> <span>rand</span><span>();</span> <span># Random number between 0 and 1.</span>

    <span># Here's how to return a value</span>
    <span>return</span> <span>localvar</span><span>;</span>
<span>}</span>

<span>function</span> <span>string_functions</span><span>(</span>    <span>localvar</span><span>,</span> <span>arr</span><span>)</span> <span>{</span>

    <span># AWK, being a string-processing language, has several string-related</span>
    <span># functions, many of which rely heavily on regular expressions.</span>

    <span># Search and replace, first instance (sub) or all instances (gsub)</span>
    <span># Both return number of matches replaced</span>
    <span>localvar</span> <span>=</span> <span>"fooooobar"</span><span>;</span>
    <span>sub</span><span>(</span><span>"fo+"</span><span>,</span> <span>"Meet me at the "</span><span>,</span> <span>localvar</span><span>);</span> <span># localvar =&gt; "Meet me at the bar"</span>
    <span>gsub</span><span>(</span><span>"e+"</span><span>,</span> <span>"."</span><span>,</span> <span>localvar</span><span>);</span> <span># localvar =&gt; "m..t m. at th. bar"</span>

    <span># Search for a string that matches a regular expression</span>
    <span># index() does the same thing, but doesn't allow a regular expression</span>
    <span>match</span><span>(</span><span>localvar</span><span>,</span> <span>"t"</span><span>);</span> <span># =&gt; 4, since the 't' is the fourth character</span>

    <span># Split on a delimiter</span>
    <span>n</span> <span>=</span> <span>split</span><span>(</span><span>"foo-bar-baz"</span><span>,</span> <span>arr</span><span>,</span> <span>"-"</span><span>);</span> <span># a[1] = "foo"; a[2] = "bar"; a[3] = "baz"; n = 3</span>

    <span># Other useful stuff</span>
    <span>sprintf</span><span>(</span><span>"%s %d %d %d"</span><span>,</span> <span>"Testing"</span><span>,</span> <span>1</span><span>,</span> <span>2</span><span>,</span> <span>3</span><span>);</span> <span># =&gt; "Testing 1 2 3"</span>
    <span>substr</span><span>(</span><span>"foobar"</span><span>,</span> <span>2</span><span>,</span> <span>3</span><span>);</span> <span># =&gt; "oob"</span>
    <span>substr</span><span>(</span><span>"foobar"</span><span>,</span> <span>4</span><span>);</span> <span># =&gt; "bar"</span>
    <span>length</span><span>(</span><span>"foo"</span><span>);</span> <span># =&gt; 3</span>
    <span>tolower</span><span>(</span><span>"FOO"</span><span>);</span> <span># =&gt; "foo"</span>
    <span>toupper</span><span>(</span><span>"foo"</span><span>);</span> <span># =&gt; "FOO"</span>
<span>}</span>

<span>function</span> <span>io_functions</span><span>(</span>    <span>localvar</span><span>)</span> <span>{</span>

    <span># You've already seen print</span>
    <span>print</span> <span>"Hello world"</span><span>;</span>

    <span># There's also printf</span>
    <span>printf</span><span>(</span><span>"%s %d %d %d\n"</span><span>,</span> <span>"Testing"</span><span>,</span> <span>1</span><span>,</span> <span>2</span><span>,</span> <span>3</span><span>);</span>

    <span># AWK doesn't have file handles, per se. It will automatically open a file</span>
    <span># handle for you when you use something that needs one. The string you used</span>
    <span># for this can be treated as a file handle, for purposes of I/O. This makes</span>
    <span># it feel sort of like shell scripting, but to get the same output, the string</span>
    <span># must match exactly, so use a variable:</span>

    <span>outfile</span> <span>=</span> <span>"/tmp/foobar.txt"</span><span>;</span>

    <span>print</span> <span>"foobar"</span> <span>&gt;</span> <span>outfile</span><span>;</span>

    <span># Now the string outfile is a file handle. You can close it:</span>
    <span>close</span><span>(</span><span>outfile</span><span>);</span>

    <span># Here's how you run something in the shell</span>
    <span>system</span><span>(</span><span>"echo foobar"</span><span>);</span> <span># =&gt; prints foobar</span>

    <span># Reads a line from standard input and stores in localvar</span>
    <span>getline</span> <span>localvar</span><span>;</span>

    <span># Reads a line from a pipe (again, use a string so you close it properly)</span>
    <span>cmd</span> <span>=</span> <span>"echo foobar"</span><span>;</span>
    <span>cmd</span> <span>|</span> <span>getline</span> <span>localvar</span><span>;</span> <span># localvar =&gt; "foobar"</span>
    <span>close</span><span>(</span><span>cmd</span><span>);</span>

    <span># Reads a line from a file and stores in localvar</span>
    <span>infile</span> <span>=</span> <span>"/tmp/foobar.txt"</span><span>;</span>
    <span>getline</span> <span>localvar</span> <span>&lt;</span> <span>infile</span><span>;</span> 
    <span>close</span><span>(</span><span>infile</span><span>);</span>
<span>}</span>

<span># As I said at the beginning, AWK programs consist of a collection of patterns</span>
<span># and actions. You've already seen the BEGIN pattern. Other</span>
<span># patterns are used only if you're processing lines from files or standard</span>
<span># input.</span>
<span>#</span>
<span># When you pass arguments to AWK, they are treated as file names to process.</span>
<span># It will process them all, in order. Think of it like an implicit for loop,</span>
<span># iterating over the lines in these files. these patterns and actions are like</span>
<span># switch statements inside the loop. </span>

<span>/^fo+bar$/</span> <span>{</span>

    <span># This action will execute for every line that matches the regular</span>
    <span># expression, /^fo+bar$/, and will be skipped for any line that fails to</span>
    <span># match it. Let's just print the line:</span>

    <span>print</span><span>;</span>

    <span># Whoa, no argument! That's because print has a default argument: $0.</span>
    <span># $0 is the name of the current line being processed. It is created</span>
    <span># automatically for you.</span>

    <span># You can probably guess there are other $ variables. Every line is</span>
    <span># implicitly split before every action is called, much like the shell</span>
    <span># does. And, like the shell, each field can be access with a dollar sign</span>

    <span># This will print the second and fourth fields in the line</span>
    <span>print</span> <span>$</span><span>2</span><span>,</span> <span>$</span><span>4</span><span>;</span>

    <span># AWK automatically defines many other variables to help you inspect and</span>
    <span># process each line. The most important one is NF</span>

    <span># Prints the number of fields on this line</span>
    <span>print</span> <span>NF</span><span>;</span>

    <span># Print the last field on this line</span>
    <span>print</span> <span>$</span><span>NF</span><span>;</span>
<span>}</span>

<span># Every pattern is actually a true/false test. The regular expression in the</span>
<span># last pattern is also a true/false test, but part of it was hidden. If you</span>
<span># don't give it a string to test, it will assume $0, the line that it's</span>
<span># currently processing. Thus, the complete version of it is this:</span>

<span>$</span><span>0</span> <span>~</span> <span>/^fo+bar$/</span> <span>{</span>
    <span>print</span> <span>"Equivalent to the last pattern"</span><span>;</span>
<span>}</span>

<span>a</span> <span>&gt;</span> <span>0</span> <span>{</span>
    <span># This will execute once for each line, as long as a is positive</span>
<span>}</span>

<span># You get the idea. Processing text files, reading in a line at a time, and</span>
<span># doing something with it, particularly splitting on a delimiter, is so common</span>
<span># in UNIX that AWK is a scripting language that does all of it for you, without</span>
<span># you needing to ask. All you have to do is write the patterns and actions</span>
<span># based on what you expect of the input, and what you want to do with it.</span>

<span># Here's a quick example of a simple script, the sort of thing AWK is perfect</span>
<span># for. It will read a name from standard input and then will print the average</span>
<span># age of everyone with that first name. Let's say you supply as an argument the</span>
<span># name of a this data file:</span>
<span>#</span>
<span># Bob Jones 32</span>
<span># Jane Doe 22</span>
<span># Steve Stevens 83</span>
<span># Bob Smith 29</span>
<span># Bob Barker 72</span>
<span>#</span>
<span># Here's the script:</span>

<span>BEGIN</span> <span>{</span>

    <span># First, ask the user for the name</span>
    <span>print</span> <span>"What name would you like the average age for?"</span><span>;</span>

    <span># Get a line from standard input, not from files on the command line</span>
    <span>getline</span> <span>name</span> <span>&lt;</span> <span>"/dev/stdin"</span><span>;</span>
<span>}</span>

<span># Now, match every line whose first field is the given name</span>
<span>$</span><span>1</span> <span>==</span> <span>name</span> <span>{</span>

    <span># Inside here, we have access to a number of useful variables, already</span>
    <span># pre-loaded for us:</span>
    <span># $0 is the entire line</span>
    <span># $3 is the third field, the age, which is what we're interested in here</span>
    <span># NF is the number of fields, which should be 3</span>
    <span># NR is the number of records (lines) seen so far</span>
    <span># FILENAME is the name of the file being processed</span>
    <span># FS is the field separator being used, which is " " here</span>
    <span># ...etc. There are plenty more, documented in the man page.</span>

    <span># Keep track of a running total and how many lines matched</span>
    <span>sum</span> <span>+=</span> <span>$</span><span>3</span><span>;</span>
    <span>nlines</span><span>++</span><span>;</span>
<span>}</span>

<span># Another special pattern is called END. It will run after processing all the</span>
<span># text files. Unlike BEGIN, it will only run if you've given it input to</span>
<span># process. It will run after all the files have been read and processed</span>
<span># according to the rules and actions you've provided. The purpose of it is</span>
<span># usually to output some kind of final report, or do something with the</span>
<span># aggregate of the data you've accumulated over the course of the script.</span>

<span>END</span> <span>{</span>
    <span>if</span> <span>(</span><span>nlines</span><span>)</span>
        <span>print</span> <span>"The average age for "</span> <span>name</span> <span>" is "</span> <span>sum</span> <span>/</span> <span>nlines</span><span>;</span>
<span>}</span>
</pre><p><span>&nbsp;</span></p></div>]]></description>
	<dc:creator>BioJoker</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/39302/understanding-reads-mapping-and-flags</guid>
	<pubDate>Thu, 25 Apr 2019 09:06:20 -0500</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/39302/understanding-reads-mapping-and-flags</link>
	<title><![CDATA[Understanding reads mapping and flags !]]></title>
	<description><![CDATA[<p><strong>Linear Alignment:</strong>&nbsp;An alignment of a read to a single reference sequence that may&nbsp;<q>include insertions, deletions, skips and clipping</q>,&nbsp;<span style="text-decoration: underline;">but may not include direction changes</span>&nbsp;(i.e. one portion of the alignment on forward strand and another portion of alignment on reverse strand).<sup id="fnref:1"><a href="https://yulijia.net/en/bioinformatics/2015/12/21/Linear-Chimeric-Supplementary-Primary-and-Secondary-Alignments.html#fn:1"><br /></a></sup></p><p><strong>Chimeric Alignment:</strong>&nbsp;An alignment of a read that cannot be represented as a linear alignment. Typically, one of the linear alignments in a chimeric alignment is considered the &ldquo;representative&rdquo; alignment, and the others are called &ldquo;supplementary&rdquo; and are distinguished by the supplementary alignment flag.<sup id="fnref:1:1"><a href="https://yulijia.net/en/bioinformatics/2015/12/21/Linear-Chimeric-Supplementary-Primary-and-Secondary-Alignments.html#fn:1"><br /></a></sup></p><p>Chimeric reads are indicative of structural variation in DNA-seq and it may indicate the presence of&nbsp;<a href="https://en.wikipedia.org/wiki/Chimeric_gene">chimeric genes</a>&nbsp;in RNA-seq.<sup id="fnref:2"><a href="https://yulijia.net/en/bioinformatics/2015/12/21/Linear-Chimeric-Supplementary-Primary-and-Secondary-Alignments.html#fn:2"><br /></a></sup></p><p>In short, chimeric reads can be split in to two or more parts, each part would be mapped to reference(it&rsquo;s not&nbsp;<a href="https://www.biostars.org/p/119537/">hard-clipped</a>), the total length of the mapped part is longger than read length.<sup id="fnref:3"><a href="https://yulijia.net/en/bioinformatics/2015/12/21/Linear-Chimeric-Supplementary-Primary-and-Secondary-Alignments.html#fn:3"><br /></a></sup></p><p><strong>Representative alignment:</strong>&nbsp;A chimeric alignment that is represented as a set of linear alignments that do not have large overlaps typically has one linear alignment that is considered the representative alignment.<sup id="fnref:4"><a href="https://yulijia.net/en/bioinformatics/2015/12/21/Linear-Chimeric-Supplementary-Primary-and-Secondary-Alignments.html#fn:4"><br /></a></sup></p><p>One read can align to multiple positions, we can find one alignmnet position which sequence do not have large overlaps, it called representative alighment, for other alignment positions, we called them supplementary alignment.</p><p>It seems that GATK can realignment those representative reads to the correctly position via&nbsp;<q>RealignerTargetCreator and IndelRealigner</q>. (WARNING: I am not quite sure if I understand this correctly. If someone could help me, please leave me a message below, thanks, thanks.)</p><p><strong>Supplementary Alignment:</strong>&nbsp;A chimeric reads but not a representative reads.</p><p><strong>Primary Alignment and Secondary Alignment:</strong>&nbsp;A read may map ambiguously to multiple locations, e.g. due to repeats.&nbsp;<strong>Only one of the multiple read alignments is considered primary</strong>,<span style="text-decoration: underline;">&nbsp;and this decision may be arbitrary</span>. All other alignments have the secondary alignment flag.<sup id="fnref:5"><a href="https://yulijia.net/en/bioinformatics/2015/12/21/Linear-Chimeric-Supplementary-Primary-and-Secondary-Alignments.html#fn:5"><br /></a></sup></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/38765/list-of-tools-frequently-used-while-genome-assembly</guid>
	<pubDate>Tue, 22 Jan 2019 09:39:02 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/38765/list-of-tools-frequently-used-while-genome-assembly</link>
	<title><![CDATA[List of tools frequently used while genome assembly]]></title>
	<description><![CDATA[<h4>List of tools frequently used while genome assembly:</h4><p>I have used the following assemblers</p><ul>
<li><a href="http://bioinf.spbau.ru/spades">Spades</a>&nbsp;(v. 3.10.1)</li>
<li><a href="http://canu.readthedocs.io/en/stable/index.html">CANU</a>&nbsp;(v. 1.6)</li>
<li><a href="https://github.com/rrwick/Unicycler">Unicycler&nbsp;</a>(v. v0.4.1)</li>
<li><a href="https://github.com/lh3/miniasm">Miniasm</a>&nbsp;(v. 0.2-r137-dirty)</li>
</ul><p>I have used the following mappers</p><ul>
<li><a href="https://github.com/lh3/minimap2">minimap2</a>&nbsp;(v.&nbsp;2.0rc1-r232)</li>
<li><a href="https://github.com/lh3/minimap">minimap&nbsp;</a>(v. 0.2-r124-dirty)</li>
<li><a href="https://github.com/lh3/bwa">bwa</a>&nbsp;(v.&nbsp;0.7.12-r1039)</li>
</ul><p>I have used the following polishing tools</p><ul>
<li><a href="https://github.com/isovic/racon">Racon</a>&nbsp;(v. not available)</li>
<li><a href="https://github.com/broadinstitute/pilon">Pilon</a>&nbsp;(v. 1.18)</li>
<li><a href="https://github.com/jts/nanopolish">Nanopolish</a>&nbsp;(v. 0.8.3)</li>
</ul><p>I have used the following tools to assess genome assembly characteristics</p><ul>
<li><a href="https://github.com/chjp/ANI">ANI.pl</a>&nbsp;(https://github.com/chjp/ANI)</li>
<li><a href="http://ecogenomics.github.io/CheckM/">CheckM</a>&nbsp;(v. 1.0.7)</li>
<li><a href="https://github.com/tseemann/prokka">Prokka</a>&nbsp;(v. 1.12)</li>
<li><a href="http://bioinf.spbau.ru/en/quast">QUAST</a>&nbsp;(v. 2.3)</li>
<li><a href="http://mummer.sourceforge.net/">mummer&nbsp;</a>(v. not available)</li>
</ul><p>If you have any ideas or superior tools we have missed please let us know in the comments.</p>]]></description>
	<dc:creator>BioStar</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/38642/thank-you-email-after-bioinformatics-interview</guid>
	<pubDate>Tue, 08 Jan 2019 15:37:33 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/38642/thank-you-email-after-bioinformatics-interview</link>
	<title><![CDATA[Thank You Email After Bioinformatics Interview !]]></title>
	<description><![CDATA[<p>A good interview thank you email or note should contain three essential pieces:</p><p>a) Show appreciation for their time and thank them</p><p>b) Mention something specific you talked about in the interview, so they know it&rsquo;s not a cut &amp; paste email</p><p>c) Express interest in the position and tell them you&rsquo;re excited to learn more</p><p>d)&nbsp;Invite them to contact you if they have any questions/concerns, or need clarification on anything discussed</p><p>First sample:</p><blockquote><p>Dear Dr XYZ<br />I enjoyed speaking with you today about the XXX position&nbsp;at the X Lab, Uni. The job seems to be an excellent match for my&nbsp;skills and interests.<br /><br />The lab loaded with new updated technology and international experts,&nbsp;that you informed while interviewing confirmed my desire to work with&nbsp;X lab.<br /><br />In addition to my enthusiasm, I will bring to the position strong&nbsp;writing skills, assertiveness, and the ability to encourage others to&nbsp;work cooperatively with the group<br /><br />I appreciate the time you took to interview me. I am very interested&nbsp;in working with you and look forward to hearing from you regarding&nbsp;this position.<br /><br />Sincerely,<br />XXX</p></blockquote><p>Second sample:</p><p>&nbsp;</p><blockquote><p>Dear Dr XXX,</p><p>I wanted to take a second to thank you for your time . I enjoyed our conversation about and enjoyed learning about the position overall.</p><p>It sounds like an exciting opportunity, and an opportunity I could succeed and excel in! I&rsquo;m looking forward to hearing any updates you can share, and don&rsquo;t hesitate to contact me if you have any questions or concerns in the meantime.</p><p>Thanks again for the great conversation .</p><p>Best Regards,<br />XXX</p></blockquote>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/38618/canu-genome-assembly-parameters</guid>
	<pubDate>Mon, 07 Jan 2019 08:40:37 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/38618/canu-genome-assembly-parameters</link>
	<title><![CDATA[CANU genome assembly parameters !]]></title>
	<description><![CDATA[<p>Choose the appropriate parameters to run Canu and run it. The assembly will take about an hour. You can use two cores (parameter&nbsp;<code>-maxThreads=2</code>) and you would like to disable cluster option, since we compute on a single Amazon server set off the option to compute on cluster&nbsp;<code>useGrid=false</code>. This specifications should be for your project discussed with a local computing guru. The parameters that are in square brackets&nbsp;<code>[]</code>&nbsp;are optional, symbol&nbsp;<code>|</code>&nbsp;stands for "or".</p><pre><code>usage:   canu [-correct | -trim | -assemble | -trim-assemble] \
              [-s ] \
               -p  \
               -d  \
               genomeSize=[g|m|k] \
               -maxThreads=2 \
               useGrid=false \
              [other-options] \
               read_file.fastq.gz
</code></pre><p>A default&nbsp;<code>Canu</code>&nbsp;run produces usually high quality assembly, example of a command that was used for testing can be found below. However, there are still a lot of parameters that are possible to tweak. For example if we desire to assemble haplotypes separately of if we want to smash them together, we can alternate the error correction process.</p><pre><code>canu -p test_asmbl \
     -d asm_test3 \
     genomeSize=2m \
     -maxThreads=2 useGrid=false \
     -pacbio-raw \ ~/pacbio/dna/sample_reads.fastq.gz</code></pre><p>There is a brilliant&nbsp;<a href="http://canu.readthedocs.io/en/latest/faq.html#what-parameters-can-i-tweak">section in documentation</a>&nbsp;about parameter tweaking.</p><p>The output directory contains will contain many files. The most interesting ones are:</p><ul>
<li><code>*.correctedReads.fasta.gz</code>&nbsp;: file containing the input sequences after correction, trim and split based on consensus evidence.</li>
<li><code>*.trimmedReads.fastq</code>&nbsp;: file containing the sequences after correction and final trimming</li>
<li><code>*.layout</code>&nbsp;: file containing informations about read inclusion in the final assembly</li>
<li><code>*.gfa</code>&nbsp;: file containing the assembly graph by Canu</li>
<li><code>*.contigs.fasta</code>&nbsp;: file containing everything that could be assembled and is part of the primary assembly</li>
</ul><p>The basic stats of assembly can be read from reports generated by the assembler, or calculated using standard UNIX command line tools.</p><p>More at&nbsp;https://canu.readthedocs.io/en/latest/faq.html</p>]]></description>
	<dc:creator>Rahul Nayak</dc:creator>
</item>

</channel>
</rss>