Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • adfc2e5
  • /
  • ScorerLib
  • /
  • ScorerManager.h
Raw File Download

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge Iframe embedding
swh:1:cnt:f7ccff810daf32106b5280845d67c7296730bf81
directory badge Iframe embedding
swh:1:dir:c635832c07bb0f28337c2b5951f21be98346eb63

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
ScorerManager.h
#ifndef SCORERMANAGER_H
#define SCORERMANAGER_H

#include <QObject>
#include "RelationDetector.h"
#include "GroupRelationDetector.h"
class GraphCorresponder;
class Scheduler;

// todo jjcao trace pairs!
// todo jjcao parse & trance groups!

class ScorerManager : public QObject
{
	Q_OBJECT

public:
	ScorerManager(GraphCorresponder * graph_corresponder, Scheduler * scheduler, QVector<Structure::Graph*> input_graphs, int logLevel=0);
	void init(GraphCorresponder * graph_corresponder, Scheduler * scheduler, QVector<Structure::Graph*> input_graphs);

	struct PathScore{
		VectorXd connectivity;
		VectorXd localSymmetry;
		VectorXd globalSymmetry;

		MatrixXd computeRange();

		double score();
	};	

private:
	GraphCorresponder * gcorr_;
	Scheduler * scheduler_;
	QVector<Structure::Graph*> actualInputGraphs_;	
	double normalizeCoef_;

	// for global symm
    double maxGlobalSymmScore_;
	Eigen::Vector3d refCenter_;// center of the reflection plane
	Eigen::Vector3d refNormal_; // normal of the reflection plane
	bool isUseSourceCenter_;
	bool bUsePart_;

	// for connectivity
	QVector<QVector<PairRelation> > connectPairs_; // connectPairs[0] is from source shape, [1] is from target shape
	bool isUseLink_;

	QVector<QVector<PairRelation> > otherPairs_;
	QVector<QVector<GroupRelation> > groupRelations_;

	// for debuging
	int logLevel_;
signals:
    void message(QString);

public slots:
	//////////////
	void parseConstraintPair();
	void evaluateTopology();
	QVector<double> evaluateTopology( QVector<Structure::Graph*> const &graphs );
	void evaluateTopologyAuto();
	
	void parseConstraintGroup();
	void evaluateGroups();
	QVector<double> evaluateGroups( QVector<Structure::Graph*> const &graphs );
	void evaluateGroupsAuto();

	//////////////
    void parseGlobalReflectionSymm();
    void evaluateGlobalReflectionSymm();	
	QVector<double> evaluateGlobalReflectionSymm( QVector<Structure::Graph*> const &graphs );
	void evaluateGlobalReflectionSymmAuto();

	//void evaluatePairs();
	//QVector<double> evaluatePairs( QVector<Structure::Graph*> const &graphs );
	//void evaluatePairsAuto();

	//////////////
	PathScore pathScore( QVector<Structure::Graph*> graphs );
	void setIsUseSourceCenter(bool);
	void setIsUsePart(bool);
	void setIsUseLink(bool);

private:
    bool isGlobalReflectionSymmParsed()
	{
		return (-1 != maxGlobalSymmScore_);
	}
	Structure::Graph * getCurrentGraph(int &idx);
};

QTextStream& operator << (QTextStream& os, const ScorerManager::PathScore& pr);

#endif // SCORERMANAGER_H

back to top

Software Heritage — Copyright (C) 2015–2025, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API