예제 #1
0
 public UserControl7(UIParameters up)
 {
     InitializeComponent();
     Up = up;
     Name = "UserControl7";
     
 }
예제 #2
0
{ 1f, 0.9f, 0.1f, 0.2f }}; // 12
        /*
        private float[,] bgScRgb = { 
{ 1f, 1f, 0.75f, 0.5f },     // 1
{ 0.7f, 0.8f, 0.5f, 0f },    // 2
{ 1f, 1f, 1f, 0.6f },        // 3
{ 1f, 1f, 1f, 0.2f },      // 4
{ 1f, 0.7f, 1f, 0.55f },     // 5
{ 0.7f, 0.2f, 1f, 0f },      // 6
{ 1f, 0.65f, 0.93f, 1f },  // 7
{ 0.7f, 0.1f, 0.7f, 1f },    // 8
{ 1f, 0.8f, 0.75f, 1f },     // 9
{ 0.7f, 0.4f, 0.3f, 1f },    // 10
{ 1f, 1f, 0.6f, 0.75f },     // 11
{ 0.7f, 0.9f, 0.1f, 0.2f }}; // 12
        */
        public UserControl8(UIParameters up)
        {
            InitializeComponent();
            this.KeyUp += new KeyEventHandler(FacetCategoryKeyUp);
            Up = up;
            Name = "UserControl8";
            // Create Colors from the RGB values.
            BgColors = new List<Color>();
            for (int i = 0; i < bgScRgb.GetLength(0); i++)
            {
                Color bgC = Color.FromScRgb(bgScRgb[i, 0], bgScRgb[i, 1], bgScRgb[i, 2], bgScRgb[i, 3]);
                BgColors.Add(bgC);
            }

            Up.BackgroundColorScheme = BgColors; // Set the scheme to the above colors.
            ForeColorPicker.SelectedColor += SetForeColor;
            //BackColorPicker.SelectedColor += SetBackColor;
            foreach (FacetCategory f in Up.FacetCategories)
            {
                if ((f.Name == "Species") || (f.Name == "Genus"))
                {
                    BackgroundFacet.Items.Add(f);
                }
                AvailableFacets.Items.Add(f);
            }
            
            // Set the scale factor for translating the coordinates from the final image to the preview image
            Image.ScaleFactor = ImagePreview.Width / Image.Width;
            ImagePreview.Background = Brushes.White; // Set the BG color to a default color.
            CurrentBackgroundFacetCategory = (FacetCategory)BackgroundFacet.SelectedItem; // Set the current BG FacetCat to the selected item.
            // Load FacetCategories for BG color that are of type String and are FilterVisible.
            CurrentItemIndex = 0; // Set the current item to the first one in the collection.
            CurrentItemTextBox.Text = "1";
            FontFamilyBox.ItemsSource = Fonts.SystemFontFamilies; // Load fonts into pulldown
        }
예제 #3
0
 public UserControl10(UIParameters up)
 {
     InitializeComponent();
     Name = "UserControl10";
     Up = up;
     Up.CxmlFile = "";
 }
예제 #4
0
 public UserControl1(UIParameters up)
 {
     InitializeComponent();
     Name = "UserControl1";
     Up = up;
     Up.ProjectDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
     projectDirTextBox.Text = Up.ProjectDir;
 }
예제 #5
0
        public UserControl2(UIParameters up)
        {
            InitializeComponent();
            Name = "UserControl2";
            Up = up;
            Up.FastaFile = "";

        }
예제 #6
0
 public UserControl4(UIParameters up)
 {
     InitializeComponent();
     Name = "UserControl4";
     Up = up;
     BlastDatabase.ItemsSource = proteinDatabases;
     BlastAlgorithm.ItemsSource = proteinAlgorithms;
     BlastDatabase.SelectedIndex = 0;
     BlastAlgorithm.SelectedIndex = 0;
     
 }
