Beispiel #1
0
        public static void LoadFrom(FeatureItem FeatureItem)
        {
            if (FeatureItem.Project == null) return;

            new Project { DTEProject = FeatureItem.Project }
                .Load();
        }
Beispiel #2
0
 public static RaconteurGenerator NewRaconteurGenerator(FeatureItem FeatureItem)
 {
     return new RaconteurGeneratorClass
     {
         FeatureItem = FeatureItem,
         FeatureParser = NewFeatureParser,
     };
 }
        private IEnumerable<FeatureItem> GetFeatures(IPrincipal principal)
        {
            var module0 = new FeatureItem { Module = "Articles", DisplayText = "INDEX_ARTICLES", Url = "/articles", MatchPattern = "(/article.*)", Users = new List<string> { "cw", "bob" } };
            var module1 = new FeatureItem { Module = "ArticleDetails", Url = "/articledetails/:id", Users = new List<string> { "cw", "bob" } };
            var module2 = new FeatureItem { Module = "Gallery", DisplayText = "INDEX_GALLERY", Url = "/gallery", MatchPattern = "/gallery", Users = new List<string> { "cw" } };
            var module3 = new FeatureItem { Module = "Log", DisplayText = "INDEX_LOGS", Url = "/log", MatchPattern = "/log", Users = new List<string> { "cw" } };
            var module4 = new FeatureItem { Module = "Statistics", DisplayText = "INDEX_STATS", Url = "/stats", MatchPattern = "/stats", Users = new List<string> { "cw", "bob" } };

            return new List<FeatureItem> { module0, module1, module2, module3, module4 }.Where(m => m.Users.Contains(principal.Identity.Name));
        }
Beispiel #4
0
        public static Project LoadFrom(FeatureItem FeatureItem)
        {
            if (FeatureItem.Project == null) return null;

            var Result = new Project { DTEProject = FeatureItem.Project };

            Result.Load();

            return Result;
        }
        public void Compile(Feature Feature, FeatureItem FeatureItem)
        {
            if (Feature is InvalidFeature) return;

            this.Feature = Feature;

            LoadAssemblies(FeatureItem);
            CompileFeature();
            CompileSteps();
        }
 public static RaconteurGenerator NewRaconteurGenerator(FeatureItem FeatureItem)
 {
     return new RaconteurGeneratorClass
     {
         FeatureItem = FeatureItem,
         FeatureParser = NewFeatureParser,
         RunnerGenerator = new RunnerGenerator(),
         StepDefinitionsGenerator = new StepDefinitionsGenerator(),
     };
 }
        public void SetUp()
        {
            FeatureItem = Create.TestObjectFor<FeatureItem>();

            Generator = new RaconteurSingleFileGenerator
            {
                FeatureItem = FeatureItem,
                CodeFilePath = "Feature"
            };
        }
        public void SetUp()
        {
            FeatureItem = Substitute.For<FeatureItem>();

            Generator = new RaconteurSingleFileGenerator
            {
                FeatureItem = FeatureItem,
                CodeFilePath = "Feature"
            };
        }
        public virtual IEnumerable<string> StepNamesOf(Feature Feature, FeatureItem FeatureItem)
        {
            if (Feature is InvalidFeature) return new List<string>();

            this.Feature = Feature;

            LoadAssemblies(FeatureItem);

            return StepDefinitions.SelectMany(type =>
                type.GetMethods(BindingFlags.Public | BindingFlags.Instance)
                .Select(method => method.Name.InNaturalLanguage()));
        }
        public Feature FeatureFrom(FeatureFile FeatureFile, FeatureItem FeatureItem)
        {
            if (FeatureFile == null) return new Feature();
            Content = FeatureFile.Content;

            return new Feature
            {
                FileName = FeatureFile.Name,
                Namespace = FeatureItem.DefaultNamespace,
                Name = Name,
                Scenarios = ScenarioParser.ScenariosFrom(Content)
            };
        }
Beispiel #11
0
        private static void fill_feature(FeatureItem fe, long id)
        {
            //this query is inconsistent with other beacause other approach creates and error;
            Feature         feat     = new Feature(fe, id);
            MySqlCommand    cmmd14   = new MySqlCommand(feat.get_query(), conn);
            MySqlDataReader reader14 = cmmd14.ExecuteReader();

            reader14.Close();

            long feature_id = cmmd14.LastInsertedId;

            foreach (var qua in fe.Qualifiers)
            {
                long qualifier_id = fill_qualifier(qua.Key, feature_id);
                foreach (var v in qua.Value)
                {
                    fill_qualifier_value(v.ToString(), qualifier_id);
                }
            }
        }
        private static void fill_feature(FeatureItem feature, long id)
        {
            Feature         feat     = new Feature(feature, id);
            MySqlCommand    cmmd14   = new MySqlCommand(feat.get_query(), conn);
            MySqlDataReader reader14 = cmmd14.ExecuteReader();

            reader14.Close();

            long feature_id = cmmd14.LastInsertedId;

            foreach (var q in feature.Qualifiers)
            {
                long qualifier_id = fill_qualifier(q.Key, feature_id);
                foreach (var qv in q.Value)
                {
                    //Console.WriteLine("{0}", qualifier_id);
                    fill_qualifier_value(qv.ToString(), qualifier_id);
                }
            }
        }
Beispiel #13
0
        public IList <FeatureItem> ProcessFeatureItems()
        {
            try
            {
                var doc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
                using (Autodesk.AutoCAD.DatabaseServices.Database db = doc.Database)
                {
                    var features = new List <FeatureItem>();
                    var pid      = GetPolylineEntityIDs(db);
                    var temp     = new List <Polyline>();

                    foreach (ObjectId item in pid)
                    {
                        using (OpenCloseTransaction tr = db.TransactionManager.StartOpenCloseTransaction())
                        {
                            Polyline pline = (Polyline)tr.GetObject(item, OpenMode.ForWrite);
                            temp.Add(pline);
                            tr.Commit();
                        }
                    }

                    var distpolys = temp.Select(p => p.Layer).Distinct();

                    foreach (var item in distpolys)
                    {
                        var feature = new FeatureItem();
                        feature.active = true;
                        feature.layer  = item;
                        feature.name   = GetShortLayerName(item);
                        feature.count  = temp.Count(p => p.Layer == item);
                        features.Add(feature);
                    }
                    return(features);
                }
            }
            catch (System.Exception ex)
            {
                COMS.MessengerManager.LogException(ex);
            }
            return(null);
        }
        public static FeatureItem ToDomain(this FeatureItemDto dto, FeatureItem originalEntity = null)
        {
            if (originalEntity != null && originalEntity.Id == dto.Id)
            {
                originalEntity.FeatureId = dto.FeatureId;
                originalEntity.ItemId    = dto.ItemId;


                ((IDataDto)dto).ToDomain((IData)originalEntity);
                return(originalEntity);
            }

            var data = new FeatureItem
            {
                FeatureId = dto.FeatureId,
                ItemId    = dto.ItemId,
            };

            ((IDataDto)dto).ToDomain((IData)data);
            return(data);
        }
Beispiel #15
0
        /// <summary>
        /// Get the feature value
        /// </summary>
        /// <param name="featureID">featureID</param>
        /// <param name="featureSetID">file name</param>
        /// <returns></returns>
        public static string GetFeature(string featureID, string featureSetID)
        {
            XElement featureXml = FeatureItem.Get(featureSetID).Value;
            IEnumerable <XElement> featureList = featureXml.XPathSelectElements("Feature[@ID='" + featureID + "']");

            if (featureList.Any())
            {
                if (featureList.Count() > 1)
                {
                    return(featureList.Where(
                               x => x.Attribute("Environment") != null &&
                               x.Attribute("Environment").Value == ConfigurationManager.AppSettings["Environment"]
                               ).First().Value);
                }
                else
                {
                    return(featureList.First().Value);
                }
            }
            return(string.Empty);
        }
Beispiel #16
0
        public void CreateFeatureItemList(int parentId, float rmp)
        {
            //获取一级元素
            List <DirverRelation> dirvers = _dirverRelationList.FindAll(x => x.ParentId == parentId);

            if (dirvers != null && dirvers.Count > 0)
            {
                foreach (DirverRelation dirver in dirvers)
                {
                    //获取同类的设备集合
                    object value = null;
                    if (_unitList.ContainsKey(dirver.DType))
                    {
                        value = _unitList[dirver.DType];
                    }

                    FeatureItem item = GetFeatureItem(dirver, value, dirver.DType, dirver.DId, (int)rmp);
                    _featureItemList.Add(item);
                    CreateFeatureItemList(dirver.DrId, item.FOutSpeed);
                }
            }
        }
