/// <summary>
        ///  Write out the ploidy bed file if ploidy information is available from the vcf header
        /// Only create the normal XX or XY ploidy bed file so that Canvas can properly classify any abnormalities as variant.
        /// If ploidy Y is > 1 produce the XY ploidy bed file, otherwise produce the XX ploidy bed file
        /// </summary>
        public IFileLocation CreateGermlinePloidyBed(Vcf vcf, GenomeMetadata genomeMetadata, IDirectoryLocation sampleSandbox)
        {
            string sexKaryotype = PloidyCorrector.GetSexChromosomeKaryotypeFromVcfHeader(vcf.VcfFile.FullName);

            if (sexKaryotype == null)
            {
                _logger.Warn($"Sex chromosome ploidy not found in {vcf.VcfFile} header. No ploidy will be provided to Canvas.");
                return(null);
            }
            _logger.Info($"Found sex chromosome ploidy {PloidyCorrector.PrintPloidy(sexKaryotype)} in {vcf.VcfFile}");
            var           ploidyInfo = new SamplePloidyInfo();
            IFileLocation ploidyBed  = sampleSandbox.GetFileLocation("ploidy.bed.gz");

            if (sexKaryotype.ToLower().Contains("y"))
            {
                ploidyInfo.ProvidedPloidy = SexPloidyInfo.NormalMale;
                _logger.Info($"Creating male ploidy bed file at {ploidyBed}.");
            }
            else
            {
                ploidyInfo.ProvidedPloidy = SexPloidyInfo.NormalFemale;
                _logger.Info($"Creating female ploidy bed file at {ploidyBed}.");
            }
            string headerLine = $"{PloidyCorrector.ReferenceSexChromosomeKaryotype}={PloidyCorrector.PrettyPrintPloidy(ploidyInfo.ProvidedPloidyX.Value, ploidyInfo.ProvidedPloidyY.Value)}";

            _ploidyFixer.WritePloidyBedFile(ploidyInfo, genomeMetadata, _ploidyFixer.GetParRegions(genomeMetadata),
                                            ploidyBed.FullName, headerLine, ploidy => true);
            return(ploidyBed);
        }
