Exemple #1
0
 public IEnumerator LoadSceneResource(IInfoData infoData,
                                      IResourceManager.LoadBundleFinish delFinish,
                                      object param1,
                                      object param2)
 {
     yield return(sceneBundleManager.LoadResource(infoData, delFinish, param1, param2));
 }
Exemple #2
0
        public IVariant[] CreateVariants(IChromosome chromosome, int start, int end, string refAllele,
                                         string[] altAlleles, IInfoData infoData, bool[] isDecomposed, bool isRecomposed, List <string>[] linkedVids, string globalMajorAllele)
        {
            string firstAltAllele   = altAlleles[0];
            bool   isReference      = globalMajorAllele != null;
            bool   isSymbolicAllele = IsSymbolicAllele(firstAltAllele);
            var    variantCategory  = GetVariantCategory(firstAltAllele, isReference, isSymbolicAllele, infoData.SvType);

            if (isReference)
            {
                return new[] { GetVariant(chromosome, start, end, refAllele, firstAltAllele, infoData, variantCategory, isDecomposed[0], isRecomposed, linkedVids?[0]?.ToArray(), globalMajorAllele) }
            }
            ;

            _sequenceProvider.LoadChromosome(chromosome);
            var variants = new List <IVariant>();

            for (var i = 0; i < altAlleles.Length; i++)
            {
#if (!NI_ALLELE)
                if (VcfCommon.IsNonInformativeAltAllele(altAlleles[i]))
                {
                    continue;
                }
#endif
                bool isDecomposedVar = isDecomposed[i];
                (int shiftedStart, string shiftedRef, string shiftedAlt) =
                    VariantUtils.TrimAndLeftAlign(start, refAllele, altAlleles[i], _sequenceProvider.Sequence);

                variants.Add(GetVariant(chromosome, shiftedStart, end - (start - shiftedStart), shiftedRef, shiftedAlt, infoData, variantCategory, isDecomposedVar, isRecomposed, linkedVids?[i]?.ToArray(), null));
            }

            return(variants.Count == 0 ? null : variants.ToArray());
        }
Exemple #3
0
        private IVariant GetVariant(IChromosome chromosome, int start, int end, string refAllele, string altAllele,
                                    IInfoData infoData, VariantCategory category, bool isDecomposedVar, bool isRecomposed, string[] linkedVids, string globalMajorAllele)
        {
            switch (category)
            {
            case VariantCategory.Reference:
                return(ReferenceVariantCreator.Create(chromosome, start, end, refAllele, altAllele, globalMajorAllele));

            case VariantCategory.SmallVariant:
                return(SmallVariantCreator.Create(chromosome, start, refAllele, altAllele, isDecomposedVar, isRecomposed, linkedVids));

            case VariantCategory.ROH:
                return(RohVariantCreator.Create(chromosome, start, refAllele, altAllele, infoData));

            case VariantCategory.SV:
                var svBreakEnds = infoData.SvType == VariantType.translocation_breakend ?
                                  GetTranslocationBreakends(chromosome, refAllele, altAllele, start)
                        : GetSvBreakEnds(chromosome.EnsemblName, start, infoData.SvType, infoData.End);
                return(StructuralVariantCreator.Create(chromosome, start, refAllele, altAllele, svBreakEnds, infoData));

            case VariantCategory.CNV:
                return(CnvCreator.Create(chromosome, start, refAllele, altAllele, infoData));

            case VariantCategory.RepeatExpansion:
                return(RepeatExpansionCreator.Create(chromosome, start, refAllele, altAllele, infoData));

            default:
                throw new NotImplementedException("Unrecognized variant category.");
            }
        }
        private IVariant GetVariant(IChromosome chromosome, int start, int end, string refAllele, string altAllele,
                                    IInfoData infoData, VariantCategory category, bool isDecomposed, bool isRecomposed, string[] linkedVids)
        {
            string vid   = _vidCreator.Create(_sequence, category, infoData.SvType, chromosome, start, end, refAllele, altAllele, infoData.RepeatUnit);
            int    svEnd = infoData.End ?? start;

            // ReSharper disable once SwitchStatementMissingSomeCases
            switch (category)
            {
            case VariantCategory.SmallVariant:
                return(SmallVariantCreator.Create(chromosome, start, end, refAllele, altAllele, isDecomposed, isRecomposed, linkedVids, vid,
                                                  false));

            case VariantCategory.ROH:
                return(RohVariantCreator.Create(chromosome, start, svEnd, refAllele, altAllele, vid));

            case VariantCategory.SV:
                return(StructuralVariantCreator.Create(chromosome, start, svEnd, refAllele, altAllele, infoData.SvType, vid));

            case VariantCategory.CNV:
                return(CnvCreator.Create(chromosome, start, svEnd, refAllele, altAllele, vid));

            case VariantCategory.RepeatExpansion:
                return(RepeatExpansionCreator.Create(chromosome, start, svEnd, refAllele, altAllele, infoData.RefRepeatCount, vid));

            default:
                throw new NotImplementedException($"Unrecognized variant category: {category}");
            }
        }
        void DoLoadResource(IInfoData iData, GameObject loadObj, object fun, object param)
        {
            ModelInfoData infoData = iData as ModelInfoData;

            if (infoData == null)
            {
                return;
            }

            Debug.Log("DoLoadResource:" + infoData.name);

            ClientCha clientCha = param as ClientCha;

            if (clientCha == null)
            {
                return;
            }

            GameObject newModelObj = GameObject.Instantiate(loadObj, clientCha.transform) as GameObject;

            if (newModelObj == null)
            {
                return;
            }
        }
