Exemplo n.º 1
0
void DosageCalculator::CalculateMarkerInfo(int marker, double& freq, double& maf, double& avgPost, double& rsq) 
{
   if (stored == 0) return;

   if (!storeDistribution) return;

   double scale_sg = 1.0 / (samples * genotypes + 1e-30);
   double scale_g  = 1.0 / (genotypes + 1e-30);
   double scale_ss = 1.0 / (samples * samples + 1e-30);
   
   double p0 = 0.0, p1 = 0.0;
   double qc = 0.0, sumsq = 0.0;
   
   for (int sample = 0; sample < genotypes; sample++)
     {
       unsigned int n0, n1, n2;
       
       GetCounts(sample, marker, n0, n1, n2);

       p0 += n0; p1 += n1;
       qc += (n0 > n1 && n0 > n2) ? n0 : (n1 > n2) ? n1 : n2;
       sumsq += square(n0 + n1 * 0.5) * scale_ss;
     }
   
   p0 *= scale_sg; p1 *= scale_sg;
   qc *= scale_sg; sumsq *= scale_g;

   freq = p0 + p1 * 0.50;
   maf = freq > 0.50 ? 1.0-freq : freq;
   double var1 = max(p0 + p1 * 0.25 - square(freq), 0);
   double var2 = max(sumsq - square(freq), 0);
   avgPost = qc;
   rsq = var2 / (var1 + 1e-30);
}
Exemplo n.º 2
0
void DosageCalculator::OutputMarkerInfo(FILE * output)
   {
   if (stored == 0) return;

   if (!storeDistribution)
      {
      OutputBasicMarkerInfo(output);
      return;
      }

   fprintf(output, "SNP\tAl1\tAl2\tFreq1\tMAF\tQuality\tRsq\n");

   double scale_sg = 1.0 / (samples * genotypes + 1e-30);
   double scale_g  = 1.0 / (genotypes + 1e-30);
   double scale_ss = 1.0 / (samples * samples + 1e-30);

   for (int marker = 0; marker < markers; marker++)
      {
      double p0 = 0.0, p1 = 0.0;
      double qc = 0.0, sumsq = 0.0;

      for (int sample = 0; sample < genotypes; sample++)
         {
         unsigned int n0, n1, n2;

         GetCounts(sample, marker, n0, n1, n2);

         p0 += n0; p1 += n1;
         qc += (n0 > n1 && n0 > n2) ? n0 : (n1 > n2) ? n1 : n2;
         sumsq += square(n0 + n1 * 0.5) * scale_ss;
         }

      p0 *= scale_sg; p1 *= scale_sg;
      qc *= scale_sg; sumsq *= scale_g;

      double freq = p0 + p1 * 0.50;
      double var1 = max(p0 + p1 * 0.25 - square(freq), 0);
      double var2 = max(sumsq - square(freq), 0);

      MarkerInfo * info = Pedigree::GetMarkerInfo(marker);

      fprintf(output, "%s\t%s\t%s\t%.4f\t%.4f\t%.4f\t%.4f\n",
                     (const char *) info->name,
                     (const char *) info->GetAlleleLabel(1),
                     info->CountAlleles() > 1 ? (const char *) info->GetAlleleLabel(2) : "-",
                     freq, freq > 0.50 ? 1.0 - freq : freq, qc, var2 / (var1 + 1e-30));
      }
   }
Exemplo n.º 3
0
double DosageCalculator::GetQuality(int individual, int genotype)
   {
   if (stored == 0) return 0.0;

   unsigned int n2, n1, n0;

   GetCounts(individual, genotype, n0, n1, n2);

   if (n0 >= n2 && n0 >= n1)
      return n0 / (double) stored;

   if (n1 >= n2)
      return n1 / (double) stored;

   return n2 / (double) stored;
   }
Exemplo n.º 4
0
int DosageCalculator::GetBestGenotype(int individual, int genotype)
   {
   if (stored == 0) return 1;

   unsigned int n2, n1, n0;

   GetCounts(individual, genotype, n0, n1, n2);

   if (n0 >= n2 && n0 >= n1)
      return 0;

   if (n1 >= n2)
      return 1;

   return 2;
   }
