Perhaps you should try preparing a script to do this task for a file with just 1 sequence.
After you prepare the correct output for this 1 sequence, expand the script to do this task in a loop for more sequences.
Hi,
I'm having trouble with this task:
Write a perl script that will generate a new output file (“task1 output.txt”) which contains the sequence name, length, and GC-content for each sequence. There should be a header line which identifies the contents of columns (so the first line in the output file should be “SeqName Length GC-Content” or something similar). The GC-content of a sequence is defined as the percentage of bases that are G or C (from 0% to 100%), and a high GCcontent is associated with coding sequences.
>Seq1 ACGTThen your output file should look like:
SeqName Length GC-Content Seq1 4 50
I can do the in and out for the file handles, but I'm confused as to what to put in my while loop. And how will it know to match in the file?
Like mentioned, GC content is the percentage of bases that are G or C in the sequences. Percentage is calculated quite easily using basic math once you obtain the counts of bases that are G or C in and the total sequence length for each sequence. Your loop with iterate through the file, executing its code block for each sequence it finds.
I cannot - and I hope others do not too - provide code. That would cripple learning.
Perhaps you should try preparing a script to do this task for a file with just 1 sequence.
After you prepare the correct output for this 1 sequence, expand the script to do this task in a loop for more sequences.
open(IN,"/home/ki/Downloads/HW3_Sequences.txt") or die "Cant open file: $!";
open(OUT, ">/home/ki/Downloads/HW3final.txt");
while(<in>){if( =~ m/>/)
print OUT "$_n/"
}
I'm confused by the while loop it only does it for one sequence, it won't do the rest in the file
one hint is that "IN" is not the same thing as "in".
open(IN,"/home/ki/Downloads/HW3_Sequences.txt") or die "Cant open file: $!"; open(OUT, ">/home/ki/Downloads/HW3final.txt"); while(<in>){if( =~ m/>/) print OUT "$_n/" }
im getting a syntax error from this
Please stop pasting the same code over and over again. Chris has answered on what the primary problem with that piece of code is.
I corrected it so that its <in>
sure, its just i need guidance with the while loop ive posted my code below
i should tr to count my sequence length ?
open(IN,"/home/ki/Downloads/HW3_Sequences.txt") or die "Cant open file: $!"; open(OUT, ">/home/ki/Downloads/HW3final.txt"); while(<in>){if($_ =~ m/>/){ print OUT "$_" } {if($_ =~ tr/AGCT/AGCT/){ print OUT "$_" } } }
Log in to answer this question.
You need to show the code so we can see the issues you are having. We can tell you what to do but that probably won't help much.
{{for thewhilebody?troperation?to count the length of each sequence ?
You're using a
troperation to count length? Why?what do you suggest ?
The
length()function sounds appropriate here.thanks alot, all for your help i got it.
i thought the double {{ is necessary for multiple tasks within the loop ?
Who says so? That makes no sense in any programming language.
thank you Ill remove it, Im learning as I go here.