Beispiel #2
0
        public SpecialsController(Vcf vcf, Transform firstPersonTransform)
        {
            int specialsCount = vcf.Specials.Count;

            _specials = new Special[specialsCount];

            List <SpecialType> specialsList = vcf.Specials;

            for (int i = 0; i < specialsCount; ++i)
            {
                _specials[i] = new Special(specialsList[i]);
            }

            if (firstPersonTransform != null)
            {
                _panel = new SpecialsPanel(firstPersonTransform);

                for (int i = 0; i < MaxSpecials; ++i)
                {
                    if (i < specialsCount)
                    {
                        _panel.TryGetSpecialSprites(specialsList[i], out _specials[i].OnSprite, out _specials[i].OffSprite);
                        _panel.SetSpecialHealthGroup(i, 0);
                        _panel.SetSpecialAmmoCount(i, _specials[i].Ammo);
                    }
                    else
                    {
                        _panel.SetSpecialHealthGroup(i, 0);
                    }
                }

                _panel.SetActiveSpecial(_activeSpecial, _specials);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Write out the ploidy vcf file if ploidy information is available from the vcf header
        /// </summary>
        public Vcf CreatePloidyVcf(SampleSet <SexPloidyInfo> ploidyInfos, GenomeMetadata genomeMetadata, IDirectoryLocation sampleSandbox)
        {
            var ploidyVcf = new Vcf(sampleSandbox.GetFileLocation(PloidyVcfName));

            _ploidyFixer.WritePloidyVcfFile(ploidyVcf, ploidyInfos, genomeMetadata);
            return(ploidyVcf);
        }
Beispiel #4
0
 public CanvasSmallPedigreeOutput(
     Vcf cnvVcf,
     SampleSet <IntermediateOutput> intermediateOutputs)
 {
     CnvVcf = cnvVcf;
     IntermediateOutputs = intermediateOutputs;
 }
Beispiel #5
0
 public CanvasTumorNormalWgsInput(Bam tumorBam, Bam normalBam, Vcf normalVcf, Vcf somaticVcf, GenomeMetadata genomeMetadata)
 {
     TumorBam       = tumorBam;
     NormalBam      = normalBam;
     NormalVcf      = normalVcf;
     SomaticVcf     = somaticVcf;
     GenomeMetadata = genomeMetadata;
 }
 public CanvasTumorNormalWgsInput(Bam tumorBam, Bam normalBam, Vcf normalVcf, Vcf somaticVcf, GenomeMetadata genomeMetadata, SexPloidyInfo sexPloidy)
 {
     TumorBam       = tumorBam;
     NormalBam      = normalBam;
     NormalVcf      = normalVcf;
     SomaticVcf     = somaticVcf;
     GenomeMetadata = genomeMetadata;
     SexPloidy      = sexPloidy;
 }
Beispiel #7
0
        public static Vcf ParseVcf(string filename)
        {
            var vcf = new Vcf();

            using (var br = new Bwd2Reader(filename))
            {
                br.FindNext("VCFC");

                vcf.VariantName             = br.ReadCString(16);
                vcf.VdfFilename             = br.ReadCString(13);
                vcf.VtfFilename             = br.ReadCString(13);
                vcf.EngineType              = br.ReadUInt32();
                vcf.SuspensionType          = br.ReadUInt32();
                vcf.BrakesType              = br.ReadUInt32();
                vcf.WdfFrontFilename        = br.ReadCString(13);
                vcf.WdfMidFilename          = br.ReadCString(13);
                vcf.WdfBackFilename         = br.ReadCString(13);
                vcf.ArmorFront              = br.ReadUInt32();
                vcf.ArmorLeft               = br.ReadUInt32();
                vcf.ArmorRight              = br.ReadUInt32();
                vcf.ArmorRear               = br.ReadUInt32();
                vcf.ChassisFront            = br.ReadUInt32();
                vcf.ChassisLeft             = br.ReadUInt32();
                vcf.ChassisRight            = br.ReadUInt32();
                vcf.ChassisRear             = br.ReadUInt32();
                vcf.ArmorOrChassisLeftToAdd = br.ReadUInt32();

                br.FindNext("WEPN");
                vcf.Weapons = new List <VcfWeapon>();
                while (br.Current != null && br.Current.Name != "EXIT")
                {
                    var vcfWeapon = new VcfWeapon
                    {
                        MountPoint  = (MountPoint)br.ReadUInt32(),
                        GdfFilename = br.ReadCString(13)
                    };
                    vcf.Weapons.Add(vcfWeapon);
                    br.Next();
                }
            }

            if (vcf.WdfFrontFilename.ToUpper() != "NULL")
            {
                vcf.FrontWheelDef = WdfParser.ParseWdf(vcf.WdfFrontFilename);
            }
            if (vcf.WdfMidFilename.ToUpper() != "NULL")
            {
                vcf.MidWheelDef = WdfParser.ParseWdf(vcf.WdfMidFilename);
            }
            if (vcf.WdfBackFilename.ToUpper() != "NULL")
            {
                vcf.BackWheelDef = WdfParser.ParseWdf(vcf.WdfBackFilename);
            }

            return(vcf);
        }
Beispiel #8
0
        public static CanvasOutput GetFromStub(IFileLocation stub)
        {
            Vcf           cnvVcf = Vcf.GetVcfFromStub(stub);
            IFileLocation coverageAndVariantFrequencies = stub.AppendName(".CoverageAndVariantFrequency.txt");

            IFileLocation variantFrequencies    = stub.AppendName(".VFResults.txt.gz");
            IFileLocation variantFrequenciesBaf = stub.AppendName(".VFResults.baf");
            IFileLocation partitioned           = stub.AppendName(".partitioned");

            return(new CanvasOutput(cnvVcf, coverageAndVariantFrequencies, variantFrequencies,
                                    variantFrequenciesBaf, partitioned));
        }
Beispiel #9
0
        private CanvasOutput GetCanvasOutput(string sampleId, IDirectoryLocation sampleSandbox)
        {
            var           cnvVcf                        = new Vcf(sampleSandbox.GetFileLocation("CNV.vcf.gz"));
            var           tempCnvDirectory              = sampleSandbox.GetDirectoryLocation($"TempCNV_{sampleId}");
            var           variantFrequencies            = tempCnvDirectory.GetFileLocation($"VFResults{sampleId}.txt.gz");
            var           variantFrequenciesBaf         = tempCnvDirectory.GetFileLocation($"VFResults{sampleId}.txt.gz.baf");
            IFileLocation coverageAndVariantFrequencies = sampleSandbox.GetFileLocation("CNV.CoverageAndVariantFrequency.txt");
            IFileLocation tempStub                      = tempCnvDirectory.GetFileLocation($"{sampleId}");
            IFileLocation partitioned                   = tempStub.AppendName(".partitioned");

            return(new CanvasOutput(cnvVcf, coverageAndVariantFrequencies, variantFrequencies,
                                    variantFrequenciesBaf, partitioned));
        }
Beispiel #10
0
        public IntermediateOutput(Vcf cnvVcf, IFileLocation coverageAndVariantFrequencies, IFileLocation variantFrequencies, IFileLocation variantFrequenciesBaf,
                                  IFileLocation partitioned, IFileLocation coverageBigwig, BgzfFile bAlleleBedgraph, BgzfFile copyNumberBedgraph)
        {
            CnvVcf = cnvVcf;
#pragma warning disable CS0618 // Type or member is obsolete
            CoverageAndVariantFrequencies = coverageAndVariantFrequencies;
            VariantFrequencies            = variantFrequencies;
            VariantFrequenciesBaf         = variantFrequenciesBaf;
            Partitioned = partitioned;
#pragma warning restore CS0618 // Type or member is obsolete
            CoverageBigwig     = coverageBigwig;
            BAlleleBedgraph    = bAlleleBedgraph;
            CopyNumberBedgraph = copyNumberBedgraph;
        }
Beispiel #11
0
 public CanvasTumorNormalEnrichmentInput(
     Bam tumorBam,
     Bam normalBam,
     Vcf normalVcf,
     Vcf somaticVcf,
     GenomeMetadata genomeMetadata,
     NexteraManifest nexteraManifest)
 {
     TumorBam        = tumorBam;
     NormalBam       = normalBam;
     NormalVcf       = normalVcf;
     SomaticVcf      = somaticVcf;
     GenomeMetadata  = genomeMetadata;
     NexteraManifest = nexteraManifest;
 }
        private CanvasSmallPedigreeOutput GetCanvasOutput(SampleSet <Bam> pedigreeBams, IDirectoryLocation sampleSandbox)
        {
            var readGroupSamples    = pedigreeBams.SelectData(GetReadGroupSample);
            var intermediateResults = readGroupSamples.SelectData(readGroupSample =>
            {
                var variantFrequencies            = SingleSampleCallset.GetVfSummaryPath(sampleSandbox, readGroupSample);
                var variantFrequenciesBaf         = SingleSampleCallset.GetVfSummaryBafPath(sampleSandbox, readGroupSample);
                var partitioned                   = SingleSampleCallset.GetPartitionedPath(sampleSandbox, readGroupSample);
                var coverageAndVariantFrequencies = SingleSampleCallset.GetCoverageAndVariantFrequencyOutput(sampleSandbox, readGroupSample);
                return(new IntermediateOutput(coverageAndVariantFrequencies, variantFrequencies, variantFrequenciesBaf, partitioned));
            });
            var cnvVcf = new Vcf(sampleSandbox.GetFileLocation("CNV.vcf.gz"));

            return(new CanvasSmallPedigreeOutput(cnvVcf, intermediateResults));
        }
Beispiel #13
0
 public CanvasOutput(
     Vcf cnvVcf,
     IFileLocation coverageAndVariantFrequencies,
     IFileLocation variantFrequencies    = null,
     IFileLocation variantFrequenciesBaf = null,
     IFileLocation partitioned           = null,
     IFileLocation binSize      = null,
     IFileLocation normalBinned = null)
 {
     CnvVcf = cnvVcf;
     CoverageAndVariantFrequencies = coverageAndVariantFrequencies;
     VariantFrequencies            = variantFrequencies;
     VariantFrequenciesBaf         = variantFrequenciesBaf;
     Partitioned = partitioned;
 }
        /// <summary>
        /// Write out the ploidy bed file if ploidy information is available from the vcf header
        /// </summary>
        public IFileLocation CreatePloidyBed(Vcf vcf, GenomeMetadata genomeMetadata, IDirectoryLocation sampleSandbox)
        {
            IFileLocation ploidyBed = sampleSandbox.GetFileLocation("ploidy.bed.gz");
            string        fastaPath = genomeMetadata.Sequences.First().FastaPath;

            if (_ploidyFixer.GeneratePloidyBedFileFromVcf(
                    genomeMetadata,
                    fastaPath,
                    vcf.VcfFile.FullName,
                    ploidyBed.FullName, sampleSandbox.FullName, _logger, _workManager))
            {
                return(ploidyBed);
            }
            _logger.Warn($"Sex chromosome ploidy not found in {vcf.VcfFile} header. No ploidy will be provided to Canvas.");
            return(null);
        }
        private CanvasSmallPedigreeOutput GetCanvasOutput(SampleSet <CanvasPedigreeSample> pedigreeSamples, IDirectoryLocation sampleSandbox)
        {
            var intermediateResults = pedigreeSamples.SelectSamples(sampleInfo =>
            {
                var sampleId                      = sampleInfo.Id;
                var variantFrequencies            = SingleSampleCallset.GetVfSummaryPath(sampleSandbox, sampleId);
                var variantFrequenciesBaf         = SingleSampleCallset.GetVfSummaryBafPath(sampleSandbox, sampleId);
                var partitioned                   = SingleSampleCallset.GetPartitionedPath(sampleSandbox, sampleId);
                var coverageAndVariantFrequencies = SingleSampleCallset.GetCoverageAndVariantFrequencyOutput(sampleSandbox, sampleId);
                var singleSampleVcf               = SingleSampleCallset.GetVcfOutput(sampleSandbox, sampleId);
                var coverageBigwig                = SingleSampleCallset.GetCoverageBigWig(sampleSandbox, sampleId);
                var bAlleleBedgraph               = SingleSampleCallset.GetBAlleleBedGraph(sampleSandbox, sampleId);
                var copyNumberBedgraph            = SingleSampleCallset.GetCopyNumberBedGraph(sampleSandbox, sampleId);
                return(new IntermediateOutput(new Vcf(singleSampleVcf), coverageAndVariantFrequencies, variantFrequencies, variantFrequenciesBaf,
                                              partitioned, coverageBigwig, bAlleleBedgraph, copyNumberBedgraph));
            });
            var cnvVcf = new Vcf(sampleSandbox.GetFileLocation("CNV.vcf.gz"));

            return(new CanvasSmallPedigreeOutput(cnvVcf, intermediateResults));
        }
        private CanvasEnrichmentOutput GetCanvasOutput(string sampleId, IDirectoryLocation sampleSandbox)
        {
            var           cnvVcf                        = new Vcf(sampleSandbox.GetFileLocation("CNV.vcf.gz"));
            var           tempCnvDirectory              = sampleSandbox.GetDirectoryLocation($"TempCNV_{sampleId}");
            var           variantFrequencies            = tempCnvDirectory.GetFileLocation($"VFResults{sampleId}.txt.gz");
            var           variantFrequenciesBaf         = tempCnvDirectory.GetFileLocation($"VFResults{sampleId}.txt.gz.baf");
            IFileLocation coverageAndVariantFrequencies = sampleSandbox.GetFileLocation("CNV.CoverageAndVariantFrequency.txt");
            IFileLocation tempStub                      = tempCnvDirectory.GetFileLocation($"{sampleId}");
            IFileLocation partitioned                   = tempStub.AppendName(".partitioned");
            var           canvasOutput                  = new CanvasOutput(cnvVcf, coverageAndVariantFrequencies, variantFrequencies,
                                                                           variantFrequenciesBaf, partitioned);
            IFileLocation binSize       = tempStub.AppendName(".binsize");
            IFileLocation normalBinned  = tempStub.AppendName(".normal.binned");
            IFileLocation unsmoothedCnd = tempStub.AppendName(".ratio.binned.cnd");

            if (!binSize.Exists)
            {
                binSize = null;
            }
            return(new CanvasEnrichmentOutput(canvasOutput, binSize, normalBinned, unsmoothedCnd));
        }
Beispiel #17
0
        private CanvasSmallPedigreeOutput Load(CanvasSmallPedigreeInput input)
        {
            var intermediateOutputs = input.Samples.SelectData((info, sample) =>
            {
                var stub = GetSingleSampleOutputStub(info);
                var coverageAndVariantFrequency = SingleSampleCallset.GetCoverageAndVariantFrequencyOutput(stub);
                var singleSampleVcf             = new Vcf(SingleSampleCallset.GetVcfOutput(stub));

                var partitioned           = SingleSampleCallset.GetPartitionedPath(stub);
                var variantFrequencies    = SingleSampleCallset.GetVfSummaryPath(stub);
                var variantFrequenciesBaf = SingleSampleCallset.GetVfSummaryBafPath(stub);

                var coverageBigwig     = SingleSampleCallset.GetCoverageBigWig(stub);
                var bAlleleBedgraph    = SingleSampleCallset.GetBAlleleBedGraph(stub);
                var copyNumberBedgraph = SingleSampleCallset.GetCopyNumberBedGraph(stub);


                return(new IntermediateOutput(singleSampleVcf, coverageAndVariantFrequency, variantFrequencies, variantFrequenciesBaf, partitioned,
                                              coverageBigwig, bAlleleBedgraph, copyNumberBedgraph));
            });

            return(new CanvasSmallPedigreeOutput(new Vcf(GetPedigreeVcf()), intermediateOutputs));
        }
Beispiel #18
0
        public void Configure(Vdf vdf, Vcf vcf)
        {
            Vdf = vdf;
            Vcf = vcf;

            _vehicleHealthGroups = Vdf.PartsThirdPerson.Count;

            int systemCount = (int)SystemType.TotalSystems;

            _vehicleHitPoints      = new int[systemCount];
            _vehicleStartHitPoints = new int[systemCount];

            _vehicleStartHitPoints[(int)SystemType.Vehicle]    = VehicleStartHealth;
            _vehicleStartHitPoints[(int)SystemType.Suspension] = CoreStartHealth;
            _vehicleStartHitPoints[(int)SystemType.Brakes]     = CoreStartHealth;
            _vehicleStartHitPoints[(int)SystemType.Engine]     = CoreStartHealth;

            _vehicleStartHitPoints[(int)SystemType.FrontArmor] = (int)vcf.ArmorFront;
            _vehicleStartHitPoints[(int)SystemType.RightArmor] = (int)vcf.ArmorRight;
            _vehicleStartHitPoints[(int)SystemType.BackArmor]  = (int)vcf.ArmorRear;
            _vehicleStartHitPoints[(int)SystemType.LeftArmor]  = (int)vcf.ArmorLeft;

            _vehicleStartHitPoints[(int)SystemType.FrontChassis] = (int)vcf.ChassisFront;
            _vehicleStartHitPoints[(int)SystemType.RightChassis] = (int)vcf.ChassisRight;
            _vehicleStartHitPoints[(int)SystemType.BackChassis]  = (int)vcf.ChassisRear;
            _vehicleStartHitPoints[(int)SystemType.LeftChassis]  = (int)vcf.ChassisLeft;

            _vehicleStartHitPoints[(int)SystemType.TireFL] = TireStartHealth;
            _vehicleStartHitPoints[(int)SystemType.TireFR] = TireStartHealth;
            _vehicleStartHitPoints[(int)SystemType.TireBL] = TireStartHealth;
            _vehicleStartHitPoints[(int)SystemType.TireBR] = TireStartHealth;

            for (int i = 0; i < systemCount; ++i)
            {
                _vehicleHitPoints[i] = _vehicleStartHitPoints[i];
            }
        }
 public CanvasSmallPedigreeInput(GenomeMetadata genomeMetadata, SampleSet <CanvasPedigreeSample> samples, Vcf vcf)
 {
     GenomeMetadata = genomeMetadata;
     Samples        = samples;
     Vcf            = vcf;
 }
Beispiel #20
0
        public GameObject ImportVcf(string filename, bool importFirstPerson, out Vdf vdf)
        {
            Vcf vcf = VcfParser.ParseVcf(filename);

            vdf = VdfParser.ParseVdf(vcf.VdfFilename);
            Vtf vtf = VtfParser.ParseVtf(vcf.VtfFilename);

            Car carObject = Object.Instantiate(_carPrefab);

            carObject.Configure(vdf, vcf);
            carObject.gameObject.name = vdf.Name + " (" + vcf.VariantName + ")";

            foreach (VLoc vLoc in vdf.VLocs)
            {
                GameObject vlocGo = new GameObject("VLOC");
                vlocGo.transform.parent        = carObject.transform;
                vlocGo.transform.localRotation = Quaternion.LookRotation(vLoc.Forward, vLoc.Up);
                vlocGo.transform.localPosition = vLoc.Position;
            }

            GameObject chassis = new GameObject("Chassis");

            chassis.transform.parent = carObject.transform;

            GameObject thirdPerson = new GameObject("ThirdPerson");

            thirdPerson.transform.parent = chassis.transform;

            Transform[] weaponMountTransforms = new Transform[vdf.HLocs.Count];
            for (int i = 0; i < vdf.HLocs.Count; ++i)
            {
                HLoc      hloc       = vdf.HLocs[i];
                Transform mountPoint = new GameObject(hloc.Label).transform;
                mountPoint.parent        = thirdPerson.transform;
                mountPoint.localRotation = Quaternion.LookRotation(hloc.Forward, hloc.Up);
                mountPoint.localPosition = hloc.Position;
                weaponMountTransforms[i] = mountPoint;
            }

            Dictionary <string, GameObject> partDict = new Dictionary <string, GameObject>();

            for (int i = 0; i < vdf.PartsThirdPerson.Count; ++i)
            {
                GameObject healthObject = new GameObject("Health " + i);
                healthObject.transform.SetParent(thirdPerson.transform);
                ImportCarParts(partDict, healthObject, vtf, vdf.PartsThirdPerson[i], _noColliderPrefab, false, false, i);
                if (i != 0)
                {
                    healthObject.SetActive(false);
                }
            }

            MeshFilter[] meshFilters = thirdPerson.GetComponentsInChildren <MeshFilter>();
            Bounds       bounds      = new Bounds();

            bounds.SetMinMax(Vector3.one * float.MaxValue, Vector3.one * float.MinValue);
            foreach (MeshFilter meshFilter in meshFilters)
            {
                Vector3 min = Vector3.Min(bounds.min, meshFilter.transform.position + meshFilter.sharedMesh.bounds.min) - thirdPerson.transform.position;
                Vector3 max = Vector3.Max(bounds.max, meshFilter.transform.position + meshFilter.sharedMesh.bounds.max) - thirdPerson.transform.position;
                bounds.SetMinMax(min, max);
            }

            GameObject chassisCollider = new GameObject("ChassisColliders");

            chassisCollider.transform.parent = carObject.transform;
            ImportCarParts(partDict, chassisCollider, vtf, vdf.PartsThirdPerson[0], _carBodyPrefab, true);

            for (int i = 0; i < vcf.Weapons.Count; ++i)
            {
                VcfWeapon weapon     = vcf.Weapons[i];
                int       mountPoint = weapon.MountPoint;
                HLoc      hloc       = vdf.HLocs[mountPoint];
                weapon.RearFacing = hloc.FacingDirection == 2;

                SdfPart[] partsArray;
                switch (hloc.MeshType)
                {
                case HardpointMeshType.Top:
                    partsArray = weapon.Gdf.TopParts;
                    break;

                case HardpointMeshType.Side:
                    partsArray = weapon.Gdf.SideParts;
                    break;

                case HardpointMeshType.Inside:
                    partsArray = weapon.Gdf.InsideParts;
                    break;

                case HardpointMeshType.Turret:
                    partsArray = weapon.Gdf.TurretParts;
                    break;

                default:
                    partsArray = null;
                    break;
                }

                if (partsArray != null)
                {
                    Transform weaponTransform = new GameObject(weapon.Gdf.Name).transform;
                    weaponTransform.SetParent(weaponMountTransforms[i]);
                    weaponTransform.localPosition = Vector3.zero;
                    weaponTransform.localRotation = Quaternion.identity;
                    ImportCarParts(partDict, weaponTransform.gameObject, vtf, partsArray, _noColliderPrefab, false);
                    weapon.Transform = weaponTransform;

                    // Disable depth test for 'inside' weapons, otherwise they are obscured.
                    if (hloc.MeshType == HardpointMeshType.Inside)
                    {
                        MeshRenderer weaponRenderer = weaponTransform.GetComponentInChildren <MeshRenderer>();
                        if (weaponRenderer != null)
                        {
                            weaponRenderer.sharedMaterial.shader = Shader.Find("Custom/CutOutWithoutZ");
                        }
                    }
                }
                else
                {
                    weapon.Transform = chassis.transform;
                }
            }

            // Note: The following is probably how I76 does collision detection. Two large boxes that encapsulate the entire vehicle.
            // Right now this won't work with Open76's raycast suspension, so I'm leaving this off for now. Investigate in the future.
            //var innerBox = chassisCollider.AddComponent<BoxCollider>();
            //innerBox.center = vdf.BoundsInner.center;
            //innerBox.size = vdf.BoundsInner.size;

            //var outerBox = chassisCollider.AddComponent<BoxCollider>();
            //outerBox.center = vdf.BoundsOuter.center;
            //outerBox.size = vdf.BoundsOuter.size;

            RaySusp[] frontWheels = null;
            if (vcf.FrontWheelDef != null)
            {
                frontWheels = CreateWheelPair(partDict, "Front", 0, carObject.gameObject, vdf, vtf, vcf.FrontWheelDef);
                carObject.Movement.FrontWheels = frontWheels;
            }
            if (vcf.MidWheelDef != null)
            {
                CreateWheelPair(partDict, "Mid", 2, carObject.gameObject, vdf, vtf, vcf.MidWheelDef);
            }

            RaySusp[] rearWheels = null;
            if (vcf.BackWheelDef != null)
            {
                rearWheels = CreateWheelPair(partDict, "Back", 4, carObject.gameObject, vdf, vtf, vcf.BackWheelDef);
                carObject.Movement.RearWheels = rearWheels;
            }

            if (importFirstPerson)
            {
                GameObject firstPerson = new GameObject("FirstPerson");
                firstPerson.transform.parent = chassis.transform;
                ImportCarParts(partDict, firstPerson, vtf, vdf.PartsFirstPerson, _noColliderPrefab, false, true, 0, LayerMask.NameToLayer("FirstPerson"));

                carObject.InitPanels();
                firstPerson.SetActive(false);
            }

            carObject.Movement.Initialise(chassis.transform, frontWheels, rearWheels);

            return(carObject.gameObject);
        }
        public StringBuilder GetMultiSampleCommandLine(SampleSet <CanvasPedigreeSample> samples, GenomeMetadata genomeMetadata, Vcf vcf, IDirectoryLocation sampleSandbox)
        {
            StringBuilder commandLine = new StringBuilder();

            foreach (var sampleKvp in samples)
            {
                var sampleId = sampleKvp.Key.Id;
                var sample   = sampleKvp.Value;
                commandLine.Append($" --bam \"{sample.Bam.BamFile}\"");
                if (sample.SampleType != SampleType.Other)
                {
                    commandLine.Append($" --{sample.SampleType.GetOptionName()} {sampleId}");
                }
            }
            IFileLocation kmerFasta = _annotationFileProvider.GetKmerFasta(genomeMetadata);

            commandLine.Append($" --reference \"{kmerFasta}\"");
            IDirectoryLocation wholeGenomeFasta = new FileLocation(genomeMetadata.Sequences.First().FastaPath).Directory;

            commandLine.Append($" --genome-folder \"{wholeGenomeFasta}\"");
            IFileLocation filterBed = _annotationFileProvider.GetFilterBed(genomeMetadata);

            commandLine.Append($" --filter-bed \"{filterBed}\"");
            commandLine.Append($" --output \"{sampleSandbox}\"");
            return(commandLine);
        }
Beispiel #22
0
 public CanvasResequencingInput(Bam bam, Vcf vcf, GenomeMetadata genomeMetadata)
 {
     Bam            = bam;
     GenomeMetadata = genomeMetadata;
     Vcf            = vcf;
 }
Beispiel #23
0
        public WeaponsController(Car car, Vcf vcf, Transform firstPersonTransform)
        {
            _car = car;
            int weaponCount = vcf.Weapons.Count;

            _weapons            = new Weapon[weaponCount];
            _weaponAudio        = car.gameObject.AddComponent <AudioSource>();
            _weaponAudio.volume = 0.5f;
            _weaponEmptySound   = CacheManager.Instance.GetAudioClip("cammo.gpw");
            _weaponBrokenSound  = CacheManager.Instance.GetAudioClip("cwstat.gpw");
            _firingWeapons      = new List <Weapon>(5);
            _weaponGroups       = new List <int>();

            List <VcfWeapon> weaponsList = vcf.Weapons;

            weaponsList.Sort((x, y) =>
            {
                int compare = x.RearFacing.CompareTo(y.RearFacing);
                if (compare != 0)
                {
                    return(compare);
                }

                return(x.Gdf.WeaponGroup.CompareTo(y.Gdf.WeaponGroup));
            });


            int seperatorIndex = -1;

            for (int i = 0; i < weaponCount; ++i)
            {
                AudioClip fireSound = CacheManager.Instance.GetAudioClip(weaponsList[i].Gdf.SoundName);
                _weapons[i] = new Weapon(weaponsList[i].Gdf, weaponsList[i].Transform)
                {
                    FireSound  = fireSound,
                    RearFacing = weaponsList[i].RearFacing,
                    Index      = i
                };

                if (_weapons[i].RearFacing)
                {
                    if (seperatorIndex == -1)
                    {
                        seperatorIndex = i;
                    }

                    _weapons[i].WeaponGroupOffset += 100;
                }

                if (!_weaponGroups.Contains(_weapons[i].WeaponGroupOffset))
                {
                    _weaponGroups.Add(_weapons[i].WeaponGroupOffset);
                }
            }

            if (firstPersonTransform != null)
            {
                _panel = new WeaponsPanel(firstPersonTransform);
                _panel.SetWeaponCount(weaponCount);
                for (int i = 0; i < weaponCount; ++i)
                {
                    _panel.SetWeaponHealthGroup(i, 0);
                    _panel.SetWeaponAmmoCount(i, _weapons[i].Ammo);
                    _panel.TryGetWeaponSprites(weaponsList[i].Gdf, out _weapons[i].OnSprite, out _weapons[i].OffSprite);
                }

                if (seperatorIndex != -1)
                {
                    _panel.SeparatorIndex = seperatorIndex;
                }

                if (_weaponGroups.Count > 0)
                {
                    _panel.UpdateActiveWeaponGroup(_weaponGroups[_activeGroup], _weapons);
                }
            }
        }
        public StringBuilder GetMultiSampleCommandLine(SampleSet <CanvasPedigreeSample> samples, GenomeMetadata genomeMetadata, Vcf vcf, IDirectoryLocation sampleSandbox)
        {
            StringBuilder commandLine = new StringBuilder();
            // move proband to the front of collection (enum Proband gets the lowest int value )
            var sortedBySampleTypeSamples = samples.OrderBy(sample => sample.Value.SampleType);

            foreach (var sampleKvp in sortedBySampleTypeSamples)
            {
                var sampleId = sampleKvp.Key.Id;
                var sample   = sampleKvp.Value;
                commandLine.Append($" --bam \"{sample.Bam.BamFile}\" {sample.SampleType} {sampleId}");
            }
            IFileLocation kmerFasta = _annotationFileProvider.GetKmerFasta(genomeMetadata);

            commandLine.Append($" --reference \"{kmerFasta}\"");
            IDirectoryLocation wholeGenomeFasta = new FileLocation(genomeMetadata.Contigs().First().FastaPath).Directory;

            commandLine.Append($" --genome-folder \"{wholeGenomeFasta}\"");
            IFileLocation filterBed = _annotationFileProvider.GetFilterBed(genomeMetadata);

            commandLine.Append($" --filter-bed \"{filterBed}\"");
            commandLine.Append($" --output \"{sampleSandbox}\"");
            return(commandLine);
        }