Beispiel #17
0
    public void SetSkeletonFromHandPos(KDTree <float, int> tree, LinkedList <FeatureItem> features, string handName, int k)
    {
        float[]   featureVec    = new float[featureVectorLength];
        Transform headTransform = rootBone.transform.Find("LowerBack/Spine/Spine1/Neck/Neck1/Head");
        Transform neckTransform = rootBone.transform.Find("LowerBack/Spine/Spine1/Neck/Neck1/Head");

        rootBone.transform.position -= headTransform.position;

        float handTargetSpPositionAngle = SphericalCoords.GetYRotFromVec(features.Last().position) * Mathf.Rad2Deg;

        var currFeatureContainer = features.Last;

        Debug.Assert(featureVectorLength % 9 == 0);
        for (int i = 0; i < featureVectorLength / 9; i++)
        {
            FeatureItem currFeatureItem = currFeatureContainer.Value;

            Vector3 handPos = currFeatureItem.position;
            Vector3 handVel = currFeatureItem.velocity;
            Vector3 handAcc = currFeatureItem.acceleration;

            if (ignoreRotation)
            {
                float handYRotValue = SphericalCoords.GetYRotFromVec(handPos) * Mathf.Rad2Deg;

                SphericalCoords sphCoords = SphericalCoords.CartesianToSpherical(handPos);
                sphCoords.theta = 0;
                Vector3 outVec = sphCoords.ToCartesian();

                handPos = Quaternion.AngleAxis(handYRotValue, Vector3.up) * handPos;
                handVel = Quaternion.AngleAxis(handYRotValue, Vector3.up) * handVel;
                handAcc = Quaternion.AngleAxis(handYRotValue, Vector3.up) * handAcc;
            }

            int startIndex = 9 * i;
            featureVec[startIndex]     = handPos.x;
            featureVec[startIndex + 1] = handPos.y;
            featureVec[startIndex + 2] = handPos.z;

            featureVec[startIndex + 3] = handVel.x;
            featureVec[startIndex + 4] = handVel.y;
            featureVec[startIndex + 5] = handVel.z;

            featureVec[startIndex + 6] = handAcc.x;
            featureVec[startIndex + 7] = handAcc.y;
            featureVec[startIndex + 8] = handAcc.z;

            if (currFeatureContainer.Previous != null)
            {
                currFeatureContainer = currFeatureContainer.Previous;
            }
        }

        Tuple <float[], int>[] poseIndices = tree.NearestNeighbors(featureVec, k);

        int index = poseIndices[0].Item2;

        RotationIndex[] rotations = new RotationIndex[poseIndices.Length];

        for (int i = 0; i < poseIndices.Length; i++)
        {
            double        distance = Metrics.WeightedL2Norm(poseIndices[i].Item1, featureVec);
            RotationIndex currIdx  = new RotationIndex(poseIndices[i].Item2, (float)(1.0 / distance));
            rotations[i] = currIdx;
        }

        rootBone.SetToRotations(rotations);
        //rootBone.SetToRotation(index);

        Transform       handTransform                = rootBone.transform.Find(handName);
        SphericalCoords handTransformSpPosition      = SphericalCoords.CartesianToSpherical(handTransform.position - headTransform.position);
        float           handTransformSpPositionAngle = handTransformSpPosition.theta * Mathf.Rad2Deg;

        rootBone.transform.localRotation *= Quaternion.Euler(0, -handTargetSpPositionAngle + handTransformSpPositionAngle, 0);
    }
 void LoadAssemblies(FeatureItem FeatureItem)
 {
     Assemblies = new List<string> {FeatureItem.Assembly};
     Assemblies.AddRange(Settings.Libraries);
 }
 void SetUpFeatureItem()
 {
     FeatureItem = Substitute.For<FeatureItem>();
     FeatureItem.Assembly.Returns("Common");
 }
Beispiel #20
0
        /// <summary>
        /// Create subsequences from features
        /// and non-coding subsequences from gaps.
        /// </summary>
        /// <returns>
        /// Returns tuple of coding and non-coding features count.
        /// </returns>
        private (int, int) CreateFeatureSubsequences()
        {
            var codingSubsequences    = new List <Subsequence>(features.Count);
            var newPositions          = new List <Position>();
            var newSequenceAttributes = new List <SequenceAttribute>();

            for (int i = 1; i < features.Count; i++)
            {
                FeatureItem      feature       = features[i];
                ILocation        location      = feature.Location;
                List <ILocation> leafLocations = location.GetLeafLocations();
                Feature          subsequenceFeature;

                if (feature.Key == gene)
                {
                    if (allNonGenesLeafLocations.Any(l => LocationsEqual(leafLocations, l)))
                    {
                        continue;
                    }

                    subsequenceFeature = Feature.Gene;
                }
                else
                {
                    subsequenceFeature = FeatureRepository.GetFeatureByName(feature.Key);
                }

                if (feature.Qualifiers.ContainsKey(LibiadaWeb.Attribute.Pseudo.GetDisplayValue()) ||
                    feature.Qualifiers.ContainsKey(LibiadaWeb.Attribute.Pseudogene.GetDisplayValue()))
                {
                    subsequenceFeature = Feature.PseudoGen;
                }

                bool partial        = CheckPartial(leafLocations);
                bool complement     = location.Operator == LocationOperator.Complement;
                bool join           = leafLocations.Count > 1;
                bool complementJoin = join && complement;

                if (location.SubLocations.Count > 0)
                {
                    complement = complement || location.SubLocations[0].Operator == LocationOperator.Complement;
                }

                int start  = leafLocations[0].LocationStart - 1;
                int end    = leafLocations[0].LocationEnd - 1;
                int length = end - start + 1;

                var subsequence = new Subsequence
                {
                    Id         = db.GetNewElementId(),
                    Feature    = subsequenceFeature,
                    Partial    = partial,
                    SequenceId = sequenceId,
                    Start      = start,
                    Length     = length,
                    RemoteId   = location.Accession
                };

                codingSubsequences.Add(subsequence);
                AddPositionToMap(start, end);
                newPositions.AddRange(CreateAdditionalPositions(leafLocations, subsequence.Id));
                var sequenceAttributes = sequenceAttributeRepository.Create(feature.Qualifiers, complement, complementJoin, subsequence);
                newSequenceAttributes.AddRange(sequenceAttributes);
            }

            var nonCodingSubsequences = CreateNonCodingSubsequences();

            db.Subsequence.AddRange(codingSubsequences);
            db.Subsequence.AddRange(nonCodingSubsequences);
            db.Position.AddRange(newPositions);
            db.SequenceAttribute.AddRange(newSequenceAttributes);

            db.SaveChanges();

            return(codingSubsequences.Count, nonCodingSubsequences.Count);
        }
Beispiel #21
0
        private static List<FeatureItem> loadFeaturesFile()
        {
            Assembly executingAssembly = Assembly.GetExecutingAssembly();
            executingAssembly.GetManifestResourceNames();
            Stream manifestResourceStream = executingAssembly.GetManifestResourceStream("NewWDS.WDS_Resources.Features.xml");
            XmlDocument document = new XmlDocument();
            document.Load(manifestResourceStream);
            XmlNode feature_table = document.SelectSingleNode("/Feature_Table");
            List<FeatureItem> list = new List<FeatureItem>();
            foreach (XmlNode feature_record in feature_table.ChildNodes)
            {
                FeatureItem item = new FeatureItem();
                foreach (XmlNode featureName in feature_record.ChildNodes)
                {
                    string name = featureName.Name;
                    if (name != null)
                    {
                        if (name == "LicenseCode")
                            item.LicenseCode = featureName.InnerText;
                        else if (name == "FeatureName")
                            item.FeatureName = featureName.InnerText;
                    }
                }

                if (LicenseManager.instance().checkLicenseNameIntegrity(item.FeatureName, false, true))
                    list.Add(item);
            }
            return list;
        }
