Grabing line from file

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • pallabtrue
    New Member
    • Jun 2010
    • 11

    #1

    Grabing line from file

    Hi my original file looks like this-
    >P1;208,D-
    208,D-5 - (MOUSE) mouse
    DVLMTQTPPSLPVSL GDQASISCRSSQTIV HSDGNTYLEW
    YLQKPGQSPKLLIYK VSNRFSGVPDRFSGS GSGTDFTLKI
    SRVEAEDLGLYYCFQ GSHVPPTFGGGTKLE IKR*
    VQLLEESGGGLVKPG GSLKLSCAASGFTFS DYYMFWVRQT
    PEKRLEWFATISDGG SHTYYPDSVKGRFTI SRDNAKNNLY
    LQMSCLRSEDTAMYY CTRDSLDFYGMDYWG QGTSVTVSS*
    >P1;MN14C1
    MN14C11.6 - (MOUSE) mouse
    DILMTQTPLSLPVSL GDQASISCRSSQSLV HSNGNTYLHW
    YLQKPGQSPKLLIYT VSNRFSGVPDRFSGS GSGTDFTLKI
    SRVEAEDLGLYFCSQ STHLPPTFGGGTKLD IKR*
    DVHLLVSGGGLVKPG GSLKLSCAASGFTFS DYYMFWVRQT
    PEKRLEWVATISDGG AHTYYPDSVKGRFTI SRDNAKNNLY
    LHMNSLKSEDTAMYY CARDPLEYYGMDYWG QGTAVTV*
    >P1;scFv40
    scFv40 - (MOUSE) mouse
    DVQIIQTTASLSASV GETVTITCRASEHIY SYLAWYQQKQ
    GKSPQLLVYSAKTLA EGVPSRFSGSGSGTQ FSLKINSLQP
    EDFGSYYCQHHYDTP RTFGGGTKLEIRRA*
    VDQVQQPGAELVRSG ASVKMSCKASGYTFT SYNMHWVKQT
    PGQGLEWIGYIYPGN GGTIYNQKFKGKATL TADTSSSTAN
    MQISSLTSEDSAVYF CARGDYRNDPFDFWG QGTTLTVSS*

    After that I created new file by perl and its looks like this -
    >P1|208,D
    DVLMTQTPPSLPVSL GDQASISCRSSQTIV HSDGNTYLEW
    YLQKPGQSPKLLIYK VSNRFSGVPDRFSGS GSGTDFTLKI
    SRVEAEDLGLYYCFQ GSHVPPTFGGGTKLE IKR*
    VQLLEESGGGLVKPG GSLKLSCAASGFTFS DYYMFWVRQT
    PEKRLEWFATISDGG SHTYYPDSVKGRFTI SRDNAKNNLY
    LQMSCLRSEDTAMYY CTRDSLDFYGMDYWG QGTSVTVSS*
    >P1|MN14C1
    DILMTQTPLSLPVSL GDQASISCRSSQSLV HSNGNTYLHW
    YLQKPGQSPKLLIYT VSNRFSGVPDRFSGS GSGTDFTLKI
    SRVEAEDLGLYFCSQ STHLPPTFGGGTKLD IKR*
    DVHLLVSGGGLVKPG GSLKLSCAASGFTFS DYYMFWVRQT
    PEKRLEWVATISDGG AHTYYPDSVKGRFTI SRDNAKNNLY
    LHMNSLKSEDTAMYY CARDPLEYYGMDYWG QGTAVTV*
    >P1|scFv40
    DVQIIQTTASLSASV GETVTITCRASEHIY SYLAWYQQKQ
    GKSPQLLVYSAKTLA EGVPSRFSGSGSGTQ FSLKINSLQP
    EDFGSYYCQHHYDTP RTFGGGTKLEIRRA*
    VDQVQQPGAELVRSG ASVKMSCKASGYTFT SYNMHWVKQT
    PGQGLEWIGYIYPGN GGTIYNQKFKGKATL TADTSSSTAN
    MQISSLTSEDSAVYF CARGDYRNDPFDFWG QGTTLTVSS*


    So want to grab lines in two ways

    one is
    >P1|208,D
    DVLMTQTPPSLPVSL GDQASISCRSSQTIV HSDGNTYLEW
    YLQKPGQSPKLLIYK VSNRFSGVPDRFSGS GSGTDFTLKI
    SRVEAEDLGLYYCFQ GSHVPPTFGGGTKLE IKR*


    2nd way is
    >P1|208,D
    *
    VQLLEESGGGLVKPG GSLKLSCAASGFTFS DYYMFWVRQT
    PEKRLEWFATISDGG SHTYYPDSVKGRFTI SRDNAKNNLY
    LQMSCLRSEDTAMYY CTRDSLDFYGMDYWG QGTSVTVSS*

    I was thinking about regular expression but its not working. Anyone can plz help me....

    Thanks
    Pallab
  • toolic
    Recognized Expert New Member
    • Sep 2009
    • 70

    #2
    Code:
    use warnings;
    use strict;
    
    my $start;
    my $flag = 0;
    while (<DATA>) {
        print;
        if (/^>/) {
            $start = $_;
            $flag = 1;
        }
        elsif (/\*/) {
            print "$start*\n" if $flag;
            $flag = 0;
        }
    }
    
    __DATA__
    >P1|208,D
    DVLMTQTPPSLPVSLGDQASISCRSSQTIVHSDGNTYLEW
    YLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKI
    SRVEAEDLGLYYCFQGSHVPPTFGGGTKLEIKR*
    VQLLEESGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
    PEKRLEWFATISDGGSHTYYPDSVKGRFTISRDNAKNNLY
    LQMSCLRSEDTAMYYCTRDSLDFYGMDYWGQGTSVTVSS*
    >P1|MN14C1
    DILMTQTPLSLPVSLGDQASISCRSSQSLVHSNGNTYLHW
    YLQKPGQSPKLLIYTVSNRFSGVPDRFSGSGSGTDFTLKI
    SRVEAEDLGLYFCSQSTHLPPTFGGGTKLDIKR*
    DVHLLVSGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
    PEKRLEWVATISDGGAHTYYPDSVKGRFTISRDNAKNNLY
    LHMNSLKSEDTAMYYCARDPLEYYGMDYWGQGTAVTV*
    >P1|scFv40
    DVQIIQTTASLSASVGETVTITCRASEHIYSYLAWYQQKQ
    GKSPQLLVYSAKTLAEGVPSRFSGSGSGTQFSLKINSLQP
    EDFGSYYCQHHYDTPRTFGGGTKLEIRRA*
    VDQVQQPGAELVRSGASVKMSCKASGYTFTSYNMHWVKQT
    PGQGLEWIGYIYPGNGGTIYNQKFKGKATLTADTSSSTAN
    MQISSLTSEDSAVYFCARGDYRNDPFDFWGQGTTLTVSS*
    Prints out:

    Code:
    >P1|208,D
    DVLMTQTPPSLPVSLGDQASISCRSSQTIVHSDGNTYLEW
    YLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKI
    SRVEAEDLGLYYCFQGSHVPPTFGGGTKLEIKR*
    >P1|208,D
    *
    VQLLEESGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
    PEKRLEWFATISDGGSHTYYPDSVKGRFTISRDNAKNNLY
    LQMSCLRSEDTAMYYCTRDSLDFYGMDYWGQGTSVTVSS*
    >P1|MN14C1
    DILMTQTPLSLPVSLGDQASISCRSSQSLVHSNGNTYLHW
    YLQKPGQSPKLLIYTVSNRFSGVPDRFSGSGSGTDFTLKI
    SRVEAEDLGLYFCSQSTHLPPTFGGGTKLDIKR*
    >P1|MN14C1
    *
    DVHLLVSGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
    PEKRLEWVATISDGGAHTYYPDSVKGRFTISRDNAKNNLY
    LHMNSLKSEDTAMYYCARDPLEYYGMDYWGQGTAVTV*
    >P1|scFv40
    DVQIIQTTASLSASVGETVTITCRASEHIYSYLAWYQQKQ
    GKSPQLLVYSAKTLAEGVPSRFSGSGSGTQFSLKINSLQP
    EDFGSYYCQHHYDTPRTFGGGTKLEIRRA*
    >P1|scFv40
    *
    VDQVQQPGAELVRSGASVKMSCKASGYTFTSYNMHWVKQT
    PGQGLEWIGYIYPGNGGTIYNQKFKGKATLTADTSSSTAN
    MQISSLTSEDSAVYFCARGDYRNDPFDFWGQGTTLTVSS*

    Comment

    • pallabtrue
      New Member
      • Jun 2010
      • 11

      #3
      Originally posted by toolic
      Code:
      use warnings;
      use strict;
      
      my $start;
      my $flag = 0;
      while (<DATA>) {
          print;
          if (/^>/) {
              $start = $_;
              $flag = 1;
          }
          elsif (/\*/) {
              print "$start*\n" if $flag;
              $flag = 0;
          }
      }
      
      __DATA__
      >P1|208,D
      DVLMTQTPPSLPVSLGDQASISCRSSQTIVHSDGNTYLEW
      YLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKI
      SRVEAEDLGLYYCFQGSHVPPTFGGGTKLEIKR*
      VQLLEESGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
      PEKRLEWFATISDGGSHTYYPDSVKGRFTISRDNAKNNLY
      LQMSCLRSEDTAMYYCTRDSLDFYGMDYWGQGTSVTVSS*
      >P1|MN14C1
      DILMTQTPLSLPVSLGDQASISCRSSQSLVHSNGNTYLHW
      YLQKPGQSPKLLIYTVSNRFSGVPDRFSGSGSGTDFTLKI
      SRVEAEDLGLYFCSQSTHLPPTFGGGTKLDIKR*
      DVHLLVSGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
      PEKRLEWVATISDGGAHTYYPDSVKGRFTISRDNAKNNLY
      LHMNSLKSEDTAMYYCARDPLEYYGMDYWGQGTAVTV*
      >P1|scFv40
      DVQIIQTTASLSASVGETVTITCRASEHIYSYLAWYQQKQ
      GKSPQLLVYSAKTLAEGVPSRFSGSGSGTQFSLKINSLQP
      EDFGSYYCQHHYDTPRTFGGGTKLEIRRA*
      VDQVQQPGAELVRSGASVKMSCKASGYTFTSYNMHWVKQT
      PGQGLEWIGYIYPGNGGTIYNQKFKGKATLTADTSSSTAN
      MQISSLTSEDSAVYFCARGDYRNDPFDFWGQGTTLTVSS*
      Prints out:

      Code:
      >P1|208,D
      DVLMTQTPPSLPVSLGDQASISCRSSQTIVHSDGNTYLEW
      YLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKI
      SRVEAEDLGLYYCFQGSHVPPTFGGGTKLEIKR*
      >P1|208,D
      *
      VQLLEESGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
      PEKRLEWFATISDGGSHTYYPDSVKGRFTISRDNAKNNLY
      LQMSCLRSEDTAMYYCTRDSLDFYGMDYWGQGTSVTVSS*
      >P1|MN14C1
      DILMTQTPLSLPVSLGDQASISCRSSQSLVHSNGNTYLHW
      YLQKPGQSPKLLIYTVSNRFSGVPDRFSGSGSGTDFTLKI
      SRVEAEDLGLYFCSQSTHLPPTFGGGTKLDIKR*
      >P1|MN14C1
      *
      DVHLLVSGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
      PEKRLEWVATISDGGAHTYYPDSVKGRFTISRDNAKNNLY
      LHMNSLKSEDTAMYYCARDPLEYYGMDYWGQGTAVTV*
      >P1|scFv40
      DVQIIQTTASLSASVGETVTITCRASEHIYSYLAWYQQKQ
      GKSPQLLVYSAKTLAEGVPSRFSGSGSGTQFSLKINSLQP
      EDFGSYYCQHHYDTPRTFGGGTKLEIRRA*
      >P1|scFv40
      *
      VDQVQQPGAELVRSGASVKMSCKASGYTFTSYNMHWVKQT
      PGQGLEWIGYIYPGNGGTIYNQKFKGKATLTADTSSSTAN
      MQISSLTSEDSAVYFCARGDYRNDPFDFWGQGTTLTVSS*
      Thanks for your answer

      Comment

      • pallabtrue
        New Member
        • Jun 2010
        • 11

        #4
        Originally posted by toolic
        Code:
        use warnings;
        use strict;
        
        my $start;
        my $flag = 0;
        while (<DATA>) {
            print;
            if (/^>/) {
                $start = $_;
                $flag = 1;
            }
            elsif (/\*/) {
                print "$start*\n" if $flag;
                $flag = 0;
            }
        }
        
        __DATA__
        >P1|208,D
        DVLMTQTPPSLPVSLGDQASISCRSSQTIVHSDGNTYLEW
        YLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKI
        SRVEAEDLGLYYCFQGSHVPPTFGGGTKLEIKR*
        VQLLEESGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
        PEKRLEWFATISDGGSHTYYPDSVKGRFTISRDNAKNNLY
        LQMSCLRSEDTAMYYCTRDSLDFYGMDYWGQGTSVTVSS*
        >P1|MN14C1
        DILMTQTPLSLPVSLGDQASISCRSSQSLVHSNGNTYLHW
        YLQKPGQSPKLLIYTVSNRFSGVPDRFSGSGSGTDFTLKI
        SRVEAEDLGLYFCSQSTHLPPTFGGGTKLDIKR*
        DVHLLVSGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
        PEKRLEWVATISDGGAHTYYPDSVKGRFTISRDNAKNNLY
        LHMNSLKSEDTAMYYCARDPLEYYGMDYWGQGTAVTV*
        >P1|scFv40
        DVQIIQTTASLSASVGETVTITCRASEHIYSYLAWYQQKQ
        GKSPQLLVYSAKTLAEGVPSRFSGSGSGTQFSLKINSLQP
        EDFGSYYCQHHYDTPRTFGGGTKLEIRRA*
        VDQVQQPGAELVRSGASVKMSCKASGYTFTSYNMHWVKQT
        PGQGLEWIGYIYPGNGGTIYNQKFKGKATLTADTSSSTAN
        MQISSLTSEDSAVYFCARGDYRNDPFDFWGQGTTLTVSS*
        Prints out:

        Code:
        >P1|208,D
        DVLMTQTPPSLPVSLGDQASISCRSSQTIVHSDGNTYLEW
        YLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKI
        SRVEAEDLGLYYCFQGSHVPPTFGGGTKLEIKR*
        >P1|208,D
        *
        VQLLEESGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
        PEKRLEWFATISDGGSHTYYPDSVKGRFTISRDNAKNNLY
        LQMSCLRSEDTAMYYCTRDSLDFYGMDYWGQGTSVTVSS*
        >P1|MN14C1
        DILMTQTPLSLPVSLGDQASISCRSSQSLVHSNGNTYLHW
        YLQKPGQSPKLLIYTVSNRFSGVPDRFSGSGSGTDFTLKI
        SRVEAEDLGLYFCSQSTHLPPTFGGGTKLDIKR*
        >P1|MN14C1
        *
        DVHLLVSGGGLVKPGGSLKLSCAASGFTFSDYYMFWVRQT
        PEKRLEWVATISDGGAHTYYPDSVKGRFTISRDNAKNNLY
        LHMNSLKSEDTAMYYCARDPLEYYGMDYWGQGTAVTV*
        >P1|scFv40
        DVQIIQTTASLSASVGETVTITCRASEHIYSYLAWYQQKQ
        GKSPQLLVYSAKTLAEGVPSRFSGSGSGTQFSLKINSLQP
        EDFGSYYCQHHYDTPRTFGGGTKLEIRRA*
        >P1|scFv40
        *
        VDQVQQPGAELVRSGASVKMSCKASGYTFTSYNMHWVKQT
        PGQGLEWIGYIYPGNGGTIYNQKFKGKATLTADTSSSTAN
        MQISSLTSEDSAVYFCARGDYRNDPFDFWGQGTTLTVSS*
        hi
        can u plz explain me about function of variable $flag.
        and other thing is that if I try to print only

        >P1|208,D
        DVLMTQTPPSLPVSL GDQASISCRSSQTIV HSDGNTYLEW
        YLQKPGQSPKLLIYK VSNRFSGVPDRFSGS GSGTDFTLKI
        SRVEAEDLGLYYCFQ GSHVPPTFGGGTKLE IKR*

        >P1|MN14C1
        DILMTQTPLSLPVSL GDQASISCRSSQSLV HSNGNTYLHW
        YLQKPGQSPKLLIYT VSNRFSGVPDRFSGS GSGTDFTLKI
        SRVEAEDLGLYFCSQ STHLPPTFGGGTKLD IKR*

        >P1|scFv40
        DVQIIQTTASLSASV GETVTITCRASEHIY SYLAWYQQKQ
        GKSPQLLVYSAKTLA EGVPSRFSGSGSGTQ FSLKINSLQP
        EDFGSYYCQHHYDTP RTFGGGTKLEIRRA*


        Or only I if I try to printout this format

        >P1|208,D
        *
        VQLLEESGGGLVKPG GSLKLSCAASGFTFS DYYMFWVRQT
        PEKRLEWFATISDGG SHTYYPDSVKGRFTI SRDNAKNNLY
        LQMSCLRSEDTAMYY CTRDSLDFYGMDYWG QGTSVTVSS*

        >P1|MN14C1
        *
        DVHLLVSGGGLVKPG GSLKLSCAASGFTFS DYYMFWVRQT
        PEKRLEWVATISDGG AHTYYPDSVKGRFTI SRDNAKNNLY
        LHMNSLKSEDTAMYY CARDPLEYYGMDYWG QGTAVTV*

        >P1|scFv40
        *
        VDQVQQPGAELVRSG ASVKMSCKASGYTFT SYNMHWVKQT
        PGQGLEWIGYIYPGN GGTIYNQKFKGKATL TADTSSSTAN
        MQISSLTSEDSAVYF CARGDYRNDPFDFWG QGTTLTVSS*

        so for this one what I have to change in previous programme

        Thanks
        Pallab

        Comment

        • toolic
          Recognized Expert New Member
          • Sep 2009
          • 70

          #5
          $flag is used as a state variable.
          It is set when a line begins with ">".
          It is cleared when a line ends with "*".
          I admit that it is not the best name for a variable,
          but you can change it to be more meaningful for you.

          I don't understand the rest of yuor question.

          Comment

          • pallabtrue
            New Member
            • Jun 2010
            • 11

            #6
            Originally posted by toolic
            $flag is used as a state variable.
            It is set when a line begins with ">".
            It is cleared when a line ends with "*".
            I admit that it is not the best name for a variable,
            but you can change it to be more meaningful for you.

            I don't understand the rest of yuor question.
            Thanks for your feedback....... ..Actually in every Sequence there are two parts which is divided by *...* so that means
            >P1|BD-8
            FHFHFJHFJFDJJHF JF
            HFJHFJKFJKFJKFJ KF
            *
            GFHFHJFJFJFJKFJ KF
            HJFHJFJFJKFJKFJ KF
            *

            So bold is part1 of that sequence and thats lies between > and first *

            and 2nd part lies between first * and second *

            so my job is to grab part1 of all sequence and print them
            and second job is that grab par2 of all sequence and print them with header line.

            Thanks
            Pallab

            Comment

            Working...