コード例 #1
0
        public async Task <GeneEditorViewModel> OptimizeDNASequence(GeneEditorViewModel geneEditorViewModel)
        {
            string optimizedDNASequence = null;

            geneEditorViewModel.InitialSequence = geneEditorViewModel.InitialSequence.Trim().Replace(" ", string.Empty).ToUpper();

            if (geneEditorViewModel.SelectedInitialSequenceType == InitialSequenceType.ProteinInitialSequence)
            {
                optimizedDNASequence = await codonOptimizationService.OptimizeProteinSequence(
                    geneEditorViewModel.InitialSequence, geneEditorViewModel.SelectedOrganismId);
            }
            else if (geneEditorViewModel.SelectedInitialSequenceType == InitialSequenceType.DNAInitialSequence)
            {
                optimizedDNASequence = await codonOptimizationService.OptimizeDNASequence(
                    geneEditorViewModel.InitialSequence, geneEditorViewModel.SelectedOrganismId);
            }

            geneEditorViewModel.OptimizedDNASequence = optimizedDNASequence;

            Gene gene = CreateGene(geneEditorViewModel.Name, geneEditorViewModel.OptimizedDNASequence,
                                   geneEditorViewModel.SelectedOrganismId, geneEditorViewModel.KPlusConcentration, geneEditorViewModel.DMSO);

            geneEditorViewModel.GeneId                        = gene.Id;
            geneEditorViewModel.GeneFragmentLength            = DefaultOligoLength;
            geneEditorViewModel.GeneFragmentOverlappingLength = DefaultOverlappingLength;
            geneEditorViewModel.IsGeneOptimized               = true;

            Organism organism = unitOfWork.GetById <Organism>(geneEditorViewModel.SelectedOrganismId);

            geneEditorViewModel.SelectedOrganismName = organism.Name;

            return(geneEditorViewModel);
        }
コード例 #2
0
        public GeneEditorViewModel GetGeneEditorViewModel(string geneId)
        {
            Gene gene = unitOfWork.GetById <Gene>(geneId);

            GeneEditorViewModel geneEditorViewModel = new GeneEditorViewModel();

            geneEditorViewModel.IsGeneOptimized      = true;
            geneEditorViewModel.Name                 = gene.Name;
            geneEditorViewModel.GeneId               = gene.Id;
            geneEditorViewModel.OptimizedDNASequence = gene.DNASequence;

            Organism organism = unitOfWork.GetById <Organism>(gene.OrganismId);

            geneEditorViewModel.AllOrganisms = new List <ListItem>()
            {
                new ListItem {
                    Id = organism.Id, Text = organism.Name
                }
            };
            geneEditorViewModel.SelectedOrganismId   = organism.Id;
            geneEditorViewModel.SelectedOrganismName = organism.Name;

            geneEditorViewModel.KPlusConcentration = gene.KPlusConcentration;
            geneEditorViewModel.DMSO = gene.DMSO;

            var geneFragment = gene.GeneFragments.First();

            geneEditorViewModel.GeneFragmentLength            = geneFragment.OligoLength;
            geneEditorViewModel.GeneFragmentOverlappingLength = geneFragment.OverlappingLength;

            return(geneEditorViewModel);
        }
コード例 #3
0
        public async Task <GeneEditorViewModel> GetGeneEditorViewModel()
        {
            GeneEditorViewModel geneEditorViewModel = new GeneEditorViewModel();

            geneEditorViewModel.SelectedInitialSequenceType = InitialSequenceType.ProteinInitialSequence;

            IEnumerable <Organism> organisms = await unitOfWork.GetAll <Organism>().ToListAsync();

            geneEditorViewModel.AllOrganisms = organisms.Select(x => new ListItem()
            {
                Id = x.Id, Text = x.Name
            });
            if (geneEditorViewModel.AllOrganisms.Any())
            {
                ListItem defaultOrganism = geneEditorViewModel.AllOrganisms.First();
                geneEditorViewModel.SelectedOrganismId = defaultOrganism.Id;
            }

            geneEditorViewModel.KPlusConcentration = DefaultKPlusConcentration;
            geneEditorViewModel.DMSO = DefaultDMSO;

            geneEditorViewModel.IsGeneOptimized = false;

            return(geneEditorViewModel);
        }
コード例 #4
0
        public async Task <JsonResult> UpdateGeneFragments(GeneEditorViewModel geneEditorViewModel)
        {
            await geneEditorService.UpdateGeneFragments(
                geneEditorViewModel.GeneId, geneEditorViewModel.OptimizedDNASequence,
                geneEditorViewModel.GeneFragmentLength, geneEditorViewModel.GeneFragmentOverlappingLength,
                geneEditorViewModel.KPlusConcentration, geneEditorViewModel.DMSO);

            return(JsonSuccess(geneEditorViewModel.GeneId));
        }
コード例 #5
0
        public async Task <JsonResult> OptimizeGene(GeneEditorViewModel geneEditorViewModel)
        {
            //            if (string.IsNullOrWhiteSpace(geneEditorViewModel.ProteinInitialSequence) &&
            //                (string.IsNullOrWhiteSpace(geneEditorViewModel.DNAInitialSequence) || geneEditorViewModel.DNAInitialSequence.Length % 3 != 0))
            //            {
            //                ModelState.AddModelError(string.Empty, "Wrong sequence");
            //                return View(geneEditorViewModel);
            //            }

            //            ModelState.Clear();
            try
            {
                geneEditorViewModel = await geneEditorService.OptimizeDNASequence(geneEditorViewModel);

                return(Json(geneEditorViewModel));
            }
            catch (Exception ex)
            {
                return(JsonError());
            }
        }
コード例 #6
0
        public JsonResult GetGeneEditorViewModel(string geneId)
        {
            GeneEditorViewModel geneEditorViewModel = geneEditorService.GetGeneEditorViewModel(geneId);

            return(Json(geneEditorViewModel, JsonRequestBehavior.AllowGet));
        }
コード例 #7
0
        public async Task <ActionResult> Index(string genesProjectName)
        {
            GeneEditorViewModel geneEditorViewModel = await geneEditorService.GetGeneEditorViewModel();

            return(View(geneEditorViewModel));
        }
コード例 #8
0
        public async Task <ActionResult> Index()
        {
            GeneEditorViewModel geneEditorViewModel = await geneEditorService.GetGeneEditorViewModel();

            return(View(geneEditorViewModel));
        }