Exemple #6
0
        public override IEnumerator LoadResource(IInfoData iData, LoadBundleFinish delFinish, object param1, object param2)
        {
            UIInfoData infoData = iData as UIInfoData;

            if (infoData == null)
            {
                yield break;
            }

#if UNITY_EDITOR
            if (PlayerSetting.SimulateAssetBundleInEditor)
            {
                string     assertMainPath = GetBundleLoadUrl(infoData.path, infoData.name + ".prefab");
                GameObject objectRet      = AssetDatabase.LoadAssetAtPath <GameObject>(assertMainPath);

                if (objectRet == null)
                {
                    Debug.Log(infoData.name);
                }
                delFinish(infoData, objectRet, param1, param2);
                yield break;
            }
#endif
            yield return(LoadManifest());

            yield return(LoadCommonUI());

            string bundleName = infoData.GetBundleName().ToLower();

            yield return(LoadPrefabUI(bundleName, true, true));

            yield return(LoadGameObject(bundleName, infoData, delFinish, param1, param2));

            yield return(null);
        }
Exemple #7
0
 private static int ExtractEnd(IInfoData infoData, int start, int refAlleleLength)
 {
     if (infoData.End != null)
     {
         return(infoData.End.Value);
     }
     return(start + refAlleleLength - 1);
 }
Exemple #8
0
        void DoLoadUIItem(IInfoData iData, GameObject curItem, object fun, object param)
        {
            UIInfoData uiData = iData as UIInfoData;

            if (null != fun)
            {
                OnLoadUIItemDelegate delLoadItem = fun as OnLoadUIItemDelegate;
                delLoadItem(curItem, param);
            }
        }
        public override IEnumerator LoadResource(IInfoData iData, LoadBundleFinish delFinish, object param1, object param2)
        {
            ModelInfoData infoData = iData as ModelInfoData;

            if (infoData == null)
            {
                yield break;
            }

#if UNITY_EDITOR
            if (PlayerSetting.SimulateAssetBundleInEditor)
            {
                if (null != delFinish)
                {
                    string     assetPath = GetBundleLoadUrl(PathModelPrefab, infoData.name.ToLower(), ".prefab");
                    GameObject gb        = AssetDatabase.LoadAssetAtPath <GameObject>(assetPath);
                    delFinish(infoData, gb, param1, param2);
                }

                yield break;
            }
#endif

            ///这里充当加载标识的作用,表示如果当前已经在加载这个资源了,则等待直到资源加载完成
            while (m_dicSingleBundleRef.Contains(infoData.GetBundleName()))
            {
                yield return(0);
            }

            ///添加对应的引用计数
            if (!m_dicSingleBundleRef.Contains(infoData.GetBundleName()))
            {
                m_dicSingleBundleRef.Add(infoData.GetBundleName());
            }

            if (LoadFromCache(infoData, delFinish, param1, param2))
            {
                yield break;
            }

            string assetBundleName = infoData.name.ToLower();

            string loadPath = GetBundleLoadUrl(PathModelPrefab, assetBundleName, m_bundleExt);

            AssetBundleCreateRequest req = GetBundleRequest(loadPath);
            yield return(req);

            yield return(ProcessLoad(req.assetBundle, infoData, delFinish, param1, param2));
        }