Beispiel #22
0
        private bool DDJC()
        {
            try
            {
                if (_featureLayer == null)
                {
                    return(false);
                }

                _featureItems = new List <FeatureItem>();
                // 遍历所有点

                IFeatureCursor pFeatureCursor = _featureLayer.Search(null, false);
                IFeature       pFeature;
                while ((pFeature = pFeatureCursor.NextFeature()) != null)
                {
                    _featureItems.Add(new FeatureItem(pFeature));
                }
                Marshal.ReleaseComObject(pFeatureCursor);

                // 过滤重复点
                for (int i = 0; i <= _featureItems.Count - 1; i++)
                {
                    FeatureItem    featureItem    = _featureItems[i];
                    ISpatialFilter pSpatialFilter = new SpatialFilterClass();
                    pSpatialFilter.Geometry      = featureItem.MainFeature.Shape;
                    pSpatialFilter.GeometryField = _featureLayer.FeatureClass.ShapeFieldName;
                    pSpatialFilter.SpatialRel    = esriSpatialRelEnum.esriSpatialRelIntersects;
                    pSpatialFilter.OutputSpatialReference[_featureLayer.FeatureClass.ShapeFieldName] =
                        _context.FocusMap.SpatialReference;
                    pFeatureCursor = _featureLayer.Search(pSpatialFilter, false);
                    while ((pFeature = pFeatureCursor.NextFeature()) != null)
                    {
                        if (featureItem.OID == pFeature.OID)
                        {
                            continue;
                        }
                        bool isSame = true;
                        foreach (KeyValuePair <int, IField> selectedField in _selectedFields)
                        {
                            object objFeature1 = featureItem.MainFeature.Value[selectedField.Key];
                            object objFeature2 = pFeature.Value[selectedField.Key];

                            if (objFeature1 is DBNull && objFeature2 is DBNull)
                            {
                                continue;
                            }
                            if (objFeature1 is DBNull || objFeature2 is DBNull)
                            {
                                isSame = false;
                                break;
                            }
                            if (objFeature1.ToString().Equals(objFeature2.ToString()))
                            {
                                continue;
                            }
                            isSame = false;
                            break;
                        }
                        if (isSame) // 相同 重复点
                        {
                            _featureItems.Remove(_featureItems.FirstOrDefault(c => c.OID == pFeature.OID));
                            featureItem.SubFeatureItems.Add(new FeatureItem(pFeature));
                            featureItem.Name = $"重复个数 {featureItem.SubFeatureItems.Count}";
                        }
                    }
                }

                for (int i = _featureItems.Count - 1; i >= 0; i--)
                {
                    FeatureItem feature = _featureItems[i];
                    if (feature.SubFeatureItems.Count == 0)
                    {
                        _featureItems.Remove(feature);
                    }
                }

                if (_featureItems.Any())
                {
                    MessageBox.Show(@"检查完毕", @"提示");
                    return(true);
                }
                else
                {
                    MessageBox.Show(@"检查完毕,未发现任何问题", @"提示");
                    return(false);
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
                return(false);
            }
        }
Beispiel #23
0
        //public static Facet CreateFacet(string fName, string fType, BlastSearchRecord rec, int hitId, int hspId, ISequence gb, Item item, string NCBIurl, CodingSequence bestCds, int rank)
        public static Facet CreateFacet(string fName, string fType, BlastSearchRecord rec, int hitId, int hspId, ISequence gb, Item item, string NCBIurl, FeatureItem bestItem, int rank)
        {
            Hit             hit    = rec.Hits[hitId];
            Hsp             hsp    = hit.Hsps[hspId];
            GenBankMetadata gbMeta = (GenBankMetadata)gb.Metadata["GenBank"];

            string[] classLevels;
            switch (fName)
            {
            case "QueryName":
                return(new Facet(fName, fType, item.Name));

            case "QueryLen":
                return(new Facet(fName, fType, rec.IterationQueryLength));

            case "Rank":
                return(new Facet(fName, fType, rank));

            case "Score":
                return(new Facet(fName, fType, Math.Round(hsp.BitScore, 1)));

            case "Identity":
                double pi = (hsp.IdentitiesCount / (double)hsp.AlignmentLength) * 100.0;
                return(new Facet(fName, fType, Math.Round(pi, 0)));

            case "Span":
                double sp = ((hsp.QueryEnd - hsp.QueryStart + 1) / (double)rec.IterationQueryLength) * 100.0;
                return(new Facet(fName, fType, Math.Round(sp, 0)));

            case "SubjStart":
                double subjStart = hsp.HitStart;
                return(new Facet(fName, fType, Math.Round(subjStart, 0)));

            case "SubjLen":
                double subjLen = hit.Length;
                return(new Facet(fName, fType, Math.Round(subjLen, 0)));

            case "Strand":
                string strand = FrameToStrand(hsp.QueryFrame) + "/" + FrameToStrand(hsp.HitFrame);
                return(new Facet(fName, fType, strand));

            case "Species":
                int index = gbMeta.Source.Organism.Species.IndexOf(" ", StringComparison.Ordinal);
                if (index > 0)
                {
                    return(new Facet(fName, fType, gbMeta.Source.Organism.Genus + " " + gbMeta.Source.Organism.Species.Substring(0, index)));
                }
                else
                {
                    return(new Facet(fName, fType, gbMeta.Source.Organism.Genus + " " + gbMeta.Source.Organism.Species));
                }

            case "Kingdom":
                classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                if (classLevels.Length >= 1)
                {
                    return(new Facet(fName, fType, classLevels[0]));
                }
                else
                {
                    return(new Facet(fName, fType, "N/A"));
                }

            case "Phylum":
                classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                if (classLevels.Length >= 2)
                {
                    return(new Facet(fName, fType, classLevels[1]));
                }
                else
                {
                    return(new Facet(fName, fType, "N/A"));
                }

            case "Class":
                classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                if (classLevels.Length >= 3)
                {
                    return(new Facet(fName, fType, classLevels[2]));
                }
                else
                {
                    return(new Facet(fName, fType, "N/A"));
                }

            case "Order":
                classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                if (classLevels.Length >= 4)
                {
                    return(new Facet(fName, fType, classLevels[3]));
                }
                else
                {
                    return(new Facet(fName, fType, "N/A"));
                }

            case "Family":
                classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                if (classLevels.Length >= 5)
                {
                    return(new Facet(fName, fType, classLevels[4]));
                }
                else
                {
                    return(new Facet(fName, fType, "N/A"));
                }

            case "Lineage":
                return(new Facet(fName, fType, gbMeta.Source.Organism.ClassLevels.ToString()));

            case "Organism":
                return(new Facet(fName, fType, gbMeta.Source.CommonName));

            // return new Facet(fName, fType, gbMeta.Source.Organism.Genus + " " + gbMeta.Source.Organism.Species);
            case "Genus":
                return(new Facet(fName, fType, gbMeta.Source.Organism.ClassLevels.Split(';').Last().Trim().TrimEnd('.')));

            case "Gene":
                string name = "N/A";
                //if (bestCds != null)
                if (bestItem != null)
                {
                    //CodingSequence feature = bestCds;
                    FeatureItem feature = bestItem;
                    String      geneSym = "N/A";
                    foreach (KeyValuePair <string, List <String> > qualifier in feature.Qualifiers)
                    {
                        if (qualifier.Key == "gene")
                        {
                            geneSym = qualifier.Value[0].ToString().Trim('"');
                        }
                    }

                    if (geneSym != "")
                    {
                        name = geneSym;
                        string url2 = System.Web.HttpUtility.HtmlEncode("http://www.ncbi.nlm.nih.gov/sites/entrez?cmd=search&db=gene&term=" + name + "%5Bsym%5D");
                        return(new Facet(fName, fType, name, url2));
                    }
                }
                return(new Facet(fName, fType, name, null));

            case "GI":
                return(new Facet(fName, fType, gbMeta.Version.GINumber, NCBIurl + gbMeta.Version.GINumber));

            case "Accession":
                return(new Facet(fName, fType, gbMeta.Version.CompoundAccession, NCBIurl + gbMeta.Version.CompoundAccession));

            case "Definition":
                return(new Facet(fName, fType, gbMeta.Definition));

            case "EValue":
                return(new Facet(fName, fType, String.Format("{0:#e+00}", hsp.EValue)));

            case "AlignLen":
                return(new Facet(fName, fType, hsp.AlignmentLength, @"txt\" + item.Id + ".txt"));

            case "RefCount":
                int i = 0;
                foreach (CitationReference r in gbMeta.References)
                {
                    if ((r.Title != "Direct Submission") && (r.Journal != "Unpublished"))
                    {
                        i++;
                    }
                }
                return(new Facet(fName, fType, i));

            case "References":
                if (gbMeta.References.Count() == 0)
                {
                    return(new Facet(fName, fType));
                }

                string url = CreateReferenceURL(gbMeta.References[0]);
                Facet  f   = new Facet(fName, fType);

                if (gbMeta.References.Count() > 0)
                {
                    int j = 1;
                    foreach (CitationReference r in gbMeta.References)
                    {
                        if (r.Title != "Direct Submission" && (r.Journal != "Unpublished"))
                        {
                            url = CreateReferenceURL(r);
                            f.Add(new FacetValue(f.Type, String.Format("{0}. {1}. {2}.", j, r.Title, r.Journal), url));
                            j++;
                        }
                    }
                }
                return(f);

            case "SubmissionDate":
                DateTime dt = new DateTime(gbMeta.Locus.Date.Year, gbMeta.Locus.Date.Month, gbMeta.Locus.Date.Day);
                return(new Facet(fName, fType, dt.ToUniversalTime().ToString("o")));

            case "Product":
                Facet productFacet = new Facet(fName, fType, GetQualifierString("Protein", "product", gbMeta));

                if (productFacet[0].Value == "N/A")
                {
                    Console.WriteLine(productFacet[0].Value + "!!!!!!!!!!!!!!!!!!!!!!!!!!***********");
                    if (bestItem != null)
                    {
                        productFacet = new Facet(fName, fType, GetQualifierStringFromCDS(bestItem, "product"));
                    }
                    Console.WriteLine(productFacet[0].Value + "!!!!!!!!!!!!!!!!!!!!!!!!&&&&&&&&&&&&&");
                }
                return(productFacet);

            case "Function":
                Facet funcFacet = new Facet(fName, fType, GetQualifierString("Protein", "function", gbMeta));
                if (funcFacet[0].Value == "N/A")
                {
                    if (bestItem != null)
                    {
                        funcFacet = new Facet(fName, fType, GetQualifierStringFromCDS(bestItem, "function"));
                    }
                }
                return(funcFacet);

            default:
                throw (new Exception("Facet category with name = " + fName + " does not exist."));
            }
        }
Beispiel #24
0
        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);
        }
Beispiel #25
0
        //public static Facet CreateFacet(string fName, string fType, BlastSearchRecord rec, int hitId, int hspId, ISequence gb, Item item, string NCBIurl, CodingSequence bestCds, int rank)
        public static Facet CreateFacet(string fName, string fType, BlastSearchRecord rec, int hitId, int hspId, ISequence gb, Item item, string NCBIurl, FeatureItem bestItem, int rank)
        {
            Hit hit = rec.Hits[hitId];
            Hsp hsp = hit.Hsps[hspId];
            GenBankMetadata gbMeta = (GenBankMetadata)gb.Metadata["GenBank"];
            string[] classLevels;
            switch (fName)
            {
                case "QueryName":
                    return new Facet(fName, fType, item.Name);
                case "QueryLen":
                    return new Facet(fName, fType, rec.IterationQueryLength);
                case "Rank":
                    return new Facet(fName, fType, rank);
                case "Score":
                    return new Facet(fName, fType, Math.Round(hsp.BitScore, 1));
                case "Identity":
                    double pi = (hsp.IdentitiesCount / (double)hsp.AlignmentLength) * 100.0;
                    return new Facet(fName, fType, Math.Round(pi, 0));
                case "Span":
                    double sp = ((hsp.QueryEnd - hsp.QueryStart + 1) / (double)rec.IterationQueryLength) * 100.0;
                    return new Facet(fName, fType, Math.Round(sp, 0));
                case "SubjStart":
                    double subjStart = hsp.HitStart;
                    return new Facet(fName, fType, Math.Round(subjStart,0));
                case "SubjLen":
                    double subjLen = hit.Length;
                    return new Facet(fName, fType, Math.Round(subjLen, 0));
                
                case "Strand":
                    string strand = FrameToStrand(hsp.QueryFrame) + "/" + FrameToStrand(hsp.HitFrame);
                    return new Facet(fName, fType, strand);
                case "Species":
                    int index = gbMeta.Source.Organism.Species.IndexOf(" ", StringComparison.Ordinal);
                    if (index > 0)
                    {
                        return new Facet(fName, fType, gbMeta.Source.Organism.Genus + " " + gbMeta.Source.Organism.Species.Substring(0, index));
                    }
                    else
                    {
                        return new Facet(fName, fType, gbMeta.Source.Organism.Genus + " " + gbMeta.Source.Organism.Species);
                    }
                case "Kingdom":
                    classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                    if (classLevels.Length >= 1)
                    {
                        return new Facet(fName, fType, classLevels[0]);
                    }
                    else
                    {
                        return new Facet(fName, fType, "N/A");
                    }
                case "Phylum":
                    classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                    if (classLevels.Length >= 2)
                    {
                        return new Facet(fName, fType, classLevels[1]);
                    }
                    else
                    {
                        return new Facet(fName, fType, "N/A");
                    }
                case "Class":
                    classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                    if (classLevels.Length >= 3)
                    {
                        return new Facet(fName, fType, classLevels[2]);
                    }
                    else
                    {
                        return new Facet(fName, fType, "N/A");
                    }
                case "Order":
                    classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                    if (classLevels.Length >= 4)
                    {
                        return new Facet(fName, fType, classLevels[3]);
                    }
                    else
                    {
                        return new Facet(fName, fType, "N/A");
                    }
                case "Family":
                    classLevels = gbMeta.Source.Organism.ClassLevels.Split(';');
                    if (classLevels.Length >= 5)
                    {
                        return new Facet(fName, fType, classLevels[4]);
                    }
                    else
                    {
                        return new Facet(fName, fType, "N/A");
                    }
                case "Lineage":
                    return new Facet(fName, fType, gbMeta.Source.Organism.ClassLevels.ToString());
                case "Organism":
                    return new Facet(fName, fType, gbMeta.Source.CommonName);
                    // return new Facet(fName, fType, gbMeta.Source.Organism.Genus + " " + gbMeta.Source.Organism.Species);
                case "Genus":
                    return new Facet(fName, fType, gbMeta.Source.Organism.ClassLevels.Split(';').Last().Trim().TrimEnd('.'));
                case "Gene":
                    string name = "N/A";
                    //if (bestCds != null)
                    if (bestItem != null)
                    {
                        //CodingSequence feature = bestCds;
                        FeatureItem feature = bestItem;
                        String geneSym = "N/A";
                        foreach (KeyValuePair<string,List<String>> qualifier in feature.Qualifiers){
                           if (qualifier.Key == "gene")
                            {
                            geneSym = qualifier.Value[0].ToString().Trim('"');
                            }   
                        }
                                                    
                        if (geneSym != "")
                        {
                            name = geneSym;
                            string url2 = System.Web.HttpUtility.HtmlEncode("http://www.ncbi.nlm.nih.gov/sites/entrez?cmd=search&db=gene&term=" + name + "%5Bsym%5D");
                            return new Facet(fName, fType, name, url2);
                        }
                    }
                    return new Facet(fName, fType, name, null);
                case "GI":
                    return new Facet(fName, fType, gbMeta.Version.GINumber, NCBIurl + gbMeta.Version.GINumber);
                case "Accession":
                    return new Facet(fName, fType, gbMeta.Version.CompoundAccession, NCBIurl + gbMeta.Version.CompoundAccession);
                case "Definition":
                    return new Facet(fName, fType, gbMeta.Definition);
                case "EValue":
                    return new Facet(fName, fType, String.Format("{0:#e+00}", hsp.EValue));
                case "AlignLen":
                    return new Facet(fName, fType, hsp.AlignmentLength, @"txt\" + item.Id + ".txt");
                case "RefCount":
                    int i = 0;
                    foreach (CitationReference r in gbMeta.References)
                    {
                        if ((r.Title != "Direct Submission") && (r.Journal != "Unpublished")) { i++; }
                    }
                    return new Facet(fName, fType, i);
                case "References":
                    if (gbMeta.References.Count() == 0)
                    {
                        return new Facet(fName, fType);
                    }

                    string url = CreateReferenceURL(gbMeta.References[0]);
                    Facet f = new Facet(fName, fType);

                    if (gbMeta.References.Count() > 0)
                    {
                        int j = 1;
                        foreach (CitationReference r in gbMeta.References)
                        {
                            if (r.Title != "Direct Submission" && (r.Journal != "Unpublished"))
                            {
                                url = CreateReferenceURL(r);
                                f.Add(new FacetValue(f.Type, String.Format("{0}. {1}. {2}.", j, r.Title, r.Journal), url));
                                j++;
                            }
                        }
                    }
                    return f;
                case "SubmissionDate":
                    DateTime dt = new DateTime(gbMeta.Locus.Date.Year, gbMeta.Locus.Date.Month, gbMeta.Locus.Date.Day);
                    return new Facet(fName, fType, dt.ToUniversalTime().ToString("o"));

                case "Product":
                    Facet productFacet = new Facet(fName, fType, GetQualifierString("Protein", "product", gbMeta));
                    
                    if (productFacet[0].Value == "N/A")
                    {
                        Console.WriteLine(productFacet[0].Value + "!!!!!!!!!!!!!!!!!!!!!!!!!!***********");
                        if (bestItem != null) { productFacet = new Facet(fName, fType, GetQualifierStringFromCDS(bestItem, "product")); }
                        Console.WriteLine(productFacet[0].Value + "!!!!!!!!!!!!!!!!!!!!!!!!&&&&&&&&&&&&&");
                    }
                    return productFacet;

                case "Function":
                    Facet funcFacet = new Facet(fName, fType, GetQualifierString("Protein", "function", gbMeta));
                    if (funcFacet[0].Value == "N/A")
                    {
                        if (bestItem != null) { funcFacet = new Facet(fName, fType, GetQualifierStringFromCDS(bestItem, "function")); }
                    }
                    return funcFacet;

                default:
                    throw (new Exception("Facet category with name = " + fName + " does not exist."));
            }
        }
        public Feature FeatureFrom(FeatureFile FeatureFile, FeatureItem FeatureItem)
        {
            Content = FeatureFile.Content.TrimLines();
            Assembly = FeatureItem.Assembly;

            if (IsNotAValidFeature) return InvalidFeature;

            return new Feature
            {
                FileName = FeatureFile.Name,
                Namespace = FeatureItem.DefaultNamespace,
                Name = Name,
                Scenarios = ScenarioTokenizer.ScenariosFrom(Content),
                StepLibraries = StepLibraries
            };
        }
Beispiel #27
0
 public Feature FeatureFrom(FeatureFile FeatureFile, FeatureItem FeatureItem)
 {
     return(ParseFeature(FeatureFile.Name, FeatureFile.Content, FeatureItem));
 }
        public IActionResult Create(FeatureItem featureItem)
        {
            var result = _repositoryCreateConductor.Create(featureItem);

            return(Ok(result));
        }
Beispiel #29
0
        /// <summary>
        /// 获取特征频率
        /// </summary>
        /// <param name="nType">元件类型</param>
        /// <param name="element">元件</param>
        /// <param name="Input">输入转速</param>
        /// <param name="OutPut"></param>
        /// <returns></returns>
        public FeatureItem GetFeatureItem(int nType, object element, float Input)
        {
            if (element == null)
            {
                return(null);
            }
            FeatureItem featureItem = null;

            switch (nType)
            {
            case 1:
                #region 电动机
                DirverMotor motor = element as DirverMotor;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = Input,
                    FKey             = motor.DmId,
                    FName            = motor.DmName,
                    FMark            = motor.DmMark,
                    FOutSpeedDisplay = motor.DmMark + "_Speed_" + Input,
                    FType            = nType,
                    Tag = motor,
                };
                if (motor.DmType == 1)
                {
                    float nRpm2Hz = Input / 60;
                    float n2LF    = motor.DmLf * 2;
                    float nSlip   = n2LF / motor.DmPoles - nRpm2Hz;
                    float nPPF    = nSlip * motor.DmPoles;

                    featureItem["LF"]    = motor.DmLf;
                    featureItem["Poles"] = motor.DmPoles;
                    featureItem["RS"]    = Input / 60f;
                    featureItem["Bars"]  = motor.DmBars;
                    featureItem["Slots"] = motor.DmSlots;
                    featureItem["PPF"]   = nPPF;
                    featureItem["RBPF"]  = motor.DmBars * nRpm2Hz;
                    featureItem["WSPF"]  = motor.DmSlots * nRpm2Hz;
                    featureItem["2xLF"]  = n2LF;
                    featureItem["Slip"]  = nSlip;
                }
                else
                {
                    featureItem["LF"]    = motor.DmLf;
                    featureItem["RS"]    = Input / 60f;
                    featureItem["Bar"]   = motor.DmBars;
                    featureItem["Brush"] = motor.DmBrush;
                    featureItem["SCR"]   = motor.DmScr;
                }
                #endregion
                break;

            case 2:
                #region 齿轮
                DirverGear gear     = element as DirverGear;
                float      outSpeed = Input * gear.MNum1 / gear.MNum2;
                featureItem = new FeatureItem()
                {
                    FOutSpeed        = outSpeed,
                    FInSpeed         = Input,
                    FKey             = gear.MId,
                    FName            = gear.MName,
                    FMark            = gear.MMark,
                    FOutSpeedDisplay = gear.MMark + "_Speed_" + outSpeed,
                    FType            = 2,
                    Tag = gear,
                };

                featureItem["Shaft1"] = Input;
                featureItem["Shaft2"] = outSpeed;
                featureItem["Z1"]     = gear.MNum1;
                featureItem["Z2"]     = gear.MNum2;
                featureItem["GM"]     = Input * gear.MNum1 / 60;
                #endregion
                break;

            case 3:
                #region 风机
                DirverFan fan = element as DirverFan;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = Input,
                    FKey             = fan.FId,
                    FName            = fan.FName,
                    FMark            = fan.FMark,
                    FOutSpeedDisplay = fan.FMark + "_Speed_" + Input,
                    FType            = 3,
                    Tag = fan,
                };
                //叶片比问题	BRF = 转子叶片x扩压器叶片xRS/最大公约数	具有旋转叶片和静止扩压叶片的离心机
                float tempF = fan.FBlades * fan.FDiffuserVane * Input / GCD(fan.FBlades, fan.FDiffuserVane);
                featureItem["BRF"] = tempF;
                featureItem["BP"]  = fan.FBlades;
                featureItem["BPF"] = fan.FBlades * Input / 60;
                featureItem["RS"]  = Input / 60f;
                #endregion
                break;

            case 4:
                #region 泵
                DirverPump pump = element as DirverPump;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = Input,
                    FKey             = pump.PId,
                    FName            = pump.PName,
                    FMark            = pump.PMark,
                    FOutSpeedDisplay = pump.PMark + "_Speed_" + Input,
                    FType            = nType,
                    Tag = pump,
                };
                featureItem["VP"]  = pump.PVanes;
                featureItem["VPF"] = pump.PVanes * Input / 60f;
                featureItem["RS"]  = Input / 60f;
                #endregion
                break;

            case 5:
                #region 皮带转动/风机
                DirverBelt belt = element as DirverBelt;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = belt.BD1 * Input / belt.BD2,
                    FKey             = belt.BId,
                    FName            = belt.BName,
                    FMark            = belt.BMark,
                    FOutSpeedDisplay = belt.BMark + "_Speed_" + (belt.BD1 * Input / belt.BD2),
                    FType            = nType,
                    Tag = belt
                };
                featureItem["D1"]  = belt.BD1;
                featureItem["D2"]  = belt.BD2;
                featureItem["CD"]  = belt.BCenterLength;
                featureItem["BPF"] = (float)((Math.PI * belt.BD1 * Input) / (0.5 * Math.PI * (belt.BD2 - belt.BD1)
                                                                             + 2 * Math.Sqrt(Math.Pow(belt.BCenterLength, 2) + Math.Pow(0.5 * belt.BD2 - 0.5 * belt.BD1, 2))));
                featureItem["RS"] = belt.BD1 * Input / belt.BD2 / 60f;
                #endregion
                break;

            case 6:
                #region 变速机构
                DirverShifting shifting = element as DirverShifting;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = Input / shifting.DsRatio,
                    FKey             = shifting.DsId,
                    FName            = shifting.DsName,
                    FMark            = shifting.DsMark,
                    FOutSpeedDisplay = shifting.DsMark + "_Speed_" + (Input / shifting.DsRatio),
                    FType            = nType,
                    Tag = shifting,
                };
                #endregion
                break;

            case 7:
                #region 线速度
                DirverLinerspeed linerSpeed = element as DirverLinerspeed;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = (float)(linerSpeed.DlMps * 1000 * 60 / (Math.PI * linerSpeed.DlD)),
                    FKey             = linerSpeed.DlId,
                    FName            = linerSpeed.DlName,
                    FMark            = linerSpeed.DlMark,
                    FOutSpeedDisplay = linerSpeed.DlMark + "_Speed_" + (float)(linerSpeed.DlMps * 1000 * 60 / (Math.PI * linerSpeed.DlD)),
                    FType            = nType,
                    Tag = linerSpeed,
                };
                #endregion
                break;

            case 8:
                #region 行星齿轮箱
                #endregion
                break;

            case 9:
                #region 转子/轴
                DirverRoller roller = element as DirverRoller;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = Input,
                    FKey             = roller.DrId,
                    FName            = roller.DrName,
                    FMark            = roller.DrMark,
                    FOutSpeedDisplay = roller.DrMark + "_Speed_" + Input,
                    FType            = nType,
                    Tag = roller,
                };
                featureItem["RS"] = Input / 60f;
                #endregion
                break;

            case 11:
                #region 滚动轴承
                DirverBearing bearing = element as DirverBearing;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = Input,
                    FKey             = bearing.Id,
                    FName            = bearing.Name,
                    FMark            = bearing.Mark,
                    FOutSpeedDisplay = bearing.Mark + "_Speed_" + Input,
                    FType            = nType,
                    Tag           = bearing,
                    CalcFrequency = new Dictionary <string, float>()
                };
                featureItem["RS"]   = Input / 60f;
                featureItem["BPFI"] = bearing.InsideRing;
                featureItem["BPFO"] = bearing.OuterRing;
                featureItem["FTF"]  = bearing.Retainer;
                featureItem["BSF"]  = bearing.Roller;
                #endregion
                break;

            case 12:
                #region 滑动轴承
                DirverBearingSlide bearingSlide = element as DirverBearingSlide;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = Input,
                    FKey             = bearingSlide.BsId,
                    FName            = bearingSlide.BsName,
                    FMark            = bearingSlide.BsMark,
                    FOutSpeedDisplay = bearingSlide.BsMark + "_Speed_" + Input,
                    FType            = nType,
                    Tag = bearingSlide,
                };
                featureItem["RS"] = Input / 60f;
                #endregion
                break;

            case 13:
                DirverFluidcoupling fluidCoupling = element as DirverFluidcoupling;
                featureItem = new FeatureItem()
                {
                    FInSpeed         = Input,
                    FOutSpeed        = Input * fluidCoupling.FcRange3,
                    FKey             = fluidCoupling.FcId,
                    FName            = fluidCoupling.FcName,
                    FMark            = fluidCoupling.FcMark,
                    FOutSpeedDisplay = fluidCoupling.FcMark + "_Speed_" + (Input * fluidCoupling.FcRange3),
                    FType            = nType,
                    Tag           = fluidCoupling,
                    CalcFrequency = new Dictionary <string, float>()
                };
                featureItem["RS"] = Input / 60f;
                break;
            }
            return(featureItem);
        }
        private static void GetAllInterfaces(List <string> interfaces, IList <FeatureItem> allFeatures, FeatureItem currentFeature, bool deep)
        {
            var interfacesFromFeature = currentFeature.FeatureDescriptor.ExportedTypes
                                        .SelectMany(x => x.GetInterfaces())
                                        .Where(x => typeof(IFeature).IsAssignableFrom(x) && x != typeof(IFeature))
                                        .Select(x => x.Name);

            interfaces.AddRange(interfacesFromFeature);

            var dependencies = currentFeature.FeatureDescriptor.Dependencies.ToList();

            if (deep && dependencies.Any())
            {
                dependencies.ForEach(x =>
                                     GetAllInterfaces(interfaces, allFeatures,
                                                      allFeatures.SingleOrDefault(y => y.FeatureDescriptor.Name.Equals(x, StringComparison.OrdinalIgnoreCase)), true));
            }
        }
