Пример #1
0
        public HomePage(string ProteinName = "", string AminoSeq = "")
        {
            aminoClass = new AminoAcids();
            InitializeComponent();
            //creating tool bar item
            var toolbar = new ToolbarItem();

            toolbar.AutomationId = "RunAnalysisItem";
            toolbar.Text         = "Evaluate Structure";
            toolbar.Priority     = 1;
            toolbar.Clicked     += new EventHandler(RunAnalysisItem_Click);
            toolbar.Order        = ToolbarItemOrder.Primary;
            // creating a second toolbar item
            var toolbar2 = new ToolbarItem();

            toolbar2.AutomationId = "PreviousEntriesItem";
            toolbar2.Text         = "Previous Entries";
            toolbar2.Priority     = 1;
            // navigate to new page when clicked
            toolbar2.Clicked += delegate
            {
                Navigation.PushAsync(new PreviousEntries());
            };
            toolbar2.Order = ToolbarItemOrder.Primary;
            // add tool bar items
            this.ToolbarItems.Add(toolbar);
            this.ToolbarItems.Add(toolbar2);
            // if the contructor isn't empty, create a helical wheel
            if (!string.IsNullOrEmpty(AminoSeq))
            {
                ProteinEntry.Text    = ProteinName;
                AminoAcidEditor.Text = AminoSeq;
                DrawHelicalWheel();
            }
        }
Пример #2
0
        public void HelicalWheelBuilderThreeLetter(string aminoAcids, SKCanvas canvas)
        {
            var    aminoClass = new AminoAcids();
            var    listAminos = aminoAcids.Split(',').ToList();
            float  xval = 0; float yval = 0;
            float  xModifier = 0; float yModifier = 0;
            float  modIncrementer = 0;
            float  scaleModifier  = 19;
            int    angle          = 270;
            bool   polarity       = false;
            string lastAmino      = "";
            int    incr           = 1;
            var    percentDiff    = (App.ScreenHeight / ScaleFactor);

            foreach (var item in listAminos)
            {
                if (!string.IsNullOrWhiteSpace(item))
                {
                    if (!string.IsNullOrWhiteSpace(lastAmino))
                    {
                        if (incr < 18)
                        {
                            canvas.DrawLine(xval, yval, (float)((RADIUS * percentDiff) * Math.Cos(angle * Math.PI / 180F)), (float)((RADIUS * percentDiff) * Math.Sin(angle * Math.PI / 180F)), Line);
                        }
                        if (polarity)
                        {
                            canvas.DrawText(lastAmino.Substring(0, 1).ToString().ToUpper() + lastAmino.Substring(1, 2) + incr, xval - 7, yval + 4, PolarLetters);
                        }
                        else
                        {
                            canvas.DrawText(lastAmino.Substring(0, 1).ToString().ToUpper() + lastAmino.Substring(1, 2) + incr, xval - 7, yval + 4, NonPolarLetters);
                        }
                        incr += 1;
                    }
                    xval = (float)((RADIUS * percentDiff) * Math.Cos(angle * Math.PI / 180F));
                    yval = (float)((RADIUS * percentDiff) * Math.Sin(angle * Math.PI / 180F));
                    HelicalStructure.Add(new KeyValuePair <string, Point>(item.Substring(0, 1).ToString().ToUpper() + item.Substring(1, 2) + incr, new Point(xval, yval)));
                    if (incr % scaleModifier == 0)
                    {
                        modIncrementer += 1;
                        scaleModifier   = scaleModifier + 18;
                    }
                    xModifier = xval > 0 ? 13f * modIncrementer : -13f * modIncrementer;
                    yModifier = yval > 0 ? 13f * modIncrementer : -13f * modIncrementer;
                    if (Math.Abs(xval) < 5 && modIncrementer > 0)
                    {
                        yModifier = yModifier > 0 ? (yModifier - .5f) + (6 * modIncrementer) : (yModifier + .5f) - (6 * modIncrementer);
                        xModifier = 0;
                    }
                    xval += xModifier;
                    yval += yModifier;
                    if (aminoClass.IsAminoAcid(item))
                    {
                        if (polarity = aminoClass.IsPolar(item))
                        {
                            canvas.DrawCircle(xval, yval, (AMINORADIUS * percentDiff), PolarAminoAcid);
                        }
                        else
                        {
                            canvas.DrawCircle(xval, yval, (AMINORADIUS * percentDiff), NonPolarAminoAcid);
                        }
                    }
                    else
                    {
                        canvas.DrawCircle(xval, yval, (AMINORADIUS * percentDiff), InvalidAminoAcid);
                    }
                    angle += 100;
                    if (angle > 360)
                    {
                        angle -= 360;
                    }
                    lastAmino = item;
                }
            }
            if (!string.IsNullOrWhiteSpace(lastAmino))
            {
                if (polarity)
                {
                    canvas.DrawText(lastAmino.Substring(0, 1).ToString().ToUpper() + lastAmino.Substring(1, 2) + incr, xval - 7, yval + 4, PolarLetters);
                }
                else
                {
                    canvas.DrawText(lastAmino.Substring(0, 1).ToString().ToUpper() + lastAmino.Substring(1, 2) + incr, xval - 7, yval + 4, NonPolarLetters);
                }
            }
        }
