Ejemplo n.º 1
0
        public static Plink readPlinkS3(string bucketRegion,
                                        string bucketName,
                                        string keyFAM,
                                        string keyBED,
                                        string keyBIM          = null,
                                        string bucketRegionBIM = null,
                                        string bucketNameBIM   = null,
                                        string keyBIMFile      = null)
        {
            if (keyBIM == null)
            {
                using (var sr = new StreamReader(readStreamFromS3ToMemory(bucketRegion: bucketRegion,
                                                                          bucketName: bucketName,
                                                                          keyName: keyBIMFile).Result))
                {
                    keyBIM = sr.ReadToEnd();
                }
            }
            Console.WriteLine("KeyBIM: " + keyBIM);
            if (bucketRegionBIM == null)
            {
                bucketRegionBIM = bucketRegion;
            }
            if (bucketNameBIM == null)
            {
                bucketNameBIM = bucketName;
            }

            return(Plink.readPlinkFromStream(sr_fam: new StreamReader(readStreamFromS3ToMemory(bucketRegion: bucketRegion,
                                                                                               bucketName: bucketName,
                                                                                               keyName: keyFAM).Result),
                                             sr_bim: new StreamReader(readStreamFromS3ToMemory(bucketRegion: bucketRegionBIM,
                                                                                               bucketName: bucketNameBIM,
                                                                                               keyName: keyBIM).Result),
                                             br_bed: new BinaryReader(readStreamFromS3ToMemory(bucketRegion: bucketRegion,
                                                                                               bucketName: bucketName,
                                                                                               keyName: keyBED).Result)));
        }
Ejemplo n.º 2
0
        public static CalcResult calcGenotype(string code,
                                              string sn,
                                              string tableRegion     = null,
                                              string tableName       = null,
                                              string bucketRegion    = null,
                                              string bucketName      = null,
                                              string bucketRegionBIM = null,
                                              string bucketNameBIM   = null,
                                              Plink.Plink plink      = null)
        {
            var    preference = new Preference().preference;
            JArray metas      = new JArray();
            string stage      = String.Format("{0}-{1}-{2}", code, "genotype", "calculation");

            ProgressWriter.writer(sn: sn, stage: stage, status: "start").Wait();

            foreach (var meta in readDynamoTable(tableRegion: tableRegion ?? preference["Dynamo"]["MetaGenotype"]["Region"].ToString(),
                                                 tableName: tableName ?? preference["Dynamo"]["MetaGenotype"]["Name"].ToString(),
                                                 hashKey: code,
                                                 queryFilter: new QueryFilter()).Select(x => JObject.Parse(x.ToJson())))
            {
                metas.Add(meta);
            }

            List <string> snpnames = metas.Select(meta => meta["var"].ToString()).ToList();

            plink = plink ?? readPlinkS3(bucketRegion: bucketRegion ?? preference["S3"]["Plink"]["Region"].ToString(),
                                         bucketName: bucketName ?? preference["S3"]["Plink"]["Name"].ToString(),
                                         keyFAM: sn + ".fam",
                                         keyBED: sn + ".bed",
                                         keyBIMFile: sn + "_bim.txt",
                                         bucketRegionBIM: bucketRegionBIM ?? preference["S3"]["BPM"]["Region"].ToString(),
                                         bucketNameBIM: bucketNameBIM ?? preference["S3"]["BPM"]["Name"].ToString());

            var genotype = plink.checkRepeat(snpnames: snpnames).AsParallel().Select(x => x[0]).ToArray();
            var alleles  = plink.getAlleles(snpnames: snpnames);

            float result = 0;

            for (int metaIdx = 0; metaIdx < metas.Count; ++metaIdx)
            {
                var meta = metas[metaIdx];
                if (genotype[metaIdx] != 0)
                {
                    if (meta["meta"]["Eff"].ToString() == alleles[metaIdx][1])
                    {
                        result += (genotype[metaIdx] - 1) * Convert.ToSingle(meta["meta"]["beta"].ToString());
                    }
                    else if (meta["meta"]["Eff"].ToString() == alleles[metaIdx][0])
                    {
                        result += (3 - genotype[metaIdx]) * Convert.ToSingle(meta["meta"]["beta"].ToString());
                    }
                }
            }

            metas = new JArray(metas.Where((meta, metaIdx) => genotype[metaIdx] != 0));

            metas = new JArray(metas.Concat(metas));

            ProgressWriter.writer(sn: sn, stage: stage, status: "end").Wait();

            return(new CalcResult(result, metas));
        }