Exemplo n.º 5
0
int main(int argc, char *argv[]){
  SetStyle();
  bool use_mc(false);
  char opt(' ');
  while(( opt=getopt(argc, argv, "m") )!=-1){
    switch(opt){
    case 'm':
      use_mc=true;
      break;
    default:
      break;
    }
  }

  {TTree crap;}
  std::vector<std::string> observed_names(0), signal_names;
  signal_names.push_back("raw_plots_and_values/SMS-TChiHH_2b2b_2J_mChargino-400_mLSP-1_TuneZ2star_8TeV-madgraph-tauola_Summer12-START53_V19_FSIM-v1_AODSIM_UCSB1871_v71_SyncSkim.root");
  if(use_mc){
    observed_names.push_back("raw_plots_and_values/BJets_HT-1000ToInf_8TeV-madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1895_v71_SyncSkim.root");//6
    observed_names.push_back("raw_plots_and_values/BJets_HT-250To500_8TeV-madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1893_v71_SyncSkim.root");//7
    observed_names.push_back("raw_plots_and_values/BJets_HT-500To1000_8TeV-madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1894_v71_SyncSkim.root");//8
    observed_names.push_back("raw_plots_and_values/TTJets_FullLeptMGDecays_8TeV-madgraph-tauola_Summer12_DR53X-PU_S10_START53_V7C-v2_AODSIM_UCSB1883_v71_SyncSkim.root");//9
    observed_names.push_back("raw_plots_and_values/TTJets_SemiLeptMGDecays_8TeV-madgraph-tauola_Summer12_DR53X-PU_S10_START53_V7C-v1_AODSIM_UCSB1884_v71_SyncSkim.root");//10
    observed_names.push_back("raw_plots_and_values/TTJets_HadronicMGDecays_8TeV-madgraph_Summer12_DR53X-PU_S10_START53_V7A_ext-v1_AODSIM_UCSB1880_v71_SyncSkim.root");//11
    observed_names.push_back("raw_plots_and_values/TTH_HToBB_M-125_8TeV-pythia6_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1855_v71_SyncSkim.root");//12
    observed_names.push_back("raw_plots_and_values/TTWJets_8TeV-madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1857_v71_SyncSkim.root");//13
    observed_names.push_back("raw_plots_and_values/TTZJets_8TeV-madgraph_v2_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1856_v71_SyncSkim.root");//14
    observed_names.push_back("raw_plots_and_values/Tbar_s-channel_TuneZ2star_8TeV-powheg-tauola_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1864_v71_SyncSkim.root");//15
    observed_names.push_back("raw_plots_and_values/Tbar_t-channel_TuneZ2star_8TeV-powheg-tauola_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1865_v71_SyncSkim.root");//16
    observed_names.push_back("raw_plots_and_values/Tbar_tW-channel-DR_TuneZ2star_8TeV-powheg-tauola_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1866_v71_SyncSkim.root");//17
    observed_names.push_back("raw_plots_and_values/T_s-channel_TuneZ2star_8TeV-powheg-tauola_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1860_v71_SyncSkim.root");//18
    observed_names.push_back("raw_plots_and_values/T_t-channel_TuneZ2star_8TeV-powheg-tauola_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1861_v71_SyncSkim.root");//19
    observed_names.push_back("raw_plots_and_values/T_tW-channel-DR_TuneZ2star_8TeV-powheg-tauola_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1862_v71_SyncSkim.root");//20
    observed_names.push_back("raw_plots_and_values/W2JetsToLNu_TuneZ2Star_8TeV-madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1877_v71_SyncSkim.root");//21
    observed_names.push_back("raw_plots_and_values/W3JetsToLNu_TuneZ2Star_8TeV-madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1878_v71_SyncSkim.root");//22
    observed_names.push_back("raw_plots_and_values/W4JetsToLNu_TuneZ2Star_8TeV-madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1879_v71_SyncSkim.root");//23
    observed_names.push_back("raw_plots_and_values/ZJetsToNuNu_100_HT_200_TuneZ2Star_8TeV_madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1887_v71_SyncSkim.root");//24
    observed_names.push_back("raw_plots_and_values/ZJetsToNuNu_200_HT_400_TuneZ2Star_8TeV_madgraph_ext_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1889_v71_SyncSkim.root");//25
    observed_names.push_back("raw_plots_and_values/ZJetsToNuNu_200_HT_400_TuneZ2Star_8TeV_madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1888_v71_SyncSkim.root");//26
    observed_names.push_back("raw_plots_and_values/ZJetsToNuNu_400_HT_inf_TuneZ2Star_8TeV_madgraph_ext_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1891_v71_SyncSkim.root");//27
    observed_names.push_back("raw_plots_and_values/ZJetsToNuNu_400_HT_inf_TuneZ2Star_8TeV_madgraph_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1890_v71_SyncSkim.root");//28
    observed_names.push_back("raw_plots_and_values/WH_WToLNu_HToBB_M-125_8TeV-powheg-herwigpp_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1858_v71_SyncSkim.root");//29
    observed_names.push_back("raw_plots_and_values/ZH_ZToBB_HToBB_M-125_8TeV-powheg-herwigpp_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1868_v71_SyncSkim.root");//30
    observed_names.push_back("raw_plots_and_values/WW_TuneZ2star_8TeV_pythia6_tauola_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1874_v71_SyncSkim.root");//31
    observed_names.push_back("raw_plots_and_values/ZZ_TuneZ2star_8TeV_pythia6_tauola_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1876_v71_SyncSkim.root");//32
    observed_names.push_back("raw_plots_and_values/WbbJetsToLNu_Massive_TuneZ2star_8TeV-madgraph-pythia6_tauola_Summer12_DR53X-PU_S10_START53_V7A-v1_AODSIM_UCSB1859_v71_SyncSkim.root");//33
  }else{
    observed_names.push_back("raw_plots_and_values/MET_Run2012A-13Jul2012-v1_AOD_UCSB1852_v71_SyncSkim.root");//0
    observed_names.push_back("raw_plots_and_values/MET_Run2012B-13Jul2012-v1_AOD_UCSB1853_v71_SyncSkim.root");//1
    observed_names.push_back("raw_plots_and_values/MET_Run2012C-24Aug2012-v1_AOD_UCSB1854_v71_SyncSkim.root");//2
    observed_names.push_back("raw_plots_and_values/MET_Run2012C-PromptReco-v2_AOD_UCSB1867_v71_SyncSkim.root");//3
    observed_names.push_back("raw_plots_and_values/MET_Run2012D-PromptReco-v1_AOD_UCSB1869_v71_SyncSkim.root");//4
    observed_names.push_back("raw_plots_and_values/MET_Run2012D-PromptReco-v1_AOD_UCSB1870_v71_SyncSkim.root");//5
  }
  std::vector<TFile*> observed_files(0), signal_files(0);
  GetFiles(observed_files, observed_names);
  GetFiles(signal_files, signal_names);

  std::vector<TTree*> observed_trees(0), signal_trees(0);
  GetTrees(observed_trees, observed_files);
  GetTrees(signal_trees, signal_files);

  WeightCalculator weightCalc(19399.0);
  std::vector<double> observed_weights(0), signal_weights;
  GetWeights(observed_weights, observed_names, weightCalc);
  GetWeights(signal_weights, signal_names, weightCalc);

  std::vector<ABCDCount> observed_counts(0), signal_counts;
  GetCounts(observed_counts, observed_trees, observed_weights);
  GetCounts(signal_counts, signal_trees, signal_weights);

  KillTrees(observed_trees);
  KillTrees(signal_trees);
  KillFiles(observed_files);
  KillFiles(signal_files);

  ABCDCalculator abcd_calculator(observed_counts, signal_counts);
  const unsigned int num_params(abcd_calculator.GetNumberOfParameters());
  TMinuit minuit(num_params);
  minuit.SetPrintLevel(1);

  double strategy[1]={2.0};
  int useless(0);
  minuit.mnexcm("SET STR", strategy, 1, useless);
  MinuitFunctor<ABCDCalculator>::SetFunctor(&abcd_calculator);
  MinuitFunctor<ABCDCalculator>::SetNumParams(num_params);
  minuit.SetFCN(MinuitFunctor<ABCDCalculator>::Function);
  minuit.SetMaxIterations(std::numeric_limits<int32_t>::max());
  std::cout << "before" << std::endl;
  for(unsigned int i(0); i<num_params; ++i){
    SetParameter(i, num_params, minuit);
  }
  std::cout << "middle" << std::endl;
  minuit.Migrad();
  minuit.Migrad();
  minuit.Migrad();
  minuit.mnmnos();
  minuit.mnmnos();
  minuit.mnmnos();
  std::cout << "after" << std::endl;
}