Exemple #10
0
 public Position(IChromosome chromosome, int start, int end, string refAllele, string[] altAlleles,
                 double?quality, string[] filters, IVariant[] variants, ISample[] samples, IInfoData infoData,
                 string[] vcfFields, bool[] isDecomposed, bool isRecomposed)
 {
     Chromosome   = chromosome;
     Start        = start;
     End          = end;
     RefAllele    = refAllele;
     AltAlleles   = altAlleles;
     Quality      = quality;
     Filters      = filters;
     Variants     = variants;
     Samples      = samples;
     InfoData     = infoData;
     VcfFields    = vcfFields;
     IsDecomposed = isDecomposed;
     IsRecomposed = isRecomposed;
 }
Exemple #11
0
        public IVariant[] CreateVariants(IChromosome chromosome, int start, int end, string refAllele,
                                         string[] altAlleles, IInfoData infoData, bool[] isDecomposedByAllele, bool isRecomposed, List <string>[] linkedVids, string globalMajorAllele)
        {
            bool isReference = globalMajorAllele != null;

            if (isReference)
            {
                return(ReferenceVariantCreator.Create(_vidCreator, _sequence, chromosome, start, end, refAllele, altAlleles[0], globalMajorAllele));
            }

            var variantCategory = GetVariantCategory(altAlleles[0], infoData.SvType);

            var variants = new List <IVariant>(altAlleles.Length);

            for (var i = 0; i < altAlleles.Length; i++)
            {
#if (!NI_ALLELE)
                if (VcfCommon.IsNonInformativeAltAllele(altAlleles[i]))
                {
                    continue;
                }
#endif
                string altAllele = altAlleles[i];

                bool isDecomposed = isDecomposedByAllele[i];
                if (isDecomposed && isRecomposed)
                {
                    throw new InvalidDataException("A variant can't be both decomposed and recomposed");
                }

                (int shiftedStart, string shiftedRef, string shiftedAlt) =
                    VariantUtils.TrimAndLeftAlign(start, refAllele, altAllele, _sequence);

                if (variantCategory == VariantCategory.SmallVariant || variantCategory == VariantCategory.Reference)
                {
                    end = shiftedStart + shiftedRef.Length - 1;
                }

                variants.Add(GetVariant(chromosome, shiftedStart, end, shiftedRef, shiftedAlt, infoData, variantCategory,
                                        isDecomposed, isRecomposed, linkedVids?[i]?.ToArray()));
            }

            return(variants.Count == 0 ? null : variants.ToArray());
        }
        public static IVariant Create(IChromosome chromosome, int start, string refAllele, string altAllele,
                                      IBreakEnd[] breakEnds, IInfoData infoData, bool enableVerboseTranscript)
        {
            var svType = infoData?.SvType ?? VariantType.unknown;

            if (svType == VariantType.duplication && altAllele == TandemDuplicationAltAllele)
            {
                svType = VariantType.tandem_duplication;
            }

            if (svType != VariantType.translocation_breakend)
            {
                start++;
            }
            var end = infoData?.End ?? start;
            var vid = GetVid(chromosome.EnsemblName, start, end, svType, breakEnds);

            return(new Variant(chromosome, start, end, refAllele, altAllele, svType, vid, false, false, false, null,
                               breakEnds, enableVerboseTranscript ? VerbosedStructuralVariantBehavior : StructuralVariantBehavior));
        }
Exemple #13
0
        void DoAddUI(IInfoData iData, GameObject curWindow, object fun, object param)
        {
            UIInfoData uiData = iData as UIInfoData;

            Debug.Log("DoAddUI:" + uiData.name);

            if (!m_dicWaitLoad.Remove(uiData.name))
            {
                DestroyBundle(uiData.name);
                return;
            }

            UILayer.ShowUIResult showUIResult = UILayerManager.Instance.ShowUI(uiData, curWindow);

            if (showUIResult != UILayer.ShowUIResult.ErrorNotShowed)
            {
                if (null != fun)
                {
                    OnOpenUIDelegate delOpenUI = fun as OnOpenUIDelegate;
                    delOpenUI(curWindow != null, param);
                }
            }
        }