Beispiel #31
0
        public void TestFeatureItem()
        {
            ISequence     seq;
            ISequence     featureSeq       = null;
            GenBankParser parser           = new GenBankParser();
            string        _genBankDataPath = @"TestUtils\GenBank";

            seq = parser.ParseOne(_genBankDataPath + @"\BK000016-tpa.gbk");
            GenBankMetadata metadata = seq.Metadata["GenBank"] as GenBankMetadata;

            #region Test GetSubSequence Method

            featureSeq = metadata.Features.All[0].GetSubSequence(seq);
            int start = metadata.Features.All[0].Location.Start - 1;
            int end   = metadata.Features.All[0].Location.End - start;
            Assert.AreEqual(featureSeq.ToString(), seq.Range(start, end).ToString());
            featureSeq = metadata.Features.All[1].GetSubSequence(seq);
            start      = metadata.Features.All[1].Location.Start - 1;
            end        = metadata.Features.All[1].Location.End - start;
            Assert.AreEqual(featureSeq.ToString(), seq.Range(start, end).ToString());


            seq = new Sequence(Alphabets.DNA, "ACGTAAAGGT");
            Sequence        refSeq     = new Sequence(Alphabets.DNA, "AAAAATTTT");
            LocationBuilder locbuilder = new LocationBuilder();
            ILocation       loc        = locbuilder.GetLocation("join(complement(4..8),Ref1:5..7)");
            Assert.AreEqual("join(complement(4..8),Ref1:5..7)", locbuilder.GetLocationString(loc));
            FeatureItem fi = new FeatureItem("Feature1", loc);
            Dictionary <string, ISequence> refSeqs = new Dictionary <string, ISequence>();
            refSeqs.Add("Ref1", refSeq);
            ISequence result = fi.GetSubSequence(seq, refSeqs);
            Assert.AreEqual("ATTTCATT", result.ToString());
            #endregion

            #region Test GetSubFeatures Method
            SequenceFeatures seqFeatures = new SequenceFeatures();
            FeatureItem      source      = new FeatureItem("Source", "1..1509");
            FeatureItem      mRNA        = new FeatureItem("mRNA", "join(10..567,789..1320)");
            FeatureItem      cds         = new FeatureItem("CDS", "join(54..567,789..1254)");
            FeatureItem      exon1       = new FeatureItem("Exon", "10..567");
            FeatureItem      intron      = new FeatureItem("Intron", "568..788");
            FeatureItem      exon2       = new FeatureItem("Exon", "789..1320");

            seqFeatures.All.Add(source);
            seqFeatures.All.Add(mRNA);
            seqFeatures.All.Add(cds);
            seqFeatures.All.Add(exon1);
            seqFeatures.All.Add(intron);
            seqFeatures.All.Add(exon2);
            List <FeatureItem> subFeatures = source.GetSubFeatures(seqFeatures);
            Assert.AreEqual(5, subFeatures.Count);
            subFeatures = mRNA.GetSubFeatures(seqFeatures);
            Assert.AreEqual(4, subFeatures.Count);
            subFeatures = cds.GetSubFeatures(seqFeatures);
            Assert.AreEqual(1, subFeatures.Count);
            subFeatures = exon1.GetSubFeatures(seqFeatures);
            Assert.AreEqual(0, subFeatures.Count);
            subFeatures = intron.GetSubFeatures(seqFeatures);
            Assert.AreEqual(0, subFeatures.Count);
            subFeatures = exon2.GetSubFeatures(seqFeatures);
            Assert.AreEqual(0, subFeatures.Count);

            #endregion
        }
