Visualize a string/sequence, emphasizing certain substrings

Multi tool use
Multi tool use

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
3
down vote

favorite












I need to visualize a sequence, with the ability to emphasize certain segments.



For example, take this sequence seq:



seq = -----------------DTLCIGYHANNSTDTVDTVLEKNVTVTHSVNLLEDKHNGKLCK
LRGVAPLHLGKCNIAGWILGNPECESLSTASSWSYIVETPSSDNGTCYPGDFIDYEELREQLSSVSSFER
FEIFPKTSSWPNHDSNKGVTAACPHAGAKSFYKNLIWLVKKGNSYPKLSKSYINDKGKEVLVLWGIHHPS
TSADQQSLYQNADTYVFVGSSRYSKKFKPEIAIRPKVRDQEGRMNYYWTLVEPGDKITFEATGNLVVPRY
AFAMERNAGSGIIISDTPVHDCNTTCQTPKGAINTSLPFQNIHPITIGKCPKYVKSTKLRLATGLRNIPS
G----LFGAIAGFIEGGWTGMVDGWYGYHHQNEQGSGYAADLKSTQNAIDEITNKVNSVIEKMNTQFTAV
GKEFNHLEKRIENLNKKVDDGFLDIWTYNAELLVLLENERTLDYHDSNVKNLYEKVRSQLKNNAKEIGNG
CFEFYHKCDNTCMESVKNGTYDYPKYSEEAKLNREEIDS-------------------------------
--------------------------------------------------------------------


The list of segments I want to emphasize: segments = "AGSGIIISDTPVHDC", "AIDEITNKVNSVIEK", AKSFYKNLIWLVKKG.



I'm thinking that something that looks like this would work for the emphasis, where the black line is the length of the sequence, and the blue boxes are the segments:



enter image description here