Exemple #14
0
        public static IVariant Create(IChromosome chromosome, int start, string refAllele, string altAllele, IInfoData infoData)
        {
            start++;//for the padding base
            if (infoData.RefRepeatCount == 0)
            {
                return(null);
            }

            (int repeatCount, bool foundError) = altAllele.Trim('<', '>').Substring(3).OptimizedParseInt32();
            if (foundError)
            {
                return(null);
            }

            if (infoData.RefRepeatCount != null)
            {
                var svType = GetRepeatExpansionType(infoData.RefRepeatCount.Value, repeatCount);

                int    end = infoData.End ?? 0;
                string vid = GetVid(chromosome.EnsemblName, start, end, infoData.RepeatUnit, repeatCount);

                return(new Variant(chromosome, start, end, refAllele, altAllele, svType, vid, false, false, false, null,
                                   null, AnnotationBehavior.RepeatExpansionBehavior));
            }
            return(null);
        }
Exemple #15
0
        private IVariant GetVariant(IChromosome chromosome, string id, int start, int end, string refAllele, string altAllele, IInfoData infoData, VariantCategory category, bool isDecomposedVar, bool isRecomposed)
        {
            switch (category)
            {
            case VariantCategory.Reference:
                var refMinorGlobalMajorAllele = _refMinorProvider?.GetGlobalMajorAlleleForRefMinor(chromosome, start);
                return(ReferenceVariantCreator.Create(chromosome, start, end, refAllele, altAllele, refMinorGlobalMajorAllele));

            case VariantCategory.SmallVariant:
                return(SmallVariantCreator.Create(chromosome, start, refAllele, altAllele, isDecomposedVar, isRecomposed));

            case VariantCategory.SV:
                var svBreakEnds = infoData.SvType == VariantType.translocation_breakend ?
                                  GetTranslocationBreakends(chromosome, refAllele, altAllele, start)
                        : GetSvBreakEnds(chromosome.EnsemblName, start, infoData.SvType, infoData.End, infoData.IsInv3, infoData.IsInv5);
                return(StructuralVariantCreator.Create(chromosome, start, refAllele, altAllele, svBreakEnds, infoData, _enableVerboseTranscript));

            case VariantCategory.CNV:
                return(CnvCreator.Create(chromosome, id, start, refAllele, altAllele, infoData, _enableVerboseTranscript));

            case VariantCategory.RepeatExpansion:
                return(RepeatExpansionCreator.Create(chromosome, start, refAllele, altAllele, infoData));

            default:
                throw new NotImplementedException("Unrecognized variant category.");
            }
        }
Exemple #16
0
        public IVariant[] CreateVariants(IChromosome chromosome, string id, int start, int end, string refAllele, string[] altAlleles, IInfoData infoData, bool[] isDecomposed, bool isRecomposed)
        {
            var isReference      = altAlleles.Length == 1 && VcfCommon.ReferenceAltAllele.Contains(altAlleles[0]);
            var isSymbolicAllele = altAlleles.Any(IsSymbolicAllele);
            var variantCategory  = GetVariantCategory(altAlleles, isReference, isSymbolicAllele, infoData.SvType);

            if (isReference)
            {
                return new[] { GetVariant(chromosome, id, start, end, refAllele, altAlleles[0], infoData, variantCategory, isDecomposed[0], isRecomposed) }
            }
            ;

            var variants = new List <IVariant>();

            // ReSharper disable once LoopCanBeConvertedToQuery
            for (int i = 0; i < altAlleles.Length; i++)
            {
                string altAllele       = altAlleles[i];
                bool   isDecomposedVar = isDecomposed[i];
                if (VcfCommon.NonInformativeAltAllele.Contains(altAllele))
                {
                    continue;
                }
                variants.Add(GetVariant(chromosome, id, start, end, refAllele, altAllele, infoData, variantCategory, isDecomposedVar, isRecomposed));
            }

            return(variants.Count == 0 ? null : variants.ToArray());
        }