Beispiel #32
0
        /// <summary>
        /// Add GenBank metadata
        /// </summary>
        /// <param name="metadata">GenBank Metadata</param>
        /// <returns>GenBank Metadat</returns>
        private static GenBankMetadata AddGenBankMetadata(GenBankMetadata metadata)
        {
            metadata.Accession         = new GenBankAccession();
            metadata.Accession.Primary = "PAccession";
            metadata.Accession.Secondary.Add("SAccession1");
            metadata.Accession.Secondary.Add("SAccession2");
            metadata.BaseCount = "a 1 c 2";
            metadata.Comments.Add("Comment1");
            metadata.Comments.Add("Comment2");
            metadata.Contig      = "Contig Info";
            metadata.DBLink      = new CrossReferenceLink();
            metadata.DBLink.Type = CrossReferenceType.Project;
            metadata.DBLink.Numbers.Add("100");
            metadata.DBLink.Numbers.Add("200");
            metadata.DBSource   = "DbSourceInfo";
            metadata.Definition = "Defination info";
            metadata.Features   = new SequenceFeatures();
            FeatureItem   feature         = new FeatureItem("feature1", "1");
            List <string> qualifierValues = new List <string>();

            qualifierValues.Add("qualifier1value1");
            qualifierValues.Add("qualifier1value2");
            feature.Qualifiers.Add("qualifier1", qualifierValues);
            metadata.Features.All.Add(feature);

            feature         = new FeatureItem("feature2", "2");
            qualifierValues = new List <string>();
            qualifierValues.Add("qualifier2value1");
            qualifierValues.Add("qualifier2value2");
            feature.Qualifiers.Add("qualifier2", qualifierValues);
            metadata.Features.All.Add(feature);
            feature         = new FeatureItem("feature2", "2");
            qualifierValues = new List <string>();
            qualifierValues.Add("qualifier2value1");
            qualifierValues.Add("qualifier2value2");
            feature.Qualifiers.Add("qualifier2", qualifierValues);
            metadata.Features.All.Add(feature);

            metadata.Keywords             = "keywords data";
            metadata.Locus                = new GenBankLocusInfo();
            metadata.Locus.Date           = DateTime.Now;
            metadata.Locus.DivisionCode   = SequenceDivisionCode.CON;
            metadata.Locus.MoleculeType   = MoleculeType.DNA;
            metadata.Locus.Name           = "LocusName";
            metadata.Locus.SequenceLength = 100;
            metadata.Locus.SequenceType   = "bp";
            metadata.Locus.Strand         = SequenceStrandType.Double;
            metadata.Locus.StrandTopology = SequenceStrandTopology.Linear;
            metadata.Origin               = "origin info";
            metadata.Primary              = "Primary info";
            metadata.Project              = new ProjectIdentifier();
            metadata.Project.Name         = "Project1";
            metadata.Project.Numbers.Add("101");
            metadata.Project.Numbers.Add("201");
            CitationReference reference = new CitationReference();

            reference.Authors     = "Authors";
            reference.Consortiums = "Consortiums";
            reference.Journal     = "Journal";
            reference.Location    = "3";
            reference.Medline     = "Medline info";
            reference.Number      = 1;
            reference.PubMed      = "pubmid";
            reference.Remarks     = "remarks";
            reference.Title       = "Title of the book";
            metadata.References.Add(reference);
            reference             = new CitationReference();
            reference.Authors     = "Authors";
            reference.Consortiums = "Consortiums";
            reference.Journal     = "Journal";
            reference.Location    = "4";
            reference.Medline     = "Medline info";
            reference.Number      = 2;
            reference.PubMed      = "pubmid";
            reference.Remarks     = "remarks";
            reference.Title       = "Title of the book";
            metadata.References.Add(reference);
            metadata.Segment                     = new SequenceSegment();
            metadata.Segment.Count               = 2;
            metadata.Segment.Current             = 1;
            metadata.Source                      = new SequenceSource();
            metadata.Source.CommonName           = "ABC Xyz";
            metadata.Source.Organism.Genus       = "ABC";
            metadata.Source.Organism.Species     = "Xyz";
            metadata.Source.Organism.ClassLevels = "123 123";
            metadata.Version                     = new GenBankVersion();
            metadata.Version.Accession           = "PAccession";
            metadata.Version.Version             = "1";
            metadata.Version.GINumber            = "12345";

            return(metadata);
        }
        // Setup

        void Given_the_Step_Definition(string ExistingStepDefinitions)
        {
            Item = Create.TestObjectFor <FeatureItem>();
            Given.That(Item).ContainsStepDefinitions.Is(true);
            Given.That(Item).ExistingStepDefinitions.Are(ExistingStepDefinitions);
        }