예제 #7
0
파일: Pivot.cs 프로젝트: vforget/blip
 public static void RecordPivotParameters(UIParameters Up, string collectionName, string collectionTitle)
 {
     //Up.CollectionName = collectionName;
     Up.CollectionName = "blip";
     Up.CollectionTitle = collectionTitle;
     //Up.CollectionUrl = @"file:///" + Up.CollectionPath + "\\" + Up.CollectionName + ".cxml";
     Up.CollectionUid = GetUid();
     Up.CollectionUrl = Up.CollectionPath + "\\" + Up.CollectionName + ".cxml";
     Up.CollectionImagePath = Up.CollectionPath + "\\" + Up.CollectionUid + "_images";
     Up.CollectionDeepzoomPath = Up.CollectionPath + "\\" + Up.CollectionUid + "_deepzoom";
 }
예제 #8
0
파일: BlastUtil.cs 프로젝트: vforget/blip
 public static void RecordBlastThresholds(UIParameters Up, UserControl4 uc4, string blastProgram, string blastDb, string blastAlgo)
 {
     Up.BlastProgram = blastProgram;
     Up.BlastDatabase = blastDb;
     Up.BlastAlgorithm = blastAlgo;
     Up.BlastGeneticCode = (uc4.BlastDatabase.SelectedIndex + 1).ToString();
     Up.BlastMinPercentQueryCoverage = uc4.QueryCoverageSlider.Value;
     Up.BlastMinPercentIdentity = uc4.PercentIdSlider.Value;
     Up.BlastMaxEvalue = Math.Pow(10, uc4.EvalueSlider.Value);
     Up.BlastMaxNumHits = Convert.ToInt32(uc4.NumTopHitsSlider.Value);
     
 }
예제 #9
0
파일: Pivot.cs 프로젝트: vforget/blip
        public static void CreateFacetCategories(UIParameters Up)
        {
            // Query information
            Up.FacetCategories.Add(new FacetCategory("InputOrder", "Number", "0", true));
            Up.FacetCategories.Add(new FacetCategory("QueryLen", "Number", "0", true));
            FacetCategory fc = new FacetCategory("QueryName", "String", false);
            fc.IsMetaDataVisible = false;
            fc.IsWordWheelVisible = true;
            Up.FacetCategories.Add(fc);
            FacetCategory fc_seq = new FacetCategory("QuerySequence", "String", false);
            fc.IsMetaDataVisible = false;
            fc.IsWordWheelVisible = false;
            Up.FacetCategories.Add(fc_seq);

            // BLAST alignment information
            Up.FacetCategories.Add(new FacetCategory("Rank", "Number", "0", true));
            Up.FacetCategories.Add(new FacetCategory("Annotated", "String", true));
            Up.FacetCategories.Add(new FacetCategory("Score", "Number", "0.0", true));
            Up.FacetCategories.Add(new FacetCategory("EValue", "String", false));
            Up.FacetCategories.Add(new FacetCategory("Identity", "Number", "0.00", true));
            Up.FacetCategories.Add(new FacetCategory("Span", "Number", "0.00", true));
            Up.FacetCategories.Add(new FacetCategory("AlignLen", "Link", false));
            Up.FacetCategories.Add(new FacetCategory("NextScore", "String", true));
            Up.FacetCategories.Add(new FacetCategory("Strand", "String", false));
            Up.FacetCategories.Add(new FacetCategory("SubjStart", "Number", "0", false));
            Up.FacetCategories.Add(new FacetCategory("SubjLen", "Number", "0", false));
            // Gene information
            Up.FacetCategories.Add(new FacetCategory("Gene", "Link", false));
            Up.FacetCategories.Add(new FacetCategory("GI", "Link", false));
            Up.FacetCategories.Add(new FacetCategory("Accession", "Link", false));
            Up.FacetCategories.Add(new FacetCategory("Definition", "LongString", false));
            Up.FacetCategories.Add(new FacetCategory("Product", "LongString", false));
            Up.FacetCategories.Add(new FacetCategory("Function", "LongString", false));
            // Organism information
            Up.FacetCategories.Add(new FacetCategory("Lineage", "LongString", false));
            Up.FacetCategories.Add(new FacetCategory("Organism", "LongString", false));
            Up.FacetCategories.Add(new FacetCategory("Species", "String", true));
            Up.FacetCategories.Add(new FacetCategory("Genus", "String", true));
            Up.FacetCategories.Add(new FacetCategory("Kingdom", "String", true));
            Up.FacetCategories.Add(new FacetCategory("Phylum", "String", true));
            Up.FacetCategories.Add(new FacetCategory("Class", "String", true));
            Up.FacetCategories.Add(new FacetCategory("Order", "String", true));
            Up.FacetCategories.Add(new FacetCategory("Family", "String", true));
            // References
            Up.FacetCategories.Add(new FacetCategory("RefCount", "Number", "0", true));
            fc = new FacetCategory("References", "Link", false);
            fc.IsMetaDataVisible = true;
            fc.IsWordWheelVisible = false;
            Up.FacetCategories.Add(fc);
            Up.FacetCategories.Add(new FacetCategory("SubmissionDate", "DateTime", true));
        }