Exemple #17
0
 public abstract IEnumerator LoadResource(IInfoData infoData,
                                          LoadBundleFinish delFinish,
                                          object param1,
                                          object param2);
Exemple #18
0
        public static IVariant Create(IChromosome chromosome, int start, string refAllele, string altAllele, IInfoData infoData)
        {
            start++;
            int end = infoData?.End ?? start;

            if (altAllele != "<ROH>")
            {
                throw new ArgumentException("The only allowed ALT allele is <ROH>.");
            }

            string vid = $"{chromosome.EnsemblName}:{start}:{end}:ROH";

            return(CreateRohVariant(chromosome, start, end, refAllele, altAllele, vid));
        }
Exemple #19
0
        public static IVariant Create(IChromosome chromosome, string id, int start, string refAllele, string altAllele, IInfoData infoData, bool enableVerboseTranscript)
        {
            start++;
            // CNV caller's can use <DUP> to indicate a copy number increase where the exact copy number is unknown
            if (altAllele == "<DUP>")
            {
                var dupEnd = infoData.End ?? start;
                var dupVid = $"{chromosome.EnsemblName}:{start}:{dupEnd}:DUP";
                return(new Variant(chromosome, start, dupEnd, refAllele, altAllele, VariantType.copy_number_gain, dupVid, false, false, false, null, null, enableVerboseTranscript ? VerbosedCnvBehavior : CnvBehavior));
            }

            var copyNumber = GetCopyNumber(altAllele);

            var svType = GetType(copyNumber);
            var end    = infoData.End ?? start;
            var vid    = GetVid(chromosome.EnsemblName, start, end, copyNumber);

            return(new Variant(chromosome, start, end, refAllele, altAllele, svType, vid, false, false, false, null, null, enableVerboseTranscript ? VerbosedCnvBehavior : CnvBehavior));
        }
Exemple #20
0
        public static IVariant Create(IChromosome chromosome, int start, string refAllele, string altAllele, IInfoData infoData)
        {
            start++;
            int    end = infoData.End ?? start;
            string vid;

            switch (altAllele)
            {
            case "<CNV>":
                vid = $"{chromosome.EnsemblName}:{start}:{end}:CNV";
                return(CreateCNV(chromosome, start, end, refAllele, altAllele, VariantType.copy_number_variation, vid));

            case "<DEL>":
                vid = $"{chromosome.EnsemblName}:{start}:{end}:CDEL";
                return(CreateCNV(chromosome, start, end, refAllele, altAllele, VariantType.copy_number_loss, vid));

            case "<DUP>":
                vid = $"{chromosome.EnsemblName}:{start}:{end}:CDUP";
                return(CreateCNV(chromosome, start, end, refAllele, altAllele, VariantType.copy_number_gain, vid));
            }

            // the remaining cases are either <CNV> or <CN1>, <CN4>, etc.
            // do not try to determine the overall copy number gain or loss
            // - for allele-specific you'll probably introduce inconsistency
            // - for normal <CNV>, you'll probably get type wrong for MT, sex chromosomes, etc.
            string trimmedAltAllele = altAllele.Substring(1, altAllele.Length - 2);

            vid = $"{chromosome.EnsemblName}:{start}:{end}:{trimmedAltAllele}";
            return(CreateCNV(chromosome, start, end, refAllele, altAllele, VariantType.copy_number_variation, vid));
        }
Exemple #21
0
        public static IVariant Create(IChromosome chromosome, int start, string refAllele, string altAllele, IInfoData infoData)
        {
            start++;            //for the padding base
            if (infoData.RefRepeatCount == 0)
            {
                return(null);
            }

            var repeatCount = int.Parse(altAllele.Trim('<', '>').Substring(3));

            var svType = repeatCount == infoData.RefRepeatCount ? VariantType.short_tandem_repeat_variation:
                         repeatCount > infoData.RefRepeatCount
                                        ? VariantType.short_tandem_repeat_expansion
                                        : VariantType.short_tandem_repeat_contraction;

            var end = infoData.End ?? 0;
            var vid = GetVid(chromosome.EnsemblName, start, end, infoData.RepeatUnit, repeatCount);

            return(new Variant(chromosome, start, end, refAllele, altAllele, svType, vid, false, false, false, null, null, RepeatExpansionBehavior));
        }