Beispiel #34
0
 public static string GetTrnaAminoacid(FeatureItem item)
 {
     return(GetTrnaAminoacid(item.Name));
 }
Beispiel #35
0
        private Feature ParseFeature(string FeatureName, string Content, FeatureItem FeatureItem)
        {
            Feature = new Feature
            {
                FileName = FeatureName,
                Content = Content.TrimLines(),
            };

            if (IsNotAValidFeature) return InvalidFeature;

            Feature.Namespace = FeatureItem.DefaultNamespace;
            Feature.Name = Name;
            Feature.DeclaredStepDefinitions = DeclaredStepDefinitions;

            // Hack Tech Debt
            Feature.Content = Content;
            Feature.Scenarios = ScenarioTokenizer.ScenariosFrom(Content);

            Feature.Steps.ForEach(Step => Step.Feature = Feature);

            return Feature;
        }
Beispiel #36
0
        public void GenBankMetadataClone()
        {
            LocationBuilder locBuilder = new LocationBuilder();
            GenBankMetadata metadata   = new GenBankMetadata();

            metadata.Accession         = new GenBankAccession();
            metadata.Accession.Primary = "PAccession";
            metadata.Accession.Secondary.Add("SAccession1");
            metadata.Accession.Secondary.Add("SAccession2");
            metadata.BaseCount = "a 1 c 2";
            metadata.Comments.Add("Comment1");
            metadata.Comments.Add("Comment2");
            metadata.Contig      = "Contig Info";
            metadata.DBLink      = new CrossReferenceLink();
            metadata.DBLink.Type = CrossReferenceType.Project;
            metadata.DBLink.Numbers.Add("100");
            metadata.DBLink.Numbers.Add("200");
            metadata.DBSource   = "DbSourceInfo";
            metadata.Definition = "Defination info";
            metadata.Features   = new SequenceFeatures();
            FeatureItem   feature         = new FeatureItem("feature1", "1");
            List <string> qualifierValues = new List <string>();

            qualifierValues.Add("qualifier1value1");
            qualifierValues.Add("qualifier1value2");
            feature.Qualifiers.Add("qualifier1", qualifierValues);
            metadata.Features.All.Add(feature);

            feature         = new FeatureItem("feature2", "2");
            qualifierValues = new List <string>();
            qualifierValues.Add("qualifier2value1");
            qualifierValues.Add("qualifier2value2");
            feature.Qualifiers.Add("qualifier2", qualifierValues);
            metadata.Features.All.Add(feature);
            feature         = new FeatureItem("feature2", "2");
            qualifierValues = new List <string>();
            qualifierValues.Add("qualifier2value1");
            qualifierValues.Add("qualifier2value2");
            feature.Qualifiers.Add("qualifier2", qualifierValues);
            metadata.Features.All.Add(feature);

            metadata.Keywords             = "keywords data";
            metadata.Locus                = new GenBankLocusInfo();
            metadata.Locus.Date           = DateTime.Now;
            metadata.Locus.DivisionCode   = SequenceDivisionCode.CON;
            metadata.Locus.MoleculeType   = MoleculeType.DNA;
            metadata.Locus.Name           = "LocusName";
            metadata.Locus.SequenceLength = 100;
            metadata.Locus.SequenceType   = "bp";
            metadata.Locus.Strand         = SequenceStrandType.Double;
            metadata.Locus.StrandTopology = SequenceStrandTopology.Linear;
            metadata.Origin               = "origin info";
            metadata.Primary              = "Primary info";
            metadata.Project              = new ProjectIdentifier();
            metadata.Project.Name         = "Project1";
            metadata.Project.Numbers.Add("101");
            metadata.Project.Numbers.Add("201");
            CitationReference reference = new CitationReference();

            reference.Authors     = "Authors";
            reference.Consortiums = "Consortiums";
            reference.Journal     = "Journal";
            reference.Location    = "3";
            reference.Medline     = "Medline info";
            reference.Number      = 1;
            reference.PubMed      = "pubmid";
            reference.Remarks     = "remarks";
            reference.Title       = "Title of the book";
            metadata.References.Add(reference);
            reference             = new CitationReference();
            reference.Authors     = "Authors";
            reference.Consortiums = "Consortiums";
            reference.Journal     = "Journal";
            reference.Location    = "4";
            reference.Medline     = "Medline info";
            reference.Number      = 2;
            reference.PubMed      = "pubmid";
            reference.Remarks     = "remarks";
            reference.Title       = "Title of the book";
            metadata.References.Add(reference);
            metadata.Segment                     = new SequenceSegment();
            metadata.Segment.Count               = 2;
            metadata.Segment.Current             = 1;
            metadata.Source                      = new SequenceSource();
            metadata.Source.CommonName           = "ABC Xyz";
            metadata.Source.Organism.Genus       = "ABC";
            metadata.Source.Organism.Species     = "Xyz";
            metadata.Source.Organism.ClassLevels = "123 123";
            metadata.Version                     = new GenBankVersion();
            metadata.Version.Accession           = "PAccession";
            metadata.Version.Version             = "1";
            metadata.Version.GINumber            = "12345";

            GenBankMetadata clonemetadta = metadata.Clone();

            Assert.AreEqual(clonemetadta.Accession.Primary, metadata.Accession.Primary);

            for (int i = 0; i < clonemetadta.Accession.Secondary.Count; i++)
            {
                Assert.AreEqual(clonemetadta.Accession.Secondary[i], metadata.Accession.Secondary[i]);
            }

            Assert.AreEqual(clonemetadta.BaseCount, metadata.BaseCount);

            for (int i = 0; i < clonemetadta.Comments.Count; i++)
            {
                Assert.AreEqual(clonemetadta.Comments[i], metadata.Comments[i]);
            }

            Assert.AreEqual(clonemetadta.Contig, metadata.Contig);

            Assert.AreEqual(clonemetadta.DBLink.Type, metadata.DBLink.Type);

            for (int i = 0; i < clonemetadta.DBLink.Numbers.Count; i++)
            {
                Assert.AreEqual(clonemetadta.DBLink.Numbers[i], metadata.DBLink.Numbers[i]);
            }

            Assert.AreEqual(clonemetadta.DBSource, metadata.DBSource);
            Assert.AreEqual(clonemetadta.Definition, metadata.Definition);

            for (int i = 0; i < clonemetadta.Features.All.Count; i++)
            {
                Assert.AreEqual(clonemetadta.Features.All[i].Key, metadata.Features.All[i].Key);
                Assert.AreEqual(locBuilder.GetLocationString(clonemetadta.Features.All[i].Location), locBuilder.GetLocationString(metadata.Features.All[i].Location));

                foreach (KeyValuePair <string, List <string> > kvp in clonemetadta.Features.All[i].Qualifiers)
                {
                    if (metadata.Features.All[i].Qualifiers.ContainsKey(kvp.Key))
                    {
                        if (kvp.Value == null)
                        {
                            Assert.IsNull(metadata.Features.All[i].Qualifiers[kvp.Key]);
                        }
                        else
                        {
                            for (int j = 0; j < kvp.Value.Count; j++)
                            {
                                Assert.AreEqual(kvp.Value[j], metadata.Features.All[i].Qualifiers[kvp.Key][j]);
                            }
                        }
                    }
                    else
                    {
                        Assert.Fail();
                    }
                }
            }

            Assert.AreEqual(clonemetadta.Keywords, metadata.Keywords);
            Assert.AreEqual(clonemetadta.Locus.Date, metadata.Locus.Date);
            Assert.AreEqual(clonemetadta.Locus.DivisionCode, metadata.Locus.DivisionCode);
            Assert.AreEqual(clonemetadta.Locus.MoleculeType, metadata.Locus.MoleculeType);
            Assert.AreEqual(clonemetadta.Locus.Name, metadata.Locus.Name);
            Assert.AreEqual(clonemetadta.Locus.SequenceLength, metadata.Locus.SequenceLength);
            Assert.AreEqual(clonemetadta.Locus.SequenceType, metadata.Locus.SequenceType);
            Assert.AreEqual(clonemetadta.Locus.Strand, metadata.Locus.Strand);
            Assert.AreEqual(clonemetadta.Locus.StrandTopology, metadata.Locus.StrandTopology);
            Assert.AreEqual(clonemetadta.Origin, clonemetadta.Origin);
            Assert.AreEqual(clonemetadta.Primary, metadata.Primary);
            Assert.AreEqual(clonemetadta.Project.Name, metadata.Project.Name);
            for (int i = 0; i < clonemetadta.Project.Numbers.Count; i++)
            {
                Assert.AreEqual(clonemetadta.Project.Numbers[i], metadata.Project.Numbers[i]);
            }

            for (int i = 0; i < clonemetadta.References.Count; i++)
            {
                Assert.AreEqual(clonemetadta.References[i].Authors, metadata.References[i].Authors);
                Assert.AreEqual(clonemetadta.References[i].Consortiums, metadata.References[i].Consortiums);
                Assert.AreEqual(clonemetadta.References[i].Journal, metadata.References[i].Journal);
                Assert.AreEqual(clonemetadta.References[i].Location, metadata.References[i].Location);
                Assert.AreEqual(clonemetadta.References[i].Medline, metadata.References[i].Medline);
                Assert.AreEqual(clonemetadta.References[i].Number, metadata.References[i].Number);
                Assert.AreEqual(clonemetadta.References[i].PubMed, metadata.References[i].PubMed);
                Assert.AreEqual(clonemetadta.References[i].Remarks, metadata.References[i].Remarks);
                Assert.AreEqual(clonemetadta.References[i].Title, metadata.References[i].Title);
            }

            Assert.AreEqual(clonemetadta.Segment.Current, metadata.Segment.Current);
            Assert.AreEqual(clonemetadta.Segment.Count, metadata.Segment.Count);
            Assert.AreEqual(clonemetadta.Source.CommonName, metadata.Source.CommonName);
            Assert.AreEqual(clonemetadta.Source.Organism.ClassLevels, metadata.Source.Organism.ClassLevels);
            Assert.AreEqual(clonemetadta.Source.Organism.Genus, metadata.Source.Organism.Genus);
            Assert.AreEqual(clonemetadta.Source.Organism.Species, metadata.Source.Organism.Species);
            Assert.AreEqual(clonemetadta.Version.Accession, metadata.Version.Accession);
            Assert.AreEqual(clonemetadta.Version.CompoundAccession, metadata.Version.CompoundAccession);
            Assert.AreEqual(clonemetadta.Version.GINumber, metadata.Version.GINumber);
            Assert.AreEqual(clonemetadta.Version.Version, metadata.Version.Version);
        }
