Exemplo n.º 1
0
        // ReSharper disable once UnusedMember.Global
        public CustomResult Run(CustomConfig config, ILambdaContext context)
        {
            var result = new CustomResult {
                id = config.id
            };
            string snsTopicArn = null;
            var    runLog      = new StringBuilder();

            try
            {
                LogUtilities.UpdateLogger(context.Logger, runLog);
                LogUtilities.LogLambdaInfo(context, CommandLineUtilities.InformationalVersion);
                LogUtilities.LogObject("Config", config);
                LogUtilities.Log(new[] { LambdaUrlHelper.UrlBaseEnvironmentVariableName, LambdaUtilities.SnsTopicKey });

                LambdaUtilities.GarbageCollect();
                LambdaUtilities.DeleteTempOutput();

                snsTopicArn = LambdaUtilities.GetEnvironmentVariable(LambdaUtilities.SnsTopicKey);

                config.CheckRequiredFieldsNotNull();
                var s3Client = config.outputDir.GetS3Client(context.RemainingTime);
                config.CheckResourcesExist();

                LambdaUtilities.DeleteTempOutput();

                string inputFileName = config.tsvUrl.TrimEndFromFirst("?").TrimStartToLast("/");
                Logger.WriteLine($"input file name is: {inputFileName}");

                return(IsGeneAnnotationTsv(config.tsvUrl)
                    ? GeneAnnotationCreator.Create(config, inputFileName, result, s3Client)
                    : VariantAnnotationCreator.Create(config, inputFileName, result, s3Client));
            }
            catch (Exception e)
            {
                return(HandleException(runLog, result, e, snsTopicArn));
            }
        }