コード例 #1
0
bool Tags::getTagValueBool(string key, int value_index, bool default_value) {
    string value = getTagValue(key, value_index);
    if (value.size()) {
        if ((value[0] == '1') || (value[0] == 't') || (value[0] == 'T') || (value[0] == 'y') || (value[0] == 'Y')) {
            return true;
        }
    }

    return default_value;
}
コード例 #2
0
float Tags::getTagValueFloat(string key, int value_index, float default_value) {
    string value = getTagValue(key, value_index);
    if (value.size()) {
        float value_f = 0.0f;
        FromString<float>(value_f, value, std::dec);
        return value_f;
    }

    return default_value;
}
コード例 #3
0
int Tags::getTagValueInt(string key, int value_index, int default_value) {
    string value = getTagValue(key, value_index);
    if (value.size()) {
        int value_i = 0;
        FromString<int>(value_i, value, std::dec);
        return value_i;
    }

    return default_value;
}
コード例 #4
0
ファイル: test.c プロジェクト: schnej7/ProxyServer
int main(){

  char * data = "TagOne: one1\r\nTagTwo: two2\r\nTagThree: three3\r\n\r\n";
  char * tag = "TagTwo";

  printf( "data:\n%s\ntag: %s\n", data, tag );

  char * value = getTagValue( data, tag );
  
  printf( "value: %s\n", value );

  free( value );

  char * firstWord = getFirstWord( data );

  printf( "firstWord: %s\n", firstWord );

  free( firstWord );

  return EXIT_SUCCESS;
}
コード例 #5
0
void MarkupReader::describeValue( long double& ref)
{
        getTagValue(ref);
}
コード例 #6
0
void MarkupReader::describeValue( unsigned long& ref)
{
        getTagValue(ref);
}
コード例 #7
0
void MarkupReader::describeValue( short& ref)
{
        getTagValue(ref);
}
コード例 #8
0
void MarkupReader::describeValue( signed char& ref)
{
        getTagValue(ref);
}
コード例 #9
0
void MarkupReader::describeValue( Pointer ref)
{
        unsigned int id;
        getTagValue(id);
        ref = Describer::getSerializedObjectForId(id);
}
コード例 #10
0
void MarkupReader::describeValue(bool& ref)
{
        getTagValue(ref);
}
コード例 #11
0
void MarkupReader::describeValue(float& ref)
{
        getTagValue(ref);
}
コード例 #12
0
void MarkupReader::describeValue(String& ref)
{
        getTagValue(ref);
}
コード例 #13
0
//
// Main
//
int somaticVariantFiltersMain(int argc, char** argv)
{
    parseSomaticVariantFiltersOptions(argc, argv);

    Timer* pTimer = new Timer(PROGRAM_IDENT);
    
    // Load Reference
    ReadTable refTable(opt::referenceFile, SRF_NO_VALIDATION);
    refTable.indexReadsByID();

    // Load BAMs
    BamTools::BamReader* pTumorBamReader = new BamTools::BamReader;
    pTumorBamReader->Open(opt::tumorBamFile);
    pTumorBamReader->LocateIndex();

    assert(pTumorBamReader->HasIndex());

    BamTools::BamReader* pNormalBamReader = new BamTools::BamReader;
    pNormalBamReader->Open(opt::normalBamFile);
    pNormalBamReader->LocateIndex();
    assert(pNormalBamReader->HasIndex());

    // Track duplicated variants
    HashSet<std::string> duplicateHash;

    std::ifstream input(opt::vcfFile.c_str());
    std::string line;

    while(getline(input, line))
    {
        if(line.empty())
            continue;

        if(line[0] == '#')
        {
            std::cout << line << "\n";
            continue;
        }
        
        // parse record
        VCFRecord record(line);
        if(record.isMultiAllelic())
        {
            std::cerr << "Error: multi-allelic VCF found, please run vcfbreakmulti\n";
            exit(EXIT_FAILURE);
        }

        // Check if we've seen this variant already
        std::string key = makeVariantKey(record);
        if(duplicateHash.find(key) != duplicateHash.end())
            continue;
        else
            duplicateHash.insert(key);

        if(opt::verbose > 0)
        {
            std::stringstream ss;
            ss << "Variant: " << record << "\n";
            fprintf(stderr, "===============================================\n%s", ss.str().c_str());
        }

        StringStringHash tagHash;
        makeTagHash(record, tagHash);

        StringVector fail_reasons;

        int hplen = 0;
        if(!getTagValue(tagHash, "HPLen", hplen))
            hplen = calculateHomopolymerLength(record, &refTable);
        if(hplen > opt::maxHPLen)
            fail_reasons.push_back("Homopolymer");

        double dust = 0.0f;
        if(!getTagValue(tagHash, "Dust", dust))
            dust = HapgenUtil::calculateDustScoreAtPosition(record.refName, 
                                                            record.refPosition, 
                                                            &refTable);

        if(dust > opt::maxDust)
            fail_reasons.push_back("LowComplexity");
        
        double af;
        if(getTagValue(tagHash, "AF", af) && af < opt::minAF)
            fail_reasons.push_back("LowAlleleFrequency");

        int varDP;
        if(getTagValue(tagHash, "VarDP", varDP) && varDP < opt::minVarDP)
            fail_reasons.push_back("LowVarDP");

        double strandBias;
        if(getTagValue(tagHash, "SB", strandBias) && strandBias >= opt::maxStrandBias)
            fail_reasons.push_back("StrandBias");

        CoverageStats tumor_stats = getVariantCoverage(pTumorBamReader, record, &refTable);
        CoverageStats normal_stats = getVariantCoverage(pNormalBamReader, record, &refTable);

        if(opt::verbose > 0)
        {
            fprintf(stderr, "Tumor: [%zu %zu]\n",  tumor_stats.n_total_reads, tumor_stats.n_evidence_reads);
            fprintf(stderr, "Normal: [%zu %zu]\n", normal_stats.n_total_reads, normal_stats.n_evidence_reads);
        }

        if(normal_stats.n_evidence_reads > opt::maxNormalReads)
            fail_reasons.push_back("NormalEvidence");
        
        if(normal_stats.n_total_reads < opt::minNormalDepth)
            fail_reasons.push_back("LowNormalDepth");

        if(!tumor_stats.snv_evidence_quals.empty())
        {
            double median_quality = median(tumor_stats.snv_evidence_quals);
            if(median_quality < opt::minMedianQuality)
                fail_reasons.push_back("LowQuality");
        }

        if(tumor_stats.median_mapping_quality < opt::minMedianQuality)
            fail_reasons.push_back("LowMappingQuality");

        if(!fail_reasons.empty())
        {
            if(record.passStr != "PASS" && record.passStr != ".")
                fail_reasons.insert(fail_reasons.begin(), record.passStr);

            std::stringstream strss;
            std::copy(fail_reasons.begin(), fail_reasons.end(), std::ostream_iterator<std::string>(strss, ";"));
            record.passStr = strss.str();
            record.passStr.erase(record.passStr.size() - 1); // erase trailing ;
        }

        std::cout << record << "\n";
    }
    
    // Cleanup
    delete pTumorBamReader;
    delete pNormalBamReader;
    delete pTimer;

    return 0;
}
コード例 #14
0
ファイル: SamHeaderHD.cpp プロジェクト: Griffan/FASTQuick
const char* SamHeaderHD::getSortOrder()
{
    return(getTagValue("SO"));
}
コード例 #15
0
ファイル: server.c プロジェクト: jlanatta/raspberry
int main(int Count, char *Strings[])
{
  setupMotors();
  
  int sockfd;
	struct sockaddr_in self;
	char buffer[MAXBUF];

	/*---Create streaming socket---*/
  if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
	{
		perror("Socket");
		return(errno);
	}

	/*---Initialize address/port structure---*/
	bzero(&self, sizeof(self));
	self.sin_family = AF_INET;
	self.sin_port = htons(MY_PORT);
	self.sin_addr.s_addr = INADDR_ANY;

	/*---Assign a port number to the socket---*/
    if ( bind(sockfd, (struct sockaddr*)&self, sizeof(self)) != 0 )
	{
		perror("socket--bind");
		return(errno);
	}

	/*---Make it a "listening socket"---*/
	if ( listen(sockfd, 20) != 0 )
	{
		perror("socket--listen");
		return(errno);
	}

	/*---Forever... ---*/
	while (1)
	{
    int clientfd;
		struct sockaddr_in client_addr;
		unsigned int addrlen = sizeof(client_addr);

		/*---accept a connection (creating a data pipe)---*/
		clientfd = accept(sockfd, (struct sockaddr*)&client_addr, &addrlen);
		printf("%s:%d connected\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));

    while (1) {
      ssize_t count = recv(clientfd, buffer, MAXBUF, 0);
      buffer[count]=0;
      printf(">>> %s\n", buffer);

      char* left = getTagValue(buffer, "left");
      char* right = getTagValue(buffer, "right");
    
      int l = atoi(left);
      int r = atoi(right);
    
      free(left);
      free(right);
    
      doMotorStuff(motor1, l);
      doMotorStuff(motor2, r);
    }

		/*---Close data connection---*/
		close(clientfd);
	}

	/*---Clean up (should never get here!)---*/
	close(sockfd);
	return 0;
}