예제 #10
0
 public UserControl0(UIParameters up)
 {
     InitializeComponent();
     Name = "UserControl0"; 
     Up = up;
 }
예제 #11
0
파일: Pivot.cs 프로젝트: vforget/blip
 public static void writePairwiseAlignment(UIParameters Up, Hit blastHit, int blastHspId, int itemId)
 {
     string pa = BlastUtil.ToString(blastHit, blastHspId);
     TextWriter tw = new StreamWriter(Up.ProjectDir + "\\txt\\" + itemId + ".txt");
     tw.Write(pa);
     tw.Close();
 }
예제 #12
0
파일: Pivot.cs 프로젝트: vforget/blip
        public static void writePairwiseAlignment(UIParameters Up, int itemId)
        {

            TextWriter tw = new StreamWriter(Up.ProjectDir + "\\txt\\" + itemId + ".txt");
            tw.Write("No alignments for this query sequence.");
            tw.Close();
        }
예제 #13
0
파일: Pivot.cs 프로젝트: vforget/blip
        public static int CreateItems(UIParameters Up, ISequence rec, int itemId, int seqPos, Collection collection)
        {
            
            string queryName = rec.DisplayID.ToString().Split(' ')[0];

            // BLAST reports are saved in individual files by query and 
            // numbered in the same order as they appear in the input FASTA file.
            string blastFile = Up.ProjectDir + "\\xml\\" + seqPos + ".xml";
            if (!File.Exists(blastFile))
            {
                throw new Exception("File does not exist.");
            }
            BlastXmlParser blastParser = new BlastXmlParser();
            IList<BlastResult> blastResults = blastParser.Parse(blastFile);
            GenBankParser gbParser = new GenBankParser();

            int[] annotatedIndex = GetBestAnnotatedIndex(Up, seqPos);
            
            // iterate through the BLAST results.
            foreach (BlastResult blastResult in blastResults)
            {
                foreach (BlastSearchRecord record in blastResult.Records)
                {
                    int hitsProcessed = 0;
                    // If there are not hits in the BLAST result ...
                    int rank = 0;
                    if (record.Hits.Count() > 0)
                    {
                        // For each hit
                        for (int i = 0; i < record.Hits.Count(); i++)
                        {

                            Hit blastHit = record.Hits[i];
                            // For each HSP
                            for (int j = 0; j < blastHit.Hsps.Count(); j++)
                            {
                                
                                Hsp blastHsp = blastHit.Hsps[j];
                                double percentId = (blastHsp.IdentitiesCount / (double)blastHsp.AlignmentLength) * 100;
                                double queryCoverage = ((double)(blastHsp.QueryEnd - blastHsp.QueryStart + 1) / record.IterationQueryLength) * 100;
                                string txt = String.Format("{0} {1} {2} {3} {4} {5} {6} {7}", percentId, Up.BlastMinPercentIdentity,
                                    Up.BlastMaxEvalue, blastHsp.EValue, queryCoverage, Up.BlastMinPercentQueryCoverage,
                                    hitsProcessed, Up.BlastMaxNumHits);
                                // if HSP passes user-defined thresholds
                                if ((percentId >= Up.BlastMinPercentIdentity) &&
                                    (Up.BlastMaxEvalue >= blastHsp.EValue) &&
                                    (queryCoverage >= Up.BlastMinPercentQueryCoverage) &&
                                    (hitsProcessed < Up.BlastMaxNumHits))
                                {
                                    rank += 1;
                                    string nextScore = "no";
                                    if ((i + 1) < record.Hits.Count())
                                    {
                                        if (blastHsp.Score > record.Hits[i + 1].Hsps[0].Score)
                                        {
                                            nextScore = "less than";
                                        }
                                        else
                                        {
                                            nextScore = "equal";
                                        }
                                    }
                                    else
                                    {
                                        nextScore = "non existent";
                                    }

                                    // parse GI numner from hit
                                    long gi = Convert.ToInt64(blastHit.Id.Split('|')[1]);
                                    GenBankItem gitem = new GenBankItem(gi, blastHsp.HitStart, blastHsp.HitEnd);
                                    string gbFile = Up.ProjectDir + "\\gb\\" + gitem.Id.ToString();
                                    gbFile += "_" + gitem.HitStart.ToString();
                                    gbFile += "_" + gitem.HitEnd.ToString();
                                    gbFile += ".gb";
                                    // init item
                                    string img = "#" + itemId.ToString();
                                    Item item = new Item(itemId, img);
                                    string[] headerTokens = parseFastaHeader(rec.DisplayID.ToString());
                                    item.Name = headerTokens[0];
                                    item.Description = headerTokens[1];

                                    // write pairwise alignment
                                    writePairwiseAlignment(Up, blastHit, j, itemId);

                                    // try to parse the GB record associated with the hit and set facet values to data from BLAST/GB record
                                    try
                                    {
                                        Console.WriteLine("GB OK: " + record.Hits[0].Id + " " + i.ToString() + " " + j.ToString());
                                        ISequence gbRecord = gbParser.ParseOne(gbFile);
                                        item.Href = GetNCBIUrl(Up.BlastProgram) + GetGenBankIdentifier(gbRecord);
                                        GenBankMetadata gbMeta = (GenBankMetadata)gbRecord.Metadata["GenBank"];
                                        CodingSequence bestCds = null;
                                        IList<FeatureItem> features = gbMeta.Features.All;
                                        FeatureItem bestItem = getBestFeatureItem(features);

                                        
                                        if (gbMeta.Features.CodingSequences.Count > 0)
                                        {
                                            bestCds = gbMeta.Features.CodingSequences[0];
                                        }
                                        
                                        for (int k = 1; k < gbMeta.Features.CodingSequences.Count; k++)
                                        {
                                            CodingSequence cds = gbMeta.Features.CodingSequences[k];
                                            //int bestSize = Math.Abs(bestCds.Location.End - bestCds.Location.Start);
                                            int bestSize = Math.Abs(bestItem.Location.End - bestItem.Location.Start);
                                            int cdsSize = Math.Abs(cds.Location.End - cds.Location.Start);
                                            if (cdsSize > bestSize)
                                            {
                                                bestCds = cds;
                                            }
                                        }
                                        foreach (FacetCategory f in Up.FacetCategories)
                                        {
                                            Facet facet = new Facet();
                                            switch (f.Name)
                                            {
                                                case "InputOrder":
                                                    facet = new Facet(f.Name, f.Type, seqPos);
                                                    break;
                                                case "QuerySequence":
                                                    facet = new Facet(f.Name, f.Type, rec.ToString());
                                                    break;
                                                case "NextScore":
                                                    facet = new Facet(f.Name, f.Type, nextScore);
                                                    break;
                                                case "Annotated":
                                                    string value = "na";
                                                    if ((annotatedIndex[0] == i) && (annotatedIndex[1] == j))
                                                    {
                                                        value = "top_annotated";
                                                    }
                                                    else
                                                    {
                                                        if ((i == 0) && (j == 0) && (annotatedIndex[0] == -1) && (annotatedIndex[1] == -1))
                                                        {
                                                            value = "top_unannotated";
                                                        }else{
                                                            if (bestItem != null)
                                                            {
                                                                value = "annotated";
                                                            }else{
                                                                value = "unannotated";
                                                            }
                                                        }
                                                    }
                                                    facet = new Facet(f.Name, f.Type, value);
                                                    break;
                                                default:
                                                    //facet = CreateFacet(f.Name, f.Type, record, i, j, gbRecord, item, GetNCBIUrl(Up.BlastProgram), bestCds, rank);
                                                    facet = CreateFacet(f.Name, f.Type, record, i, j, gbRecord, item, GetNCBIUrl(Up.BlastProgram), bestItem, rank);
                                                    break;
                                            }
                                            /*
                                            if (f.Name == "InputOrder")
                                            {
                                                facet = new Facet(f.Name, f.Type, seqPos);
                                            }

                                            else
                                            {
                                                facet = CreateFacet(f.Name, f.Type, record, i, j, gbRecord, item);
                                            }
                                            */
                                            item.Facets.Add(facet);
                                        }

                                    }
                                    //catch (System.NullReferenceException e) // if parsing failed init the item w/ default values (similar to 'no hit' above)
                                    catch
                                    {

                                        Console.WriteLine("GB ERROR: " + record.Hits[0].Id + " " + i.ToString() + " " + j.ToString());
                                        item.Href = "#";
                                        foreach (FacetCategory f in Up.FacetCategories)
                                        {
                                            Facet facet = new Facet();
                                            switch (f.Name)
                                            {
                                                case ("InputOrder"):
                                                    facet = new Facet(f.Name, f.Type, seqPos);
                                                    break;
                                                case "QuerySequence":
                                                    facet = new Facet(f.Name, f.Type, rec.ToString());
                                                    break;
                                                case ("NextScore"):
                                                    facet = new Facet(f.Name, f.Type, "no");
                                                    break;
                                                case "Annotated":
                                                    string value = "na";
                                                    if ((annotatedIndex[0] == i) && (annotatedIndex[1] == j))
                                                    {
                                                        value = "top_annotated";
                                                    }
                                                    else
                                                    {
                                                        if ((i == 0) && (j == 0) && (annotatedIndex[0] == -1) && (annotatedIndex[1] == -1))
                                                        {
                                                            value = "top_unannotated";
                                                        }
                                                        else
                                                        {
                                                            value = "unannotated";
                                                        }
                                                    }
                                                    facet = new Facet(f.Name, f.Type, value);
                                                    break;
                                                default:
                                                    facet = CreateGBErrorFacet(f.Name, f.Type, record, i, j, item, GetNCBIUrl(Up.BlastProgram), rank);
                                                    break;
                                            }
                                            item.Facets.Add(facet);
                                        }
                                        //throw (e);
                                    }
                                    // Add item to collection, increment to next item, 
                                    collection.Items.Add(item);
                                    hitsProcessed += 1;
                                    itemId += 1;
                                }
                            }
                        }
                    }
                    if ((record.Hits.Count()) == 0 || (hitsProcessed == 0))
                    {
                        // Init Pivot item
                        string img = "#" + itemId.ToString();
                        Item item = new Item(itemId, img);
                        item.Href = "#";
                        string[] headerTokens = parseFastaHeader(rec.DisplayID.ToString());
                        item.Name = headerTokens[0];
                        item.Description = headerTokens[1];

                        // Write pairwise alignment to file.
                        writePairwiseAlignment(Up, itemId);

                        // Set facet values for each facet category to default values
                        foreach (FacetCategory f in Up.FacetCategories)
                        {
                            Facet facet = new Facet();
                            switch (f.Name)
                            {
                                case ("InputOrder"):
                                    facet = new Facet(f.Name, f.Type, seqPos);
                                    break;
                                case ("QuerySequence"):
                                    facet = new Facet(f.Name, f.Type, rec.ToString());
                                    break;
                                default:
                                    facet = CreateFacet(f.Name, f.Type, record, item, 0);
                                    break;
                            }
                            item.Facets.Add(facet);
                        }

                        // Add item to collection, increment to next item, skip remaining code
                        collection.Items.Add(item);
                        itemId += 1;
                        hitsProcessed += 1;
                    }
                }
            }
            return itemId;
        }