To get start and ending positions of each segment, we can use StringPosition[seq, #] & /@ segments.



Now I'm not sure which visualization tool would help me visualize this sequence and emphasize the segment using these start and end positions.










share|improve this question























  • how about StringReplace[seq, s : Alternatives @@ segments :> ToString[Style[s, Red, Bold], StandardForm]]?
    – kglr
    1 hour ago










  • That's definitely good, and I actually already had something similar to that, but I need something that's more pictorial, thanks though! @kglr
    – briennakh
    1 hour ago










  • I just noticed that this non-pictorial expression would not work with overlapping segments, but your answer below does. @kglr
    – briennakh
    51 mins ago















up vote
3
down vote

favorite












I need to visualize a sequence, with the ability to emphasize certain segments.



For example, take this sequence seq:



seq = -----------------DTLCIGYHANNSTDTVDTVLEKNVTVTHSVNLLEDKHNGKLCK
LRGVAPLHLGKCNIAGWILGNPECESLSTASSWSYIVETPSSDNGTCYPGDFIDYEELREQLSSVSSFER
FEIFPKTSSWPNHDSNKGVTAACPHAGAKSFYKNLIWLVKKGNSYPKLSKSYINDKGKEVLVLWGIHHPS
TSADQQSLYQNADTYVFVGSSRYSKKFKPEIAIRPKVRDQEGRMNYYWTLVEPGDKITFEATGNLVVPRY
AFAMERNAGSGIIISDTPVHDCNTTCQTPKGAINTSLPFQNIHPITIGKCPKYVKSTKLRLATGLRNIPS
G----LFGAIAGFIEGGWTGMVDGWYGYHHQNEQGSGYAADLKSTQNAIDEITNKVNSVIEKMNTQFTAV
GKEFNHLEKRIENLNKKVDDGFLDIWTYNAELLVLLENERTLDYHDSNVKNLYEKVRSQLKNNAKEIGNG
CFEFYHKCDNTCMESVKNGTYDYPKYSEEAKLNREEIDS-------------------------------
--------------------------------------------------------------------


The list of segments I want to emphasize: segments = "AGSGIIISDTPVHDC", "AIDEITNKVNSVIEK", AKSFYKNLIWLVKKG.



I'm thinking that something that looks like this would work for the emphasis, where the black line is the length of the sequence, and the blue boxes are the segments:



enter image description here



To get start and ending positions of each segment, we can use StringPosition[seq, #] & /@ segments.



Now I'm not sure which visualization tool would help me visualize this sequence and emphasize the segment using these start and end positions.










share|improve this question























  • how about StringReplace[seq, s : Alternatives @@ segments :> ToString[Style[s, Red, Bold], StandardForm]]?
    – kglr
    1 hour ago










  • That's definitely good, and I actually already had something similar to that, but I need something that's more pictorial, thanks though! @kglr
    – briennakh
    1 hour ago










  • I just noticed that this non-pictorial expression would not work with overlapping segments, but your answer below does. @kglr
    – briennakh
    51 mins ago













up vote
3
down vote

favorite









up vote
3
down vote

favorite











I need to visualize a sequence, with the ability to emphasize certain segments.



For example, take this sequence seq:



seq = -----------------DTLCIGYHANNSTDTVDTVLEKNVTVTHSVNLLEDKHNGKLCK
LRGVAPLHLGKCNIAGWILGNPECESLSTASSWSYIVETPSSDNGTCYPGDFIDYEELREQLSSVSSFER
FEIFPKTSSWPNHDSNKGVTAACPHAGAKSFYKNLIWLVKKGNSYPKLSKSYINDKGKEVLVLWGIHHPS
TSADQQSLYQNADTYVFVGSSRYSKKFKPEIAIRPKVRDQEGRMNYYWTLVEPGDKITFEATGNLVVPRY
AFAMERNAGSGIIISDTPVHDCNTTCQTPKGAINTSLPFQNIHPITIGKCPKYVKSTKLRLATGLRNIPS
G----LFGAIAGFIEGGWTGMVDGWYGYHHQNEQGSGYAADLKSTQNAIDEITNKVNSVIEKMNTQFTAV
GKEFNHLEKRIENLNKKVDDGFLDIWTYNAELLVLLENERTLDYHDSNVKNLYEKVRSQLKNNAKEIGNG
CFEFYHKCDNTCMESVKNGTYDYPKYSEEAKLNREEIDS-------------------------------
--------------------------------------------------------------------


The list of segments I want to emphasize: segments = "AGSGIIISDTPVHDC", "AIDEITNKVNSVIEK", AKSFYKNLIWLVKKG.



I'm thinking that something that looks like this would work for the emphasis, where the black line is the length of the sequence, and the blue boxes are the segments:



enter image description here



To get start and ending positions of each segment, we can use StringPosition[seq, #] & /@ segments.



Now I'm not sure which visualization tool would help me visualize this sequence and emphasize the segment using these start and end positions.










share|improve this question















I need to visualize a sequence, with the ability to emphasize certain segments.



For example, take this sequence seq:



seq = -----------------DTLCIGYHANNSTDTVDTVLEKNVTVTHSVNLLEDKHNGKLCK
LRGVAPLHLGKCNIAGWILGNPECESLSTASSWSYIVETPSSDNGTCYPGDFIDYEELREQLSSVSSFER
FEIFPKTSSWPNHDSNKGVTAACPHAGAKSFYKNLIWLVKKGNSYPKLSKSYINDKGKEVLVLWGIHHPS
TSADQQSLYQNADTYVFVGSSRYSKKFKPEIAIRPKVRDQEGRMNYYWTLVEPGDKITFEATGNLVVPRY
AFAMERNAGSGIIISDTPVHDCNTTCQTPKGAINTSLPFQNIHPITIGKCPKYVKSTKLRLATGLRNIPS
G----LFGAIAGFIEGGWTGMVDGWYGYHHQNEQGSGYAADLKSTQNAIDEITNKVNSVIEKMNTQFTAV
GKEFNHLEKRIENLNKKVDDGFLDIWTYNAELLVLLENERTLDYHDSNVKNLYEKVRSQLKNNAKEIGNG
CFEFYHKCDNTCMESVKNGTYDYPKYSEEAKLNREEIDS-------------------------------
--------------------------------------------------------------------


The list of segments I want to emphasize: segments = "AGSGIIISDTPVHDC", "AIDEITNKVNSVIEK", AKSFYKNLIWLVKKG.



I'm thinking that something that looks like this would work for the emphasis, where the black line is the length of the sequence, and the blue boxes are the segments:



enter image description here



To get start and ending positions of each segment, we can use StringPosition[seq, #] & /@ segments.



Now I'm not sure which visualization tool would help me visualize this sequence and emphasize the segment using these start and end positions.







list-manipulation visualization segmentation






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 1 hour ago









J. M. is somewhat okay.♦

94.6k10293454




94.6k10293454










asked 2 hours ago









briennakh

3669




3669











  • how about StringReplace[seq, s : Alternatives @@ segments :> ToString[Style[s, Red, Bold], StandardForm]]?
    – kglr
    1 hour ago










  • That's definitely good, and I actually already had something similar to that, but I need something that's more pictorial, thanks though! @kglr
    – briennakh
    1 hour ago










  • I just noticed that this non-pictorial expression would not work with overlapping segments, but your answer below does. @kglr
    – briennakh
    51 mins ago

















  • how about StringReplace[seq, s : Alternatives @@ segments :> ToString[Style[s, Red, Bold], StandardForm]]?
    – kglr
    1 hour ago










  • That's definitely good, and I actually already had something similar to that, but I need something that's more pictorial, thanks though! @kglr
    – briennakh
    1 hour ago










  • I just noticed that this non-pictorial expression would not work with overlapping segments, but your answer below does. @kglr
    – briennakh
    51 mins ago
















how about StringReplace[seq, s : Alternatives @@ segments :> ToString[Style[s, Red, Bold], StandardForm]]?
– kglr
1 hour ago




how about StringReplace[seq, s : Alternatives @@ segments :> ToString[Style[s, Red, Bold], StandardForm]]?
– kglr
1 hour ago












That's definitely good, and I actually already had something similar to that, but I need something that's more pictorial, thanks though! @kglr
– briennakh
1 hour ago




That's definitely good, and I actually already had something similar to that, but I need something that's more pictorial, thanks though! @kglr
– briennakh
1 hour ago












I just noticed that this non-pictorial expression would not work with overlapping segments, but your answer below does. @kglr
– briennakh
51 mins ago





I just noticed that this non-pictorial expression would not work with overlapping segments, but your answer below does. @kglr
– briennakh
51 mins ago











2 Answers
2






active

oldest

votes

















up vote
2
down vote



accepted










Graphics[Gray, EdgeForm[Gray], FaceForm[LightBlue], 
SequenceReplace[Flatten[Join[1, #[[1]] - 1,
Rectangle[#[[1]], -5, #[[2]], 5], #[[2]] + 1 & /@
StringPosition[seq, s : Alternatives @@ segments], StringLength @ seq]],
a_Integer, b_Integer :> Line[a, 0, b, 0]], ImageSize -> 80]


enter image description here



Alternatively, use NumberLinePlot:



NumberLinePlot[Interval/@StringPosition[seq, Alternatives @@ segments], 
Spacings -> 0, Ticks -> None, ImageSize -> 600,
PlotStyle -> Directive[Opacity[1], PointSize[0], CapForm["Butt"], Thickness[.02]],
PlotRange->0, StringLength @ seq, Automatic]


enter image description here






share|improve this answer






















  • Just had to adjust image size. This answer is amazing because it works for the rest of my segments, as well, which overlap... And it works.
    – briennakh
    1 hour ago


















up vote
1
down vote













seq must be a string



Graphics[Blue, Line[0, 15, StringLength@seq, 15], 
Rectangle[#, 0, #2, 30] & @@@ StringPosition[seq, segments]]


enter image description here






share|improve this answer




















    Your Answer




    StackExchange.ifUsing("editor", function ()
    return StackExchange.using("mathjaxEditing", function ()
    StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
    StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
    );
    );
    , "mathjax-editing");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "387"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: false,
    noModals: false,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













     

    draft saved


    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f183798%2fvisualize-a-string-sequence-emphasizing-certain-substrings%23new-answer', 'question_page');

    );

    Post as a guest






























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    2
    down vote



    accepted










    Graphics[Gray, EdgeForm[Gray], FaceForm[LightBlue], 
    SequenceReplace[Flatten[Join[1, #[[1]] - 1,
    Rectangle[#[[1]], -5, #[[2]], 5], #[[2]] + 1 & /@
    StringPosition[seq, s : Alternatives @@ segments], StringLength @ seq]],
    a_Integer, b_Integer :> Line[a, 0, b, 0]], ImageSize -> 80]


    enter image description here



    Alternatively, use NumberLinePlot:



    NumberLinePlot[Interval/@StringPosition[seq, Alternatives @@ segments], 
    Spacings -> 0, Ticks -> None, ImageSize -> 600,
    PlotStyle -> Directive[Opacity[1], PointSize[0], CapForm["Butt"], Thickness[.02]],
    PlotRange->0, StringLength @ seq, Automatic]


    enter image description here






    share|improve this answer






















    • Just had to adjust image size. This answer is amazing because it works for the rest of my segments, as well, which overlap... And it works.
      – briennakh
      1 hour ago















    up vote
    2
    down vote



    accepted










    Graphics[Gray, EdgeForm[Gray], FaceForm[LightBlue], 
    SequenceReplace[Flatten[Join[1, #[[1]] - 1,
    Rectangle[#[[1]], -5, #[[2]], 5], #[[2]] + 1 & /@
    StringPosition[seq, s : Alternatives @@ segments], StringLength @ seq]],
    a_Integer, b_Integer :> Line[a, 0, b, 0]], ImageSize -> 80]


    enter image description here



    Alternatively, use NumberLinePlot:



    NumberLinePlot[Interval/@StringPosition[seq, Alternatives @@ segments], 
    Spacings -> 0, Ticks -> None, ImageSize -> 600,
    PlotStyle -> Directive[Opacity[1], PointSize[0], CapForm["Butt"], Thickness[.02]],
    PlotRange->0, StringLength @ seq, Automatic]


    enter image description here






    share|improve this answer






















    • Just had to adjust image size. This answer is amazing because it works for the rest of my segments, as well, which overlap... And it works.
      – briennakh
      1 hour ago













    up vote
    2
    down vote



    accepted







    up vote
    2
    down vote



    accepted






    Graphics[Gray, EdgeForm[Gray], FaceForm[LightBlue], 
    SequenceReplace[Flatten[Join[1, #[[1]] - 1,
    Rectangle[#[[1]], -5, #[[2]], 5], #[[2]] + 1 & /@
    StringPosition[seq, s : Alternatives @@ segments], StringLength @ seq]],
    a_Integer, b_Integer :> Line[a, 0, b, 0]], ImageSize -> 80]


    enter image description here



    Alternatively, use NumberLinePlot:



    NumberLinePlot[Interval/@StringPosition[seq, Alternatives @@ segments], 
    Spacings -> 0, Ticks -> None, ImageSize -> 600,
    PlotStyle -> Directive[Opacity[1], PointSize[0], CapForm["Butt"], Thickness[.02]],
    PlotRange->0, StringLength @ seq, Automatic]


    enter image description here






    share|improve this answer














    Graphics[Gray, EdgeForm[Gray], FaceForm[LightBlue], 
    SequenceReplace[Flatten[Join[1, #[[1]] - 1,
    Rectangle[#[[1]], -5, #[[2]], 5], #[[2]] + 1 & /@
    StringPosition[seq, s : Alternatives @@ segments], StringLength @ seq]],
    a_Integer, b_Integer :> Line[a, 0, b, 0]], ImageSize -> 80]


    enter image description here



    Alternatively, use NumberLinePlot:



    NumberLinePlot[Interval/@StringPosition[seq, Alternatives @@ segments], 
    Spacings -> 0, Ticks -> None, ImageSize -> 600,
    PlotStyle -> Directive[Opacity[1], PointSize[0], CapForm["Butt"], Thickness[.02]],
    PlotRange->0, StringLength @ seq, Automatic]


    enter image description here







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 19 mins ago

























    answered 1 hour ago









    kglr

    165k8188388




    165k8188388











    • Just had to adjust image size. This answer is amazing because it works for the rest of my segments, as well, which overlap... And it works.
      – briennakh
      1 hour ago

















    • Just had to adjust image size. This answer is amazing because it works for the rest of my segments, as well, which overlap... And it works.
      – briennakh
      1 hour ago
















    Just had to adjust image size. This answer is amazing because it works for the rest of my segments, as well, which overlap... And it works.
    – briennakh
    1 hour ago





    Just had to adjust image size. This answer is amazing because it works for the rest of my segments, as well, which overlap... And it works.
    – briennakh
    1 hour ago











    up vote
    1
    down vote













    seq must be a string



    Graphics[Blue, Line[0, 15, StringLength@seq, 15], 
    Rectangle[#, 0, #2, 30] & @@@ StringPosition[seq, segments]]


    enter image description here






    share|improve this answer
























      up vote
      1
      down vote













      seq must be a string



      Graphics[Blue, Line[0, 15, StringLength@seq, 15], 
      Rectangle[#, 0, #2, 30] & @@@ StringPosition[seq, segments]]


      enter image description here






      share|improve this answer






















        up vote
        1
        down vote










        up vote
        1
        down vote









        seq must be a string



        Graphics[Blue, Line[0, 15, StringLength@seq, 15], 
        Rectangle[#, 0, #2, 30] & @@@ StringPosition[seq, segments]]


        enter image description here






        share|improve this answer












        seq must be a string



        Graphics[Blue, Line[0, 15, StringLength@seq, 15], 
        Rectangle[#, 0, #2, 30] & @@@ StringPosition[seq, segments]]


        enter image description here







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 1 hour ago









        J42161217

        1,706216




        1,706216



























             

            draft saved


            draft discarded















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f183798%2fvisualize-a-string-sequence-emphasizing-certain-substrings%23new-answer', 'question_page');

            );

            Post as a guest













































































            LJrPUdtm8LNQk G,tVDvur99G 3Q
            ZuzJlHTHs00s1QZlibAm0EUM zctF9eUwl1diKoA0A60NechCkhxgPKpCj3V3rUGTdn7 R2kzEy5,7XP,8I6f QH3 EpnWU

            Popular posts from this blog

            How to check contact read email or not when send email to Individual?

            How many registers does an x86_64 CPU actually have?

            Displaying single band from multi-band raster using QGIS