Пример #3
0
        public void HelicalWheelBuilderLetter(string aminoAcids, SKCanvas canvas)
        {
            // init. my variables
            var   aminoClass = new AminoAcids();
            var   listAminos = aminoAcids.ToCharArray().ToList();
            float x = 0; float y = 0;
            int   angle          = 270;
            char  lastChar       = '0';
            bool  polarity       = false;
            float xModifier      = 0;
            float yModifier      = 0;
            float modIncrementer = 0;
            float scaleModifier  = 19;
            int   incr           = 1;
            var   percentDiff    = (App.ScreenHeight / ScaleFactor);

            // iterate over the amino acids
            foreach (var item in listAminos)
            {
                // if its a valid character
                if (char.IsLetter(item))
                {
                    // acheck to make sure to add the
                    if (lastChar != '0')
                    {
                        //draw line
                        if (incr < 18)
                        {
                            canvas.DrawLine(x, y, (float)((RADIUS * percentDiff) * Math.Cos(angle * Math.PI / 180F)), (float)((RADIUS * percentDiff) * Math.Sin(angle * Math.PI / 180F)), Line);
                        }
                        // check if polar or not then draw the circle accordingly
                        if (polarity)
                        {
                            canvas.DrawText(lastChar.ToString().ToUpper() + incr, x - 6, y + 4, PolarLetters);
                        }
                        else
                        {
                            canvas.DrawText(lastChar.ToString().ToUpper() + incr, x - 6, y + 4, NonPolarLetters);
                        }
                        incr += 1;
                    }
                    // determine the x & y coordinates using this formula
                    x = (float)((RADIUS * percentDiff) * Math.Cos(angle * Math.PI / 180F));
                    y = (float)((RADIUS * percentDiff) * Math.Sin(angle * Math.PI / 180F));
                    // add x & y coordinates to my global variable
                    HelicalStructure.Add(new KeyValuePair <string, Point>(item.ToString().ToUpper() + incr, new Point(x, y)));
                    if (incr % scaleModifier == 0)
                    {
                        modIncrementer += 1;
                        scaleModifier   = scaleModifier + 18;
                    }
                    xModifier = x > 0? 13f * modIncrementer : -13f * modIncrementer;
                    yModifier = y > 0? 13f * modIncrementer : -13f * modIncrementer;
                    if (Math.Abs(x) < 5 && modIncrementer > 0)
                    {
                        yModifier = yModifier > 0 ? (yModifier - .5f) + (6 * modIncrementer) : (yModifier + .5f) - (6 * modIncrementer);
                        xModifier = 0;
                    }
                    x += xModifier;
                    y += yModifier;
                    if (aminoClass.IsAminoAcid(null, item))
                    {
                        if (polarity = aminoClass.IsPolar(null, item))
                        {
                            canvas.DrawCircle(x, y, (AMINORADIUS * percentDiff), PolarAminoAcid);
                        }
                        else
                        {
                            canvas.DrawCircle(x, y, (AMINORADIUS * percentDiff), NonPolarAminoAcid);
                        }
                    }
                    else
                    {
                        canvas.DrawCircle(x, y, (AMINORADIUS * percentDiff), InvalidAminoAcid);
                    }
                    angle += 100;
                    if (angle > 360)
                    {
                        angle -= 360;
                    }
                    lastChar = item;
                }
            }
            if (char.IsLetter(lastChar))
            {
                if (polarity)
                {
                    canvas.DrawText(lastChar.ToString().ToUpper() + incr, x - 6, y + 4, PolarLetters);
                }
                else
                {
                    canvas.DrawText(lastChar.ToString().ToUpper() + incr, x - 6, y + 4, NonPolarLetters);
                }
            }
        }