예제 #14
0
파일: Pivot.cs 프로젝트: vforget/blip
        public static int[] GetBestAnnotatedIndex(UIParameters Up, int seqPos)
        {
            // BLAST reports are saved in individual files by query and 
            // numbered in the same order as they appear in the input FASTA file.
            int[] annotatedIndex = new int[2];
            annotatedIndex[0] = -1;
            annotatedIndex[1] = -1;

            string blastFile = Up.ProjectDir + "\\xml\\" + seqPos + ".xml";
            if (!File.Exists(blastFile))
            {
                throw new Exception("File does not exist.");
            }
            BlastXmlParser blastParser = new BlastXmlParser();
            IList<BlastResult> blastResults = blastParser.Parse(blastFile);
            GenBankParser gbParser = new GenBankParser();

            // iterate through the BLAST results.
            foreach (BlastResult blastResult in blastResults)
            {
                foreach (BlastSearchRecord record in blastResult.Records)
                {
                    int hitsProcessed = 0;
                    // If there are not hits in the BLAST result ...
                    int rank = 0;
                    if (record.Hits.Count() > 0)
                    {
                        // For each hit
                        for (int i = 0; i < record.Hits.Count(); i++)
                        {

                            Hit blastHit = record.Hits[i];
                            for (int j = 0; j < blastHit.Hsps.Count(); j++)
                            {

                                Hsp blastHsp = blastHit.Hsps[j];
                                double percentId = (blastHsp.IdentitiesCount / (double)blastHsp.AlignmentLength) * 100;
                                double queryCoverage = ((double)(blastHsp.QueryEnd - blastHsp.QueryStart + 1) / record.IterationQueryLength) * 100;
                                
                                if ((percentId >= Up.BlastMinPercentIdentity) &&
                                    (Up.BlastMaxEvalue >= blastHsp.EValue) &&
                                    (queryCoverage >= Up.BlastMinPercentQueryCoverage) &&
                                    (hitsProcessed < Up.BlastMaxNumHits))
                                {
                                    rank += 1;
                                    long gi = Convert.ToInt64(blastHit.Id.Split('|')[1]);
                                    GenBankItem gitem = new GenBankItem(gi, blastHsp.HitStart, blastHsp.HitEnd);
                                    string gbFile = Up.ProjectDir + "\\gb\\" + gitem.Id.ToString();
                                    gbFile += "_" + gitem.HitStart.ToString();
                                    gbFile += "_" + gitem.HitEnd.ToString();
                                    gbFile += ".gb";
                                    
                                    try
                                    {
                                        Console.WriteLine("GB OK: " + record.Hits[0].Id + " " + i.ToString() + " " + j.ToString());
                                        ISequence gbRecord = gbParser.ParseOne(gbFile);
                                        GenBankMetadata gbMeta = (GenBankMetadata)gbRecord.Metadata["GenBank"];
                                        IList<FeatureItem> features = gbMeta.Features.All;
                                        FeatureItem bestItem = getBestFeatureItem(features);
                                        if (bestItem != null)
                                        {
                                            annotatedIndex[0] = i;
                                            annotatedIndex[1] = j;
                                            return annotatedIndex;
                                        }
                                    }
                                    
                                    catch
                                    {
                                        Console.WriteLine("ISANNOTATED: " + record.Hits[0].Id + " " + i.ToString() + " " + j.ToString());
                                    }
                                    hitsProcessed += 1;
                                }
                            }
                        }
                    }
                }
            }
            
            return annotatedIndex;
        }