Beispiel #37
0
 public Feature FeatureFrom(string FeatureText, FeatureItem FeatureItem)
 {
     return(ParseFeature(null, FeatureText, FeatureItem));
 }
Beispiel #38
0
        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);
        }
Beispiel #39
0
 //public static string GetQualifierStringFromCDS(CodingSequence cds, string qualifierKey)
 public static string GetQualifierStringFromCDS(FeatureItem cds, string qualifierKey)
 {
     foreach (KeyValuePair<string, List<string>> q in cds.Qualifiers)
     {
         if (q.Key == qualifierKey)
         {
             return q.Value[0].Trim('"');
         }
     }
     return "N/A";
 }
Beispiel #40
0
 public Feature FeatureFrom(FeatureFile FeatureFile, FeatureItem FeatureItem)
 {
     return ParseFeature(FeatureFile.Name, FeatureFile.Content, FeatureItem);
 }
Beispiel #41
0
 public Feature FeatureFrom(string FeatureText, FeatureItem FeatureItem)
 {
     return ParseFeature(null, FeatureText, FeatureItem);
 }
 // Setup
 void Given_the_Step_Definition(string ExistingStepDefinitions)
 {
     Item = Create.TestObjectFor<FeatureItem>();
     Given.That(Item).ContainsStepDefinitions.Is(true);
     Given.That(Item).ExistingStepDefinitions.Are(ExistingStepDefinitions);
 }
Beispiel #43
0
 public static string GetTrnaAnticodon(FeatureItem item)
 {
     return(GetTrnaAnticodon(item.Name));
 }